LLVM 20.0.0git
Macros | Variables
CostModel.cpp File Reference
#include "llvm/Analysis/CostModel.h"
#include "llvm/Analysis/Passes.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/PassManager.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/IR/IntrinsicInst.h"

Go to the source code of this file.

Macros

#define CM_NAME   "cost-model"
 
#define DEBUG_TYPE   CM_NAME
 

Variables

static cl::opt< TargetTransformInfo::TargetCostKindCostKind ("cost-kind", cl::desc("Target cost kind"), cl::init(TargetTransformInfo::TCK_RecipThroughput), cl::values(clEnumValN(TargetTransformInfo::TCK_RecipThroughput, "throughput", "Reciprocal throughput"), clEnumValN(TargetTransformInfo::TCK_Latency, "latency", "Instruction latency"), clEnumValN(TargetTransformInfo::TCK_CodeSize, "code-size", "Code size"), clEnumValN(TargetTransformInfo::TCK_SizeAndLatency, "size-latency", "Code size and latency")))
 
static cl::opt< boolTypeBasedIntrinsicCost ("type-based-intrinsic-cost", cl::desc("Calculate intrinsics cost based only on argument types"), cl::init(false))
 

Macro Definition Documentation

◆ CM_NAME

#define CM_NAME   "cost-model"

Definition at line 47 of file CostModel.cpp.

◆ DEBUG_TYPE

#define DEBUG_TYPE   CM_NAME

Definition at line 48 of file CostModel.cpp.

Variable Documentation

◆ CostKind

cl::opt< TargetTransformInfo::TargetCostKind > CostKind("cost-kind", cl::desc("Target cost kind"), cl::init(TargetTransformInfo::TCK_RecipThroughput), cl::values(clEnumValN(TargetTransformInfo::TCK_RecipThroughput, "throughput", "Reciprocal throughput"), clEnumValN(TargetTransformInfo::TCK_Latency, "latency", "Instruction latency"), clEnumValN(TargetTransformInfo::TCK_CodeSize, "code-size", "Code size"), clEnumValN(TargetTransformInfo::TCK_SizeAndLatency, "size-latency", "Code size and latency"))) ( "cost-kind"  ,
cl::desc("Target cost kind")  ,
cl::init(TargetTransformInfo::TCK_RecipThroughput)  ,
cl::values(clEnumValN(TargetTransformInfo::TCK_RecipThroughput, "throughput", "Reciprocal throughput"), clEnumValN(TargetTransformInfo::TCK_Latency, "latency", "Instruction latency"), clEnumValN(TargetTransformInfo::TCK_CodeSize, "code-size", "Code size"), clEnumValN(TargetTransformInfo::TCK_SizeAndLatency, "size-latency", "Code size and latency"))   
)
static

Referenced by analyzeLoopUnrollCost(), llvm::slpvectorizer::BoUpSLP::canVectorizeLoads(), llvm::VPWidenRecipe::computeCost(), costAndCollectOperands(), findBestNonTrivialUnswitchCandidate(), llvm::foldBranchToCommonDest(), llvm::TargetTransformInfo::getAltInstrCost(), llvm::AArch64TTIImpl::getArithmeticInstrCost(), llvm::GCNTTIImpl::getArithmeticInstrCost(), llvm::ARMTTIImpl::getArithmeticInstrCost(), llvm::HexagonTTIImpl::getArithmeticInstrCost(), llvm::NVPTXTTIImpl::getArithmeticInstrCost(), llvm::PPCTTIImpl::getArithmeticInstrCost(), llvm::RISCVTTIImpl::getArithmeticInstrCost(), llvm::SystemZTTIImpl::getArithmeticInstrCost(), llvm::WebAssemblyTTIImpl::getArithmeticInstrCost(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::TargetTransformInfoImplBase::getArithmeticInstrCost(), llvm::TargetTransformInfo::getArithmeticInstrCost(), llvm::BasicTTIImplBase< T >::getArithmeticReductionCost(), llvm::AArch64TTIImpl::getArithmeticReductionCost(), llvm::GCNTTIImpl::getArithmeticReductionCost(), llvm::RISCVTTIImpl::getArithmeticReductionCost(), llvm::X86TTIImpl::getArithmeticReductionCost(), llvm::TargetTransformInfo::getArithmeticReductionCost(), llvm::ARMTTIImpl::getArithmeticReductionCost(), llvm::AArch64TTIImpl::getArithmeticReductionCostSVE(), llvm::HexagonTTIImpl::getCallInstrCost(), llvm::TargetTransformInfo::getCallInstrCost(), llvm::BasicTTIImplBase< T >::getCastInstrCost(), llvm::AArch64TTIImpl::getCastInstrCost(), llvm::ARMTTIImpl::getCastInstrCost(), llvm::HexagonTTIImpl::getCastInstrCost(), llvm::PPCTTIImpl::getCastInstrCost(), llvm::RISCVTTIImpl::getCastInstrCost(), llvm::SystemZTTIImpl::getCastInstrCost(), llvm::X86TTIImpl::getCastInstrCost(), llvm::TargetTransformInfo::getCastInstrCost(), llvm::BasicTTIImplBase< T >::getCFInstrCost(), llvm::AArch64TTIImpl::getCFInstrCost(), llvm::GCNTTIImpl::getCFInstrCost(), llvm::R600TTIImpl::getCFInstrCost(), llvm::ARMTTIImpl::getCFInstrCost(), llvm::PPCTTIImpl::getCFInstrCost(), llvm::RISCVTTIImpl::getCFInstrCost(), llvm::X86TTIImpl::getCFInstrCost(), llvm::TargetTransformInfoImplBase::getCFInstrCost(), llvm::TargetTransformInfo::getCFInstrCost(), llvm::BasicTTIImplBase< T >::getCmpSelInstrCost(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::ARMTTIImpl::getCmpSelInstrCost(), llvm::HexagonTTIImpl::getCmpSelInstrCost(), llvm::PPCTTIImpl::getCmpSelInstrCost(), llvm::RISCVTTIImpl::getCmpSelInstrCost(), llvm::SystemZTTIImpl::getCmpSelInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::BPFTTIImpl::getCmpSelInstrCost(), llvm::TargetTransformInfo::getCmpSelInstrCost(), llvm::AArch64TTIImpl::getCostOfKeepingLiveOverCall(), llvm::LoopVectorizationCostModel::getDivRemSpeculationCost(), llvm::BasicTTIImplBase< T >::getExtendedReductionCost(), llvm::TargetTransformInfo::getExtendedReductionCost(), llvm::ARMTTIImpl::getExtendedReductionCost(), llvm::RISCVTTIImpl::getExtendedReductionCost(), llvm::BasicTTIImplBase< T >::getExtractWithExtendCost(), llvm::AArch64TTIImpl::getExtractWithExtendCost(), llvm::HexagonTTIImpl::getGatherScatterOpCost(), llvm::RISCVTTIImpl::getGatherScatterOpCost(), llvm::X86TTIImpl::getGatherScatterOpCost(), llvm::BasicTTIImplBase< T >::getGatherScatterOpCost(), llvm::AArch64TTIImpl::getGatherScatterOpCost(), llvm::ARMTTIImpl::getGatherScatterOpCost(), llvm::TargetTransformInfo::getGatherScatterOpCost(), llvm::BasicTTIImplBase< T >::getGEPCost(), llvm::TargetTransformInfo::getGEPCost(), getGEPCosts(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::HexagonTTIImpl::getInstructionCost(), llvm::PPCTTIImpl::getInstructionCost(), llvm::TargetTransformInfo::getInstructionCost(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::BasicTTIImplBase< T >::getInterleavedMemoryOpCost(), llvm::AArch64TTIImpl::getInterleavedMemoryOpCost(), llvm::ARMTTIImpl::getInterleavedMemoryOpCost(), llvm::HexagonTTIImpl::getInterleavedMemoryOpCost(), llvm::PPCTTIImpl::getInterleavedMemoryOpCost(), llvm::RISCVTTIImpl::getInterleavedMemoryOpCost(), llvm::SystemZTTIImpl::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCost(), llvm::TargetTransformInfo::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCostAVX512(), llvm::TargetTransformInfo::getIntImmCost(), llvm::PPCTTIImpl::getIntImmCost(), llvm::RISCVTTIImpl::getIntImmCost(), llvm::TargetTransformInfo::getIntImmCostInst(), llvm::LanaiTTIImpl::getIntImmCostInst(), llvm::AArch64TTIImpl::getIntImmCostInst(), llvm::ARMTTIImpl::getIntImmCostInst(), llvm::PPCTTIImpl::getIntImmCostInst(), llvm::RISCVTTIImpl::getIntImmCostInst(), llvm::SystemZTTIImpl::getIntImmCostInst(), llvm::X86TTIImpl::getIntImmCostInst(), llvm::TargetTransformInfo::getIntImmCostIntrin(), llvm::AArch64TTIImpl::getIntImmCostIntrin(), llvm::LanaiTTIImpl::getIntImmCostIntrin(), llvm::PPCTTIImpl::getIntImmCostIntrin(), llvm::SystemZTTIImpl::getIntImmCostIntrin(), llvm::X86TTIImpl::getIntImmCostIntrin(), llvm::BasicTTIImplBase< T >::getIntrinsicInstrCost(), llvm::AArch64TTIImpl::getIntrinsicInstrCost(), llvm::GCNTTIImpl::getIntrinsicInstrCost(), llvm::ARMTTIImpl::getIntrinsicInstrCost(), llvm::HexagonTTIImpl::getIntrinsicInstrCost(), llvm::PPCTTIImpl::getIntrinsicInstrCost(), llvm::RISCVTTIImpl::getIntrinsicInstrCost(), llvm::SystemZTTIImpl::getIntrinsicInstrCost(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::TargetTransformInfo::getIntrinsicInstrCost(), llvm::BasicTTIImplBase< T >::getMaskedMemoryOpCost(), llvm::AArch64TTIImpl::getMaskedMemoryOpCost(), llvm::ARMTTIImpl::getMaskedMemoryOpCost(), llvm::HexagonTTIImpl::getMaskedMemoryOpCost(), llvm::RISCVTTIImpl::getMaskedMemoryOpCost(), llvm::X86TTIImpl::getMaskedMemoryOpCost(), llvm::TargetTransformInfo::getMaskedMemoryOpCost(), llvm::TargetTransformInfo::getMemoryOpCost(), llvm::RISCVTTIImpl::getMemoryOpCost(), llvm::AArch64TTIImpl::getMemoryOpCost(), llvm::ARMTTIImpl::getMemoryOpCost(), llvm::HexagonTTIImpl::getMemoryOpCost(), llvm::PPCTTIImpl::getMemoryOpCost(), llvm::SystemZTTIImpl::getMemoryOpCost(), llvm::X86TTIImpl::getMemoryOpCost(), llvm::X86TTIImpl::getMinMaxCost(), llvm::BasicTTIImplBase< T >::getMinMaxReductionCost(), llvm::AArch64TTIImpl::getMinMaxReductionCost(), llvm::GCNTTIImpl::getMinMaxReductionCost(), llvm::ARMTTIImpl::getMinMaxReductionCost(), llvm::RISCVTTIImpl::getMinMaxReductionCost(), llvm::X86TTIImpl::getMinMaxReductionCost(), llvm::TargetTransformInfo::getMinMaxReductionCost(), llvm::BasicTTIImplBase< T >::getMulAccReductionCost(), llvm::TargetTransformInfo::getMulAccReductionCost(), llvm::ARMTTIImpl::getMulAccReductionCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::BasicTTIImplBase< T >::getOperandsScalarizationOverhead(), llvm::TargetTransformInfo::getOperandsScalarizationOverhead(), llvm::BasicTTIImplBase< T >::getOrderedReductionCost(), llvm::TargetTransformInfo::getPointersChainCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getPointersChainCost(), llvm::RISCVTTIImpl::getPointersChainCost(), llvm::X86TTIImpl::getPointersChainCost(), llvm::LoopVectorizationCostModel::getReductionPatternCost(), llvm::BasicTTIImplBase< T >::getReplicationShuffleCost(), llvm::X86TTIImpl::getReplicationShuffleCost(), llvm::TargetTransformInfo::getReplicationShuffleCost(), llvm::BasicTTIImplBase< T >::getScalarizationOverhead(), llvm::AArch64TTIImpl::getScalarizationOverhead(), llvm::X86TTIImpl::getScalarizationOverhead(), llvm::TargetTransformInfo::getScalarizationOverhead(), getShuffleCost(), llvm::TargetTransformInfo::getShuffleCost(), llvm::BasicTTIImplBase< T >::getShuffleCost(), llvm::AArch64TTIImpl::getShuffleCost(), llvm::GCNTTIImpl::getShuffleCost(), llvm::ARMTTIImpl::getShuffleCost(), llvm::RISCVTTIImpl::getShuffleCost(), llvm::SystemZTTIImpl::getShuffleCost(), llvm::X86TTIImpl::getShuffleCost(), llvm::AArch64TTIImpl::getSpliceCost(), llvm::RISCVTTIImpl::getStoreImmCost(), llvm::BasicTTIImplBase< T >::getStridedMemoryOpCost(), llvm::RISCVTTIImpl::getStridedMemoryOpCost(), llvm::TargetTransformInfo::getStridedMemoryOpCost(), llvm::slpvectorizer::BoUpSLP::getTreeCost(), llvm::BasicTTIImplBase< T >::getTreeReductionCost(), llvm::BasicTTIImplBase< T >::getTypeBasedIntrinsicInstrCost(), llvm::LoopVectorizationCostModel::getVectorCallCost(), llvm::BasicTTIImplBase< T >::getVectorInstrCost(), llvm::ARMTTIImpl::getVectorInstrCost(), llvm::HexagonTTIImpl::getVectorInstrCost(), llvm::PPCTTIImpl::getVectorInstrCost(), llvm::RISCVTTIImpl::getVectorInstrCost(), llvm::SystemZTTIImpl::getVectorInstrCost(), llvm::WebAssemblyTTIImpl::getVectorInstrCost(), llvm::X86TTIImpl::getVectorInstrCost(), llvm::TargetTransformInfo::getVectorInstrCost(), llvm::GCNTTIImpl::getVectorInstrCost(), llvm::R600TTIImpl::getVectorInstrCost(), llvm::PPCTTIImpl::getVPMemoryOpCost(), llvm::CostModelPrinterPass::run(), llvm::LoopVectorizationCostModel::setVectorizedCallDecision(), llvm::slpvectorizer::BoUpSLP::transformNodes(), and validateAndCostRequiredSelects().

◆ TypeBasedIntrinsicCost

cl::opt< bool > TypeBasedIntrinsicCost("type-based-intrinsic-cost", cl::desc("Calculate intrinsics cost based only on argument types"), cl::init(false)) ( "type-based-intrinsic-cost"  ,
cl::desc("Calculate intrinsics cost based only on argument types")  ,
cl::init(false)   
)
static