class X86TTIImpl
Declaration
class X86TTIImpl : public BasicTTIImplBase { /* full declaration omitted */ };
Description
Base class which can be used to help build a TTI implementation. This class provides as much implementation of the TTI interface as is possible using the target independent parts of the code generator. In order to subclass it, your class must implement a getST() method to return the subtarget, and a getTLI() method to return the target lowering. We need these methods implemented in the derived class so that this class doesn't have to duplicate storage for them.
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:27
Inherits from: BasicTTIImplBase
Member Variables
- private const llvm::X86Subtarget* ST
- private const llvm::X86TargetLowering* TLI
- private const llvm::FeatureBitset InlineFeatureIgnoreList = {X86::FeatureX86_64, X86::FeatureNOPL, X86::FeatureCX16, X86::FeatureLAHFSAHF64, X86::FeatureSSEUnalignedMem, X86::TuningFast11ByteNOP, X86::TuningFast15ByteNOP, X86::TuningFastBEXTR, X86::TuningFastHorizontalOps, X86::TuningFastLZCNT, X86::TuningFastScalarFSQRT, X86::TuningFastSHLDRotate, X86::TuningFastScalarShiftMasks, X86::TuningFastVectorShiftMasks, X86::TuningFastVariableCrossLaneShuffle, X86::TuningFastVariablePerLaneShuffle, X86::TuningFastVectorFSQRT, X86::TuningLEAForSP, X86::TuningLEAUsesAG, X86::TuningLZCNTFalseDeps, X86::TuningBranchFusion, X86::TuningMacroFusion, X86::TuningPadShortFunctions, X86::TuningPOPCNTFalseDeps, X86::TuningMULCFalseDeps, X86::TuningPERMFalseDeps, X86::TuningRANGEFalseDeps, X86::TuningGETMANTFalseDeps, X86::TuningMULLQFalseDeps, X86::TuningSlow3OpsLEA, X86::TuningSlowDivide32, X86::TuningSlowDivide64, X86::TuningSlowIncDec, X86::TuningSlowLEA, X86::TuningSlowPMADDWD, X86::TuningSlowPMULLD, X86::TuningSlowSHLD, X86::TuningSlowTwoMemOps, X86::TuningSlowUAMem16, X86::TuningPreferMaskRegisters, X86::TuningInsertVZEROUPPER, X86::TuningUseSLMArithCosts, X86::TuningUseGLMDivSqrtCosts, X86::TuningFastGather, X86::TuningSlowUAMem32, X86::TuningPrefer128Bit, X86::TuningPrefer256Bit, X86::ProcIntelAtom}
Method Overview
- public X86TTIImpl(const llvm::X86TargetMachine * TM, const llvm::Function & F)
- public bool areInlineCompatible(const llvm::Function * Caller, const llvm::Function * Callee) const
- public bool areTypesABICompatible(const llvm::Function * Caller, const llvm::Function * Callee, const ArrayRef<llvm::Type *> & Type) const
- public bool canMacroFuseCmp()
- public bool enableInterleavedAccessVectorization()
- public TTI::MemCmpExpansionOptions enableMemCmpExpansion(bool OptSize, bool IsZeroCmp) const
- public bool forceScalarizeMaskedGather(llvm::VectorType * VTy, llvm::Align Alignment)
- public bool forceScalarizeMaskedScatter(llvm::VectorType * VTy, llvm::Align Alignment)
- public llvm::InstructionCost getAddressComputationCost(llvm::Type * PtrTy, llvm::ScalarEvolution * SE, const llvm::SCEV * Ptr)
- public llvm::InstructionCost getArithmeticInstrCost(unsigned int Opcode, llvm::Type * Ty, TTI::TargetCostKind CostKind, TTI::OperandValueKind Opd1Info = TargetTransformInfo::OK_AnyValue, TTI::OperandValueKind Opd2Info = TargetTransformInfo::OK_AnyValue, TTI::OperandValueProperties Opd1PropInfo = TargetTransformInfo::OP_None, TTI::OperandValueProperties Opd2PropInfo = TargetTransformInfo::OP_None, ArrayRef<const llvm::Value *> Args = llvm::ArrayRef<const llvm::Value *>(), const llvm::Instruction * CxtI = nullptr)
- public llvm::InstructionCost getArithmeticReductionCost(unsigned int Opcode, llvm::VectorType * Ty, Optional<llvm::FastMathFlags> FMF, TTI::TargetCostKind CostKind)
- public unsigned int getAtomicMemIntrinsicMaxElementSize() const
- public llvm::InstructionCost getCFInstrCost(unsigned int Opcode, TTI::TargetCostKind CostKind, const llvm::Instruction * I = nullptr)
- public llvm::Optional<unsigned int> getCacheAssociativity(TargetTransformInfo::CacheLevel Level) const
- public llvm::Optional<unsigned int> getCacheSize(TargetTransformInfo::CacheLevel Level) const
- public llvm::InstructionCost getCastInstrCost(unsigned int Opcode, llvm::Type * Dst, llvm::Type * Src, TTI::CastContextHint CCH, TTI::TargetCostKind CostKind, const llvm::Instruction * I = nullptr)
- public llvm::InstructionCost getCmpSelInstrCost(unsigned int Opcode, llvm::Type * ValTy, llvm::Type * CondTy, CmpInst::Predicate VecPred, TTI::TargetCostKind CostKind, const llvm::Instruction * I = nullptr)
- private llvm::InstructionCost getGSScalarCost(unsigned int Opcode, llvm::Type * DataTy, bool VariableMask, llvm::Align Alignment, unsigned int AddressSpace)
- private llvm::InstructionCost getGSVectorCost(unsigned int Opcode, llvm::Type * DataTy, const llvm::Value * Ptr, llvm::Align Alignment, unsigned int AddressSpace)
- private int getGatherOverhead() const
- public llvm::InstructionCost getGatherScatterOpCost(unsigned int Opcode, llvm::Type * DataTy, const llvm::Value * Ptr, bool VariableMask, llvm::Align Alignment, TTI::TargetCostKind CostKind, const llvm::Instruction * I)
- public llvm::InstructionCost getIntImmCost(int64_t)
- public llvm::InstructionCost getIntImmCost(const llvm::APInt & Imm, llvm::Type * Ty, TTI::TargetCostKind CostKind)
- public llvm::InstructionCost getIntImmCostInst(unsigned int Opcode, unsigned int Idx, const llvm::APInt & Imm, llvm::Type * Ty, TTI::TargetCostKind CostKind, llvm::Instruction * Inst = nullptr)
- public llvm::InstructionCost getIntImmCostIntrin(Intrinsic::ID IID, unsigned int Idx, const llvm::APInt & Imm, llvm::Type * Ty, TTI::TargetCostKind CostKind)
- public llvm::InstructionCost getInterleavedMemoryOpCost(unsigned int Opcode, llvm::Type * VecTy, unsigned int Factor, ArrayRef<unsigned int> Indices, llvm::Align Alignment, unsigned int AddressSpace, TTI::TargetCostKind CostKind, bool UseMaskForCond = false, bool UseMaskForGaps = false)
- public llvm::InstructionCost getInterleavedMemoryOpCostAVX512(unsigned int Opcode, llvm::FixedVectorType * VecTy, unsigned int Factor, ArrayRef<unsigned int> Indices, llvm::Align Alignment, unsigned int AddressSpace, TTI::TargetCostKind CostKind, bool UseMaskForCond = false, bool UseMaskForGaps = false)
- public llvm::InstructionCost getIntrinsicInstrCost(const llvm::IntrinsicCostAttributes & ICA, TTI::TargetCostKind CostKind)
- public unsigned int getLoadStoreVecRegBitWidth(unsigned int AS) const
- public llvm::InstructionCost getMaskedMemoryOpCost(unsigned int Opcode, llvm::Type * Src, llvm::Align Alignment, unsigned int AddressSpace, TTI::TargetCostKind CostKind)
- public unsigned int getMaxInterleaveFactor(unsigned int VF)
- public llvm::InstructionCost getMemoryOpCost(unsigned int Opcode, llvm::Type * Src, llvm::MaybeAlign Alignment, unsigned int AddressSpace, TTI::TargetCostKind CostKind, const llvm::Instruction * I = nullptr)
- public llvm::InstructionCost getMinMaxCost(llvm::Type * Ty, llvm::Type * CondTy, bool IsUnsigned)
- public llvm::InstructionCost getMinMaxReductionCost(llvm::VectorType * Ty, llvm::VectorType * CondTy, bool IsUnsigned, TTI::TargetCostKind CostKind)
- public unsigned int getNumberOfRegisters(unsigned int ClassID) const
- public TTI::PopcntSupportKind getPopcntSupport(unsigned int TyWidth)
- public llvm::TypeSize getRegisterBitWidth(TargetTransformInfo::RegisterKind K) const
- public llvm::InstructionCost getReplicationShuffleCost(llvm::Type * EltTy, int ReplicationFactor, int VF, const llvm::APInt & DemandedDstElts, TTI::TargetCostKind CostKind)
- private const llvm::X86Subtarget * getST() const
- public llvm::InstructionCost getScalarizationOverhead(llvm::VectorType * Ty, const llvm::APInt & DemandedElts, bool Insert, bool Extract)
- private int getScatterOverhead() const
- public llvm::InstructionCost getShuffleCost(TTI::ShuffleKind Kind, llvm::VectorType * Tp, ArrayRef<int> Mask, int Index, llvm::VectorType * SubTp, ArrayRef<const llvm::Value *> Args = None)
- private const llvm::X86TargetLowering * getTLI() const
- public llvm::InstructionCost getTypeBasedIntrinsicInstrCost(const llvm::IntrinsicCostAttributes & ICA, TTI::TargetCostKind CostKind)
- public llvm::InstructionCost getVectorInstrCost(unsigned int Opcode, llvm::Type * Val, unsigned int Index)
- public bool hasDivRemOp(llvm::Type * DataType, bool IsSigned)
- public Optional<llvm::Instruction *> instCombineIntrinsic(llvm::InstCombiner & IC, llvm::IntrinsicInst & II) const
- public bool isFCmpOrdCheaperThanFCmpZero(llvm::Type * Ty)
- public bool isLSRCostLess(const TargetTransformInfo::LSRCost & C1, const TargetTransformInfo::LSRCost & C2)
- public bool isLegalAltInstr(llvm::VectorType * VecTy, unsigned int Opcode0, unsigned int Opcode1, const llvm::SmallBitVector & OpcodeMask) const
- public bool isLegalBroadcastLoad(llvm::Type * ElementTy, llvm::ElementCount NumElements) const
- public bool isLegalMaskedCompressStore(llvm::Type * DataType)
- public bool isLegalMaskedExpandLoad(llvm::Type * DataType)
- public bool isLegalMaskedGather(llvm::Type * DataType, llvm::Align Alignment)
- public bool isLegalMaskedLoad(llvm::Type * DataType, llvm::Align Alignment)
- public bool isLegalMaskedScatter(llvm::Type * DataType, llvm::Align Alignment)
- public bool isLegalMaskedStore(llvm::Type * DataType, llvm::Align Alignment)
- public bool isLegalNTLoad(llvm::Type * DataType, llvm::Align Alignment)
- public bool isLegalNTStore(llvm::Type * DataType, llvm::Align Alignment)
- public bool prefersVectorizedAddressing() const
- public Optional<llvm::Value *> simplifyDemandedUseBitsIntrinsic(llvm::InstCombiner & IC, llvm::IntrinsicInst & II, llvm::APInt DemandedMask, llvm::KnownBits & Known, bool & KnownBitsComputed) const
- public Optional<llvm::Value *> simplifyDemandedVectorEltsIntrinsic(llvm::InstCombiner & IC, llvm::IntrinsicInst & II, llvm::APInt DemandedElts, llvm::APInt & UndefElts, llvm::APInt & UndefElts2, llvm::APInt & UndefElts3, std::function<void (Instruction *, unsigned int, APInt, APInt &)> SimplifyAndSetOp) const
- public bool supportsEfficientVectorElementLoadStore() const
- private bool supportsGather() const
Methods
¶X86TTIImpl(const llvm::X86TargetMachine* TM,
const llvm::Function& F)
X86TTIImpl(const llvm::X86TargetMachine* TM,
const llvm::Function& F)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:104
Parameters
- const llvm::X86TargetMachine* TM
- const llvm::Function& F
¶bool areInlineCompatible(
const llvm::Function* Caller,
const llvm::Function* Callee) const
bool areInlineCompatible(
const llvm::Function* Caller,
const llvm::Function* Callee) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:248
Parameters
- const llvm::Function* Caller
- const llvm::Function* Callee
¶bool areTypesABICompatible(
const llvm::Function* Caller,
const llvm::Function* Callee,
const ArrayRef<llvm::Type*>& Type) const
bool areTypesABICompatible(
const llvm::Function* Caller,
const llvm::Function* Callee,
const ArrayRef<llvm::Type*>& Type) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:250
Parameters
- const llvm::Function* Caller
- const llvm::Function* Callee
- const ArrayRef<llvm::Type*>& Type
¶bool canMacroFuseCmp()
bool canMacroFuseCmp()
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:230
¶bool enableInterleavedAccessVectorization()
bool enableInterleavedAccessVectorization()
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:256
¶TTI::MemCmpExpansionOptions enableMemCmpExpansion(
bool OptSize,
bool IsZeroCmp) const
TTI::MemCmpExpansionOptions enableMemCmpExpansion(
bool OptSize,
bool IsZeroCmp) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:252
Parameters
- bool OptSize
- bool IsZeroCmp
¶bool forceScalarizeMaskedGather(
llvm::VectorType* VTy,
llvm::Align Alignment)
bool forceScalarizeMaskedGather(
llvm::VectorType* VTy,
llvm::Align Alignment)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:236
Parameters
- llvm::VectorType* VTy
- llvm::Align Alignment
¶bool forceScalarizeMaskedScatter(
llvm::VectorType* VTy,
llvm::Align Alignment)
bool forceScalarizeMaskedScatter(
llvm::VectorType* VTy,
llvm::Align Alignment)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:237
Parameters
- llvm::VectorType* VTy
- llvm::Align Alignment
¶llvm::InstructionCost getAddressComputationCost(
llvm::Type* PtrTy,
llvm::ScalarEvolution* SE,
const llvm::SCEV* Ptr)
llvm::InstructionCost getAddressComputationCost(
llvm::Type* PtrTy,
llvm::ScalarEvolution* SE,
const llvm::SCEV* Ptr)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:170
Parameters
- llvm::Type* PtrTy
- llvm::ScalarEvolution* SE
- const llvm::SCEV* Ptr
¶llvm::InstructionCost getArithmeticInstrCost(
unsigned int Opcode,
llvm::Type* Ty,
TTI::TargetCostKind CostKind,
TTI::OperandValueKind Opd1Info =
TargetTransformInfo::OK_AnyValue,
TTI::OperandValueKind Opd2Info =
TargetTransformInfo::OK_AnyValue,
TTI::OperandValueProperties Opd1PropInfo =
TargetTransformInfo::OP_None,
TTI::OperandValueProperties Opd2PropInfo =
TargetTransformInfo::OP_None,
ArrayRef<const llvm::Value*> Args =
llvm::ArrayRef<const llvm::Value*>(),
const llvm::Instruction* CxtI = nullptr)
llvm::InstructionCost getArithmeticInstrCost(
unsigned int Opcode,
llvm::Type* Ty,
TTI::TargetCostKind CostKind,
TTI::OperandValueKind Opd1Info =
TargetTransformInfo::OK_AnyValue,
TTI::OperandValueKind Opd2Info =
TargetTransformInfo::OK_AnyValue,
TTI::OperandValueProperties Opd1PropInfo =
TargetTransformInfo::OP_None,
TTI::OperandValueProperties Opd2PropInfo =
TargetTransformInfo::OP_None,
ArrayRef<const llvm::Value*> Args =
llvm::ArrayRef<const llvm::Value*>(),
const llvm::Instruction* CxtI = nullptr)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:129
Parameters
- unsigned int Opcode
- llvm::Type* Ty
- TTI::TargetCostKind CostKind
- TTI::OperandValueKind Opd1Info = TargetTransformInfo::OK_AnyValue
- TTI::OperandValueKind Opd2Info = TargetTransformInfo::OK_AnyValue
- TTI::OperandValueProperties Opd1PropInfo = TargetTransformInfo::OP_None
- TTI::OperandValueProperties Opd2PropInfo = TargetTransformInfo::OP_None
- ArrayRef<const llvm::Value*> Args = llvm::ArrayRef<const llvm::Value *>()
- const llvm::Instruction* CxtI = nullptr
¶llvm::InstructionCost getArithmeticReductionCost(
unsigned int Opcode,
llvm::VectorType* Ty,
Optional<llvm::FastMathFlags> FMF,
TTI::TargetCostKind CostKind)
llvm::InstructionCost getArithmeticReductionCost(
unsigned int Opcode,
llvm::VectorType* Ty,
Optional<llvm::FastMathFlags> FMF,
TTI::TargetCostKind CostKind)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:193
Parameters
- unsigned int Opcode
- llvm::VectorType* Ty
- Optional<llvm::FastMathFlags> FMF
- TTI::TargetCostKind CostKind
¶unsigned int getAtomicMemIntrinsicMaxElementSize()
const
unsigned int getAtomicMemIntrinsicMaxElementSize()
const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:185
¶llvm::InstructionCost getCFInstrCost(
unsigned int Opcode,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I = nullptr)
llvm::InstructionCost getCFInstrCost(
unsigned int Opcode,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I = nullptr)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:218
Parameters
- unsigned int Opcode
- TTI::TargetCostKind CostKind
- const llvm::Instruction* I = nullptr
¶llvm::Optional<unsigned int>
getCacheAssociativity(
TargetTransformInfo::CacheLevel Level) const
llvm::Optional<unsigned int>
getCacheAssociativity(
TargetTransformInfo::CacheLevel Level) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:118
Parameters
- TargetTransformInfo::CacheLevel Level
¶llvm::Optional<unsigned int> getCacheSize(
TargetTransformInfo::CacheLevel Level) const
llvm::Optional<unsigned int> getCacheSize(
TargetTransformInfo::CacheLevel Level) const
Description
@ {
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:116
Parameters
- TargetTransformInfo::CacheLevel Level
¶llvm::InstructionCost getCastInstrCost(
unsigned int Opcode,
llvm::Type* Dst,
llvm::Type* Src,
TTI::CastContextHint CCH,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I = nullptr)
llvm::InstructionCost getCastInstrCost(
unsigned int Opcode,
llvm::Type* Dst,
llvm::Type* Src,
TTI::CastContextHint CCH,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I = nullptr)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:141
Parameters
- unsigned int Opcode
- llvm::Type* Dst
- llvm::Type* Src
- TTI::CastContextHint CCH
- TTI::TargetCostKind CostKind
- const llvm::Instruction* I = nullptr
¶llvm::InstructionCost getCmpSelInstrCost(
unsigned int Opcode,
llvm::Type* ValTy,
llvm::Type* CondTy,
CmpInst::Predicate VecPred,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I = nullptr)
llvm::InstructionCost getCmpSelInstrCost(
unsigned int Opcode,
llvm::Type* ValTy,
llvm::Type* CondTy,
CmpInst::Predicate VecPred,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I = nullptr)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:145
Parameters
- unsigned int Opcode
- llvm::Type* ValTy
- llvm::Type* CondTy
- CmpInst::Predicate VecPred
- TTI::TargetCostKind CostKind
- const llvm::Instruction* I = nullptr
¶llvm::InstructionCost getGSScalarCost(
unsigned int Opcode,
llvm::Type* DataTy,
bool VariableMask,
llvm::Align Alignment,
unsigned int AddressSpace)
llvm::InstructionCost getGSScalarCost(
unsigned int Opcode,
llvm::Type* DataTy,
bool VariableMask,
llvm::Align Alignment,
unsigned int AddressSpace)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:260
Parameters
- unsigned int Opcode
- llvm::Type* DataTy
- bool VariableMask
- llvm::Align Alignment
- unsigned int AddressSpace
¶llvm::InstructionCost getGSVectorCost(
unsigned int Opcode,
llvm::Type* DataTy,
const llvm::Value* Ptr,
llvm::Align Alignment,
unsigned int AddressSpace)
llvm::InstructionCost getGSVectorCost(
unsigned int Opcode,
llvm::Type* DataTy,
const llvm::Value* Ptr,
llvm::Align Alignment,
unsigned int AddressSpace)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:263
Parameters
- unsigned int Opcode
- llvm::Type* DataTy
- const llvm::Value* Ptr
- llvm::Align Alignment
- unsigned int AddressSpace
¶int getGatherOverhead() const
int getGatherOverhead() const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:267
¶llvm::InstructionCost getGatherScatterOpCost(
unsigned int Opcode,
llvm::Type* DataTy,
const llvm::Value* Ptr,
bool VariableMask,
llvm::Align Alignment,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I)
llvm::InstructionCost getGatherScatterOpCost(
unsigned int Opcode,
llvm::Type* DataTy,
const llvm::Value* Ptr,
bool VariableMask,
llvm::Align Alignment,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:165
Parameters
- unsigned int Opcode
- llvm::Type* DataTy
- const llvm::Value* Ptr
- bool VariableMask
- llvm::Align Alignment
- TTI::TargetCostKind CostKind
- const llvm::Instruction* I
¶llvm::InstructionCost getIntImmCost(int64_t)
llvm::InstructionCost getIntImmCost(int64_t)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:213
Parameters
- int64_t
¶llvm::InstructionCost getIntImmCost(
const llvm::APInt& Imm,
llvm::Type* Ty,
TTI::TargetCostKind CostKind)
llvm::InstructionCost getIntImmCost(
const llvm::APInt& Imm,
llvm::Type* Ty,
TTI::TargetCostKind CostKind)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:215
Parameters
- const llvm::APInt& Imm
- llvm::Type* Ty
- TTI::TargetCostKind CostKind
¶llvm::InstructionCost getIntImmCostInst(
unsigned int Opcode,
unsigned int Idx,
const llvm::APInt& Imm,
llvm::Type* Ty,
TTI::TargetCostKind CostKind,
llvm::Instruction* Inst = nullptr)
llvm::InstructionCost getIntImmCostInst(
unsigned int Opcode,
unsigned int Idx,
const llvm::APInt& Imm,
llvm::Type* Ty,
TTI::TargetCostKind CostKind,
llvm::Instruction* Inst = nullptr)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:221
Parameters
- unsigned int Opcode
- unsigned int Idx
- const llvm::APInt& Imm
- llvm::Type* Ty
- TTI::TargetCostKind CostKind
- llvm::Instruction* Inst = nullptr
¶llvm::InstructionCost getIntImmCostIntrin(
Intrinsic::ID IID,
unsigned int Idx,
const llvm::APInt& Imm,
llvm::Type* Ty,
TTI::TargetCostKind CostKind)
llvm::InstructionCost getIntImmCostIntrin(
Intrinsic::ID IID,
unsigned int Idx,
const llvm::APInt& Imm,
llvm::Type* Ty,
TTI::TargetCostKind CostKind)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:225
Parameters
- Intrinsic::ID IID
- unsigned int Idx
- const llvm::APInt& Imm
- llvm::Type* Ty
- TTI::TargetCostKind CostKind
¶llvm::InstructionCost getInterleavedMemoryOpCost(
unsigned int Opcode,
llvm::Type* VecTy,
unsigned int Factor,
ArrayRef<unsigned int> Indices,
llvm::Align Alignment,
unsigned int AddressSpace,
TTI::TargetCostKind CostKind,
bool UseMaskForCond = false,
bool UseMaskForGaps = false)
llvm::InstructionCost getInterleavedMemoryOpCost(
unsigned int Opcode,
llvm::Type* VecTy,
unsigned int Factor,
ArrayRef<unsigned int> Indices,
llvm::Align Alignment,
unsigned int AddressSpace,
TTI::TargetCostKind CostKind,
bool UseMaskForCond = false,
bool UseMaskForGaps = false)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:203
Parameters
- unsigned int Opcode
- llvm::Type* VecTy
- unsigned int Factor
- ArrayRef<unsigned int> Indices
- llvm::Align Alignment
- unsigned int AddressSpace
- TTI::TargetCostKind CostKind
- bool UseMaskForCond = false
- bool UseMaskForGaps = false
¶llvm::InstructionCost
getInterleavedMemoryOpCostAVX512(
unsigned int Opcode,
llvm::FixedVectorType* VecTy,
unsigned int Factor,
ArrayRef<unsigned int> Indices,
llvm::Align Alignment,
unsigned int AddressSpace,
TTI::TargetCostKind CostKind,
bool UseMaskForCond = false,
bool UseMaskForGaps = false)
llvm::InstructionCost
getInterleavedMemoryOpCostAVX512(
unsigned int Opcode,
llvm::FixedVectorType* VecTy,
unsigned int Factor,
ArrayRef<unsigned int> Indices,
llvm::Align Alignment,
unsigned int AddressSpace,
TTI::TargetCostKind CostKind,
bool UseMaskForCond = false,
bool UseMaskForGaps = false)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:207
Parameters
- unsigned int Opcode
- llvm::FixedVectorType* VecTy
- unsigned int Factor
- ArrayRef<unsigned int> Indices
- llvm::Align Alignment
- unsigned int AddressSpace
- TTI::TargetCostKind CostKind
- bool UseMaskForCond = false
- bool UseMaskForGaps = false
¶llvm::InstructionCost getIntrinsicInstrCost(
const llvm::IntrinsicCostAttributes& ICA,
TTI::TargetCostKind CostKind)
llvm::InstructionCost getIntrinsicInstrCost(
const llvm::IntrinsicCostAttributes& ICA,
TTI::TargetCostKind CostKind)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:190
Parameters
- const llvm::IntrinsicCostAttributes& ICA
- TTI::TargetCostKind CostKind
¶unsigned int getLoadStoreVecRegBitWidth(
unsigned int AS) const
unsigned int getLoadStoreVecRegBitWidth(
unsigned int AS) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:127
Parameters
- unsigned int AS
¶llvm::InstructionCost getMaskedMemoryOpCost(
unsigned int Opcode,
llvm::Type* Src,
llvm::Align Alignment,
unsigned int AddressSpace,
TTI::TargetCostKind CostKind)
llvm::InstructionCost getMaskedMemoryOpCost(
unsigned int Opcode,
llvm::Type* Src,
llvm::Align Alignment,
unsigned int AddressSpace,
TTI::TargetCostKind CostKind)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:162
Parameters
- unsigned int Opcode
- llvm::Type* Src
- llvm::Align Alignment
- unsigned int AddressSpace
- TTI::TargetCostKind CostKind
¶unsigned int getMaxInterleaveFactor(
unsigned int VF)
unsigned int getMaxInterleaveFactor(
unsigned int VF)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:128
Parameters
- unsigned int VF
¶llvm::InstructionCost getMemoryOpCost(
unsigned int Opcode,
llvm::Type* Src,
llvm::MaybeAlign Alignment,
unsigned int AddressSpace,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I = nullptr)
llvm::InstructionCost getMemoryOpCost(
unsigned int Opcode,
llvm::Type* Src,
llvm::MaybeAlign Alignment,
unsigned int AddressSpace,
TTI::TargetCostKind CostKind,
const llvm::Instruction* I = nullptr)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:158
Parameters
- unsigned int Opcode
- llvm::Type* Src
- llvm::MaybeAlign Alignment
- unsigned int AddressSpace
- TTI::TargetCostKind CostKind
- const llvm::Instruction* I = nullptr
¶llvm::InstructionCost getMinMaxCost(
llvm::Type* Ty,
llvm::Type* CondTy,
bool IsUnsigned)
llvm::InstructionCost getMinMaxCost(
llvm::Type* Ty,
llvm::Type* CondTy,
bool IsUnsigned)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:197
Parameters
- llvm::Type* Ty
- llvm::Type* CondTy
- bool IsUnsigned
¶llvm::InstructionCost getMinMaxReductionCost(
llvm::VectorType* Ty,
llvm::VectorType* CondTy,
bool IsUnsigned,
TTI::TargetCostKind CostKind)
llvm::InstructionCost getMinMaxReductionCost(
llvm::VectorType* Ty,
llvm::VectorType* CondTy,
bool IsUnsigned,
TTI::TargetCostKind CostKind)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:199
Parameters
- llvm::VectorType* Ty
- llvm::VectorType* CondTy
- bool IsUnsigned
- TTI::TargetCostKind CostKind
¶unsigned int getNumberOfRegisters(
unsigned int ClassID) const
unsigned int getNumberOfRegisters(
unsigned int ClassID) const
Description
@ {
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:125
Parameters
- unsigned int ClassID
¶TTI::PopcntSupportKind getPopcntSupport(
unsigned int TyWidth)
TTI::PopcntSupportKind getPopcntSupport(
unsigned int TyWidth)
Description
@ {
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:110
Parameters
- unsigned int TyWidth
¶llvm::TypeSize getRegisterBitWidth(
TargetTransformInfo::RegisterKind K) const
llvm::TypeSize getRegisterBitWidth(
TargetTransformInfo::RegisterKind K) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:126
Parameters
- TargetTransformInfo::RegisterKind K
¶llvm::InstructionCost getReplicationShuffleCost(
llvm::Type* EltTy,
int ReplicationFactor,
int VF,
const llvm::APInt& DemandedDstElts,
TTI::TargetCostKind CostKind)
llvm::InstructionCost getReplicationShuffleCost(
llvm::Type* EltTy,
int ReplicationFactor,
int VF,
const llvm::APInt& DemandedDstElts,
TTI::TargetCostKind CostKind)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:154
Parameters
- llvm::Type* EltTy
- int ReplicationFactor
- int VF
- const llvm::APInt& DemandedDstElts
- TTI::TargetCostKind CostKind
¶const llvm::X86Subtarget* getST() const
const llvm::X86Subtarget* getST() const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:35
¶llvm::InstructionCost getScalarizationOverhead(
llvm::VectorType* Ty,
const llvm::APInt& DemandedElts,
bool Insert,
bool Extract)
llvm::InstructionCost getScalarizationOverhead(
llvm::VectorType* Ty,
const llvm::APInt& DemandedElts,
bool Insert,
bool Extract)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:151
Parameters
- llvm::VectorType* Ty
- const llvm::APInt& DemandedElts
- bool Insert
- bool Extract
¶int getScatterOverhead() const
int getScatterOverhead() const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:268
¶llvm::InstructionCost getShuffleCost(
TTI::ShuffleKind Kind,
llvm::VectorType* Tp,
ArrayRef<int> Mask,
int Index,
llvm::VectorType* SubTp,
ArrayRef<const llvm::Value*> Args = None)
llvm::InstructionCost getShuffleCost(
TTI::ShuffleKind Kind,
llvm::VectorType* Tp,
ArrayRef<int> Mask,
int Index,
llvm::VectorType* SubTp,
ArrayRef<const llvm::Value*> Args = None)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:137
Parameters
- TTI::ShuffleKind Kind
- llvm::VectorType* Tp
- ArrayRef<int> Mask
- int Index
- llvm::VectorType* SubTp
- ArrayRef<const llvm::Value*> Args = None
¶const llvm::X86TargetLowering* getTLI() const
const llvm::X86TargetLowering* getTLI() const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:36
¶llvm::InstructionCost
getTypeBasedIntrinsicInstrCost(
const llvm::IntrinsicCostAttributes& ICA,
TTI::TargetCostKind CostKind)
llvm::InstructionCost
getTypeBasedIntrinsicInstrCost(
const llvm::IntrinsicCostAttributes& ICA,
TTI::TargetCostKind CostKind)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:188
Parameters
- const llvm::IntrinsicCostAttributes& ICA
- TTI::TargetCostKind CostKind
¶llvm::InstructionCost getVectorInstrCost(
unsigned int Opcode,
llvm::Type* Val,
unsigned int Index)
llvm::InstructionCost getVectorInstrCost(
unsigned int Opcode,
llvm::Type* Val,
unsigned int Index)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:149
Parameters
- unsigned int Opcode
- llvm::Type* Val
- unsigned int Index
¶bool hasDivRemOp(llvm::Type* DataType,
bool IsSigned)
bool hasDivRemOp(llvm::Type* DataType,
bool IsSigned)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:246
Parameters
- llvm::Type* DataType
- bool IsSigned
¶Optional<llvm::Instruction*> instCombineIntrinsic(
llvm::InstCombiner& IC,
llvm::IntrinsicInst& II) const
Optional<llvm::Instruction*> instCombineIntrinsic(
llvm::InstCombiner& IC,
llvm::IntrinsicInst& II) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:173
Parameters
¶bool isFCmpOrdCheaperThanFCmpZero(llvm::Type* Ty)
bool isFCmpOrdCheaperThanFCmpZero(llvm::Type* Ty)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:247
Parameters
- llvm::Type* Ty
¶bool isLSRCostLess(
const TargetTransformInfo::LSRCost& C1,
const TargetTransformInfo::LSRCost& C2)
bool isLSRCostLess(
const TargetTransformInfo::LSRCost& C1,
const TargetTransformInfo::LSRCost& C2)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:228
Parameters
- const TargetTransformInfo::LSRCost& C1
- const TargetTransformInfo::LSRCost& C2
¶bool isLegalAltInstr(
llvm::VectorType* VecTy,
unsigned int Opcode0,
unsigned int Opcode1,
const llvm::SmallBitVector& OpcodeMask) const
bool isLegalAltInstr(
llvm::VectorType* VecTy,
unsigned int Opcode0,
unsigned int Opcode1,
const llvm::SmallBitVector& OpcodeMask) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:244
Parameters
- llvm::VectorType* VecTy
- unsigned int Opcode0
- unsigned int Opcode1
- const llvm::SmallBitVector& OpcodeMask
¶bool isLegalBroadcastLoad(
llvm::Type* ElementTy,
llvm::ElementCount NumElements) const
bool isLegalBroadcastLoad(
llvm::Type* ElementTy,
llvm::ElementCount NumElements) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:235
Parameters
- llvm::Type* ElementTy
- llvm::ElementCount NumElements
¶bool isLegalMaskedCompressStore(
llvm::Type* DataType)
bool isLegalMaskedCompressStore(
llvm::Type* DataType)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:243
Parameters
- llvm::Type* DataType
¶bool isLegalMaskedExpandLoad(llvm::Type* DataType)
bool isLegalMaskedExpandLoad(llvm::Type* DataType)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:242
Parameters
- llvm::Type* DataType
¶bool isLegalMaskedGather(llvm::Type* DataType,
llvm::Align Alignment)
bool isLegalMaskedGather(llvm::Type* DataType,
llvm::Align Alignment)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:240
Parameters
- llvm::Type* DataType
- llvm::Align Alignment
¶bool isLegalMaskedLoad(llvm::Type* DataType,
llvm::Align Alignment)
bool isLegalMaskedLoad(llvm::Type* DataType,
llvm::Align Alignment)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:231
Parameters
- llvm::Type* DataType
- llvm::Align Alignment
¶bool isLegalMaskedScatter(llvm::Type* DataType,
llvm::Align Alignment)
bool isLegalMaskedScatter(llvm::Type* DataType,
llvm::Align Alignment)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:241
Parameters
- llvm::Type* DataType
- llvm::Align Alignment
¶bool isLegalMaskedStore(llvm::Type* DataType,
llvm::Align Alignment)
bool isLegalMaskedStore(llvm::Type* DataType,
llvm::Align Alignment)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:232
Parameters
- llvm::Type* DataType
- llvm::Align Alignment
¶bool isLegalNTLoad(llvm::Type* DataType,
llvm::Align Alignment)
bool isLegalNTLoad(llvm::Type* DataType,
llvm::Align Alignment)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:233
Parameters
- llvm::Type* DataType
- llvm::Align Alignment
¶bool isLegalNTStore(llvm::Type* DataType,
llvm::Align Alignment)
bool isLegalNTStore(llvm::Type* DataType,
llvm::Align Alignment)
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:234
Parameters
- llvm::Type* DataType
- llvm::Align Alignment
¶bool prefersVectorizedAddressing() const
bool prefersVectorizedAddressing() const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:254
¶Optional<llvm::Value*>
simplifyDemandedUseBitsIntrinsic(
llvm::InstCombiner& IC,
llvm::IntrinsicInst& II,
llvm::APInt DemandedMask,
llvm::KnownBits& Known,
bool& KnownBitsComputed) const
Optional<llvm::Value*>
simplifyDemandedUseBitsIntrinsic(
llvm::InstCombiner& IC,
llvm::IntrinsicInst& II,
llvm::APInt DemandedMask,
llvm::KnownBits& Known,
bool& KnownBitsComputed) const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:176
Parameters
- llvm::InstCombiner& IC
- llvm::IntrinsicInst& II
- llvm::APInt DemandedMask
- llvm::KnownBits& Known
- bool& KnownBitsComputed
¶Optional<llvm::Value*>
simplifyDemandedVectorEltsIntrinsic(
llvm::InstCombiner& IC,
llvm::IntrinsicInst& II,
llvm::APInt DemandedElts,
llvm::APInt& UndefElts,
llvm::APInt& UndefElts2,
llvm::APInt& UndefElts3,
std::function<void(Instruction*,
unsigned int,
APInt,
APInt&)> SimplifyAndSetOp)
const
Optional<llvm::Value*>
simplifyDemandedVectorEltsIntrinsic(
llvm::InstCombiner& IC,
llvm::IntrinsicInst& II,
llvm::APInt DemandedElts,
llvm::APInt& UndefElts,
llvm::APInt& UndefElts2,
llvm::APInt& UndefElts3,
std::function<void(Instruction*,
unsigned int,
APInt,
APInt&)> SimplifyAndSetOp)
const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:179
Parameters
- llvm::InstCombiner& IC
- llvm::IntrinsicInst& II
- llvm::APInt DemandedElts
- llvm::APInt& UndefElts
- llvm::APInt& UndefElts2
- llvm::APInt& UndefElts3
- std::function<void(Instruction*, unsigned int, APInt, APInt&)> SimplifyAndSetOp
¶bool supportsEfficientVectorElementLoadStore()
const
bool supportsEfficientVectorElementLoadStore()
const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:255
¶bool supportsGather() const
bool supportsGather() const
Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:259