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

Reply via email to