LLVM  11.0.0git
Public Member Functions | List of all members
llvm::TargetTransformInfo::Concept Class Referenceabstract

#include "llvm/Analysis/TargetTransformInfo.h"

Public Member Functions

virtual ~Concept ()=0
 
virtual const DataLayoutgetDataLayout () const =0
 
virtual int getGEPCost (Type *PointeeType, const Value *Ptr, ArrayRef< const Value *> Operands, TTI::TargetCostKind CostKind)=0
 
virtual unsigned getInliningThresholdMultiplier ()=0
 
virtual int getInlinerVectorBonusPercent ()=0
 
virtual int getMemcpyCost (const Instruction *I)=0
 
virtual unsigned getEstimatedNumberOfCaseClusters (const SwitchInst &SI, unsigned &JTSize, ProfileSummaryInfo *PSI, BlockFrequencyInfo *BFI)=0
 
virtual int getUserCost (const User *U, ArrayRef< const Value *> Operands, TargetCostKind CostKind)=0
 
virtual bool hasBranchDivergence ()=0
 
virtual bool useGPUDivergenceAnalysis ()=0
 
virtual bool isSourceOfDivergence (const Value *V)=0
 
virtual bool isAlwaysUniform (const Value *V)=0
 
virtual unsigned getFlatAddressSpace ()=0
 
virtual bool collectFlatAddressOperands (SmallVectorImpl< int > &OpIndexes, Intrinsic::ID IID) const =0
 
virtual bool isNoopAddrSpaceCast (unsigned FromAS, unsigned ToAS) const =0
 
virtual ValuerewriteIntrinsicWithAddressSpace (IntrinsicInst *II, Value *OldV, Value *NewV) const =0
 
virtual bool isLoweredToCall (const Function *F)=0
 
virtual void getUnrollingPreferences (Loop *L, ScalarEvolution &, UnrollingPreferences &UP)=0
 
virtual bool isHardwareLoopProfitable (Loop *L, ScalarEvolution &SE, AssumptionCache &AC, TargetLibraryInfo *LibInfo, HardwareLoopInfo &HWLoopInfo)=0
 
virtual bool preferPredicateOverEpilogue (Loop *L, LoopInfo *LI, ScalarEvolution &SE, AssumptionCache &AC, TargetLibraryInfo *TLI, DominatorTree *DT, const LoopAccessInfo *LAI)=0
 
virtual bool emitGetActiveLaneMask ()=0
 
virtual bool isLegalAddImmediate (int64_t Imm)=0
 
virtual bool isLegalICmpImmediate (int64_t Imm)=0
 
virtual bool isLegalAddressingMode (Type *Ty, GlobalValue *BaseGV, int64_t BaseOffset, bool HasBaseReg, int64_t Scale, unsigned AddrSpace, Instruction *I)=0
 
virtual bool isLSRCostLess (TargetTransformInfo::LSRCost &C1, TargetTransformInfo::LSRCost &C2)=0
 
virtual bool isProfitableLSRChainElement (Instruction *I)=0
 
virtual bool canMacroFuseCmp ()=0
 
virtual bool canSaveCmp (Loop *L, BranchInst **BI, ScalarEvolution *SE, LoopInfo *LI, DominatorTree *DT, AssumptionCache *AC, TargetLibraryInfo *LibInfo)=0
 
virtual bool shouldFavorPostInc () const =0
 
virtual bool shouldFavorBackedgeIndex (const Loop *L) const =0
 
virtual bool isLegalMaskedStore (Type *DataType, Align Alignment)=0
 
virtual bool isLegalMaskedLoad (Type *DataType, Align Alignment)=0
 
virtual bool isLegalNTStore (Type *DataType, Align Alignment)=0
 
virtual bool isLegalNTLoad (Type *DataType, Align Alignment)=0
 
virtual bool isLegalMaskedScatter (Type *DataType, Align Alignment)=0
 
virtual bool isLegalMaskedGather (Type *DataType, Align Alignment)=0
 
virtual bool isLegalMaskedCompressStore (Type *DataType)=0
 
virtual bool isLegalMaskedExpandLoad (Type *DataType)=0
 
virtual bool hasDivRemOp (Type *DataType, bool IsSigned)=0
 
virtual bool hasVolatileVariant (Instruction *I, unsigned AddrSpace)=0
 
virtual bool prefersVectorizedAddressing ()=0
 
virtual int getScalingFactorCost (Type *Ty, GlobalValue *BaseGV, int64_t BaseOffset, bool HasBaseReg, int64_t Scale, unsigned AddrSpace)=0
 
virtual bool LSRWithInstrQueries ()=0
 
virtual bool isTruncateFree (Type *Ty1, Type *Ty2)=0
 
virtual bool isProfitableToHoist (Instruction *I)=0
 
virtual bool useAA ()=0
 
virtual bool isTypeLegal (Type *Ty)=0
 
virtual bool shouldBuildLookupTables ()=0
 
virtual bool shouldBuildLookupTablesForConstant (Constant *C)=0
 
virtual bool useColdCCForColdCall (Function &F)=0
 
virtual unsigned getScalarizationOverhead (VectorType *Ty, const APInt &DemandedElts, bool Insert, bool Extract)=0
 
virtual unsigned getOperandsScalarizationOverhead (ArrayRef< const Value *> Args, unsigned VF)=0
 
virtual bool supportsEfficientVectorElementLoadStore ()=0
 
virtual bool enableAggressiveInterleaving (bool LoopHasReductions)=0
 
virtual MemCmpExpansionOptions enableMemCmpExpansion (bool OptSize, bool IsZeroCmp) const =0
 
virtual bool enableInterleavedAccessVectorization ()=0
 
virtual bool enableMaskedInterleavedAccessVectorization ()=0
 
virtual bool isFPVectorizationPotentiallyUnsafe ()=0
 
virtual bool allowsMisalignedMemoryAccesses (LLVMContext &Context, unsigned BitWidth, unsigned AddressSpace, unsigned Alignment, bool *Fast)=0
 
virtual PopcntSupportKind getPopcntSupport (unsigned IntTyWidthInBit)=0
 
virtual bool haveFastSqrt (Type *Ty)=0
 
virtual bool isFCmpOrdCheaperThanFCmpZero (Type *Ty)=0
 
virtual int getFPOpCost (Type *Ty)=0
 
virtual int getIntImmCodeSizeCost (unsigned Opc, unsigned Idx, const APInt &Imm, Type *Ty)=0
 
virtual int getIntImmCost (const APInt &Imm, Type *Ty, TargetCostKind CostKind)=0
 
virtual int getIntImmCostInst (unsigned Opc, unsigned Idx, const APInt &Imm, Type *Ty, TargetCostKind CostKind)=0
 
virtual int getIntImmCostIntrin (Intrinsic::ID IID, unsigned Idx, const APInt &Imm, Type *Ty, TargetCostKind CostKind)=0
 
virtual unsigned getNumberOfRegisters (unsigned ClassID) const =0
 
virtual unsigned getRegisterClassForType (bool Vector, Type *Ty=nullptr) const =0
 
virtual const chargetRegisterClassName (unsigned ClassID) const =0
 
virtual unsigned getRegisterBitWidth (bool Vector) const =0
 
virtual unsigned getMinVectorRegisterBitWidth ()=0
 
virtual bool shouldMaximizeVectorBandwidth (bool OptSize) const =0
 
virtual unsigned getMinimumVF (unsigned ElemWidth) const =0
 
virtual bool shouldConsiderAddressTypePromotion (const Instruction &I, bool &AllowPromotionWithoutCommonHeader)=0
 
virtual unsigned getCacheLineSize () const =0
 
virtual Optional< unsignedgetCacheSize (CacheLevel Level) const =0
 
virtual Optional< unsignedgetCacheAssociativity (CacheLevel Level) const =0
 
virtual unsigned getPrefetchDistance () const =0
 
virtual unsigned getMinPrefetchStride (unsigned NumMemAccesses, unsigned NumStridedMemAccesses, unsigned NumPrefetches, bool HasCall) const =0
 
virtual unsigned getMaxPrefetchIterationsAhead () const =0
 
virtual bool enableWritePrefetching () const =0
 
virtual unsigned getMaxInterleaveFactor (unsigned VF)=0
 
virtual unsigned getArithmeticInstrCost (unsigned Opcode, Type *Ty, TTI::TargetCostKind CostKind, OperandValueKind Opd1Info, OperandValueKind Opd2Info, OperandValueProperties Opd1PropInfo, OperandValueProperties Opd2PropInfo, ArrayRef< const Value *> Args, const Instruction *CxtI=nullptr)=0
 
virtual int getShuffleCost (ShuffleKind Kind, VectorType *Tp, int Index, VectorType *SubTp)=0
 
virtual int getCastInstrCost (unsigned Opcode, Type *Dst, Type *Src, TTI::TargetCostKind CostKind, const Instruction *I)=0
 
virtual int getExtractWithExtendCost (unsigned Opcode, Type *Dst, VectorType *VecTy, unsigned Index)=0
 
virtual int getCFInstrCost (unsigned Opcode, TTI::TargetCostKind CostKind)=0
 
virtual int getCmpSelInstrCost (unsigned Opcode, Type *ValTy, Type *CondTy, TTI::TargetCostKind CostKind, const Instruction *I)=0
 
virtual int getVectorInstrCost (unsigned Opcode, Type *Val, unsigned Index)=0
 
virtual int getMemoryOpCost (unsigned Opcode, Type *Src, Align Alignment, unsigned AddressSpace, TTI::TargetCostKind CostKind, const Instruction *I)=0
 
virtual int getMaskedMemoryOpCost (unsigned Opcode, Type *Src, Align Alignment, unsigned AddressSpace, TTI::TargetCostKind CostKind)=0
 
virtual int getGatherScatterOpCost (unsigned Opcode, Type *DataTy, const Value *Ptr, bool VariableMask, Align Alignment, TTI::TargetCostKind CostKind, const Instruction *I=nullptr)=0
 
virtual int getInterleavedMemoryOpCost (unsigned Opcode, Type *VecTy, unsigned Factor, ArrayRef< unsigned > Indices, Align Alignment, unsigned AddressSpace, TTI::TargetCostKind CostKind, bool UseMaskForCond=false, bool UseMaskForGaps=false)=0
 
virtual int getArithmeticReductionCost (unsigned Opcode, VectorType *Ty, bool IsPairwiseForm, TTI::TargetCostKind CostKind)=0
 
virtual int getMinMaxReductionCost (VectorType *Ty, VectorType *CondTy, bool IsPairwiseForm, bool IsUnsigned, TTI::TargetCostKind CostKind)=0
 
virtual int getIntrinsicInstrCost (const IntrinsicCostAttributes &ICA, TTI::TargetCostKind CostKind)=0
 
virtual int getCallInstrCost (Function *F, Type *RetTy, ArrayRef< Type *> Tys, TTI::TargetCostKind CostKind)=0
 
virtual unsigned getNumberOfParts (Type *Tp)=0
 
virtual int getAddressComputationCost (Type *Ty, ScalarEvolution *SE, const SCEV *Ptr)=0
 
virtual unsigned getCostOfKeepingLiveOverCall (ArrayRef< Type *> Tys)=0
 
virtual bool getTgtMemIntrinsic (IntrinsicInst *Inst, MemIntrinsicInfo &Info)=0
 
virtual unsigned getAtomicMemIntrinsicMaxElementSize () const =0
 
virtual ValuegetOrCreateResultFromMemIntrinsic (IntrinsicInst *Inst, Type *ExpectedType)=0
 
virtual TypegetMemcpyLoopLoweringType (LLVMContext &Context, Value *Length, unsigned SrcAddrSpace, unsigned DestAddrSpace, unsigned SrcAlign, unsigned DestAlign) const =0
 
virtual void getMemcpyLoopResidualLoweringType (SmallVectorImpl< Type *> &OpsOut, LLVMContext &Context, unsigned RemainingBytes, unsigned SrcAddrSpace, unsigned DestAddrSpace, unsigned SrcAlign, unsigned DestAlign) const =0
 
virtual bool areInlineCompatible (const Function *Caller, const Function *Callee) const =0
 
virtual bool areFunctionArgsABICompatible (const Function *Caller, const Function *Callee, SmallPtrSetImpl< Argument *> &Args) const =0
 
virtual bool isIndexedLoadLegal (MemIndexedMode Mode, Type *Ty) const =0
 
virtual bool isIndexedStoreLegal (MemIndexedMode Mode, Type *Ty) const =0
 
virtual unsigned getLoadStoreVecRegBitWidth (unsigned AddrSpace) const =0
 
virtual bool isLegalToVectorizeLoad (LoadInst *LI) const =0
 
virtual bool isLegalToVectorizeStore (StoreInst *SI) const =0
 
virtual bool isLegalToVectorizeLoadChain (unsigned ChainSizeInBytes, Align Alignment, unsigned AddrSpace) const =0
 
virtual bool isLegalToVectorizeStoreChain (unsigned ChainSizeInBytes, Align Alignment, unsigned AddrSpace) const =0
 
virtual unsigned getLoadVectorFactor (unsigned VF, unsigned LoadSize, unsigned ChainSizeInBytes, VectorType *VecTy) const =0
 
virtual unsigned getStoreVectorFactor (unsigned VF, unsigned StoreSize, unsigned ChainSizeInBytes, VectorType *VecTy) const =0
 
virtual bool useReductionIntrinsic (unsigned Opcode, Type *Ty, ReductionFlags) const =0
 
virtual bool shouldExpandReduction (const IntrinsicInst *II) const =0
 
virtual unsigned getGISelRematGlobalCost () const =0
 
virtual bool hasActiveVectorLength () const =0
 
virtual int getInstructionLatency (const Instruction *I)=0
 

Detailed Description

Definition at line 1255 of file TargetTransformInfo.h.

Constructor & Destructor Documentation

◆ ~Concept()

TargetTransformInfo::Concept::~Concept ( )
pure virtual

Definition at line 1282 of file TargetTransformInfo.cpp.

Member Function Documentation

◆ allowsMisalignedMemoryAccesses()

virtual bool llvm::TargetTransformInfo::Concept::allowsMisalignedMemoryAccesses ( LLVMContext Context,
unsigned  BitWidth,
unsigned  AddressSpace,
unsigned  Alignment,
bool Fast 
)
pure virtual

◆ areFunctionArgsABICompatible()

virtual bool llvm::TargetTransformInfo::Concept::areFunctionArgsABICompatible ( const Function Caller,
const Function Callee,
SmallPtrSetImpl< Argument *> &  Args 
) const
pure virtual

◆ areInlineCompatible()

virtual bool llvm::TargetTransformInfo::Concept::areInlineCompatible ( const Function Caller,
const Function Callee 
) const
pure virtual

◆ canMacroFuseCmp()

virtual bool llvm::TargetTransformInfo::Concept::canMacroFuseCmp ( )
pure virtual

◆ canSaveCmp()

virtual bool llvm::TargetTransformInfo::Concept::canSaveCmp ( Loop L,
BranchInst **  BI,
ScalarEvolution SE,
LoopInfo LI,
DominatorTree DT,
AssumptionCache AC,
TargetLibraryInfo LibInfo 
)
pure virtual

◆ collectFlatAddressOperands()

virtual bool llvm::TargetTransformInfo::Concept::collectFlatAddressOperands ( SmallVectorImpl< int > &  OpIndexes,
Intrinsic::ID  IID 
) const
pure virtual

◆ emitGetActiveLaneMask()

virtual bool llvm::TargetTransformInfo::Concept::emitGetActiveLaneMask ( )
pure virtual

◆ enableAggressiveInterleaving()

virtual bool llvm::TargetTransformInfo::Concept::enableAggressiveInterleaving ( bool  LoopHasReductions)
pure virtual

◆ enableInterleavedAccessVectorization()

virtual bool llvm::TargetTransformInfo::Concept::enableInterleavedAccessVectorization ( )
pure virtual

◆ enableMaskedInterleavedAccessVectorization()

virtual bool llvm::TargetTransformInfo::Concept::enableMaskedInterleavedAccessVectorization ( )
pure virtual

◆ enableMemCmpExpansion()

virtual MemCmpExpansionOptions llvm::TargetTransformInfo::Concept::enableMemCmpExpansion ( bool  OptSize,
bool  IsZeroCmp 
) const
pure virtual

◆ enableWritePrefetching()

virtual bool llvm::TargetTransformInfo::Concept::enableWritePrefetching ( ) const
pure virtual
Returns
True if prefetching should also be done for writes.

◆ getAddressComputationCost()

virtual int llvm::TargetTransformInfo::Concept::getAddressComputationCost ( Type Ty,
ScalarEvolution SE,
const SCEV Ptr 
)
pure virtual

◆ getArithmeticInstrCost()

virtual unsigned llvm::TargetTransformInfo::Concept::getArithmeticInstrCost ( unsigned  Opcode,
Type Ty,
TTI::TargetCostKind  CostKind,
OperandValueKind  Opd1Info,
OperandValueKind  Opd2Info,
OperandValueProperties  Opd1PropInfo,
OperandValueProperties  Opd2PropInfo,
ArrayRef< const Value *>  Args,
const Instruction CxtI = nullptr 
)
pure virtual

◆ getArithmeticReductionCost()

virtual int llvm::TargetTransformInfo::Concept::getArithmeticReductionCost ( unsigned  Opcode,
VectorType Ty,
bool  IsPairwiseForm,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getAtomicMemIntrinsicMaxElementSize()

virtual unsigned llvm::TargetTransformInfo::Concept::getAtomicMemIntrinsicMaxElementSize ( ) const
pure virtual

◆ getCacheAssociativity()

virtual Optional<unsigned> llvm::TargetTransformInfo::Concept::getCacheAssociativity ( CacheLevel  Level) const
pure virtual

◆ getCacheLineSize()

virtual unsigned llvm::TargetTransformInfo::Concept::getCacheLineSize ( ) const
pure virtual

◆ getCacheSize()

virtual Optional<unsigned> llvm::TargetTransformInfo::Concept::getCacheSize ( CacheLevel  Level) const
pure virtual

◆ getCallInstrCost()

virtual int llvm::TargetTransformInfo::Concept::getCallInstrCost ( Function F,
Type RetTy,
ArrayRef< Type *>  Tys,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getCastInstrCost()

virtual int llvm::TargetTransformInfo::Concept::getCastInstrCost ( unsigned  Opcode,
Type Dst,
Type Src,
TTI::TargetCostKind  CostKind,
const Instruction I 
)
pure virtual

◆ getCFInstrCost()

virtual int llvm::TargetTransformInfo::Concept::getCFInstrCost ( unsigned  Opcode,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getCmpSelInstrCost()

virtual int llvm::TargetTransformInfo::Concept::getCmpSelInstrCost ( unsigned  Opcode,
Type ValTy,
Type CondTy,
TTI::TargetCostKind  CostKind,
const Instruction I 
)
pure virtual

◆ getCostOfKeepingLiveOverCall()

virtual unsigned llvm::TargetTransformInfo::Concept::getCostOfKeepingLiveOverCall ( ArrayRef< Type *>  Tys)
pure virtual

◆ getDataLayout()

virtual const DataLayout& llvm::TargetTransformInfo::Concept::getDataLayout ( ) const
pure virtual

◆ getEstimatedNumberOfCaseClusters()

virtual unsigned llvm::TargetTransformInfo::Concept::getEstimatedNumberOfCaseClusters ( const SwitchInst SI,
unsigned JTSize,
ProfileSummaryInfo PSI,
BlockFrequencyInfo BFI 
)
pure virtual

◆ getExtractWithExtendCost()

virtual int llvm::TargetTransformInfo::Concept::getExtractWithExtendCost ( unsigned  Opcode,
Type Dst,
VectorType VecTy,
unsigned  Index 
)
pure virtual

◆ getFlatAddressSpace()

virtual unsigned llvm::TargetTransformInfo::Concept::getFlatAddressSpace ( )
pure virtual

◆ getFPOpCost()

virtual int llvm::TargetTransformInfo::Concept::getFPOpCost ( Type Ty)
pure virtual

◆ getGatherScatterOpCost()

virtual int llvm::TargetTransformInfo::Concept::getGatherScatterOpCost ( unsigned  Opcode,
Type DataTy,
const Value Ptr,
bool  VariableMask,
Align  Alignment,
TTI::TargetCostKind  CostKind,
const Instruction I = nullptr 
)
pure virtual

◆ getGEPCost()

virtual int llvm::TargetTransformInfo::Concept::getGEPCost ( Type PointeeType,
const Value Ptr,
ArrayRef< const Value *>  Operands,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getGISelRematGlobalCost()

virtual unsigned llvm::TargetTransformInfo::Concept::getGISelRematGlobalCost ( ) const
pure virtual

◆ getInlinerVectorBonusPercent()

virtual int llvm::TargetTransformInfo::Concept::getInlinerVectorBonusPercent ( )
pure virtual

◆ getInliningThresholdMultiplier()

virtual unsigned llvm::TargetTransformInfo::Concept::getInliningThresholdMultiplier ( )
pure virtual

◆ getInstructionLatency()

virtual int llvm::TargetTransformInfo::Concept::getInstructionLatency ( const Instruction I)
pure virtual

◆ getInterleavedMemoryOpCost()

virtual int llvm::TargetTransformInfo::Concept::getInterleavedMemoryOpCost ( unsigned  Opcode,
Type VecTy,
unsigned  Factor,
ArrayRef< unsigned Indices,
Align  Alignment,
unsigned  AddressSpace,
TTI::TargetCostKind  CostKind,
bool  UseMaskForCond = false,
bool  UseMaskForGaps = false 
)
pure virtual

◆ getIntImmCodeSizeCost()

virtual int llvm::TargetTransformInfo::Concept::getIntImmCodeSizeCost ( unsigned  Opc,
unsigned  Idx,
const APInt Imm,
Type Ty 
)
pure virtual

◆ getIntImmCost()

virtual int llvm::TargetTransformInfo::Concept::getIntImmCost ( const APInt Imm,
Type Ty,
TargetCostKind  CostKind 
)
pure virtual

◆ getIntImmCostInst()

virtual int llvm::TargetTransformInfo::Concept::getIntImmCostInst ( unsigned  Opc,
unsigned  Idx,
const APInt Imm,
Type Ty,
TargetCostKind  CostKind 
)
pure virtual

◆ getIntImmCostIntrin()

virtual int llvm::TargetTransformInfo::Concept::getIntImmCostIntrin ( Intrinsic::ID  IID,
unsigned  Idx,
const APInt Imm,
Type Ty,
TargetCostKind  CostKind 
)
pure virtual

◆ getIntrinsicInstrCost()

virtual int llvm::TargetTransformInfo::Concept::getIntrinsicInstrCost ( const IntrinsicCostAttributes ICA,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getLoadStoreVecRegBitWidth()

virtual unsigned llvm::TargetTransformInfo::Concept::getLoadStoreVecRegBitWidth ( unsigned  AddrSpace) const
pure virtual

◆ getLoadVectorFactor()

virtual unsigned llvm::TargetTransformInfo::Concept::getLoadVectorFactor ( unsigned  VF,
unsigned  LoadSize,
unsigned  ChainSizeInBytes,
VectorType VecTy 
) const
pure virtual

◆ getMaskedMemoryOpCost()

virtual int llvm::TargetTransformInfo::Concept::getMaskedMemoryOpCost ( unsigned  Opcode,
Type Src,
Align  Alignment,
unsigned  AddressSpace,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getMaxInterleaveFactor()

virtual unsigned llvm::TargetTransformInfo::Concept::getMaxInterleaveFactor ( unsigned  VF)
pure virtual

◆ getMaxPrefetchIterationsAhead()

virtual unsigned llvm::TargetTransformInfo::Concept::getMaxPrefetchIterationsAhead ( ) const
pure virtual
Returns
The maximum number of iterations to prefetch ahead. If the required number of iterations is more than this number, no prefetching is performed.

◆ getMemcpyCost()

virtual int llvm::TargetTransformInfo::Concept::getMemcpyCost ( const Instruction I)
pure virtual

◆ getMemcpyLoopLoweringType()

virtual Type* llvm::TargetTransformInfo::Concept::getMemcpyLoopLoweringType ( LLVMContext Context,
Value Length,
unsigned  SrcAddrSpace,
unsigned  DestAddrSpace,
unsigned  SrcAlign,
unsigned  DestAlign 
) const
pure virtual

◆ getMemcpyLoopResidualLoweringType()

virtual void llvm::TargetTransformInfo::Concept::getMemcpyLoopResidualLoweringType ( SmallVectorImpl< Type *> &  OpsOut,
LLVMContext Context,
unsigned  RemainingBytes,
unsigned  SrcAddrSpace,
unsigned  DestAddrSpace,
unsigned  SrcAlign,
unsigned  DestAlign 
) const
pure virtual

◆ getMemoryOpCost()

virtual int llvm::TargetTransformInfo::Concept::getMemoryOpCost ( unsigned  Opcode,
Type Src,
Align  Alignment,
unsigned  AddressSpace,
TTI::TargetCostKind  CostKind,
const Instruction I 
)
pure virtual

◆ getMinimumVF()

virtual unsigned llvm::TargetTransformInfo::Concept::getMinimumVF ( unsigned  ElemWidth) const
pure virtual

◆ getMinMaxReductionCost()

virtual int llvm::TargetTransformInfo::Concept::getMinMaxReductionCost ( VectorType Ty,
VectorType CondTy,
bool  IsPairwiseForm,
bool  IsUnsigned,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getMinPrefetchStride()

virtual unsigned llvm::TargetTransformInfo::Concept::getMinPrefetchStride ( unsigned  NumMemAccesses,
unsigned  NumStridedMemAccesses,
unsigned  NumPrefetches,
bool  HasCall 
) const
pure virtual
Returns
Some HW prefetchers can handle accesses up to a certain constant stride. This is the minimum stride in bytes where it makes sense to start adding SW prefetches. The default is 1, i.e. prefetch with any stride. Sometimes prefetching is beneficial even below the HW prefetcher limit, and the arguments provided are meant to serve as a basis for deciding this for a particular loop.

◆ getMinVectorRegisterBitWidth()

virtual unsigned llvm::TargetTransformInfo::Concept::getMinVectorRegisterBitWidth ( )
pure virtual

◆ getNumberOfParts()

virtual unsigned llvm::TargetTransformInfo::Concept::getNumberOfParts ( Type Tp)
pure virtual

◆ getNumberOfRegisters()

virtual unsigned llvm::TargetTransformInfo::Concept::getNumberOfRegisters ( unsigned  ClassID) const
pure virtual

◆ getOperandsScalarizationOverhead()

virtual unsigned llvm::TargetTransformInfo::Concept::getOperandsScalarizationOverhead ( ArrayRef< const Value *>  Args,
unsigned  VF 
)
pure virtual

◆ getOrCreateResultFromMemIntrinsic()

virtual Value* llvm::TargetTransformInfo::Concept::getOrCreateResultFromMemIntrinsic ( IntrinsicInst Inst,
Type ExpectedType 
)
pure virtual

◆ getPopcntSupport()

virtual PopcntSupportKind llvm::TargetTransformInfo::Concept::getPopcntSupport ( unsigned  IntTyWidthInBit)
pure virtual

◆ getPrefetchDistance()

virtual unsigned llvm::TargetTransformInfo::Concept::getPrefetchDistance ( ) const
pure virtual
Returns
How much before a load we should place the prefetch instruction. This is currently measured in number of instructions.

◆ getRegisterBitWidth()

virtual unsigned llvm::TargetTransformInfo::Concept::getRegisterBitWidth ( bool  Vector) const
pure virtual

◆ getRegisterClassForType()

virtual unsigned llvm::TargetTransformInfo::Concept::getRegisterClassForType ( bool  Vector,
Type Ty = nullptr 
) const
pure virtual

◆ getRegisterClassName()

virtual const char* llvm::TargetTransformInfo::Concept::getRegisterClassName ( unsigned  ClassID) const
pure virtual

◆ getScalarizationOverhead()

virtual unsigned llvm::TargetTransformInfo::Concept::getScalarizationOverhead ( VectorType Ty,
const APInt DemandedElts,
bool  Insert,
bool  Extract 
)
pure virtual

◆ getScalingFactorCost()

virtual int llvm::TargetTransformInfo::Concept::getScalingFactorCost ( Type Ty,
GlobalValue BaseGV,
int64_t  BaseOffset,
bool  HasBaseReg,
int64_t  Scale,
unsigned  AddrSpace 
)
pure virtual

◆ getShuffleCost()

virtual int llvm::TargetTransformInfo::Concept::getShuffleCost ( ShuffleKind  Kind,
VectorType Tp,
int  Index,
VectorType SubTp 
)
pure virtual

◆ getStoreVectorFactor()

virtual unsigned llvm::TargetTransformInfo::Concept::getStoreVectorFactor ( unsigned  VF,
unsigned  StoreSize,
unsigned  ChainSizeInBytes,
VectorType VecTy 
) const
pure virtual

◆ getTgtMemIntrinsic()

virtual bool llvm::TargetTransformInfo::Concept::getTgtMemIntrinsic ( IntrinsicInst Inst,
MemIntrinsicInfo Info 
)
pure virtual

◆ getUnrollingPreferences()

virtual void llvm::TargetTransformInfo::Concept::getUnrollingPreferences ( Loop L,
ScalarEvolution ,
UnrollingPreferences UP 
)
pure virtual

◆ getUserCost()

virtual int llvm::TargetTransformInfo::Concept::getUserCost ( const User U,
ArrayRef< const Value *>  Operands,
TargetCostKind  CostKind 
)
pure virtual

◆ getVectorInstrCost()

virtual int llvm::TargetTransformInfo::Concept::getVectorInstrCost ( unsigned  Opcode,
Type Val,
unsigned  Index 
)
pure virtual

◆ hasActiveVectorLength()

virtual bool llvm::TargetTransformInfo::Concept::hasActiveVectorLength ( ) const
pure virtual

◆ hasBranchDivergence()

virtual bool llvm::TargetTransformInfo::Concept::hasBranchDivergence ( )
pure virtual

◆ hasDivRemOp()

virtual bool llvm::TargetTransformInfo::Concept::hasDivRemOp ( Type DataType,
bool  IsSigned 
)
pure virtual

◆ hasVolatileVariant()

virtual bool llvm::TargetTransformInfo::Concept::hasVolatileVariant ( Instruction I,
unsigned  AddrSpace 
)
pure virtual

◆ haveFastSqrt()

virtual bool llvm::TargetTransformInfo::Concept::haveFastSqrt ( Type Ty)
pure virtual

◆ isAlwaysUniform()

virtual bool llvm::TargetTransformInfo::Concept::isAlwaysUniform ( const Value V)
pure virtual

◆ isFCmpOrdCheaperThanFCmpZero()

virtual bool llvm::TargetTransformInfo::Concept::isFCmpOrdCheaperThanFCmpZero ( Type Ty)
pure virtual

◆ isFPVectorizationPotentiallyUnsafe()

virtual bool llvm::TargetTransformInfo::Concept::isFPVectorizationPotentiallyUnsafe ( )
pure virtual

◆ isHardwareLoopProfitable()

virtual bool llvm::TargetTransformInfo::Concept::isHardwareLoopProfitable ( Loop L,
ScalarEvolution SE,
AssumptionCache AC,
TargetLibraryInfo LibInfo,
HardwareLoopInfo HWLoopInfo 
)
pure virtual

◆ isIndexedLoadLegal()

virtual bool llvm::TargetTransformInfo::Concept::isIndexedLoadLegal ( MemIndexedMode  Mode,
Type Ty 
) const
pure virtual

◆ isIndexedStoreLegal()

virtual bool llvm::TargetTransformInfo::Concept::isIndexedStoreLegal ( MemIndexedMode  Mode,
Type Ty 
) const
pure virtual

◆ isLegalAddImmediate()

virtual bool llvm::TargetTransformInfo::Concept::isLegalAddImmediate ( int64_t  Imm)
pure virtual

◆ isLegalAddressingMode()

virtual bool llvm::TargetTransformInfo::Concept::isLegalAddressingMode ( Type Ty,
GlobalValue BaseGV,
int64_t  BaseOffset,
bool  HasBaseReg,
int64_t  Scale,
unsigned  AddrSpace,
Instruction I 
)
pure virtual

◆ isLegalICmpImmediate()

virtual bool llvm::TargetTransformInfo::Concept::isLegalICmpImmediate ( int64_t  Imm)
pure virtual

◆ isLegalMaskedCompressStore()

virtual bool llvm::TargetTransformInfo::Concept::isLegalMaskedCompressStore ( Type DataType)
pure virtual

◆ isLegalMaskedExpandLoad()

virtual bool llvm::TargetTransformInfo::Concept::isLegalMaskedExpandLoad ( Type DataType)
pure virtual

◆ isLegalMaskedGather()

virtual bool llvm::TargetTransformInfo::Concept::isLegalMaskedGather ( Type DataType,
Align  Alignment 
)
pure virtual

◆ isLegalMaskedLoad()

virtual bool llvm::TargetTransformInfo::Concept::isLegalMaskedLoad ( Type DataType,
Align  Alignment 
)
pure virtual

◆ isLegalMaskedScatter()

virtual bool llvm::TargetTransformInfo::Concept::isLegalMaskedScatter ( Type DataType,
Align  Alignment 
)
pure virtual

◆ isLegalMaskedStore()

virtual bool llvm::TargetTransformInfo::Concept::isLegalMaskedStore ( Type DataType,
Align  Alignment 
)
pure virtual

◆ isLegalNTLoad()

virtual bool llvm::TargetTransformInfo::Concept::isLegalNTLoad ( Type DataType,
Align  Alignment 
)
pure virtual

◆ isLegalNTStore()

virtual bool llvm::TargetTransformInfo::Concept::isLegalNTStore ( Type DataType,
Align  Alignment 
)
pure virtual

◆ isLegalToVectorizeLoad()

virtual bool llvm::TargetTransformInfo::Concept::isLegalToVectorizeLoad ( LoadInst LI) const
pure virtual

◆ isLegalToVectorizeLoadChain()

virtual bool llvm::TargetTransformInfo::Concept::isLegalToVectorizeLoadChain ( unsigned  ChainSizeInBytes,
Align  Alignment,
unsigned  AddrSpace 
) const
pure virtual

◆ isLegalToVectorizeStore()

virtual bool llvm::TargetTransformInfo::Concept::isLegalToVectorizeStore ( StoreInst SI) const
pure virtual

◆ isLegalToVectorizeStoreChain()

virtual bool llvm::TargetTransformInfo::Concept::isLegalToVectorizeStoreChain ( unsigned  ChainSizeInBytes,
Align  Alignment,
unsigned  AddrSpace 
) const
pure virtual

◆ isLoweredToCall()

virtual bool llvm::TargetTransformInfo::Concept::isLoweredToCall ( const Function F)
pure virtual

◆ isLSRCostLess()

virtual bool llvm::TargetTransformInfo::Concept::isLSRCostLess ( TargetTransformInfo::LSRCost C1,
TargetTransformInfo::LSRCost C2 
)
pure virtual

◆ isNoopAddrSpaceCast()

virtual bool llvm::TargetTransformInfo::Concept::isNoopAddrSpaceCast ( unsigned  FromAS,
unsigned  ToAS 
) const
pure virtual

◆ isProfitableLSRChainElement()

virtual bool llvm::TargetTransformInfo::Concept::isProfitableLSRChainElement ( Instruction I)
pure virtual

◆ isProfitableToHoist()

virtual bool llvm::TargetTransformInfo::Concept::isProfitableToHoist ( Instruction I)
pure virtual

◆ isSourceOfDivergence()

virtual bool llvm::TargetTransformInfo::Concept::isSourceOfDivergence ( const Value V)
pure virtual

◆ isTruncateFree()

virtual bool llvm::TargetTransformInfo::Concept::isTruncateFree ( Type Ty1,
Type Ty2 
)
pure virtual

◆ isTypeLegal()

virtual bool llvm::TargetTransformInfo::Concept::isTypeLegal ( Type Ty)
pure virtual

◆ LSRWithInstrQueries()

virtual bool llvm::TargetTransformInfo::Concept::LSRWithInstrQueries ( )
pure virtual

◆ preferPredicateOverEpilogue()

virtual bool llvm::TargetTransformInfo::Concept::preferPredicateOverEpilogue ( Loop L,
LoopInfo LI,
ScalarEvolution SE,
AssumptionCache AC,
TargetLibraryInfo TLI,
DominatorTree DT,
const LoopAccessInfo LAI 
)
pure virtual

◆ prefersVectorizedAddressing()

virtual bool llvm::TargetTransformInfo::Concept::prefersVectorizedAddressing ( )
pure virtual

◆ rewriteIntrinsicWithAddressSpace()

virtual Value* llvm::TargetTransformInfo::Concept::rewriteIntrinsicWithAddressSpace ( IntrinsicInst II,
Value OldV,
Value NewV 
) const
pure virtual

◆ shouldBuildLookupTables()

virtual bool llvm::TargetTransformInfo::Concept::shouldBuildLookupTables ( )
pure virtual

◆ shouldBuildLookupTablesForConstant()

virtual bool llvm::TargetTransformInfo::Concept::shouldBuildLookupTablesForConstant ( Constant C)
pure virtual

◆ shouldConsiderAddressTypePromotion()

virtual bool llvm::TargetTransformInfo::Concept::shouldConsiderAddressTypePromotion ( const Instruction I,
bool AllowPromotionWithoutCommonHeader 
)
pure virtual

◆ shouldExpandReduction()

virtual bool llvm::TargetTransformInfo::Concept::shouldExpandReduction ( const IntrinsicInst II) const
pure virtual

◆ shouldFavorBackedgeIndex()

virtual bool llvm::TargetTransformInfo::Concept::shouldFavorBackedgeIndex ( const Loop L) const
pure virtual

◆ shouldFavorPostInc()

virtual bool llvm::TargetTransformInfo::Concept::shouldFavorPostInc ( ) const
pure virtual

◆ shouldMaximizeVectorBandwidth()

virtual bool llvm::TargetTransformInfo::Concept::shouldMaximizeVectorBandwidth ( bool  OptSize) const
pure virtual

◆ supportsEfficientVectorElementLoadStore()

virtual bool llvm::TargetTransformInfo::Concept::supportsEfficientVectorElementLoadStore ( )
pure virtual

◆ useAA()

virtual bool llvm::TargetTransformInfo::Concept::useAA ( )
pure virtual

◆ useColdCCForColdCall()

virtual bool llvm::TargetTransformInfo::Concept::useColdCCForColdCall ( Function F)
pure virtual

◆ useGPUDivergenceAnalysis()

virtual bool llvm::TargetTransformInfo::Concept::useGPUDivergenceAnalysis ( )
pure virtual

◆ useReductionIntrinsic()

virtual bool llvm::TargetTransformInfo::Concept::useReductionIntrinsic ( unsigned  Opcode,
Type Ty,
ReductionFlags   
) const
pure virtual

The documentation for this class was generated from the following files: