mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
[TTI] NFC: Change getMaskedMemoryOpCost to return InstructionCost
This patch migrates the TTI cost interfaces to return an InstructionCost. See this patch for the introduction of the type: https://reviews.llvm.org/D91174 See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2020-November/146408.html Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D100204
This commit is contained in:
parent
c121181edc
commit
32a70b87c0
@ -1135,7 +1135,7 @@ public:
|
||||
const Instruction *I = nullptr) const;
|
||||
|
||||
/// \return The cost of masked Load and Store instructions.
|
||||
int getMaskedMemoryOpCost(
|
||||
InstructionCost getMaskedMemoryOpCost(
|
||||
unsigned Opcode, Type *Src, Align Alignment, unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind = TTI::TCK_RecipThroughput) const;
|
||||
|
||||
@ -1594,9 +1594,10 @@ public:
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind,
|
||||
const Instruction *I) = 0;
|
||||
virtual int getMaskedMemoryOpCost(unsigned Opcode, Type *Src, Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) = 0;
|
||||
virtual InstructionCost
|
||||
getMaskedMemoryOpCost(unsigned Opcode, Type *Src, Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) = 0;
|
||||
virtual InstructionCost
|
||||
getGatherScatterOpCost(unsigned Opcode, Type *DataTy, const Value *Ptr,
|
||||
bool VariableMask, Align Alignment,
|
||||
@ -2075,9 +2076,9 @@ public:
|
||||
return Impl.getMemoryOpCost(Opcode, Src, Alignment, AddressSpace,
|
||||
CostKind, I);
|
||||
}
|
||||
int getMaskedMemoryOpCost(unsigned Opcode, Type *Src, Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) override {
|
||||
InstructionCost getMaskedMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
Align Alignment, unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) override {
|
||||
return Impl.getMaskedMemoryOpCost(Opcode, Src, Alignment, AddressSpace,
|
||||
CostKind);
|
||||
}
|
||||
|
@ -543,9 +543,9 @@ public:
|
||||
return 1;
|
||||
}
|
||||
|
||||
unsigned getMaskedMemoryOpCost(unsigned Opcode, Type *Src, Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) const {
|
||||
InstructionCost getMaskedMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
Align Alignment, unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) const {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -1084,7 +1084,7 @@ public:
|
||||
auto *SubVT = FixedVectorType::get(VT->getElementType(), NumSubElts);
|
||||
|
||||
// Firstly, the cost of load/store operation.
|
||||
unsigned Cost;
|
||||
InstructionCost Cost;
|
||||
if (UseMaskForCond || UseMaskForGaps)
|
||||
Cost = thisT()->getMaskedMemoryOpCost(Opcode, VecTy, Alignment,
|
||||
AddressSpace, CostKind);
|
||||
@ -1186,7 +1186,7 @@ public:
|
||||
}
|
||||
|
||||
if (!UseMaskForCond)
|
||||
return Cost;
|
||||
return *Cost.getValue();
|
||||
|
||||
Type *I8Type = Type::getInt8Ty(VT->getContext());
|
||||
auto *MaskVT = FixedVectorType::get(I8Type, NumElts);
|
||||
@ -1219,7 +1219,7 @@ public:
|
||||
Cost += thisT()->getArithmeticInstrCost(BinaryOperator::And, MaskVT,
|
||||
CostKind);
|
||||
|
||||
return Cost;
|
||||
return *Cost.getValue();
|
||||
}
|
||||
|
||||
/// Get intrinsic cost based on arguments.
|
||||
|
@ -827,12 +827,11 @@ int TargetTransformInfo::getMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
return Cost;
|
||||
}
|
||||
|
||||
int TargetTransformInfo::getMaskedMemoryOpCost(
|
||||
InstructionCost TargetTransformInfo::getMaskedMemoryOpCost(
|
||||
unsigned Opcode, Type *Src, Align Alignment, unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) const {
|
||||
int Cost =
|
||||
TTIImpl->getMaskedMemoryOpCost(Opcode, Src, Alignment, AddressSpace,
|
||||
CostKind);
|
||||
InstructionCost Cost = TTIImpl->getMaskedMemoryOpCost(Opcode, Src, Alignment,
|
||||
AddressSpace, CostKind);
|
||||
assert(Cost >= 0 && "TTI should not produce negative costs!");
|
||||
return Cost;
|
||||
}
|
||||
|
@ -1427,10 +1427,10 @@ int ARMTTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
CostKind, I);
|
||||
}
|
||||
|
||||
unsigned ARMTTIImpl::getMaskedMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) {
|
||||
InstructionCost
|
||||
ARMTTIImpl::getMaskedMemoryOpCost(unsigned Opcode, Type *Src, Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) {
|
||||
if (ST->hasMVEIntegerOps()) {
|
||||
if (Opcode == Instruction::Load && isLegalMaskedLoad(Src, Alignment))
|
||||
return ST->getMVEVectorCostFactor(CostKind);
|
||||
|
@ -231,9 +231,9 @@ public:
|
||||
TTI::TargetCostKind CostKind,
|
||||
const Instruction *I = nullptr);
|
||||
|
||||
unsigned getMaskedMemoryOpCost(unsigned Opcode, Type *Src, Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind);
|
||||
InstructionCost getMaskedMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
Align Alignment, unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind);
|
||||
|
||||
int getInterleavedMemoryOpCost(
|
||||
unsigned Opcode, Type *VecTy, unsigned Factor, ArrayRef<unsigned> Indices,
|
||||
|
@ -210,10 +210,10 @@ unsigned HexagonTTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
CostKind, I);
|
||||
}
|
||||
|
||||
unsigned HexagonTTIImpl::getMaskedMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) {
|
||||
InstructionCost
|
||||
HexagonTTIImpl::getMaskedMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
Align Alignment, unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) {
|
||||
return BaseT::getMaskedMemoryOpCost(Opcode, Src, Alignment, AddressSpace,
|
||||
CostKind);
|
||||
}
|
||||
|
@ -118,7 +118,7 @@ public:
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind,
|
||||
const Instruction *I = nullptr);
|
||||
unsigned
|
||||
InstructionCost
|
||||
getMaskedMemoryOpCost(unsigned Opcode, Type *Src, Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind = TTI::TCK_SizeAndLatency);
|
||||
|
@ -3257,9 +3257,10 @@ int X86TTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src,
|
||||
return Cost;
|
||||
}
|
||||
|
||||
int X86TTIImpl::getMaskedMemoryOpCost(unsigned Opcode, Type *SrcTy,
|
||||
Align Alignment, unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) {
|
||||
InstructionCost
|
||||
X86TTIImpl::getMaskedMemoryOpCost(unsigned Opcode, Type *SrcTy, Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind) {
|
||||
bool IsLoad = (Instruction::Load == Opcode);
|
||||
bool IsStore = (Instruction::Store == Opcode);
|
||||
|
||||
@ -3288,8 +3289,7 @@ int X86TTIImpl::getMaskedMemoryOpCost(unsigned Opcode, Type *SrcTy,
|
||||
int MemopCost =
|
||||
NumElem * BaseT::getMemoryOpCost(Opcode, SrcVTy->getScalarType(),
|
||||
Alignment, AddressSpace, CostKind);
|
||||
return *(MemopCost + ValueSplitCost + MaskSplitCost + MaskCmpCost)
|
||||
.getValue();
|
||||
return MemopCost + ValueSplitCost + MaskSplitCost + MaskCmpCost;
|
||||
}
|
||||
|
||||
// Legalize the type.
|
||||
|
@ -144,9 +144,10 @@ public:
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind,
|
||||
const Instruction *I = nullptr);
|
||||
int getMaskedMemoryOpCost(
|
||||
unsigned Opcode, Type *Src, Align Alignment, unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind = TTI::TCK_SizeAndLatency);
|
||||
InstructionCost
|
||||
getMaskedMemoryOpCost(unsigned Opcode, Type *Src, Align Alignment,
|
||||
unsigned AddressSpace,
|
||||
TTI::TargetCostKind CostKind = TTI::TCK_SizeAndLatency);
|
||||
InstructionCost getGatherScatterOpCost(unsigned Opcode, Type *DataTy,
|
||||
const Value *Ptr, bool VariableMask,
|
||||
Align Alignment,
|
||||
|
Loading…
Reference in New Issue
Block a user