forked from OSchip/llvm-project
[Cost] Rename getReductionCost() to getArithmeticReductionCost(), NFC.
llvm-svn: 309563
This commit is contained in:
parent
5174866b1d
commit
3e9b3eb91d
|
@ -711,7 +711,8 @@ public:
|
|||
/// Split:
|
||||
/// (v0, v1, v2, v3)
|
||||
/// ((v0+v2), (v1+v3), undef, undef)
|
||||
int getReductionCost(unsigned Opcode, Type *Ty, bool IsPairwiseForm) const;
|
||||
int getArithmeticReductionCost(unsigned Opcode, Type *Ty,
|
||||
bool IsPairwiseForm) const;
|
||||
|
||||
/// \returns The cost of Intrinsic instructions. Analyses the real arguments.
|
||||
/// Three cases are handled: 1. scalar instruction 2. vector instruction
|
||||
|
@ -975,8 +976,8 @@ public:
|
|||
ArrayRef<unsigned> Indices,
|
||||
unsigned Alignment,
|
||||
unsigned AddressSpace) = 0;
|
||||
virtual int getReductionCost(unsigned Opcode, Type *Ty,
|
||||
bool IsPairwiseForm) = 0;
|
||||
virtual int getArithmeticReductionCost(unsigned Opcode, Type *Ty,
|
||||
bool IsPairwiseForm) = 0;
|
||||
virtual int getIntrinsicInstrCost(Intrinsic::ID ID, Type *RetTy,
|
||||
ArrayRef<Type *> Tys, FastMathFlags FMF,
|
||||
unsigned ScalarizationCostPassed) = 0;
|
||||
|
@ -1281,9 +1282,9 @@ public:
|
|||
return Impl.getInterleavedMemoryOpCost(Opcode, VecTy, Factor, Indices,
|
||||
Alignment, AddressSpace);
|
||||
}
|
||||
int getReductionCost(unsigned Opcode, Type *Ty,
|
||||
bool IsPairwiseForm) override {
|
||||
return Impl.getReductionCost(Opcode, Ty, IsPairwiseForm);
|
||||
int getArithmeticReductionCost(unsigned Opcode, Type *Ty,
|
||||
bool IsPairwiseForm) override {
|
||||
return Impl.getArithmeticReductionCost(Opcode, Ty, IsPairwiseForm);
|
||||
}
|
||||
int getIntrinsicInstrCost(Intrinsic::ID ID, Type *RetTy, ArrayRef<Type *> Tys,
|
||||
FastMathFlags FMF, unsigned ScalarizationCostPassed) override {
|
||||
|
|
|
@ -428,7 +428,7 @@ public:
|
|||
return 0;
|
||||
}
|
||||
|
||||
unsigned getReductionCost(unsigned, Type *, bool) { return 1; }
|
||||
unsigned getArithmeticReductionCost(unsigned, Type *, bool) { return 1; }
|
||||
|
||||
unsigned getCostOfKeepingLiveOverCall(ArrayRef<Type *> Tys) { return 0; }
|
||||
|
||||
|
|
|
@ -1134,7 +1134,8 @@ public:
|
|||
///
|
||||
/// The cost model should take into account that the actual length of the
|
||||
/// vector is reduced on each iteration.
|
||||
unsigned getReductionCost(unsigned Opcode, Type *Ty, bool IsPairwise) {
|
||||
unsigned getArithmeticReductionCost(unsigned Opcode, Type *Ty,
|
||||
bool IsPairwise) {
|
||||
assert(Ty->isVectorTy() && "Expect a vector type");
|
||||
Type *ScalarTy = Ty->getVectorElementType();
|
||||
unsigned NumVecElts = Ty->getVectorNumElements();
|
||||
|
|
|
@ -496,9 +496,9 @@ unsigned CostModelAnalysis::getInstructionCost(const Instruction *I) const {
|
|||
Type *ReduxType;
|
||||
|
||||
if (matchVectorSplittingReduction(EEI, ReduxOpCode, ReduxType))
|
||||
return TTI->getReductionCost(ReduxOpCode, ReduxType, false);
|
||||
return TTI->getArithmeticReductionCost(ReduxOpCode, ReduxType, false);
|
||||
else if (matchPairwiseReduction(EEI, ReduxOpCode, ReduxType))
|
||||
return TTI->getReductionCost(ReduxOpCode, ReduxType, true);
|
||||
return TTI->getArithmeticReductionCost(ReduxOpCode, ReduxType, true);
|
||||
|
||||
return TTI->getVectorInstrCost(I->getOpcode(),
|
||||
EEI->getOperand(0)->getType(), Idx);
|
||||
|
|
|
@ -472,9 +472,9 @@ int TargetTransformInfo::getAddressComputationCost(Type *Tp,
|
|||
return Cost;
|
||||
}
|
||||
|
||||
int TargetTransformInfo::getReductionCost(unsigned Opcode, Type *Ty,
|
||||
bool IsPairwiseForm) const {
|
||||
int Cost = TTIImpl->getReductionCost(Opcode, Ty, IsPairwiseForm);
|
||||
int TargetTransformInfo::getArithmeticReductionCost(unsigned Opcode, Type *Ty,
|
||||
bool IsPairwiseForm) const {
|
||||
int Cost = TTIImpl->getArithmeticReductionCost(Opcode, Ty, IsPairwiseForm);
|
||||
assert(Cost >= 0 && "TTI should not produce negative costs!");
|
||||
return Cost;
|
||||
}
|
||||
|
|
|
@ -1805,8 +1805,8 @@ int X86TTIImpl::getAddressComputationCost(Type *Ty, ScalarEvolution *SE,
|
|||
return BaseT::getAddressComputationCost(Ty, SE, Ptr);
|
||||
}
|
||||
|
||||
int X86TTIImpl::getReductionCost(unsigned Opcode, Type *ValTy,
|
||||
bool IsPairwise) {
|
||||
int X86TTIImpl::getArithmeticReductionCost(unsigned Opcode, Type *ValTy,
|
||||
bool IsPairwise) {
|
||||
|
||||
std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy);
|
||||
|
||||
|
@ -1874,7 +1874,7 @@ int X86TTIImpl::getReductionCost(unsigned Opcode, Type *ValTy,
|
|||
return LT.first * Entry->Cost;
|
||||
}
|
||||
|
||||
return BaseT::getReductionCost(Opcode, ValTy, IsPairwise);
|
||||
return BaseT::getArithmeticReductionCost(Opcode, ValTy, IsPairwise);
|
||||
}
|
||||
|
||||
/// \brief Calculate the cost of materializing a 64-bit value. This helper
|
||||
|
|
|
@ -85,7 +85,8 @@ public:
|
|||
ArrayRef<Value *> Args, FastMathFlags FMF,
|
||||
unsigned VF = 1);
|
||||
|
||||
int getReductionCost(unsigned Opcode, Type *Ty, bool IsPairwiseForm);
|
||||
int getArithmeticReductionCost(unsigned Opcode, Type *Ty,
|
||||
bool IsPairwiseForm);
|
||||
|
||||
int getInterleavedMemoryOpCost(unsigned Opcode, Type *VecTy,
|
||||
unsigned Factor, ArrayRef<unsigned> Indices,
|
||||
|
|
|
@ -4585,8 +4585,10 @@ private:
|
|||
Type *ScalarTy = FirstReducedVal->getType();
|
||||
Type *VecTy = VectorType::get(ScalarTy, ReduxWidth);
|
||||
|
||||
int PairwiseRdxCost = TTI->getReductionCost(ReductionOpcode, VecTy, true);
|
||||
int SplittingRdxCost = TTI->getReductionCost(ReductionOpcode, VecTy, false);
|
||||
int PairwiseRdxCost =
|
||||
TTI->getArithmeticReductionCost(ReductionOpcode, VecTy, true);
|
||||
int SplittingRdxCost =
|
||||
TTI->getArithmeticReductionCost(ReductionOpcode, VecTy, false);
|
||||
|
||||
IsPairwiseReduction = PairwiseRdxCost < SplittingRdxCost;
|
||||
int VecReduxCost = IsPairwiseReduction ? PairwiseRdxCost : SplittingRdxCost;
|
||||
|
|
Loading…
Reference in New Issue