Skip to content

Commit

Permalink
[TTI] Remove OperandValueKind/Properties from getArithmeticInstrCost …
Browse files Browse the repository at this point in the history
…interface [nfc]

This completes the client side transition to the OperandValueInfo version of this routine.  Backend TTI implementations still use the prior versions for now.
  • Loading branch information
preames committed Aug 22, 2022
1 parent 8537a99 commit 274f86e
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 35 deletions.
14 changes: 2 additions & 12 deletions llvm/include/llvm/Analysis/TargetTransformInfo.h
Expand Up @@ -904,8 +904,8 @@ class TargetTransformInfo {
// of migrating uses of OperandValueKind and OperandValueProperties
// to use this class, and then will change the internal representation.
struct OperandValueInfo {
OperandValueKind Kind;
OperandValueProperties Properties;
OperandValueKind Kind = OK_AnyValue;
OperandValueProperties Properties = OP_None;
};

/// \return the number of registers in the target-provided register class.
Expand Down Expand Up @@ -1059,16 +1059,6 @@ class TargetTransformInfo {
/// cases or optimizations based on those values.
/// \p CxtI is the optional original context instruction, if one exists, to
/// provide even more information.
InstructionCost getArithmeticInstrCost(
unsigned Opcode, Type *Ty,
TTI::TargetCostKind CostKind,
OperandValueKind Opd1Info,
OperandValueKind Opd2Info = OK_AnyValue,
OperandValueProperties Opd1PropInfo = OP_None,
OperandValueProperties Opd2PropInfo = OP_None,
ArrayRef<const Value *> Args = ArrayRef<const Value *>(),
const Instruction *CxtI = nullptr) const;

InstructionCost getArithmeticInstrCost(
unsigned Opcode, Type *Ty,
TTI::TargetCostKind CostKind = TTI::TCK_RecipThroughput,
Expand Down
12 changes: 0 additions & 12 deletions llvm/lib/Analysis/TargetTransformInfo.cpp
Expand Up @@ -765,18 +765,6 @@ TargetTransformInfo::getOperandInfo(const Value *V) {
return {OpInfo, OpProps};
}

InstructionCost TargetTransformInfo::getArithmeticInstrCost(
unsigned Opcode, Type *Ty, TTI::TargetCostKind CostKind,
OperandValueKind Opd1Info, OperandValueKind Opd2Info,
OperandValueProperties Opd1PropInfo, OperandValueProperties Opd2PropInfo,
ArrayRef<const Value *> Args, const Instruction *CxtI) const {
InstructionCost Cost =
TTIImpl->getArithmeticInstrCost(Opcode, Ty, CostKind, Opd1Info, Opd2Info,
Opd1PropInfo, Opd2PropInfo, Args, CxtI);
assert(Cost >= 0 && "TTI should not produce negative costs!");
return Cost;
}

InstructionCost TargetTransformInfo::getArithmeticInstrCost(
unsigned Opcode, Type *Ty, TTI::TargetCostKind CostKind,
OperandValueInfo Op1Info, OperandValueInfo Op2Info,
Expand Down
17 changes: 8 additions & 9 deletions llvm/lib/CodeGen/CodeGenPrepare.cpp
Expand Up @@ -7273,17 +7273,16 @@ class VectorPromoteHelper {
Value *Arg0 = Inst->getOperand(0);
bool IsArg0Constant = isa<UndefValue>(Arg0) || isa<ConstantInt>(Arg0) ||
isa<ConstantFP>(Arg0);
TargetTransformInfo::OperandValueKind Arg0OVK =
IsArg0Constant ? TargetTransformInfo::OK_UniformConstantValue
: TargetTransformInfo::OK_AnyValue;
TargetTransformInfo::OperandValueKind Arg1OVK =
!IsArg0Constant ? TargetTransformInfo::OK_UniformConstantValue
: TargetTransformInfo::OK_AnyValue;
TargetTransformInfo::OperandValueInfo Arg0Info, Arg1Info;
if (IsArg0Constant)
Arg0Info.Kind = TargetTransformInfo::OK_UniformConstantValue;
else
Arg1Info.Kind = TargetTransformInfo::OK_UniformConstantValue;

ScalarCost += TTI.getArithmeticInstrCost(
Inst->getOpcode(), Inst->getType(), CostKind, Arg0OVK, Arg1OVK);
Inst->getOpcode(), Inst->getType(), CostKind, Arg0Info, Arg1Info);
VectorCost += TTI.getArithmeticInstrCost(Inst->getOpcode(), PromotedType,
CostKind,
Arg0OVK, Arg1OVK);
CostKind, Arg0Info, Arg1Info);
}
LLVM_DEBUG(
dbgs() << "Estimated cost of computation to be promoted:\nScalar: "
Expand Down
8 changes: 6 additions & 2 deletions llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Expand Up @@ -6443,13 +6443,17 @@ InstructionCost BoUpSLP::getEntryCost(const TreeEntry *E,
: TargetTransformInfo::OK_UniformConstantValue;

InstructionCost ScalarEltCost = TTI->getArithmeticInstrCost(
Instruction::Add, ScalarTy, CostKind, Op1VK, Op2VK);
Instruction::Add, ScalarTy, CostKind,
{Op1VK, TargetTransformInfo::OP_None},
{Op2VK, TargetTransformInfo::OP_None});
if (NeedToShuffleReuses) {
CommonCost -= (EntryVF - VL.size()) * ScalarEltCost;
}
InstructionCost ScalarCost = VecTy->getNumElements() * ScalarEltCost;
InstructionCost VecCost = TTI->getArithmeticInstrCost(
Instruction::Add, VecTy, CostKind, Op1VK, Op2VK);
Instruction::Add, VecTy, CostKind,
{Op1VK, TargetTransformInfo::OP_None},
{Op2VK, TargetTransformInfo::OP_None});
LLVM_DEBUG(dumpTreeCosts(E, CommonCost, VecCost, ScalarCost));
return CommonCost + VecCost - ScalarCost;
}
Expand Down

0 comments on commit 274f86e

Please sign in to comment.