aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib
diff options
context:
space:
mode:
authorSimon Pilgrim <llvm-dev@redking.me.uk>2025-03-08 17:10:39 +0000
committerGitHub <noreply@github.com>2025-03-08 17:10:39 +0000
commitb15e7f3c23bfffe3b4a0180b5433bf5a876b87ae (patch)
tree98e69817b159f35c416c7b378d820da49ac27193 /llvm/lib
parent037756242f6eb3cdd6e73ab6597651f87aa7b933 (diff)
downloadllvm-b15e7f3c23bfffe3b4a0180b5433bf5a876b87ae.zip
llvm-b15e7f3c23bfffe3b4a0180b5433bf5a876b87ae.tar.gz
llvm-b15e7f3c23bfffe3b4a0180b5433bf5a876b87ae.tar.bz2
[X86] combineINSERT_SUBVECTOR - attempt to recursively shuffle combine if both base/sub-vectors are already shuffles (#130304)
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 0602f50..f9661b0 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -58758,6 +58758,14 @@ static SDValue combineINSERT_SUBVECTOR(SDNode *N, SelectionDAG &DAG,
}
}
+ // Attempt to recursively combine to a shuffle.
+ if (isTargetShuffle(peekThroughBitcasts(Vec).getOpcode()) &&
+ isTargetShuffle(peekThroughBitcasts(SubVec).getOpcode())) {
+ SDValue Op(N, 0);
+ if (SDValue Res = combineX86ShufflesRecursively(Op, DAG, Subtarget))
+ return Res;
+ }
+
return SDValue();
}