[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