diff --git a/llvm/include/llvm/Analysis/TargetTransformInfo.h b/llvm/include/llvm/Analysis/TargetTransformInfo.h --- a/llvm/include/llvm/Analysis/TargetTransformInfo.h +++ b/llvm/include/llvm/Analysis/TargetTransformInfo.h @@ -1208,8 +1208,9 @@ TTI::TargetCostKind CostKind) const; /// \returns The cost of Call instructions. - int getCallInstrCost(Function *F, Type *RetTy, ArrayRef Tys, - TTI::TargetCostKind CostKind = TTI::TCK_SizeAndLatency) const; + InstructionCost getCallInstrCost( + Function *F, Type *RetTy, ArrayRef Tys, + TTI::TargetCostKind CostKind = TTI::TCK_SizeAndLatency) const; /// \returns The number of pieces into which the provided type must be /// split during legalization. Zero is returned when the answer is unknown. @@ -1624,9 +1625,9 @@ virtual InstructionCost getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA, TTI::TargetCostKind CostKind) = 0; - virtual int getCallInstrCost(Function *F, Type *RetTy, - ArrayRef Tys, - TTI::TargetCostKind CostKind) = 0; + virtual InstructionCost getCallInstrCost(Function *F, Type *RetTy, + ArrayRef Tys, + TTI::TargetCostKind CostKind) = 0; virtual unsigned getNumberOfParts(Type *Tp) = 0; virtual int getAddressComputationCost(Type *Ty, ScalarEvolution *SE, const SCEV *Ptr) = 0; @@ -2125,9 +2126,9 @@ TTI::TargetCostKind CostKind) override { return Impl.getIntrinsicInstrCost(ICA, CostKind); } - int getCallInstrCost(Function *F, Type *RetTy, - ArrayRef Tys, - TTI::TargetCostKind CostKind) override { + InstructionCost getCallInstrCost(Function *F, Type *RetTy, + ArrayRef Tys, + TTI::TargetCostKind CostKind) override { return Impl.getCallInstrCost(F, RetTy, Tys, CostKind); } unsigned getNumberOfParts(Type *Tp) override { diff --git a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h --- a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h +++ b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h @@ -605,8 +605,9 @@ return 1; } - unsigned getCallInstrCost(Function *F, Type *RetTy, ArrayRef Tys, - TTI::TargetCostKind CostKind) const { + InstructionCost getCallInstrCost(Function *F, Type *RetTy, + ArrayRef Tys, + TTI::TargetCostKind CostKind) const { return 1; } diff --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h --- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h +++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h @@ -1882,8 +1882,9 @@ /// \param RetTy Return value types. /// \param Tys Argument types. /// \returns The cost of Call instruction. - unsigned getCallInstrCost(Function *F, Type *RetTy, ArrayRef Tys, - TTI::TargetCostKind CostKind = TTI::TCK_SizeAndLatency) { + InstructionCost + getCallInstrCost(Function *F, Type *RetTy, ArrayRef Tys, + TTI::TargetCostKind CostKind = TTI::TCK_SizeAndLatency) { return 10; } diff --git a/llvm/lib/Analysis/TargetTransformInfo.cpp b/llvm/lib/Analysis/TargetTransformInfo.cpp --- a/llvm/lib/Analysis/TargetTransformInfo.cpp +++ b/llvm/lib/Analysis/TargetTransformInfo.cpp @@ -863,10 +863,11 @@ return Cost; } -int TargetTransformInfo::getCallInstrCost(Function *F, Type *RetTy, - ArrayRef Tys, - TTI::TargetCostKind CostKind) const { - int Cost = TTIImpl->getCallInstrCost(F, RetTy, Tys, CostKind); +InstructionCost +TargetTransformInfo::getCallInstrCost(Function *F, Type *RetTy, + ArrayRef Tys, + TTI::TargetCostKind CostKind) const { + InstructionCost Cost = TTIImpl->getCallInstrCost(F, RetTy, Tys, CostKind); assert(Cost >= 0 && "TTI should not produce negative costs!"); return Cost; } diff --git a/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp b/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp --- a/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp +++ b/llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp @@ -746,7 +746,8 @@ // As general rule, fp converts that were not matched above are scalarized // and cost 1 vcvt for each lane, so long as the instruction is available. // If not it will become a series of function calls. - const int CallCost = getCallInstrCost(nullptr, Dst, {Src}, CostKind); + const InstructionCost CallCost = + getCallInstrCost(nullptr, Dst, {Src}, CostKind); int Lanes = 1; if (SrcTy.isFixedLengthVector()) Lanes = SrcTy.getVectorNumElements(); diff --git a/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h b/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h --- a/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h +++ b/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h @@ -108,8 +108,9 @@ bool Insert, bool Extract); unsigned getOperandsScalarizationOverhead(ArrayRef Args, ArrayRef Tys); - unsigned getCallInstrCost(Function *F, Type *RetTy, ArrayRef Tys, - TTI::TargetCostKind CostKind); + InstructionCost getCallInstrCost(Function *F, Type *RetTy, + ArrayRef Tys, + TTI::TargetCostKind CostKind); InstructionCost getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA, TTI::TargetCostKind CostKind); unsigned getAddressComputationCost(Type *Tp, ScalarEvolution *SE, diff --git a/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp b/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp --- a/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp +++ b/llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.cpp @@ -134,8 +134,9 @@ return BaseT::getOperandsScalarizationOverhead(Args, Tys); } -unsigned HexagonTTIImpl::getCallInstrCost(Function *F, Type *RetTy, - ArrayRef Tys, TTI::TargetCostKind CostKind) { +InstructionCost HexagonTTIImpl::getCallInstrCost(Function *F, Type *RetTy, + ArrayRef Tys, + TTI::TargetCostKind CostKind) { return BaseT::getCallInstrCost(F, RetTy, Tys, CostKind); }