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

Reply via email to