[llvm] [VPlan] Factor out logic to common compute costs to helper (NFCI). (PR #153361)
David Sherwood via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 14 02:01:23 PDT 2025
================
@@ -940,28 +940,88 @@ Value *VPInstruction::generate(VPTransformState &State) {
}
}
+std::optional<InstructionCost>
+VPRecipeWithIRFlags::getCommonCost(unsigned Opcode, ElementCount VF,
+ VPCostContext &Ctx, bool IsVector) const {
+ Type *ScalarTy = Ctx.Types.inferScalarType(this);
+ Type *ResultTy = IsVector ? toVectorTy(ScalarTy, VF) : ScalarTy;
+ switch (Opcode) {
+ case Instruction::FNeg:
+ return Ctx.TTI.getArithmeticInstrCost(
+ Opcode, ResultTy, Ctx.CostKind,
+ {TargetTransformInfo::OK_AnyValue, TargetTransformInfo::OP_None},
+ {TargetTransformInfo::OK_AnyValue, TargetTransformInfo::OP_None});
----------------
david-arm wrote:
Can't you just do
```
return Ctx.TTI.getArithmeticInstrCost(Opcode, ResultTy, Ctx.CostKind);
```
given that it already has the default parameters that you want?
```
LLVM_ABI InstructionCost getArithmeticInstrCost(
unsigned Opcode, Type *Ty,
TTI::TargetCostKind CostKind = TTI::TCK_RecipThroughput,
TTI::OperandValueInfo Opd1Info = {TTI::OK_AnyValue, TTI::OP_None},
TTI::OperandValueInfo Opd2Info = {TTI::OK_AnyValue, TTI::OP_None},
ArrayRef<const Value *> Args = {}, const Instruction *CxtI = nullptr,
const TargetLibraryInfo *TLibInfo = nullptr) const;
```
https://github.com/llvm/llvm-project/pull/153361
More information about the llvm-commits
mailing list