[llvm] [LV] Remove legacy setVectorizedCallDecision & co (NFC). (PR #195519)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 1 06:25:10 PDT 2026
================
@@ -2093,32 +2052,50 @@ static unsigned estimateElementCount(ElementCount VF,
return EstimatedVF;
}
+/// Returns true iff \p CI has a library vector variant usable at \p VF: a
+/// mapping with matching VF, masked if required, whose vector function is
+/// declared in the module. Such variants are priced by
+/// VPWidenCallRecipe::computeCost rather than by scalarization.
+static bool hasVectorLibraryVariantFor(const CallInst &CI, ElementCount VF,
+ bool MaskRequired,
+ const TargetLibraryInfo *TLI) {
+ if (!TLI || CI.isNoBuiltin())
+ return false;
+ return any_of(VFDatabase::getMappings(CI), [&](const VFInfo &Info) {
+ return Info.Shape.VF == VF && (!MaskRequired || Info.isMasked()) &&
+ CI.getModule()->getFunction(Info.VectorName);
+ });
+}
+
InstructionCost
LoopVectorizationCostModel::getVectorCallCost(CallInst *CI,
ElementCount VF) const {
- // We only need to calculate a cost if the VF is scalar; for actual vectors
- // we should already have a pre-calculated cost at each VF.
- if (!VF.isScalar())
- return getCallWideningDecision(CI, VF).Cost;
+ // Vector library variants are priced by VPWidenCallRecipe::computeCost and
+ // should not reach this function.
+ assert((VF.isScalar() ||
+ !hasVectorLibraryVariantFor(*CI, VF, isMaskRequired(CI), TLI)) &&
+ "getVectorCallCost does not price vector library variants");
Type *RetTy = CI->getType();
- if (RecurrenceDescriptor::isFMulAddIntrinsic(CI))
- if (auto RedCost = getReductionPatternCost(CI, VF, RetTy))
- return *RedCost;
-
SmallVector<Type *, 4> Tys;
for (auto &ArgOp : CI->args())
Tys.push_back(ArgOp->getType());
-
----------------
fhahn wrote:
re-added thanks
https://github.com/llvm/llvm-project/pull/195519
More information about the llvm-commits
mailing list