[llvm] [VectorCombine] Fold insertelement chains of scalar parts to a bitcast and shuffle (PR #226224)
Tim Besard via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 25 03:36:33 PDT 2026
================
@@ -6036,6 +6037,114 @@ bool VectorCombine::foldInsExtVectorToShuffle(Instruction &I) {
return true;
}
+/// Try to replace a chain of insertelements of parts of the same scalar with a
+/// bitcast and a shuffle (little endian):
+/// insert (insert poison, (trunc (lshr X, 32)), 0), (trunc X), 1 -->
+/// shuffle (bitcast X to <2 x i32>), poison, <1, 0>
+bool VectorCombine::foldInsertScalarPartsToShuffle(Instruction &I) {
+ auto *VecTy = dyn_cast<FixedVectorType>(I.getType());
+ if (!VecTy)
+ return false;
+
+ // Start from the last insertelement of the chain.
+ if (I.hasOneUse() && isa<InsertElementInst>(I.user_back()) &&
+ I.user_back()->getOperand(0) == &I)
----------------
maleadt wrote:
Done.
https://github.com/llvm/llvm-project/pull/226224
More information about the llvm-commits
mailing list