From: Simon Pilgrim Date: Tue, 31 Jan 2017 13:58:01 +0000 (+0000) Subject: [X86][SSE] Detect unary PBLEND shuffles. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=438897d8deb61cfd39e6e5d0c789e7b86afd68c2;p=llvm [X86][SSE] Detect unary PBLEND shuffles. These can appear during shuffle combining. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293628 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 6b235d08ce3..f1d6c704017 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -5397,6 +5397,7 @@ static bool getTargetShuffleMask(SDNode *N, MVT VT, bool AllowSentinelZero, case X86ISD::BLENDI: ImmN = N->getOperand(N->getNumOperands()-1); DecodeBLENDMask(VT, cast(ImmN)->getZExtValue(), Mask); + IsUnary = IsFakeUnary = N->getOperand(0) == N->getOperand(1); break; case X86ISD::SHUFP: ImmN = N->getOperand(N->getNumOperands()-1); diff --git a/test/CodeGen/X86/clear_upper_vector_element_bits.ll b/test/CodeGen/X86/clear_upper_vector_element_bits.ll index d22c2e3d98c..bedc68e0000 100644 --- a/test/CodeGen/X86/clear_upper_vector_element_bits.ll +++ b/test/CodeGen/X86/clear_upper_vector_element_bits.ll @@ -94,8 +94,7 @@ define <8 x i16> @_clearupper8xi16a(<8 x i16>) nounwind { ; ; AVX-LABEL: _clearupper8xi16a: ; AVX: # BB#0: -; AVX-NEXT: vpblendw {{.*#+}} xmm0 = xmm0[0,1,2,3,4,5,6,7] -; AVX-NEXT: vpand {{.*}}(%rip), %xmm0, %xmm0 +; AVX-NEXT: vandps {{.*}}(%rip), %xmm0, %xmm0 ; AVX-NEXT: retq %x0 = extractelement <8 x i16> %0, i32 0 %x1 = extractelement <8 x i16> %0, i32 1