[llvm] [SelectionDAG] Merge consecutive loads feeding as shuffle operands (PR #207303)
Sushant Gokhale via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 9 22:26:52 PDT 2026
================
@@ -27007,6 +27007,88 @@ static SDValue combineConcatVectorOfShuffleAndItsOperands(
return DAG.getVectorShuffle(VT, dl, ShufOps[0], ShufOps[1], Mask);
}
+// concat(shuffle(loadA, loadB, mask0), shuffle(loadA, loadB, mask1))
+// -> shuffle(loadAB, poison, concat(mask0, mask1))
+// only if loadA and loadB can be proven consecutive.
+static SDValue combineConcatVectorOfShuffles(SDNode *N, SelectionDAG &DAG,
+ const TargetLowering &TLI) {
+ SDValue A, B;
+ ArrayRef<int> M0, M1;
+ if (!sd_match(N, m_Node(ISD::CONCAT_VECTORS,
+ m_Shuffle(m_Value(A), m_Value(B), m_Mask(M0)),
+ m_Shuffle(m_Deferred(A), m_Deferred(B), m_Mask(M1)))))
----------------
sushgokh wrote:
done
https://github.com/llvm/llvm-project/pull/207303
More information about the llvm-commits
mailing list