[llvm] fb3ba38 - [CostModel] Remove getExtCost
Sam Parker via llvm-commits
llvm-commits at lists.llvm.org
Wed May 20 23:18:30 PDT 2020
Author: Sam Parker
Date: 2020-05-21T07:18:06+01:00
New Revision: fb3ba38021882236147b5774615a22a756309228
URL: https://github.com/llvm/llvm-project/commit/fb3ba38021882236147b5774615a22a756309228
DIFF: https://github.com/llvm/llvm-project/commit/fb3ba38021882236147b5774615a22a756309228.diff
LOG: [CostModel] Remove getExtCost
This has not been implemented by any backends which appear to cover
the functionality through getCastInstrCost. Sink what there is in the
default implementation into BasicTTI.
Differential Revision: https://reviews.llvm.org/D78922
Added:
Modified:
llvm/include/llvm/Analysis/TargetTransformInfo.h
llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
llvm/include/llvm/CodeGen/BasicTTIImpl.h
llvm/lib/Analysis/TargetTransformInfo.cpp
llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
llvm/test/Analysis/CostModel/AArch64/cast.ll
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/TargetTransformInfo.h b/llvm/include/llvm/Analysis/TargetTransformInfo.h
index d00dab4fcfe8..c2ba9a488dca 100644
--- a/llvm/include/llvm/Analysis/TargetTransformInfo.h
+++ b/llvm/include/llvm/Analysis/TargetTransformInfo.h
@@ -268,9 +268,6 @@ class TargetTransformInfo {
ArrayRef<const Value *> Operands,
TargetCostKind CostKind = TCK_SizeAndLatency) const;
- /// Estimate the cost of a EXT operation when lowered.
- int getExtCost(const Instruction *I, const Value *Src) const;
-
/// \returns A value by which our inlining threshold should be multiplied.
/// This is primarily used to bump up the inlining threshold wholesale on
/// targets where calls are unusually expensive.
@@ -1232,7 +1229,6 @@ class TargetTransformInfo::Concept {
virtual int getGEPCost(Type *PointeeType, const Value *Ptr,
ArrayRef<const Value *> Operands,
TTI::TargetCostKind CostKind) = 0;
- virtual int getExtCost(const Instruction *I, const Value *Src) = 0;
virtual unsigned getInliningThresholdMultiplier() = 0;
virtual int getInlinerVectorBonusPercent() = 0;
virtual int getIntrinsicCost(Intrinsic::ID IID, Type *RetTy,
@@ -1493,9 +1489,6 @@ class TargetTransformInfo::Model final : public TargetTransformInfo::Concept {
enum TargetTransformInfo::TargetCostKind CostKind) override {
return Impl.getGEPCost(PointeeType, Ptr, Operands);
}
- int getExtCost(const Instruction *I, const Value *Src) override {
- return Impl.getExtCost(I, Src);
- }
unsigned getInliningThresholdMultiplier() override {
return Impl.getInliningThresholdMultiplier();
}
diff --git a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
index e69263d51149..a0a0e53dfadc 100644
--- a/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
+++ b/llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
@@ -65,10 +65,6 @@ class TargetTransformInfoImplBase {
return SI.getNumCases();
}
- int getExtCost(const Instruction *I, const Value *Src) {
- return TTI::TCC_Basic;
- }
-
unsigned getInliningThresholdMultiplier() { return 1; }
int getInlinerVectorBonusPercent() { return 150; }
@@ -866,7 +862,7 @@ class TargetTransformInfoImplCRTPBase : public TargetTransformInfoImplBase {
case Instruction::FPExt:
case Instruction::SExt:
case Instruction::ZExt:
- if (I && TargetTTI->getExtCost(I, Operands.back()) == TTI::TCC_Free)
+ if (TargetTTI->getCastInstrCost(Opcode, Ty, OpTy, CostKind, I) == TTI::TCC_Free)
return TTI::TCC_Free;
break;
}
diff --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
index 004ed91c8bab..5a891779e185 100644
--- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h
+++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
@@ -296,18 +296,6 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
return BaseT::getGEPCost(PointeeType, Ptr, Operands);
}
- int getExtCost(const Instruction *I, const Value *Src) {
- if (getTLI()->isExtFree(I))
- return TargetTransformInfo::TCC_Free;
-
- if (isa<ZExtInst>(I) || isa<SExtInst>(I))
- if (const LoadInst *LI = dyn_cast<LoadInst>(Src))
- if (getTLI()->isExtLoad(LI, I, DL))
- return TargetTransformInfo::TCC_Free;
-
- return TargetTransformInfo::TCC_Basic;
- }
-
unsigned getIntrinsicCost(Intrinsic::ID IID, Type *RetTy,
ArrayRef<const Value *> Arguments, const User *U,
TTI::TargetCostKind CostKind) {
@@ -725,11 +713,21 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
SrcSize == DstSize)
return 0;
break;
+ case Instruction::FPExt:
+ if (I && getTLI()->isExtFree(I))
+ return 0;
+ break;
case Instruction::ZExt:
if (TLI->isZExtFree(SrcLT.second, DstLT.second))
return 0;
LLVM_FALLTHROUGH;
- case Instruction::SExt: {
+ case Instruction::SExt:
+ if (!I)
+ break;
+
+ if (getTLI()->isExtFree(I))
+ return 0;
+
// If this is a zext/sext of a load, return 0 if the corresponding
// extending load exists on target.
if (I && isa<LoadInst>(I->getOperand(0))) {
@@ -741,7 +739,6 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
return 0;
}
break;
- }
case Instruction::AddrSpaceCast:
if (TLI->isFreeAddrSpaceCast(Src->getPointerAddressSpace(),
Dst->getPointerAddressSpace()))
diff --git a/llvm/lib/Analysis/TargetTransformInfo.cpp b/llvm/lib/Analysis/TargetTransformInfo.cpp
index 37def50954e1..7e05fcca1170 100644
--- a/llvm/lib/Analysis/TargetTransformInfo.cpp
+++ b/llvm/lib/Analysis/TargetTransformInfo.cpp
@@ -236,11 +236,6 @@ int TargetTransformInfo::getGEPCost(Type *PointeeType, const Value *Ptr,
return TTIImpl->getGEPCost(PointeeType, Ptr, Operands, CostKind);
}
-int TargetTransformInfo::getExtCost(const Instruction *I,
- const Value *Src) const {
- return TTIImpl->getExtCost(I, Src);
-}
-
int TargetTransformInfo::getIntrinsicCost(Intrinsic::ID IID, Type *RetTy,
ArrayRef<const Value *> Arguments,
const User *U,
diff --git a/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp b/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
index 83f9e20aae90..b1799c5edde7 100644
--- a/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
+++ b/llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
@@ -759,7 +759,7 @@ int PPCTTIImpl::getCastInstrCost(unsigned Opcode, Type *Dst, Type *Src,
const Instruction *I) {
assert(TLI->InstructionOpcodeToISD(Opcode) && "Invalid opcode");
- int Cost = BaseT::getCastInstrCost(Opcode, Dst, Src, CostKind);
+ int Cost = BaseT::getCastInstrCost(Opcode, Dst, Src, CostKind, I);
return vectorCostAdjustment(Cost, Opcode, Dst, Src);
}
diff --git a/llvm/test/Analysis/CostModel/AArch64/cast.ll b/llvm/test/Analysis/CostModel/AArch64/cast.ll
index f9e1a93c02fc..2255f84f9ff4 100644
--- a/llvm/test/Analysis/CostModel/AArch64/cast.ll
+++ b/llvm/test/Analysis/CostModel/AArch64/cast.ll
@@ -3,31 +3,31 @@
define i32 @casts_no_users() {
; CHECK-LABEL: 'casts_no_users'
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r0 = sext i1 undef to i8
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r1 = zext i1 undef to i8
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r2 = sext i1 undef to i16
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r3 = zext i1 undef to i16
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r4 = sext i1 undef to i32
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r5 = zext i1 undef to i32
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r6 = sext i1 undef to i64
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r0 = sext i1 undef to i8
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r1 = zext i1 undef to i8
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r2 = sext i1 undef to i16
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r3 = zext i1 undef to i16
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r4 = sext i1 undef to i32
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r5 = zext i1 undef to i32
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r6 = sext i1 undef to i64
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r7 = zext i1 undef to i64
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r8 = trunc i8 undef to i1
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r9 = sext i8 undef to i16
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r10 = zext i8 undef to i16
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r11 = sext i8 undef to i32
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r12 = zext i8 undef to i32
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r13 = sext i8 undef to i64
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r9 = sext i8 undef to i16
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r10 = zext i8 undef to i16
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r11 = sext i8 undef to i32
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r12 = zext i8 undef to i32
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r13 = sext i8 undef to i64
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r14 = zext i8 undef to i64
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r15 = trunc i16 undef to i1
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r16 = trunc i16 undef to i8
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r17 = sext i16 undef to i32
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r18 = zext i16 undef to i32
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r19 = sext i16 undef to i64
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r17 = sext i16 undef to i32
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r18 = zext i16 undef to i32
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r19 = sext i16 undef to i64
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r20 = zext i16 undef to i64
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r21 = trunc i32 undef to i1
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r22 = trunc i32 undef to i8
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r23 = trunc i32 undef to i16
-; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %r24 = sext i32 undef to i64
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r24 = sext i32 undef to i64
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r25 = zext i32 undef to i64
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r26 = trunc i64 undef to i1
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %r27 = trunc i64 undef to i8
More information about the llvm-commits
mailing list