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

            Bug ID: 104371
           Summary: [x86] Failure to use optimize
                    pxor+pcmpeqb+pmovmskb+cmp 0xFFFF pattern to ptest
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gabravier at gmail dot com
  Target Milestone: ---

bool is_zero(__m128i x)
{
    return _mm_movemask_epi8(_mm_cmpeq_epi8(x, _mm_setzero_si128())) == 0xffff;
}

This can be optimized to `return _mm_testz_si128(x, x);`. This optimization is
done by LLVM, but not by GCC.

Reply via email to