Skip to content

Commit 6cedafb

Browse files
authored
X86: Handle poison in buildFromShuffleMostly (#168218)
1 parent e009de2 commit 6cedafb

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7959,7 +7959,7 @@ static SDValue buildFromShuffleMostly(SDValue Op, const SDLoc &DL,
79597959
for (unsigned i = 0; i != NumElems; ++i) {
79607960
unsigned Opc = Op.getOperand(i).getOpcode();
79617961

7962-
if (Opc == ISD::UNDEF)
7962+
if (Opc == ISD::POISON || Opc == ISD::UNDEF)
79637963
continue;
79647964

79657965
if (Opc != ISD::EXTRACT_VECTOR_ELT) {
@@ -8002,7 +8002,7 @@ static SDValue buildFromShuffleMostly(SDValue Op, const SDLoc &DL,
80028002
if (!VecIn1.getNode())
80038003
return SDValue();
80048004

8005-
VecIn2 = VecIn2.getNode() ? VecIn2 : DAG.getUNDEF(VT);
8005+
VecIn2 = VecIn2.getNode() ? VecIn2 : DAG.getPOISON(VT);
80068006
SDValue NV = DAG.getVectorShuffle(VT, DL, VecIn1, VecIn2, Mask);
80078007

80088008
for (unsigned Idx : InsertIndices)

llvm/test/CodeGen/X86/vselect.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -641,10 +641,10 @@ define <2 x i32> @simplify_select(i32 %x, <2 x i1> %z) {
641641
; SSE2-NEXT: movd %edi, %xmm1
642642
; SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,0,1,1]
643643
; SSE2-NEXT: por %xmm1, %xmm2
644-
; SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,1,1]
645-
; SSE2-NEXT: punpckldq {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1]
644+
; SSE2-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0,0]
645+
; SSE2-NEXT: shufps {{.*#+}} xmm1 = xmm1[2,0],xmm2[1,1]
646646
; SSE2-NEXT: pand %xmm0, %xmm2
647-
; SSE2-NEXT: pandn %xmm3, %xmm0
647+
; SSE2-NEXT: pandn %xmm1, %xmm0
648648
; SSE2-NEXT: por %xmm2, %xmm0
649649
; SSE2-NEXT: retq
650650
;

0 commit comments

Comments
 (0)