[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