Skip to content

Commit 8352ca0

Browse files
committed
[X86] combineConcatVectorOps - fold(undef,zero) -> zero
Concat any mixture of zero/undefs to zero (we've already handled all undefs at this point).
1 parent 7334024 commit 8352ca0

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57873,7 +57873,7 @@ static SDValue combineConcatVectorOps(const SDLoc &DL, MVT VT,
5787357873
return DAG.getUNDEF(VT);
5787457874

5787557875
if (llvm::all_of(Ops, [](SDValue Op) {
57876-
return ISD::isBuildVectorAllZeros(Op.getNode());
57876+
return Op.isUndef() || ISD::isBuildVectorAllZeros(Op.getNode());
5787757877
}))
5787857878
return getZeroVector(VT, Subtarget, DAG, DL);
5787957879

llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bwvl.ll

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,10 @@ define void @PR46178(ptr %0) {
191191
; X86-NEXT: vmovdqu (%eax), %ymm1
192192
; X86-NEXT: vpmovqw %ymm0, %xmm0
193193
; X86-NEXT: vpmovqw %ymm1, %xmm1
194-
; X86-NEXT: vpsllw $8, %xmm0, %xmm0
195-
; X86-NEXT: vpsraw $8, %xmm0, %xmm0
196-
; X86-NEXT: vpsllw $8, %xmm1, %xmm1
197-
; X86-NEXT: vpsraw $8, %xmm1, %xmm1
198-
; X86-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
194+
; X86-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
195+
; X86-NEXT: vpsllw $8, %ymm0, %ymm0
196+
; X86-NEXT: vpsraw $8, %ymm0, %ymm0
197+
; X86-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,1]
199198
; X86-NEXT: vmovdqu %ymm0, (%eax)
200199
; X86-NEXT: vzeroupper
201200
; X86-NEXT: retl

0 commit comments

Comments
 (0)