LLVM 20.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 InstructionCost getGEPCost (Type *PointeeType, const Value *Ptr, ArrayRef< const Value * > Operands, Type *AccessType, TTI::TargetCostKind CostKind)=0
 
virtual InstructionCost getPointersChainCost (ArrayRef< const Value * > Ptrs, const Value *Base, const TTI::PointersChainInfo &Info, Type *AccessTy, TTI::TargetCostKind CostKind)=0
 
virtual unsigned getInliningThresholdMultiplier () const =0
 
virtual unsigned getInliningCostBenefitAnalysisSavingsMultiplier () const =0
 
virtual unsigned getInliningCostBenefitAnalysisProfitableMultiplier () const =0
 
virtual int getInliningLastCallToStaticBonus () const =0
 
virtual unsigned adjustInliningThreshold (const CallBase *CB)=0
 
virtual int getInlinerVectorBonusPercent () const =0
 
virtual unsigned getCallerAllocaCost (const CallBase *CB, const AllocaInst *AI) const =0
 
virtual InstructionCost getMemcpyCost (const Instruction *I)=0
 
virtual uint64_t getMaxMemIntrinsicInlineSizeThreshold () const =0
 
virtual unsigned getEstimatedNumberOfCaseClusters (const SwitchInst &SI, unsigned &JTSize, ProfileSummaryInfo *PSI, BlockFrequencyInfo *BFI)=0
 
virtual InstructionCost getInstructionCost (const User *U, ArrayRef< const Value * > Operands, TargetCostKind CostKind)=0
 
virtual BranchProbability getPredictableBranchThreshold ()=0
 
virtual InstructionCost getBranchMispredictPenalty ()=0
 
virtual bool hasBranchDivergence (const Function *F=nullptr)=0
 
virtual bool isSourceOfDivergence (const Value *V)=0
 
virtual bool isAlwaysUniform (const Value *V)=0
 
virtual bool isValidAddrSpaceCast (unsigned FromAS, unsigned ToAS) const =0
 
virtual bool addrspacesMayAlias (unsigned AS0, unsigned AS1) const =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 bool canHaveNonUndefGlobalInitializerInAddressSpace (unsigned AS) const =0
 
virtual unsigned getAssumedAddrSpace (const Value *V) const =0
 
virtual bool isSingleThreaded () const =0
 
virtual std::pair< const Value *, unsignedgetPredicatedAddrSpace (const Value *V) 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, OptimizationRemarkEmitter *ORE)=0
 
virtual void getPeelingPreferences (Loop *L, ScalarEvolution &SE, PeelingPreferences &PP)=0
 
virtual bool isHardwareLoopProfitable (Loop *L, ScalarEvolution &SE, AssumptionCache &AC, TargetLibraryInfo *LibInfo, HardwareLoopInfo &HWLoopInfo)=0
 
virtual unsigned getEpilogueVectorizationMinVF ()=0
 
virtual bool preferPredicateOverEpilogue (TailFoldingInfo *TFI)=0
 
virtual TailFoldingStyle getPreferredTailFoldingStyle (bool IVUpdateMayOverflow=true)=0
 
virtual std::optional< Instruction * > instCombineIntrinsic (InstCombiner &IC, IntrinsicInst &II)=0
 
virtual std::optional< Value * > simplifyDemandedUseBitsIntrinsic (InstCombiner &IC, IntrinsicInst &II, APInt DemandedMask, KnownBits &Known, bool &KnownBitsComputed)=0
 
virtual std::optional< Value * > simplifyDemandedVectorEltsIntrinsic (InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, APInt &UndefElts, APInt &UndefElts2, APInt &UndefElts3, std::function< void(Instruction *, unsigned, APInt, APInt &)> SimplifyAndSetOp)=0
 
virtual bool isLegalAddImmediate (int64_t Imm)=0
 
virtual bool isLegalAddScalableImmediate (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, int64_t ScalableOffset)=0
 
virtual bool isLSRCostLess (const TargetTransformInfo::LSRCost &C1, const TargetTransformInfo::LSRCost &C2)=0
 
virtual bool isNumRegsMajorCostOfLSR ()=0
 
virtual bool shouldDropLSRSolutionIfLessProfitable () const =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 AddressingModeKind getPreferredAddressingMode (const Loop *L, ScalarEvolution *SE) 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 isLegalBroadcastLoad (Type *ElementTy, ElementCount NumElements) const =0
 
virtual bool isLegalMaskedScatter (Type *DataType, Align Alignment)=0
 
virtual bool isLegalMaskedGather (Type *DataType, Align Alignment)=0
 
virtual bool forceScalarizeMaskedGather (VectorType *DataType, Align Alignment)=0
 
virtual bool forceScalarizeMaskedScatter (VectorType *DataType, Align Alignment)=0
 
virtual bool isLegalMaskedCompressStore (Type *DataType, Align Alignment)=0
 
virtual bool isLegalMaskedExpandLoad (Type *DataType, Align Alignment)=0
 
virtual bool isLegalStridedLoadStore (Type *DataType, Align Alignment)=0
 
virtual bool isLegalInterleavedAccessType (VectorType *VTy, unsigned Factor, Align Alignment, unsigned AddrSpace)=0
 
virtual bool isLegalMaskedVectorHistogram (Type *AddrType, Type *DataType)=0
 
virtual bool isLegalAltInstr (VectorType *VecTy, unsigned Opcode0, unsigned Opcode1, const SmallBitVector &OpcodeMask) const =0
 
virtual bool enableOrderedReductions ()=0
 
virtual bool hasDivRemOp (Type *DataType, bool IsSigned)=0
 
virtual bool hasVolatileVariant (Instruction *I, unsigned AddrSpace)=0
 
virtual bool prefersVectorizedAddressing ()=0
 
virtual InstructionCost getScalingFactorCost (Type *Ty, GlobalValue *BaseGV, StackOffset 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 unsigned getRegUsageForType (Type *Ty)=0
 
virtual bool shouldBuildLookupTables ()=0
 
virtual bool shouldBuildLookupTablesForConstant (Constant *C)=0
 
virtual bool shouldBuildRelLookupTables ()=0
 
virtual bool useColdCCForColdCall (Function &F)=0
 
virtual bool isTargetIntrinsicTriviallyScalarizable (Intrinsic::ID ID)=0
 
virtual bool isTargetIntrinsicWithScalarOpAtArg (Intrinsic::ID ID, unsigned ScalarOpdIdx)=0
 
virtual bool isTargetIntrinsicWithOverloadTypeAtArg (Intrinsic::ID ID, int OpdIdx)=0
 
virtual bool isTargetIntrinsicWithStructReturnOverloadAtField (Intrinsic::ID ID, int RetIdx)=0
 
virtual InstructionCost getScalarizationOverhead (VectorType *Ty, const APInt &DemandedElts, bool Insert, bool Extract, TargetCostKind CostKind, ArrayRef< Value * > VL={})=0
 
virtual InstructionCost getOperandsScalarizationOverhead (ArrayRef< const Value * > Args, ArrayRef< Type * > Tys, TargetCostKind CostKind)=0
 
virtual bool supportsEfficientVectorElementLoadStore ()=0
 
virtual bool supportsTailCalls ()=0
 
virtual bool supportsTailCallFor (const CallBase *CB)=0
 
virtual bool enableAggressiveInterleaving (bool LoopHasReductions)=0
 
virtual MemCmpExpansionOptions enableMemCmpExpansion (bool OptSize, bool IsZeroCmp) const =0
 
virtual bool enableSelectOptimize ()=0
 
virtual bool shouldTreatInstructionLikeSelect (const Instruction *I)=0
 
virtual bool enableInterleavedAccessVectorization ()=0
 
virtual bool enableMaskedInterleavedAccessVectorization ()=0
 
virtual bool isFPVectorizationPotentiallyUnsafe ()=0
 
virtual bool allowsMisalignedMemoryAccesses (LLVMContext &Context, unsigned BitWidth, unsigned AddressSpace, Align Alignment, unsigned *Fast)=0
 
virtual PopcntSupportKind getPopcntSupport (unsigned IntTyWidthInBit)=0
 
virtual bool haveFastSqrt (Type *Ty)=0
 
virtual bool isExpensiveToSpeculativelyExecute (const Instruction *I)=0
 
virtual bool isFCmpOrdCheaperThanFCmpZero (Type *Ty)=0
 
virtual InstructionCost getFPOpCost (Type *Ty)=0
 
virtual InstructionCost getIntImmCodeSizeCost (unsigned Opc, unsigned Idx, const APInt &Imm, Type *Ty)=0
 
virtual InstructionCost getIntImmCost (const APInt &Imm, Type *Ty, TargetCostKind CostKind)=0
 
virtual InstructionCost getIntImmCostInst (unsigned Opc, unsigned Idx, const APInt &Imm, Type *Ty, TargetCostKind CostKind, Instruction *Inst=nullptr)=0
 
virtual InstructionCost getIntImmCostIntrin (Intrinsic::ID IID, unsigned Idx, const APInt &Imm, Type *Ty, TargetCostKind CostKind)=0
 
virtual bool preferToKeepConstantsAttached (const Instruction &Inst, const Function &Fn) const =0
 
virtual unsigned getNumberOfRegisters (unsigned ClassID) const =0
 
virtual bool hasConditionalLoadStoreForType (Type *Ty=nullptr) const =0
 
virtual unsigned getRegisterClassForType (bool Vector, Type *Ty=nullptr) const =0
 
virtual const chargetRegisterClassName (unsigned ClassID) const =0
 
virtual TypeSize getRegisterBitWidth (RegisterKind K) const =0
 
virtual unsigned getMinVectorRegisterBitWidth () const =0
 
virtual std::optional< unsignedgetMaxVScale () const =0
 
virtual std::optional< unsignedgetVScaleForTuning () const =0
 
virtual bool isVScaleKnownToBeAPowerOfTwo () const =0
 
virtual bool shouldMaximizeVectorBandwidth (TargetTransformInfo::RegisterKind K) const =0
 
virtual ElementCount getMinimumVF (unsigned ElemWidth, bool IsScalable) const =0
 
virtual unsigned getMaximumVF (unsigned ElemWidth, unsigned Opcode) const =0
 
virtual unsigned getStoreMinimumVF (unsigned VF, Type *ScalarMemTy, Type *ScalarValTy) const =0
 
virtual bool shouldConsiderAddressTypePromotion (const Instruction &I, bool &AllowPromotionWithoutCommonHeader)=0
 
virtual unsigned getCacheLineSize () const =0
 
virtual std::optional< unsignedgetCacheSize (CacheLevel Level) const =0
 
virtual std::optional< unsignedgetCacheAssociativity (CacheLevel Level) const =0
 
virtual std::optional< unsignedgetMinPageSize () 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 bool shouldPrefetchAddressSpace (unsigned AS) const =0
 
virtual unsigned getMaxInterleaveFactor (ElementCount VF)=0
 
virtual InstructionCost getArithmeticInstrCost (unsigned Opcode, Type *Ty, TTI::TargetCostKind CostKind, OperandValueInfo Opd1Info, OperandValueInfo Opd2Info, ArrayRef< const Value * > Args, const Instruction *CxtI=nullptr)=0
 
virtual InstructionCost getAltInstrCost (VectorType *VecTy, unsigned Opcode0, unsigned Opcode1, const SmallBitVector &OpcodeMask, TTI::TargetCostKind CostKind=TTI::TCK_RecipThroughput) const =0
 
virtual InstructionCost getShuffleCost (ShuffleKind Kind, VectorType *Tp, ArrayRef< int > Mask, TTI::TargetCostKind CostKind, int Index, VectorType *SubTp, ArrayRef< const Value * > Args, const Instruction *CxtI)=0
 
virtual InstructionCost getCastInstrCost (unsigned Opcode, Type *Dst, Type *Src, CastContextHint CCH, TTI::TargetCostKind CostKind, const Instruction *I)=0
 
virtual InstructionCost getExtractWithExtendCost (unsigned Opcode, Type *Dst, VectorType *VecTy, unsigned Index)=0
 
virtual InstructionCost getCFInstrCost (unsigned Opcode, TTI::TargetCostKind CostKind, const Instruction *I=nullptr)=0
 
virtual InstructionCost getCmpSelInstrCost (unsigned Opcode, Type *ValTy, Type *CondTy, CmpInst::Predicate VecPred, TTI::TargetCostKind CostKind, OperandValueInfo Op1Info, OperandValueInfo Op2Info, const Instruction *I)=0
 
virtual InstructionCost getVectorInstrCost (unsigned Opcode, Type *Val, TTI::TargetCostKind CostKind, unsigned Index, Value *Op0, Value *Op1)=0
 
virtual InstructionCost getVectorInstrCost (unsigned Opcode, Type *Val, TTI::TargetCostKind CostKind, unsigned Index, Value *Scalar, ArrayRef< std::tuple< Value *, User *, int > > ScalarUserAndIdx)=0
 
virtual InstructionCost getVectorInstrCost (const Instruction &I, Type *Val, TTI::TargetCostKind CostKind, unsigned Index)=0
 
virtual InstructionCost getReplicationShuffleCost (Type *EltTy, int ReplicationFactor, int VF, const APInt &DemandedDstElts, TTI::TargetCostKind CostKind)=0
 
virtual InstructionCost getMemoryOpCost (unsigned Opcode, Type *Src, Align Alignment, unsigned AddressSpace, TTI::TargetCostKind CostKind, OperandValueInfo OpInfo, const Instruction *I)=0
 
virtual InstructionCost getVPMemoryOpCost (unsigned Opcode, Type *Src, Align Alignment, unsigned AddressSpace, TTI::TargetCostKind CostKind, const Instruction *I)=0
 
virtual InstructionCost getMaskedMemoryOpCost (unsigned Opcode, Type *Src, Align Alignment, unsigned AddressSpace, TTI::TargetCostKind CostKind)=0
 
virtual InstructionCost getGatherScatterOpCost (unsigned Opcode, Type *DataTy, const Value *Ptr, bool VariableMask, Align Alignment, TTI::TargetCostKind CostKind, const Instruction *I=nullptr)=0
 
virtual InstructionCost getStridedMemoryOpCost (unsigned Opcode, Type *DataTy, const Value *Ptr, bool VariableMask, Align Alignment, TTI::TargetCostKind CostKind, const Instruction *I=nullptr)=0
 
virtual InstructionCost 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 InstructionCost getArithmeticReductionCost (unsigned Opcode, VectorType *Ty, std::optional< FastMathFlags > FMF, TTI::TargetCostKind CostKind)=0
 
virtual InstructionCost getMinMaxReductionCost (Intrinsic::ID IID, VectorType *Ty, FastMathFlags FMF, TTI::TargetCostKind CostKind)=0
 
virtual InstructionCost getExtendedReductionCost (unsigned Opcode, bool IsUnsigned, Type *ResTy, VectorType *Ty, FastMathFlags FMF, TTI::TargetCostKind CostKind=TTI::TCK_RecipThroughput)=0
 
virtual InstructionCost getMulAccReductionCost (bool IsUnsigned, Type *ResTy, VectorType *Ty, TTI::TargetCostKind CostKind=TTI::TCK_RecipThroughput)=0
 
virtual InstructionCost getIntrinsicInstrCost (const IntrinsicCostAttributes &ICA, TTI::TargetCostKind CostKind)=0
 
virtual InstructionCost getCallInstrCost (Function *F, Type *RetTy, ArrayRef< Type * > Tys, TTI::TargetCostKind CostKind)=0
 
virtual unsigned getNumberOfParts (Type *Tp)=0
 
virtual InstructionCost getAddressComputationCost (Type *Ty, ScalarEvolution *SE, const SCEV *Ptr)=0
 
virtual InstructionCost 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, Align SrcAlign, Align DestAlign, std::optional< uint32_t > AtomicElementSize) const =0
 
virtual void getMemcpyLoopResidualLoweringType (SmallVectorImpl< Type * > &OpsOut, LLVMContext &Context, unsigned RemainingBytes, unsigned SrcAddrSpace, unsigned DestAddrSpace, Align SrcAlign, Align DestAlign, std::optional< uint32_t > AtomicCpySize) const =0
 
virtual bool areInlineCompatible (const Function *Caller, const Function *Callee) const =0
 
virtual unsigned getInlineCallPenalty (const Function *F, const CallBase &Call, unsigned DefaultCallPenalty) const =0
 
virtual bool areTypesABICompatible (const Function *Caller, const Function *Callee, const ArrayRef< Type * > &Types) 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 bool isLegalToVectorizeReduction (const RecurrenceDescriptor &RdxDesc, ElementCount VF) const =0
 
virtual bool isElementTypeLegalForScalableVector (Type *Ty) 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 preferFixedOverScalableIfEqualCost () const =0
 
virtual bool preferInLoopReduction (unsigned Opcode, Type *Ty, ReductionFlags) const =0
 
virtual bool preferPredicatedReductionSelect (unsigned Opcode, Type *Ty, ReductionFlags) const =0
 
virtual bool preferEpilogueVectorization () const =0
 
virtual bool shouldExpandReduction (const IntrinsicInst *II) const =0
 
virtual ReductionShuffle getPreferredExpandedReductionShuffle (const IntrinsicInst *II) const =0
 
virtual unsigned getGISelRematGlobalCost () const =0
 
virtual unsigned getMinTripCountTailFoldingThreshold () const =0
 
virtual bool enableScalableVectorization () const =0
 
virtual bool supportsScalableVectors () const =0
 
virtual bool hasActiveVectorLength (unsigned Opcode, Type *DataType, Align Alignment) const =0
 
virtual bool isProfitableToSinkOperands (Instruction *I, SmallVectorImpl< Use * > &OpsToSink) const =0
 
virtual bool isVectorShiftByScalarCheap (Type *Ty) const =0
 
virtual VPLegalization getVPLegalizationStrategy (const VPIntrinsic &PI) const =0
 
virtual bool hasArmWideBranch (bool Thumb) const =0
 
virtual unsigned getMaxNumArgs () const =0
 
virtual unsigned getNumBytesToPadGlobalArray (unsigned Size, Type *ArrayType) const =0
 

Detailed Description

Definition at line 1874 of file TargetTransformInfo.h.

Constructor & Destructor Documentation

◆ ~Concept()

TargetTransformInfo::Concept::~Concept ( )
pure virtualdefault

Member Function Documentation

◆ addrspacesMayAlias()

virtual bool llvm::TargetTransformInfo::Concept::addrspacesMayAlias ( unsigned  AS0,
unsigned  AS1 
) const
pure virtual

◆ adjustInliningThreshold()

virtual unsigned llvm::TargetTransformInfo::Concept::adjustInliningThreshold ( const CallBase CB)
pure virtual

◆ allowsMisalignedMemoryAccesses()

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

◆ areInlineCompatible()

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

◆ areTypesABICompatible()

virtual bool llvm::TargetTransformInfo::Concept::areTypesABICompatible ( const Function Caller,
const Function Callee,
const ArrayRef< Type * > &  Types 
) const
pure virtual

◆ canHaveNonUndefGlobalInitializerInAddressSpace()

virtual bool llvm::TargetTransformInfo::Concept::canHaveNonUndefGlobalInitializerInAddressSpace ( unsigned  AS) 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

◆ 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

◆ enableOrderedReductions()

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

◆ enableScalableVectorization()

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

◆ enableSelectOptimize()

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

◆ enableWritePrefetching()

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

◆ forceScalarizeMaskedGather()

virtual bool llvm::TargetTransformInfo::Concept::forceScalarizeMaskedGather ( VectorType DataType,
Align  Alignment 
)
pure virtual

◆ forceScalarizeMaskedScatter()

virtual bool llvm::TargetTransformInfo::Concept::forceScalarizeMaskedScatter ( VectorType DataType,
Align  Alignment 
)
pure virtual

◆ getAddressComputationCost()

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

◆ getAltInstrCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getAltInstrCost ( VectorType VecTy,
unsigned  Opcode0,
unsigned  Opcode1,
const SmallBitVector OpcodeMask,
TTI::TargetCostKind  CostKind = TTI::TCK_RecipThroughput 
) const
pure virtual

◆ getArithmeticInstrCost()

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

◆ getArithmeticReductionCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getArithmeticReductionCost ( unsigned  Opcode,
VectorType Ty,
std::optional< FastMathFlags FMF,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getAssumedAddrSpace()

virtual unsigned llvm::TargetTransformInfo::Concept::getAssumedAddrSpace ( const Value V) const
pure virtual

◆ getAtomicMemIntrinsicMaxElementSize()

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

◆ getBranchMispredictPenalty()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getBranchMispredictPenalty ( )
pure virtual

◆ getCacheAssociativity()

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

◆ getCacheLineSize()

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

◆ getCacheSize()

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

◆ getCallerAllocaCost()

virtual unsigned llvm::TargetTransformInfo::Concept::getCallerAllocaCost ( const CallBase CB,
const AllocaInst AI 
) const
pure virtual

◆ getCallInstrCost()

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

◆ getCastInstrCost()

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

◆ getCFInstrCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getCFInstrCost ( unsigned  Opcode,
TTI::TargetCostKind  CostKind,
const Instruction I = nullptr 
)
pure virtual

◆ getCmpSelInstrCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getCmpSelInstrCost ( unsigned  Opcode,
Type ValTy,
Type CondTy,
CmpInst::Predicate  VecPred,
TTI::TargetCostKind  CostKind,
OperandValueInfo  Op1Info,
OperandValueInfo  Op2Info,
const Instruction I 
)
pure virtual

◆ getCostOfKeepingLiveOverCall()

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

◆ getDataLayout()

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

◆ getEpilogueVectorizationMinVF()

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

◆ getEstimatedNumberOfCaseClusters()

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

◆ getExtendedReductionCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getExtendedReductionCost ( unsigned  Opcode,
bool  IsUnsigned,
Type ResTy,
VectorType Ty,
FastMathFlags  FMF,
TTI::TargetCostKind  CostKind = TTI::TCK_RecipThroughput 
)
pure virtual

◆ getExtractWithExtendCost()

virtual InstructionCost 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 InstructionCost llvm::TargetTransformInfo::Concept::getFPOpCost ( Type Ty)
pure virtual

◆ getGatherScatterOpCost()

virtual InstructionCost 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 InstructionCost llvm::TargetTransformInfo::Concept::getGEPCost ( Type PointeeType,
const Value Ptr,
ArrayRef< const Value * >  Operands,
Type AccessType,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getGISelRematGlobalCost()

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

◆ getInlineCallPenalty()

virtual unsigned llvm::TargetTransformInfo::Concept::getInlineCallPenalty ( const Function F,
const CallBase Call,
unsigned  DefaultCallPenalty 
) const
pure virtual

◆ getInlinerVectorBonusPercent()

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

◆ getInliningCostBenefitAnalysisProfitableMultiplier()

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

◆ getInliningCostBenefitAnalysisSavingsMultiplier()

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

◆ getInliningLastCallToStaticBonus()

virtual int llvm::TargetTransformInfo::Concept::getInliningLastCallToStaticBonus ( ) const
pure virtual

◆ getInliningThresholdMultiplier()

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

◆ getInstructionCost()

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

◆ getInterleavedMemoryOpCost()

virtual InstructionCost 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 InstructionCost llvm::TargetTransformInfo::Concept::getIntImmCodeSizeCost ( unsigned  Opc,
unsigned  Idx,
const APInt Imm,
Type Ty 
)
pure virtual

◆ getIntImmCost()

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

◆ getIntImmCostInst()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getIntImmCostInst ( unsigned  Opc,
unsigned  Idx,
const APInt Imm,
Type Ty,
TargetCostKind  CostKind,
Instruction Inst = nullptr 
)
pure virtual

◆ getIntImmCostIntrin()

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

◆ getIntrinsicInstrCost()

virtual InstructionCost 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 InstructionCost llvm::TargetTransformInfo::Concept::getMaskedMemoryOpCost ( unsigned  Opcode,
Type Src,
Align  Alignment,
unsigned  AddressSpace,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getMaximumVF()

virtual unsigned llvm::TargetTransformInfo::Concept::getMaximumVF ( unsigned  ElemWidth,
unsigned  Opcode 
) const
pure virtual

◆ getMaxInterleaveFactor()

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

◆ getMaxMemIntrinsicInlineSizeThreshold()

virtual uint64_t llvm::TargetTransformInfo::Concept::getMaxMemIntrinsicInlineSizeThreshold ( ) const
pure virtual

◆ getMaxNumArgs()

virtual unsigned llvm::TargetTransformInfo::Concept::getMaxNumArgs ( ) const
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.

◆ getMaxVScale()

virtual std::optional< unsigned > llvm::TargetTransformInfo::Concept::getMaxVScale ( ) const
pure virtual

◆ getMemcpyCost()

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

◆ getMemcpyLoopLoweringType()

virtual Type * llvm::TargetTransformInfo::Concept::getMemcpyLoopLoweringType ( LLVMContext Context,
Value Length,
unsigned  SrcAddrSpace,
unsigned  DestAddrSpace,
Align  SrcAlign,
Align  DestAlign,
std::optional< uint32_t AtomicElementSize 
) const
pure virtual

◆ getMemcpyLoopResidualLoweringType()

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

◆ getMemoryOpCost()

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

◆ getMinimumVF()

virtual ElementCount llvm::TargetTransformInfo::Concept::getMinimumVF ( unsigned  ElemWidth,
bool  IsScalable 
) const
pure virtual

◆ getMinMaxReductionCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getMinMaxReductionCost ( Intrinsic::ID  IID,
VectorType Ty,
FastMathFlags  FMF,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getMinPageSize()

virtual std::optional< unsigned > llvm::TargetTransformInfo::Concept::getMinPageSize ( ) const
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.

◆ getMinTripCountTailFoldingThreshold()

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

◆ getMinVectorRegisterBitWidth()

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

◆ getMulAccReductionCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getMulAccReductionCost ( bool  IsUnsigned,
Type ResTy,
VectorType Ty,
TTI::TargetCostKind  CostKind = TTI::TCK_RecipThroughput 
)
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

◆ getNumBytesToPadGlobalArray()

virtual unsigned llvm::TargetTransformInfo::Concept::getNumBytesToPadGlobalArray ( unsigned  Size,
Type ArrayType 
) const
pure virtual

◆ getOperandsScalarizationOverhead()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getOperandsScalarizationOverhead ( ArrayRef< const Value * >  Args,
ArrayRef< Type * >  Tys,
TargetCostKind  CostKind 
)
pure virtual

◆ getOrCreateResultFromMemIntrinsic()

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

◆ getPeelingPreferences()

virtual void llvm::TargetTransformInfo::Concept::getPeelingPreferences ( Loop L,
ScalarEvolution SE,
PeelingPreferences PP 
)
pure virtual

◆ getPointersChainCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getPointersChainCost ( ArrayRef< const Value * >  Ptrs,
const Value Base,
const TTI::PointersChainInfo Info,
Type AccessTy,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getPopcntSupport()

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

◆ getPredicatedAddrSpace()

virtual std::pair< const Value *, unsigned > llvm::TargetTransformInfo::Concept::getPredicatedAddrSpace ( const Value V) const
pure virtual

◆ getPredictableBranchThreshold()

virtual BranchProbability llvm::TargetTransformInfo::Concept::getPredictableBranchThreshold ( )
pure virtual

◆ getPreferredAddressingMode()

virtual AddressingModeKind llvm::TargetTransformInfo::Concept::getPreferredAddressingMode ( const Loop L,
ScalarEvolution SE 
) const
pure virtual

◆ getPreferredExpandedReductionShuffle()

virtual ReductionShuffle llvm::TargetTransformInfo::Concept::getPreferredExpandedReductionShuffle ( const IntrinsicInst II) const
pure virtual

◆ getPreferredTailFoldingStyle()

virtual TailFoldingStyle llvm::TargetTransformInfo::Concept::getPreferredTailFoldingStyle ( bool  IVUpdateMayOverflow = true)
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 TypeSize llvm::TargetTransformInfo::Concept::getRegisterBitWidth ( RegisterKind  K) 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

◆ getRegUsageForType()

virtual unsigned llvm::TargetTransformInfo::Concept::getRegUsageForType ( Type Ty)
pure virtual

◆ getReplicationShuffleCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getReplicationShuffleCost ( Type EltTy,
int  ReplicationFactor,
int  VF,
const APInt DemandedDstElts,
TTI::TargetCostKind  CostKind 
)
pure virtual

◆ getScalarizationOverhead()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getScalarizationOverhead ( VectorType Ty,
const APInt DemandedElts,
bool  Insert,
bool  Extract,
TargetCostKind  CostKind,
ArrayRef< Value * >  VL = {} 
)
pure virtual

◆ getScalingFactorCost()

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

◆ getShuffleCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getShuffleCost ( ShuffleKind  Kind,
VectorType Tp,
ArrayRef< int >  Mask,
TTI::TargetCostKind  CostKind,
int  Index,
VectorType SubTp,
ArrayRef< const Value * >  Args,
const Instruction CxtI 
)
pure virtual

◆ getStoreMinimumVF()

virtual unsigned llvm::TargetTransformInfo::Concept::getStoreMinimumVF ( unsigned  VF,
Type ScalarMemTy,
Type ScalarValTy 
) const
pure virtual

◆ getStoreVectorFactor()

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

◆ getStridedMemoryOpCost()

virtual InstructionCost llvm::TargetTransformInfo::Concept::getStridedMemoryOpCost ( unsigned  Opcode,
Type DataTy,
const Value Ptr,
bool  VariableMask,
Align  Alignment,
TTI::TargetCostKind  CostKind,
const Instruction I = nullptr 
)
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,
OptimizationRemarkEmitter ORE 
)
pure virtual

◆ getVectorInstrCost() [1/3]

virtual InstructionCost llvm::TargetTransformInfo::Concept::getVectorInstrCost ( const Instruction I,
Type Val,
TTI::TargetCostKind  CostKind,
unsigned  Index 
)
pure virtual

◆ getVectorInstrCost() [2/3]

virtual InstructionCost llvm::TargetTransformInfo::Concept::getVectorInstrCost ( unsigned  Opcode,
Type Val,
TTI::TargetCostKind  CostKind,
unsigned  Index,
Value Op0,
Value Op1 
)
pure virtual

◆ getVectorInstrCost() [3/3]

virtual InstructionCost llvm::TargetTransformInfo::Concept::getVectorInstrCost ( unsigned  Opcode,
Type Val,
TTI::TargetCostKind  CostKind,
unsigned  Index,
Value Scalar,
ArrayRef< std::tuple< Value *, User *, int > >  ScalarUserAndIdx 
)
pure virtual
Parameters
ScalarUserAndIdxencodes the information about extracts from a vector with 'Scalar' being the value being extracted,'User' being the user of the extract(nullptr if user is not known before vectorization) and 'Idx' being the extract lane.

◆ getVPLegalizationStrategy()

virtual VPLegalization llvm::TargetTransformInfo::Concept::getVPLegalizationStrategy ( const VPIntrinsic PI) const
pure virtual

◆ getVPMemoryOpCost()

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

◆ getVScaleForTuning()

virtual std::optional< unsigned > llvm::TargetTransformInfo::Concept::getVScaleForTuning ( ) const
pure virtual

◆ hasActiveVectorLength()

virtual bool llvm::TargetTransformInfo::Concept::hasActiveVectorLength ( unsigned  Opcode,
Type DataType,
Align  Alignment 
) const
pure virtual

◆ hasArmWideBranch()

virtual bool llvm::TargetTransformInfo::Concept::hasArmWideBranch ( bool  Thumb) const
pure virtual

◆ hasBranchDivergence()

virtual bool llvm::TargetTransformInfo::Concept::hasBranchDivergence ( const Function F = nullptr)
pure virtual

◆ hasConditionalLoadStoreForType()

virtual bool llvm::TargetTransformInfo::Concept::hasConditionalLoadStoreForType ( Type Ty = nullptr) const
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

◆ instCombineIntrinsic()

virtual std::optional< Instruction * > llvm::TargetTransformInfo::Concept::instCombineIntrinsic ( InstCombiner IC,
IntrinsicInst II 
)
pure virtual

◆ isAlwaysUniform()

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

◆ isElementTypeLegalForScalableVector()

virtual bool llvm::TargetTransformInfo::Concept::isElementTypeLegalForScalableVector ( Type Ty) const
pure virtual

◆ isExpensiveToSpeculativelyExecute()

virtual bool llvm::TargetTransformInfo::Concept::isExpensiveToSpeculativelyExecute ( const Instruction I)
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,
int64_t  ScalableOffset 
)
pure virtual

◆ isLegalAddScalableImmediate()

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

◆ isLegalAltInstr()

virtual bool llvm::TargetTransformInfo::Concept::isLegalAltInstr ( VectorType VecTy,
unsigned  Opcode0,
unsigned  Opcode1,
const SmallBitVector OpcodeMask 
) const
pure virtual

◆ isLegalBroadcastLoad()

virtual bool llvm::TargetTransformInfo::Concept::isLegalBroadcastLoad ( Type ElementTy,
ElementCount  NumElements 
) const
pure virtual

◆ isLegalICmpImmediate()

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

◆ isLegalInterleavedAccessType()

virtual bool llvm::TargetTransformInfo::Concept::isLegalInterleavedAccessType ( VectorType VTy,
unsigned  Factor,
Align  Alignment,
unsigned  AddrSpace 
)
pure virtual

◆ isLegalMaskedCompressStore()

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

◆ isLegalMaskedExpandLoad()

virtual bool llvm::TargetTransformInfo::Concept::isLegalMaskedExpandLoad ( Type DataType,
Align  Alignment 
)
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

◆ isLegalMaskedVectorHistogram()

virtual bool llvm::TargetTransformInfo::Concept::isLegalMaskedVectorHistogram ( Type AddrType,
Type DataType 
)
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

◆ isLegalStridedLoadStore()

virtual bool llvm::TargetTransformInfo::Concept::isLegalStridedLoadStore ( 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

◆ isLegalToVectorizeReduction()

virtual bool llvm::TargetTransformInfo::Concept::isLegalToVectorizeReduction ( const RecurrenceDescriptor RdxDesc,
ElementCount  VF 
) 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 ( const TargetTransformInfo::LSRCost C1,
const TargetTransformInfo::LSRCost C2 
)
pure virtual

◆ isNoopAddrSpaceCast()

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

◆ isNumRegsMajorCostOfLSR()

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

◆ isProfitableLSRChainElement()

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

◆ isProfitableToHoist()

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

◆ isProfitableToSinkOperands()

virtual bool llvm::TargetTransformInfo::Concept::isProfitableToSinkOperands ( Instruction I,
SmallVectorImpl< Use * > &  OpsToSink 
) const
pure virtual

◆ isSingleThreaded()

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

◆ isSourceOfDivergence()

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

◆ isTargetIntrinsicTriviallyScalarizable()

virtual bool llvm::TargetTransformInfo::Concept::isTargetIntrinsicTriviallyScalarizable ( Intrinsic::ID  ID)
pure virtual

◆ isTargetIntrinsicWithOverloadTypeAtArg()

virtual bool llvm::TargetTransformInfo::Concept::isTargetIntrinsicWithOverloadTypeAtArg ( Intrinsic::ID  ID,
int  OpdIdx 
)
pure virtual

◆ isTargetIntrinsicWithScalarOpAtArg()

virtual bool llvm::TargetTransformInfo::Concept::isTargetIntrinsicWithScalarOpAtArg ( Intrinsic::ID  ID,
unsigned  ScalarOpdIdx 
)
pure virtual

◆ isTargetIntrinsicWithStructReturnOverloadAtField()

virtual bool llvm::TargetTransformInfo::Concept::isTargetIntrinsicWithStructReturnOverloadAtField ( Intrinsic::ID  ID,
int  RetIdx 
)
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

◆ isValidAddrSpaceCast()

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

◆ isVectorShiftByScalarCheap()

virtual bool llvm::TargetTransformInfo::Concept::isVectorShiftByScalarCheap ( Type Ty) const
pure virtual

◆ isVScaleKnownToBeAPowerOfTwo()

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

◆ LSRWithInstrQueries()

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

◆ preferEpilogueVectorization()

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

◆ preferFixedOverScalableIfEqualCost()

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

◆ preferInLoopReduction()

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

◆ preferPredicatedReductionSelect()

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

◆ preferPredicateOverEpilogue()

virtual bool llvm::TargetTransformInfo::Concept::preferPredicateOverEpilogue ( TailFoldingInfo TFI)
pure virtual

◆ prefersVectorizedAddressing()

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

◆ preferToKeepConstantsAttached()

virtual bool llvm::TargetTransformInfo::Concept::preferToKeepConstantsAttached ( const Instruction Inst,
const Function Fn 
) const
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

◆ shouldBuildRelLookupTables()

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

◆ shouldConsiderAddressTypePromotion()

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

◆ shouldDropLSRSolutionIfLessProfitable()

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

◆ shouldExpandReduction()

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

◆ shouldMaximizeVectorBandwidth()

virtual bool llvm::TargetTransformInfo::Concept::shouldMaximizeVectorBandwidth ( TargetTransformInfo::RegisterKind  K) const
pure virtual

◆ shouldPrefetchAddressSpace()

virtual bool llvm::TargetTransformInfo::Concept::shouldPrefetchAddressSpace ( unsigned  AS) const
pure virtual
Returns
if target want to issue a prefetch in address space AS.

◆ shouldTreatInstructionLikeSelect()

virtual bool llvm::TargetTransformInfo::Concept::shouldTreatInstructionLikeSelect ( const Instruction I)
pure virtual

◆ simplifyDemandedUseBitsIntrinsic()

virtual std::optional< Value * > llvm::TargetTransformInfo::Concept::simplifyDemandedUseBitsIntrinsic ( InstCombiner IC,
IntrinsicInst II,
APInt  DemandedMask,
KnownBits Known,
bool KnownBitsComputed 
)
pure virtual

◆ simplifyDemandedVectorEltsIntrinsic()

virtual std::optional< Value * > llvm::TargetTransformInfo::Concept::simplifyDemandedVectorEltsIntrinsic ( InstCombiner IC,
IntrinsicInst II,
APInt  DemandedElts,
APInt UndefElts,
APInt UndefElts2,
APInt UndefElts3,
std::function< void(Instruction *, unsigned, APInt, APInt &)>  SimplifyAndSetOp 
)
pure virtual

◆ supportsEfficientVectorElementLoadStore()

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

◆ supportsScalableVectors()

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

◆ supportsTailCallFor()

virtual bool llvm::TargetTransformInfo::Concept::supportsTailCallFor ( const CallBase CB)
pure virtual

◆ supportsTailCalls()

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

◆ useAA()

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

◆ useColdCCForColdCall()

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

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