https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82897
--- Comment #5 from Uroš Bizjak <ubizjak at gmail dot com> --- Also, #include <x86intrin.h> __mmask16 m; __m512i zzz; __m512i foo (__m512i x, __m512i y, int a) { zzz = _mm512_mask_slli_epi32 (y, m, x, a); return _mm512_mask_srai_epi32 (y, m, x, a); } defeats the proposed prototype patch, resulting in: vmovd %edi, %xmm2 vmovdqa64 %zmm1, %zmm3 movzwl m(%rip), %eax vmovdqa64 %zmm1, %zmm4 kmovw %eax, %k1 vpslld %xmm2, %zmm0, %zmm3{%k1} vpsrad %xmm2, %zmm0, %zmm4{%k1} vmovdqa64 %zmm3, zzz(%rip) vmovdqa64 %zmm4, %zmm0 ret