Hello Craig, Thanks a lot for pointing it out to me. I familiar with this problem, we are planning to improve CodeGen to handle with this case in near future.
Regards, Igor From: Craig Topper [mailto:craig.top...@gmail.com] Sent: Saturday, July 02, 2016 08:46 To: Breger, Igor; Eric Christopher via cfe-commits Subject: Re: r274110 - [AVX512] Zero extend cmp intrinsic return value. This change codgens to something really awful now. Can you take a look? .section __TEXT,__text,regular,pure_instructions .section __TEXT,__literal8,8byte_literals .p2align 3 LCPI0_0: .quad -1 .section __TEXT,__const .p2align 6 LCPI0_1: .quad 0 .quad 1 .quad 2 .quad 3 .quad 8 .quad 8 .quad 8 .quad 8 .section __TEXT,__text,regular,pure_instructions .globl _test_mm_cmpeq_epu32_mask .p2align 4, 0x90 _test_mm_cmpeq_epu32_mask: vpcmpeqd %xmm1, %xmm0, %k1 vpbroadcastq LCPI0_0(%rip), %zmm0 {%k1} {z} vpxord %zmm1, %zmm1, %zmm1 vmovdqa64 LCPI0_1(%rip), %zmm2 vpermt2q %zmm1, %zmm2, %zmm0 vpsllq $63, %zmm0, %zmm0 vptestmq %zmm0, %zmm0, %k0 kmovw %k0, %eax retq ~Craig On Wed, Jun 29, 2016 at 1:14 AM, Igor Breger via cfe-commits <cfe-commits@lists.llvm.org<mailto:cfe-commits@lists.llvm.org>> wrote: Author: ibreger Date: Wed Jun 29 03:14:17 2016 New Revision: 274110 URL: http://llvm.org/viewvc/llvm-project?rev=274110&view=rev Log: [AVX512] Zero extend cmp intrinsic return value. Differential Revision: http://reviews.llvm.org/D21746 Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp cfe/trunk/test/CodeGen/avx512vl-builtins.c Modified: cfe/trunk/lib/CodeGen/CGBuiltin.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGBuiltin.cpp?rev=274110&r1=274109&r2=274110&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/CGBuiltin.cpp (original) +++ cfe/trunk/lib/CodeGen/CGBuiltin.cpp Wed Jun 29 03:14:17 2016 @@ -6460,8 +6460,8 @@ static Value *EmitX86MaskedCompare(CodeG Indices[i] = i; for (unsigned i = NumElts; i != 8; ++i) Indices[i] = NumElts; - Cmp = CGF.Builder.CreateShuffleVector(Cmp, UndefValue::get(Cmp->getType()), - Indices); + Cmp = CGF.Builder.CreateShuffleVector( + Cmp, llvm::Constant::getNullValue(Cmp->getType()), Indices); } return CGF.Builder.CreateBitCast(Cmp, IntegerType::get(CGF.getLLVMContext(), Modified: cfe/trunk/test/CodeGen/avx512vl-builtins.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512vl-builtins.c?rev=274110&r1=274109&r2=274110&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/avx512vl-builtins.c (original) +++ cfe/trunk/test/CodeGen/avx512vl-builtins.c Wed Jun 29 03:14:17 2016 @@ -8,6 +8,7 @@ __mmask8 test_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) { // CHECK-LABEL: @test_mm_cmpeq_epu32_mask // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}} + // CHECK: shufflevector <4 x i1> %{{.*}}, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 4, i32 4, i32 4> return (__mmask8)_mm_cmpeq_epu32_mask(__a, __b); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org<mailto:cfe-commits@lists.llvm.org> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits --------------------------------------------------------------------- Intel Israel (74) Limited This e-mail and any attachments may contain confidential material for the sole use of the intended recipient(s). Any review or distribution by others is strictly prohibited. If you are not the intended recipient, please contact the sender and delete all copies.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits