https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111449
Bug ID: 111449 Summary: memcmp (p,q,16) == 0 can be optimized better on ppc64 with vector comparison instructions Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: guihaoc at gcc dot gnu.org Target Milestone: --- int compare (const char* s1, const char* s2) { return __builtin_memcmp (s1, s2, 16) == 0; } trunk outputs ld 10,0(3) ld 9,0(4) cmpd 0,10,9 beq 0,.L6 .L2: li 3,1 cntlzw 3,3 srwi 3,3,5 blr .p2align 4,,15 .L6: ld 10,8(3) ld 9,8(4) li 3,0 cmpd 0,10,9 bne 0,.L2 cntlzw 3,3 srwi 3,3,5 blr Expect to use vector comparison to eliminate branches. lxv 32,0(3) lxv 33,0(4) vcmpequb. 0,0,1 mfcr 3,2 rlwinm 3,3,25,1 blr