This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/82897] Unnecessary zero-extension when loading mask register from memory
- From: "ubizjak at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 08 Nov 2017 14:48:37 +0000
- Subject: [Bug target/82897] Unnecessary zero-extension when loading mask register from memory
- Auto-submitted: auto-generated
- References: <bug-82897-4@http.gcc.gnu.org/bugzilla/>
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