https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116649

            Bug ID: 116649
           Summary: PPC: Suboptimal code for __builtin_bcdadd_ovf on
                    Power10
           Product: gcc
           Version: 14.1.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 long long bcdadd(vector __int128 a, vector __int128 b, vector __int128
*c)
{
   return __builtin_bcdadd_ov(a, b, 0);
}

creates:

bcdadd(__int128 __vector(1), __int128 __vector(1), __int128 __vector(1)*):
        .quad   .L.bcdadd(__int128 __vector(1), __int128 __vector(1), __int128
__vector(1)*),.TOC.@tocbase,0
.L.bcdadd(__int128 __vector(1), __int128 __vector(1), __int128 __vector(1)*):
        bcdadd. 2,2,3,0
        mfcr 3,2
        rlwinm 3,3,28,1
        blr
        .long 0
        .byte 0,9,0,0,0,0,0,0

while use of setbc expected.

        bcdadd. 2,2,3,0
        setbc 3,27
        blr

Reply via email to