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