LLVM 22.0.0git
|
#include "llvm/Analysis/CostModel.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/PassManager.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/raw_ostream.h"
Go to the source code of this file.
Macros | |
#define | CM_NAME "cost-model" |
#define | DEBUG_TYPE CM_NAME |
Enumerations | |
enum class | OutputCostKind { RecipThroughput , Latency , CodeSize , SizeAndLatency , All } |
enum class | IntrinsicCostStrategy { InstructionCost , IntrinsicCost , TypeBasedIntrinsicCost } |
Functions | |
static InstructionCost | getCost (Instruction &Inst, TTI::TargetCostKind CostKind, TargetTransformInfo &TTI, TargetLibraryInfo &TLI) |
static TTI::TargetCostKind | OutputCostKindToTargetCostKind (OutputCostKind CostKind) |
Variables | |
static cl::opt< OutputCostKind > | CostKind ("cost-kind", cl::desc("Target cost kind"), cl::init(OutputCostKind::RecipThroughput), cl::values(clEnumValN(OutputCostKind::RecipThroughput, "throughput", "Reciprocal throughput"), clEnumValN(OutputCostKind::Latency, "latency", "Instruction latency"), clEnumValN(OutputCostKind::CodeSize, "code-size", "Code size"), clEnumValN(OutputCostKind::SizeAndLatency, "size-latency", "Code size and latency"), clEnumValN(OutputCostKind::All, "all", "Print all cost kinds"))) |
static cl::opt< IntrinsicCostStrategy > | IntrinsicCost ("intrinsic-cost-strategy", cl::desc("Costing strategy for intrinsic instructions"), cl::init(IntrinsicCostStrategy::InstructionCost), cl::values(clEnumValN(IntrinsicCostStrategy::InstructionCost, "instruction-cost", "Use TargetTransformInfo::getInstructionCost"), clEnumValN(IntrinsicCostStrategy::IntrinsicCost, "intrinsic-cost", "Use TargetTransformInfo::getIntrinsicInstrCost"), clEnumValN(IntrinsicCostStrategy::TypeBasedIntrinsicCost, "type-based-intrinsic-cost", "Calculate the intrinsic cost based only on argument types"))) |
#define CM_NAME "cost-model" |
Definition at line 71 of file CostModel.cpp.
#define DEBUG_TYPE CM_NAME |
Definition at line 72 of file CostModel.cpp.
|
strong |
Enumerator | |
---|---|
InstructionCost | |
IntrinsicCost | |
TypeBasedIntrinsicCost |
Definition at line 51 of file CostModel.cpp.
|
strong |
Enumerator | |
---|---|
RecipThroughput | |
Latency | |
CodeSize | |
SizeAndLatency | |
All |
Definition at line 31 of file CostModel.cpp.
|
static |
Definition at line 74 of file CostModel.cpp.
References CostKind, llvm::dyn_cast(), llvm::InstructionCost::getInvalid(), II, InstructionCost, IntrinsicCost, and TypeBasedIntrinsicCost.
Referenced by llvm::RegisterBankInfo::InstructionMapping::print(), and llvm::CostModelPrinterPass::run().
|
static |
Definition at line 91 of file CostModel.cpp.
References CodeSize, CostKind, Latency, llvm_unreachable, RecipThroughput, SizeAndLatency, llvm::TargetTransformInfo::TCK_CodeSize, llvm::TargetTransformInfo::TCK_Latency, llvm::TargetTransformInfo::TCK_RecipThroughput, and llvm::TargetTransformInfo::TCK_SizeAndLatency.
Referenced by llvm::CostModelPrinterPass::run().
|
static |
Referenced by analyzeCostOfVecReduction(), analyzeLoopUnrollCost(), canConvertToFMA(), llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), costAndCollectOperands(), costShuffleViaSplitting(), costShuffleViaVRegSplitting(), findBestNonTrivialUnswitchCandidate(), llvm::foldBranchToCommonDest(), llvm::AArch64TTIImpl::getAddressComputationCost(), llvm::ARMTTIImpl::getAddressComputationCost(), llvm::HexagonTTIImpl::getAddressComputationCost(), llvm::RISCVTTIImpl::getAddressComputationCost(), llvm::TargetTransformInfo::getAddressComputationCost(), llvm::X86TTIImpl::getAddressComputationCost(), llvm::TargetTransformInfo::getAltInstrCost(), llvm::TargetTransformInfoImplBase::getAltInstrCost(), llvm::X86TTIImpl::getAltInstrCost(), llvm::AArch64TTIImpl::getArithmeticInstrCost(), llvm::ARMTTIImpl::getArithmeticInstrCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getArithmeticInstrCost(), llvm::BPFTTIImpl::getArithmeticInstrCost(), llvm::GCNTTIImpl::getArithmeticInstrCost(), llvm::HexagonTTIImpl::getArithmeticInstrCost(), llvm::LanaiTTIImpl::getArithmeticInstrCost(), llvm::NVPTXTTIImpl::getArithmeticInstrCost(), llvm::PPCTTIImpl::getArithmeticInstrCost(), llvm::RISCVTTIImpl::getArithmeticInstrCost(), llvm::SystemZTTIImpl::getArithmeticInstrCost(), llvm::TargetTransformInfo::getArithmeticInstrCost(), llvm::TargetTransformInfoImplBase::getArithmeticInstrCost(), llvm::WebAssemblyTTIImpl::getArithmeticInstrCost(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::AArch64TTIImpl::getArithmeticReductionCost(), llvm::ARMTTIImpl::getArithmeticReductionCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getArithmeticReductionCost(), llvm::GCNTTIImpl::getArithmeticReductionCost(), llvm::RISCVTTIImpl::getArithmeticReductionCost(), llvm::SystemZTTIImpl::getArithmeticReductionCost(), llvm::TargetTransformInfo::getArithmeticReductionCost(), llvm::X86TTIImpl::getArithmeticReductionCost(), llvm::AArch64TTIImpl::getArithmeticReductionCostSVE(), llvm::BasicTTIImplBase< BasicTTIImpl >::getCallInstrCost(), llvm::HexagonTTIImpl::getCallInstrCost(), llvm::TargetTransformInfo::getCallInstrCost(), llvm::TargetTransformInfoImplBase::getCallInstrCost(), llvm::AArch64TTIImpl::getCastInstrCost(), llvm::ARMTTIImpl::getCastInstrCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getCastInstrCost(), llvm::HexagonTTIImpl::getCastInstrCost(), llvm::PPCTTIImpl::getCastInstrCost(), llvm::RISCVTTIImpl::getCastInstrCost(), llvm::SystemZTTIImpl::getCastInstrCost(), llvm::TargetTransformInfo::getCastInstrCost(), llvm::TargetTransformInfoImplBase::getCastInstrCost(), llvm::WebAssemblyTTIImpl::getCastInstrCost(), llvm::X86TTIImpl::getCastInstrCost(), llvm::AArch64TTIImpl::getCFInstrCost(), llvm::ARMTTIImpl::getCFInstrCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getCFInstrCost(), llvm::GCNTTIImpl::getCFInstrCost(), llvm::HexagonTTIImpl::getCFInstrCost(), llvm::PPCTTIImpl::getCFInstrCost(), llvm::R600TTIImpl::getCFInstrCost(), llvm::RISCVTTIImpl::getCFInstrCost(), llvm::TargetTransformInfo::getCFInstrCost(), llvm::TargetTransformInfoImplBase::getCFInstrCost(), llvm::X86TTIImpl::getCFInstrCost(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::ARMTTIImpl::getCmpSelInstrCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getCmpSelInstrCost(), llvm::BPFTTIImpl::getCmpSelInstrCost(), llvm::HexagonTTIImpl::getCmpSelInstrCost(), llvm::PPCTTIImpl::getCmpSelInstrCost(), llvm::RISCVTTIImpl::getCmpSelInstrCost(), llvm::SystemZTTIImpl::getCmpSelInstrCost(), llvm::TargetTransformInfo::getCmpSelInstrCost(), llvm::TargetTransformInfoImplBase::getCmpSelInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), getCost(), llvm::AArch64TTIImpl::getCostOfKeepingLiveOverCall(), llvm::RISCVTTIImpl::getCostOfKeepingLiveOverCall(), llvm::BasicTTIImplBase< BasicTTIImpl >::getExpandCompressMemoryOpCost(), llvm::RISCVTTIImpl::getExpandCompressMemoryOpCost(), llvm::TargetTransformInfo::getExpandCompressMemoryOpCost(), llvm::TargetTransformInfoImplBase::getExpandCompressMemoryOpCost(), llvm::AArch64TTIImpl::getExtendedReductionCost(), llvm::ARMTTIImpl::getExtendedReductionCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getExtendedReductionCost(), llvm::RISCVTTIImpl::getExtendedReductionCost(), llvm::TargetTransformInfo::getExtendedReductionCost(), llvm::TargetTransformInfoImplBase::getExtendedReductionCost(), getExtractWithExtendCost(), llvm::AArch64TTIImpl::getExtractWithExtendCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getExtractWithExtendCost(), llvm::TargetTransformInfo::getExtractWithExtendCost(), llvm::TargetTransformInfoImplBase::getExtractWithExtendCost(), llvm::AArch64TTIImpl::getFP16BF16PromoteCost(), llvm::AArch64TTIImpl::getGatherScatterOpCost(), llvm::ARMTTIImpl::getGatherScatterOpCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getGatherScatterOpCost(), llvm::HexagonTTIImpl::getGatherScatterOpCost(), llvm::RISCVTTIImpl::getGatherScatterOpCost(), llvm::TargetTransformInfo::getGatherScatterOpCost(), llvm::TargetTransformInfoImplBase::getGatherScatterOpCost(), llvm::X86TTIImpl::getGatherScatterOpCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getGEPCost(), llvm::TargetTransformInfo::getGEPCost(), llvm::TargetTransformInfoImplBase::getGEPCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getGEPCost(), getGEPCosts(), llvm::AArch64TTIImpl::getIndexedVectorInstrCostFromEnd(), llvm::BasicTTIImplBase< BasicTTIImpl >::getIndexedVectorInstrCostFromEnd(), llvm::RISCVTTIImpl::getIndexedVectorInstrCostFromEnd(), llvm::TargetTransformInfo::getIndexedVectorInstrCostFromEnd(), llvm::TargetTransformInfoImplBase::getIndexedVectorInstrCostFromEnd(), llvm::TargetTransformInfo::getInsertExtractValueCost(), llvm::TargetTransformInfoImplBase::getInsertExtractValueCost(), llvm::HexagonTTIImpl::getInstructionCost(), llvm::NVPTXTTIImpl::getInstructionCost(), llvm::PPCTTIImpl::getInstructionCost(), llvm::TargetTransformInfo::getInstructionCost(), llvm::TargetTransformInfo::getInstructionCost(), llvm::TargetTransformInfoImplBase::getInstructionCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::AArch64TTIImpl::getInterleavedMemoryOpCost(), llvm::ARMTTIImpl::getInterleavedMemoryOpCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getInterleavedMemoryOpCost(), llvm::HexagonTTIImpl::getInterleavedMemoryOpCost(), llvm::PPCTTIImpl::getInterleavedMemoryOpCost(), llvm::RISCVTTIImpl::getInterleavedMemoryOpCost(), llvm::SystemZTTIImpl::getInterleavedMemoryOpCost(), llvm::TargetTransformInfo::getInterleavedMemoryOpCost(), llvm::TargetTransformInfoImplBase::getInterleavedMemoryOpCost(), llvm::WebAssemblyTTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCostAVX512(), llvm::AArch64TTIImpl::getIntImmCost(), llvm::ARMTTIImpl::getIntImmCost(), llvm::BPFTTIImpl::getIntImmCost(), llvm::LanaiTTIImpl::getIntImmCost(), llvm::PPCTTIImpl::getIntImmCost(), llvm::RISCVTTIImpl::getIntImmCost(), llvm::SystemZTTIImpl::getIntImmCost(), llvm::TargetTransformInfo::getIntImmCost(), llvm::TargetTransformInfoImplBase::getIntImmCost(), llvm::X86TTIImpl::getIntImmCost(), getIntImmCostImpl(), llvm::AArch64TTIImpl::getIntImmCostInst(), llvm::ARMTTIImpl::getIntImmCostInst(), llvm::LanaiTTIImpl::getIntImmCostInst(), llvm::PPCTTIImpl::getIntImmCostInst(), llvm::RISCVTTIImpl::getIntImmCostInst(), llvm::SystemZTTIImpl::getIntImmCostInst(), llvm::TargetTransformInfo::getIntImmCostInst(), llvm::TargetTransformInfoImplBase::getIntImmCostInst(), llvm::X86TTIImpl::getIntImmCostInst(), llvm::AArch64TTIImpl::getIntImmCostIntrin(), llvm::LanaiTTIImpl::getIntImmCostIntrin(), llvm::PPCTTIImpl::getIntImmCostIntrin(), llvm::RISCVTTIImpl::getIntImmCostIntrin(), llvm::SystemZTTIImpl::getIntImmCostIntrin(), llvm::TargetTransformInfo::getIntImmCostIntrin(), llvm::TargetTransformInfoImplBase::getIntImmCostIntrin(), llvm::X86TTIImpl::getIntImmCostIntrin(), llvm::AArch64TTIImpl::getIntrinsicInstrCost(), llvm::ARMTTIImpl::getIntrinsicInstrCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getIntrinsicInstrCost(), llvm::GCNTTIImpl::getIntrinsicInstrCost(), llvm::HexagonTTIImpl::getIntrinsicInstrCost(), llvm::PPCTTIImpl::getIntrinsicInstrCost(), llvm::RISCVTTIImpl::getIntrinsicInstrCost(), llvm::SystemZTTIImpl::getIntrinsicInstrCost(), llvm::TargetTransformInfo::getIntrinsicInstrCost(), llvm::TargetTransformInfoImplBase::getIntrinsicInstrCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::AArch64TTIImpl::getMaskedMemoryOpCost(), llvm::ARMTTIImpl::getMaskedMemoryOpCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getMaskedMemoryOpCost(), llvm::HexagonTTIImpl::getMaskedMemoryOpCost(), llvm::RISCVTTIImpl::getMaskedMemoryOpCost(), llvm::TargetTransformInfo::getMaskedMemoryOpCost(), llvm::TargetTransformInfoImplBase::getMaskedMemoryOpCost(), llvm::X86TTIImpl::getMaskedMemoryOpCost(), llvm::AArch64TTIImpl::getMemoryOpCost(), llvm::ARMTTIImpl::getMemoryOpCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getMemoryOpCost(), llvm::GCNTTIImpl::getMemoryOpCost(), llvm::HexagonTTIImpl::getMemoryOpCost(), llvm::PPCTTIImpl::getMemoryOpCost(), llvm::RISCVTTIImpl::getMemoryOpCost(), llvm::SystemZTTIImpl::getMemoryOpCost(), llvm::TargetTransformInfo::getMemoryOpCost(), llvm::TargetTransformInfoImplBase::getMemoryOpCost(), llvm::WebAssemblyTTIImpl::getMemoryOpCost(), llvm::X86TTIImpl::getMemoryOpCost(), llvm::X86TTIImpl::getMinMaxCost(), llvm::AArch64TTIImpl::getMinMaxReductionCost(), llvm::ARMTTIImpl::getMinMaxReductionCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getMinMaxReductionCost(), llvm::GCNTTIImpl::getMinMaxReductionCost(), llvm::RISCVTTIImpl::getMinMaxReductionCost(), llvm::SystemZTTIImpl::getMinMaxReductionCost(), llvm::TargetTransformInfo::getMinMaxReductionCost(), llvm::X86TTIImpl::getMinMaxReductionCost(), llvm::AArch64TTIImpl::getMulAccReductionCost(), llvm::ARMTTIImpl::getMulAccReductionCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getMulAccReductionCost(), llvm::TargetTransformInfo::getMulAccReductionCost(), llvm::TargetTransformInfoImplBase::getMulAccReductionCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::BasicTTIImplBase< BasicTTIImpl >::getOperandsScalarizationOverhead(), llvm::TargetTransformInfo::getOperandsScalarizationOverhead(), llvm::TargetTransformInfoImplBase::getOperandsScalarizationOverhead(), llvm::BasicTTIImplBase< BasicTTIImpl >::getOrderedReductionCost(), llvm::AArch64TTIImpl::getPartialReductionCost(), llvm::RISCVTTIImpl::getPartialReductionCost(), llvm::TargetTransformInfo::getPartialReductionCost(), llvm::TargetTransformInfoImplBase::getPartialReductionCost(), llvm::WebAssemblyTTIImpl::getPartialReductionCost(), llvm::RISCVTTIImpl::getPointersChainCost(), llvm::TargetTransformInfo::getPointersChainCost(), llvm::TargetTransformInfoImplBase::getPointersChainCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getPointersChainCost(), llvm::X86TTIImpl::getPointersChainCost(), llvm::getPredBlockCostDivisor(), llvm::BasicTTIImplBase< BasicTTIImpl >::getReplicationShuffleCost(), llvm::TargetTransformInfo::getReplicationShuffleCost(), llvm::TargetTransformInfoImplBase::getReplicationShuffleCost(), llvm::X86TTIImpl::getReplicationShuffleCost(), getScalarizationOverhead(), llvm::AArch64TTIImpl::getScalarizationOverhead(), llvm::BasicTTIImplBase< BasicTTIImpl >::getScalarizationOverhead(), llvm::BasicTTIImplBase< BasicTTIImpl >::getScalarizationOverhead(), llvm::BasicTTIImplBase< BasicTTIImpl >::getScalarizationOverhead(), llvm::NVPTXTTIImpl::getScalarizationOverhead(), llvm::RISCVTTIImpl::getScalarizationOverhead(), llvm::SystemZTTIImpl::getScalarizationOverhead(), llvm::TargetTransformInfo::getScalarizationOverhead(), llvm::TargetTransformInfoImplBase::getScalarizationOverhead(), llvm::X86TTIImpl::getScalarizationOverhead(), llvm::AArch64TTIImpl::getShuffleCost(), llvm::ARMTTIImpl::getShuffleCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getShuffleCost(), llvm::GCNTTIImpl::getShuffleCost(), llvm::HexagonTTIImpl::getShuffleCost(), llvm::PPCTTIImpl::getShuffleCost(), llvm::RISCVTTIImpl::getShuffleCost(), llvm::SystemZTTIImpl::getShuffleCost(), llvm::TargetTransformInfo::getShuffleCost(), llvm::TargetTransformInfoImplBase::getShuffleCost(), llvm::X86TTIImpl::getShuffleCost(), llvm::AArch64TTIImpl::getSpliceCost(), llvm::RISCVTTIImpl::getStoreImmCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getStridedMemoryOpCost(), llvm::RISCVTTIImpl::getStridedMemoryOpCost(), llvm::TargetTransformInfo::getStridedMemoryOpCost(), llvm::TargetTransformInfoImplBase::getStridedMemoryOpCost(), llvm::slpvectorizer::BoUpSLP::getTreeCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getTreeReductionCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getTypeBasedIntrinsicInstrCost(), getVectorInstrCost(), llvm::AArch64TTIImpl::getVectorInstrCost(), llvm::AArch64TTIImpl::getVectorInstrCost(), llvm::AArch64TTIImpl::getVectorInstrCost(), llvm::ARMTTIImpl::getVectorInstrCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getVectorInstrCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getVectorInstrCost(), llvm::BasicTTIImplBase< BasicTTIImpl >::getVectorInstrCost(), llvm::GCNTTIImpl::getVectorInstrCost(), llvm::HexagonTTIImpl::getVectorInstrCost(), llvm::PPCTTIImpl::getVectorInstrCost(), llvm::R600TTIImpl::getVectorInstrCost(), llvm::RISCVTTIImpl::getVectorInstrCost(), llvm::SystemZTTIImpl::getVectorInstrCost(), llvm::TargetTransformInfo::getVectorInstrCost(), llvm::TargetTransformInfo::getVectorInstrCost(), llvm::TargetTransformInfo::getVectorInstrCost(), llvm::TargetTransformInfoImplBase::getVectorInstrCost(), llvm::TargetTransformInfoImplBase::getVectorInstrCost(), llvm::TargetTransformInfoImplBase::getVectorInstrCost(), llvm::WebAssemblyTTIImpl::getVectorInstrCost(), llvm::X86TTIImpl::getVectorInstrCost(), llvm::TargetTransformInfo::getVPMemoryOpCost(), llvm::TargetTransformInfoImplBase::getVPMemoryOpCost(), isFreeConcat(), isMaskedLoadCompress(), OutputCostKindToTargetCostKind(), llvm::CostModelPrinterPass::run(), llvm::slpvectorizer::BoUpSLP::transformNodes(), tryToMatchAndCreateExtendedReduction(), tryToMatchAndCreateMulAccumulateReduction(), and validateAndCostRequiredSelects().
|
static |