https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121076
Bug ID: 121076
Summary: PPCLE: Inefficient implementation of __builtin_bswap16
Product: gcc
Version: 14.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: jens.seifert at de dot ibm.com
Target Milestone: ---
unsigned short swap(unsigned short in)
{
return __builtin_bswap16(in);
}
Returns:
swap(unsigned short):
rlwinm 10,3,8,16,23
rlwinm 9,3,24,24,31
or 9,9,10
rlwinm 3,9,0,0xffff
blr
Expected something like:
rotlwi 4, 3, 24
rlwimi 4, 3, 8, 0, 23
clrldi 3, 4, 48