[llvm] 8352ca0 - [X86] combineConcatVectorOps - fold(undef, zero) -> zero
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 25 07:48:10 PDT 2025
Author: Simon Pilgrim
Date: 2025-03-25T14:47:52Z
New Revision: 8352ca0d354f7f196eb2acd76740fdff9984664c
URL: https://github.com/llvm/llvm-project/commit/8352ca0d354f7f196eb2acd76740fdff9984664c
DIFF: https://github.com/llvm/llvm-project/commit/8352ca0d354f7f196eb2acd76740fdff9984664c.diff
LOG: [X86] combineConcatVectorOps - fold(undef,zero) -> zero
Concat any mixture of zero/undefs to zero (we've already handled all undefs at this point).
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bwvl.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index ca7d8f847e382..540b176e0d77f 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -57873,7 +57873,7 @@ static SDValue combineConcatVectorOps(const SDLoc &DL, MVT VT,
return DAG.getUNDEF(VT);
if (llvm::all_of(Ops, [](SDValue Op) {
- return ISD::isBuildVectorAllZeros(Op.getNode());
+ return Op.isUndef() || ISD::isBuildVectorAllZeros(Op.getNode());
}))
return getZeroVector(VT, Subtarget, DAG, DL);
diff --git a/llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bwvl.ll b/llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bwvl.ll
index 69909fc06ca01..0633628c420fe 100644
--- a/llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bwvl.ll
+++ b/llvm/test/CodeGen/X86/vector-shuffle-combining-avx512bwvl.ll
@@ -191,11 +191,10 @@ define void @PR46178(ptr %0) {
; X86-NEXT: vmovdqu (%eax), %ymm1
; X86-NEXT: vpmovqw %ymm0, %xmm0
; X86-NEXT: vpmovqw %ymm1, %xmm1
-; X86-NEXT: vpsllw $8, %xmm0, %xmm0
-; X86-NEXT: vpsraw $8, %xmm0, %xmm0
-; X86-NEXT: vpsllw $8, %xmm1, %xmm1
-; X86-NEXT: vpsraw $8, %xmm1, %xmm1
-; X86-NEXT: vpunpcklqdq {{.*#+}} ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
+; X86-NEXT: vinserti128 $1, %xmm1, %ymm0, %ymm0
+; X86-NEXT: vpsllw $8, %ymm0, %ymm0
+; X86-NEXT: vpsraw $8, %ymm0, %ymm0
+; X86-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,1]
; X86-NEXT: vmovdqu %ymm0, (%eax)
; X86-NEXT: vzeroupper
; X86-NEXT: retl
More information about the llvm-commits
mailing list