[Bug target/82897] Unnecessary zero-extension when loading mask register from memory
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Wed Nov 8 14:48:00 GMT 2017
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
More information about the Gcc-bugs
mailing list