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