|
virtual | ~Concept ()=0 |
|
virtual const DataLayout & | getDataLayout () 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 *, unsigned > | getPredicatedAddrSpace (const Value *V) const =0 |
|
virtual Value * | rewriteIntrinsicWithAddressSpace (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 char * | getRegisterClassName (unsigned ClassID) const =0 |
|
virtual TypeSize | getRegisterBitWidth (RegisterKind K) const =0 |
|
virtual unsigned | getMinVectorRegisterBitWidth () const =0 |
|
virtual std::optional< unsigned > | getMaxVScale () const =0 |
|
virtual std::optional< unsigned > | getVScaleForTuning () 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< unsigned > | getCacheSize (CacheLevel Level) const =0 |
|
virtual std::optional< unsigned > | getCacheAssociativity (CacheLevel Level) const =0 |
|
virtual std::optional< unsigned > | getMinPageSize () 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 Value * | getOrCreateResultFromMemIntrinsic (IntrinsicInst *Inst, Type *ExpectedType)=0 |
|
virtual Type * | getMemcpyLoopLoweringType (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 |
|