[llvm] [SelectionDAG] Replace `INSERT_SUBVECTOR` with series of `INSERT_VECTOR_ELT` (PR #124420)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 27 00:20:40 PST 2025


================
@@ -7078,18 +7078,18 @@ SDValue DAGTypeLegalizer::WidenVecOp_INSERT_SUBVECTOR(SDNode *N) {
   EVT OrigVT = OrigSubVec.getValueType();
   unsigned Idx = N->getConstantOperandVal(2);
 
-  SDValue InsertVecElt;
+  SDValue InsertElt;
   SDLoc DL(N);
   for (unsigned I = 0; I < OrigVT.getVectorNumElements(); ++I) {
-    SDValue Extract =
+    SDValue ExtractElt =
         DAG.getNode(ISD::EXTRACT_VECTOR_ELT, DL, VT.getScalarType(), SubVec,
-                    DAG.getIntPtrConstant(I, DL, /*isTarget*/ true));
-    InsertVecElt = DAG.getNode(ISD::INSERT_VECTOR_ELT, DL, VT,
-                               I != 0 ? InsertVecElt : InVec, Extract,
-                               DAG.getIntPtrConstant(I + Idx, DL, true));
+                    DAG.getVectorIdxConstant(I, DL));
----------------
arsenm wrote:

can you call getVectorIdxTy once before the loop instead of repeating it on every iteration by hiding it in DAG.getVectorIdxConstant

https://github.com/llvm/llvm-project/pull/124420


More information about the llvm-commits mailing list