aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/TargetLoweringBase.cpp
diff options
context:
space:
mode:
authorDaniil Fukalov <1671137+dfukalov@users.noreply.github.com>2022-08-18 00:38:34 +0300
committerDaniil Fukalov <1671137+dfukalov@users.noreply.github.com>2022-08-18 00:38:55 +0300
commit7ed3d81333b7a366d48a27521bb36ac58dc12fa2 (patch)
tree9c4fae1a10b977dd84761bc423d93d4808610ff5 /llvm/lib/CodeGen/TargetLoweringBase.cpp
parent56a34451e1cc54375e5fd35d46c7dfba88b32fc5 (diff)
downloadllvm-7ed3d81333b7a366d48a27521bb36ac58dc12fa2.zip
llvm-7ed3d81333b7a366d48a27521bb36ac58dc12fa2.tar.gz
llvm-7ed3d81333b7a366d48a27521bb36ac58dc12fa2.tar.bz2
[NFCI] Move cost estimation from TargetLowering to TargetTransformInfo.
TragetLowering had two last InstructionCost related `getTypeLegalizationCost()` and `getScalingFactorCost()` members, but all other costs are processed in TTI. E.g. it is not comfortable to use other TTI members in these two functions overrided in a target. Minor refactoring: `getTypeLegalizationCost()` now doesn't need DataLayout parameter - it was always passed from TTI. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D117723
Diffstat (limited to 'llvm/lib/CodeGen/TargetLoweringBase.cpp')
-rw-r--r--llvm/lib/CodeGen/TargetLoweringBase.cpp35
1 files changed, 0 insertions, 35 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringBase.cpp b/llvm/lib/CodeGen/TargetLoweringBase.cpp
index 75ed8ba..4cf81cd 100644
--- a/llvm/lib/CodeGen/TargetLoweringBase.cpp
+++ b/llvm/lib/CodeGen/TargetLoweringBase.cpp
@@ -1843,41 +1843,6 @@ int TargetLoweringBase::InstructionOpcodeToISD(unsigned Opcode) const {
llvm_unreachable("Unknown instruction type encountered!");
}
-std::pair<InstructionCost, MVT>
-TargetLoweringBase::getTypeLegalizationCost(const DataLayout &DL,
- Type *Ty) const {
- LLVMContext &C = Ty->getContext();
- EVT MTy = getValueType(DL, Ty);
-
- InstructionCost Cost = 1;
- // We keep legalizing the type until we find a legal kind. We assume that
- // the only operation that costs anything is the split. After splitting
- // we need to handle two types.
- while (true) {
- LegalizeKind LK = getTypeConversion(C, MTy);
-
- if (LK.first == TypeScalarizeScalableVector) {
- // Ensure we return a sensible simple VT here, since many callers of this
- // function require it.
- MVT VT = MTy.isSimple() ? MTy.getSimpleVT() : MVT::i64;
- return std::make_pair(InstructionCost::getInvalid(), VT);
- }
-
- if (LK.first == TypeLegal)
- return std::make_pair(Cost, MTy.getSimpleVT());
-
- if (LK.first == TypeSplitVector || LK.first == TypeExpandInteger)
- Cost *= 2;
-
- // Do not loop with f128 type.
- if (MTy == LK.second)
- return std::make_pair(Cost, MTy.getSimpleVT());
-
- // Keep legalizing the type.
- MTy = LK.second;
- }
-}
-
Value *
TargetLoweringBase::getDefaultSafeStackPointerLocation(IRBuilderBase &IRB,
bool UseTLS) const {