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

            Bug ID: 104610
           Summary: memcmp () == 0 can be optimized better for avx512f
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---
            Target: x86_64-linux-gnu

Take:
bool f(char *a)
{
    char t[] = "0123456789012345678901234567890";
    return __builtin_memcmp(a, &t[0], sizeof(t)) == 0;
}

----- CUT ----
GCC does this via branches and compares but clang/LLVM does:

        vmovdqu (%rdi), %ymm0
        vpxor   .LCPI0_0(%rip), %ymm0, %ymm0
        vptest  %ymm0, %ymm0
        sete    %al
        vzeroupper

Reply via email to