[llvm] [SLP][REVEC] Add ExtractSubvector cost for ExternalUses. (PR #132761)

Alexey Bataev via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 24 10:55:10 PDT 2025


================
@@ -13714,9 +13716,16 @@ InstructionCost BoUpSLP::getTreeCost(ArrayRef<Value *> VectorizedVals,
       ExtraCost = TTI->getExtractWithExtendCost(Extend, EU.Scalar->getType(),
                                                 VecTy, EU.Lane);
     } else {
-      ExtraCost =
-          TTI->getVectorInstrCost(Instruction::ExtractElement, VecTy, CostKind,
-                                  EU.Lane, EU.Scalar, ScalarUserAndIdx);
+      if (auto *FixedVecTy = dyn_cast<FixedVectorType>(ScalarTy)) {
+        assert(SLPReVec && "Only supported by REVEC.");
+        ExtraCost =
+            getShuffleCost(*TTI, TTI::SK_ExtractSubvector, VecTy, {}, CostKind,
+                           EU.Lane * FixedVecTy->getNumElements(), FixedVecTy);
+      } else {
+        ExtraCost = TTI->getVectorInstrCost(Instruction::ExtractElement, VecTy,
+                                            CostKind, EU.Lane, EU.Scalar,
+                                            ScalarUserAndIdx);
+      }
----------------
alexey-bataev wrote:

Add a helper function?

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


More information about the llvm-commits mailing list