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

            Bug ID: 101796
           Summary: Miss optimization to optimized (vashl op0, (op1:
                    const_duplicate_vector)) to (ashl op0 op1_inner)
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: crazylht at gmail dot com
  Target Milestone: ---
              Host: x86_64-pc-linux-gnu
            Target: x86_64-*-* i?86-*-*

#include <immintrin.h>

__m512i
foo (__m512i a, short b)
{
  return _mm512_srlv_epi16 (a, _mm512_set1_epi16 (3));
}

llvm generate 

vpsrlw  zmm0, zmm0, 3

but gcc generate

foo(long long __vector(8), short):
        movl    $3, %eax
        vpbroadcastw    %eax, %zmm31
        vpsrlvw %zmm31, %zmm0, %zmm0
        ret

Reply via email to