LLVM  8.0.1
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
llvm::TargetTransformInfoImplBase Class Reference

Base class for use as a mix-in that aids implementing a TargetTransformInfo-compatible class. More...

#include "llvm/Analysis/TargetTransformInfoImpl.h"

Inheritance diagram for llvm::TargetTransformInfoImplBase:
Inheritance graph
[legend]
Collaboration diagram for llvm::TargetTransformInfoImplBase:
Collaboration graph
[legend]

Public Member Functions

 TargetTransformInfoImplBase (const TargetTransformInfoImplBase &Arg)
 
 TargetTransformInfoImplBase (TargetTransformInfoImplBase &&Arg)
 
const DataLayoutgetDataLayout () const
 
unsigned getOperationCost (unsigned Opcode, Type *Ty, Type *OpTy)
 
int getGEPCost (Type *PointeeType, const Value *Ptr, ArrayRef< const Value *> Operands)
 
unsigned getEstimatedNumberOfCaseClusters (const SwitchInst &SI, unsigned &JTSize)
 
int getExtCost (const Instruction *I, const Value *Src)
 
unsigned getCallCost (FunctionType *FTy, int NumArgs)
 
unsigned getInliningThresholdMultiplier ()
 
unsigned getIntrinsicCost (Intrinsic::ID IID, Type *RetTy, ArrayRef< Type *> ParamTys)
 
bool hasBranchDivergence ()
 
bool isSourceOfDivergence (const Value *V)
 
bool isAlwaysUniform (const Value *V)
 
unsigned getFlatAddressSpace ()
 
bool isLoweredToCall (const Function *F)
 
void getUnrollingPreferences (Loop *, ScalarEvolution &, TTI::UnrollingPreferences &)
 
bool isLegalAddImmediate (int64_t Imm)
 
bool isLegalICmpImmediate (int64_t Imm)
 
bool isLegalAddressingMode (Type *Ty, GlobalValue *BaseGV, int64_t BaseOffset, bool HasBaseReg, int64_t Scale, unsigned AddrSpace, Instruction *I=nullptr)
 
bool isLSRCostLess (TTI::LSRCost &C1, TTI::LSRCost &C2)
 
bool canMacroFuseCmp ()
 
bool shouldFavorPostInc () const
 
bool isLegalMaskedStore (Type *DataType)
 
bool isLegalMaskedLoad (Type *DataType)
 
bool isLegalMaskedScatter (Type *DataType)
 
bool isLegalMaskedGather (Type *DataType)
 
bool hasDivRemOp (Type *DataType, bool IsSigned)
 
bool hasVolatileVariant (Instruction *I, unsigned AddrSpace)
 
bool prefersVectorizedAddressing ()
 
int getScalingFactorCost (Type *Ty, GlobalValue *BaseGV, int64_t BaseOffset, bool HasBaseReg, int64_t Scale, unsigned AddrSpace)
 
bool LSRWithInstrQueries ()
 
bool isTruncateFree (Type *Ty1, Type *Ty2)
 
bool isProfitableToHoist (Instruction *I)
 
bool useAA ()
 
bool isTypeLegal (Type *Ty)
 
unsigned getJumpBufAlignment ()
 
unsigned getJumpBufSize ()
 
bool shouldBuildLookupTables ()
 
bool shouldBuildLookupTablesForConstant (Constant *C)
 
bool useColdCCForColdCall (Function &F)
 
unsigned getScalarizationOverhead (Type *Ty, bool Insert, bool Extract)
 
unsigned getOperandsScalarizationOverhead (ArrayRef< const Value *> Args, unsigned VF)
 
bool supportsEfficientVectorElementLoadStore ()
 
bool enableAggressiveInterleaving (bool LoopHasReductions)
 
const TTI::MemCmpExpansionOptionsenableMemCmpExpansion (bool IsZeroCmp) const
 
bool enableInterleavedAccessVectorization ()
 
bool enableMaskedInterleavedAccessVectorization ()
 
bool isFPVectorizationPotentiallyUnsafe ()
 
bool allowsMisalignedMemoryAccesses (LLVMContext &Context, unsigned BitWidth, unsigned AddressSpace, unsigned Alignment, bool *Fast)
 
TTI::PopcntSupportKind getPopcntSupport (unsigned IntTyWidthInBit)
 
bool haveFastSqrt (Type *Ty)
 
bool isFCmpOrdCheaperThanFCmpZero (Type *Ty)
 
unsigned getFPOpCost (Type *Ty)
 
int getIntImmCodeSizeCost (unsigned Opcode, unsigned Idx, const APInt &Imm, Type *Ty)
 
unsigned getIntImmCost (const APInt &Imm, Type *Ty)
 
unsigned getIntImmCost (unsigned Opcode, unsigned Idx, const APInt &Imm, Type *Ty)
 
unsigned getIntImmCost (Intrinsic::ID IID, unsigned Idx, const APInt &Imm, Type *Ty)
 
unsigned getNumberOfRegisters (bool Vector)
 
unsigned getRegisterBitWidth (bool Vector) const
 
unsigned getMinVectorRegisterBitWidth ()
 
bool shouldMaximizeVectorBandwidth (bool OptSize) const
 
unsigned getMinimumVF (unsigned ElemWidth) const
 
bool shouldConsiderAddressTypePromotion (const Instruction &I, bool &AllowPromotionWithoutCommonHeader)
 
unsigned getCacheLineSize ()
 
llvm::Optional< unsignedgetCacheSize (TargetTransformInfo::CacheLevel Level)
 
llvm::Optional< unsignedgetCacheAssociativity (TargetTransformInfo::CacheLevel Level)
 
unsigned getPrefetchDistance ()
 
unsigned getMinPrefetchStride ()
 
unsigned getMaxPrefetchIterationsAhead ()
 
unsigned getMaxInterleaveFactor (unsigned VF)
 
unsigned getArithmeticInstrCost (unsigned Opcode, Type *Ty, TTI::OperandValueKind Opd1Info, TTI::OperandValueKind Opd2Info, TTI::OperandValueProperties Opd1PropInfo, TTI::OperandValueProperties Opd2PropInfo, ArrayRef< const Value *> Args)
 
unsigned getShuffleCost (TTI::ShuffleKind Kind, Type *Ty, int Index, Type *SubTp)
 
unsigned getCastInstrCost (unsigned Opcode, Type *Dst, Type *Src, const Instruction *I)
 
unsigned getExtractWithExtendCost (unsigned Opcode, Type *Dst, VectorType *VecTy, unsigned Index)
 
unsigned getCFInstrCost (unsigned Opcode)
 
unsigned getCmpSelInstrCost (unsigned Opcode, Type *ValTy, Type *CondTy, const Instruction *I)
 
unsigned getVectorInstrCost (unsigned Opcode, Type *Val, unsigned Index)
 
unsigned getMemoryOpCost (unsigned Opcode, Type *Src, unsigned Alignment, unsigned AddressSpace, const Instruction *I)
 
unsigned getMaskedMemoryOpCost (unsigned Opcode, Type *Src, unsigned Alignment, unsigned AddressSpace)
 
unsigned getGatherScatterOpCost (unsigned Opcode, Type *DataTy, Value *Ptr, bool VariableMask, unsigned Alignment)
 
unsigned getInterleavedMemoryOpCost (unsigned Opcode, Type *VecTy, unsigned Factor, ArrayRef< unsigned > Indices, unsigned Alignment, unsigned AddressSpace, bool UseMaskForCond=false, bool UseMaskForGaps=false)
 
unsigned getIntrinsicInstrCost (Intrinsic::ID ID, Type *RetTy, ArrayRef< Type *> Tys, FastMathFlags FMF, unsigned ScalarizationCostPassed)
 
unsigned getIntrinsicInstrCost (Intrinsic::ID ID, Type *RetTy, ArrayRef< Value *> Args, FastMathFlags FMF, unsigned VF)
 
unsigned getCallInstrCost (Function *F, Type *RetTy, ArrayRef< Type *> Tys)
 
unsigned getNumberOfParts (Type *Tp)
 
unsigned getAddressComputationCost (Type *Tp, ScalarEvolution *, const SCEV *)
 
unsigned getArithmeticReductionCost (unsigned, Type *, bool)
 
unsigned getMinMaxReductionCost (Type *, Type *, bool, bool)
 
unsigned getCostOfKeepingLiveOverCall (ArrayRef< Type *> Tys)
 
bool getTgtMemIntrinsic (IntrinsicInst *Inst, MemIntrinsicInfo &Info)
 
unsigned getAtomicMemIntrinsicMaxElementSize () const
 
ValuegetOrCreateResultFromMemIntrinsic (IntrinsicInst *Inst, Type *ExpectedType)
 
TypegetMemcpyLoopLoweringType (LLVMContext &Context, Value *Length, unsigned SrcAlign, unsigned DestAlign) const
 
void getMemcpyLoopResidualLoweringType (SmallVectorImpl< Type *> &OpsOut, LLVMContext &Context, unsigned RemainingBytes, unsigned SrcAlign, unsigned DestAlign) const
 
bool areInlineCompatible (const Function *Caller, const Function *Callee) const
 
bool areFunctionArgsABICompatible (const Function *Caller, const Function *Callee, SmallPtrSetImpl< Argument *> &Args) const
 
bool isIndexedLoadLegal (TTI::MemIndexedMode Mode, Type *Ty, const DataLayout &DL) const
 
bool isIndexedStoreLegal (TTI::MemIndexedMode Mode, Type *Ty, const DataLayout &DL) const
 
unsigned getLoadStoreVecRegBitWidth (unsigned AddrSpace) const
 
bool isLegalToVectorizeLoad (LoadInst *LI) const
 
bool isLegalToVectorizeStore (StoreInst *SI) const
 
bool isLegalToVectorizeLoadChain (unsigned ChainSizeInBytes, unsigned Alignment, unsigned AddrSpace) const
 
bool isLegalToVectorizeStoreChain (unsigned ChainSizeInBytes, unsigned Alignment, unsigned AddrSpace) const
 
unsigned getLoadVectorFactor (unsigned VF, unsigned LoadSize, unsigned ChainSizeInBytes, VectorType *VecTy) const
 
unsigned getStoreVectorFactor (unsigned VF, unsigned StoreSize, unsigned ChainSizeInBytes, VectorType *VecTy) const
 
bool useReductionIntrinsic (unsigned Opcode, Type *Ty, TTI::ReductionFlags Flags) const
 
bool shouldExpandReduction (const IntrinsicInst *II) const
 

Protected Types

typedef TargetTransformInfo TTI
 

Protected Member Functions

 TargetTransformInfoImplBase (const DataLayout &DL)
 
unsigned minRequiredElementSize (const Value *Val, bool &isSigned)
 
bool isStridedAccess (const SCEV *Ptr)
 
const SCEVConstantgetConstantStrideStep (ScalarEvolution *SE, const SCEV *Ptr)
 
bool isConstantStridedAccessLessThan (ScalarEvolution *SE, const SCEV *Ptr, int64_t MergeDistance)
 

Protected Attributes

const DataLayoutDL
 

Detailed Description

Base class for use as a mix-in that aids implementing a TargetTransformInfo-compatible class.

Definition at line 32 of file TargetTransformInfoImpl.h.

Member Typedef Documentation

◆ TTI

Definition at line 34 of file TargetTransformInfoImpl.h.

Constructor & Destructor Documentation

◆ TargetTransformInfoImplBase() [1/3]

llvm::TargetTransformInfoImplBase::TargetTransformInfoImplBase ( const DataLayout DL)
inlineexplicitprotected

Definition at line 38 of file TargetTransformInfoImpl.h.

◆ TargetTransformInfoImplBase() [2/3]

llvm::TargetTransformInfoImplBase::TargetTransformInfoImplBase ( const TargetTransformInfoImplBase Arg)
inline

Definition at line 42 of file TargetTransformInfoImpl.h.

◆ TargetTransformInfoImplBase() [3/3]

llvm::TargetTransformInfoImplBase::TargetTransformInfoImplBase ( TargetTransformInfoImplBase &&  Arg)
inline

Definition at line 44 of file TargetTransformInfoImpl.h.

Member Function Documentation

◆ allowsMisalignedMemoryAccesses()

bool llvm::TargetTransformInfoImplBase::allowsMisalignedMemoryAccesses ( LLVMContext Context,
unsigned  BitWidth,
unsigned  AddressSpace,
unsigned  Alignment,
bool Fast 
)
inline

Definition at line 321 of file TargetTransformInfoImpl.h.

◆ areFunctionArgsABICompatible()

bool llvm::TargetTransformInfoImplBase::areFunctionArgsABICompatible ( const Function Caller,
const Function Callee,
SmallPtrSetImpl< Argument *> &  Args 
) const
inline

Definition at line 529 of file TargetTransformInfoImpl.h.

References llvm::Function::getFnAttribute().

◆ areInlineCompatible()

bool llvm::TargetTransformInfoImplBase::areInlineCompatible ( const Function Caller,
const Function Callee 
) const
inline

◆ canMacroFuseCmp()

bool llvm::TargetTransformInfoImplBase::canMacroFuseCmp ( )
inline

Definition at line 253 of file TargetTransformInfoImpl.h.

◆ enableAggressiveInterleaving()

bool llvm::TargetTransformInfoImplBase::enableAggressiveInterleaving ( bool  LoopHasReductions)
inline

Definition at line 308 of file TargetTransformInfoImpl.h.

◆ enableInterleavedAccessVectorization()

bool llvm::TargetTransformInfoImplBase::enableInterleavedAccessVectorization ( )
inline

Definition at line 315 of file TargetTransformInfoImpl.h.

◆ enableMaskedInterleavedAccessVectorization()

bool llvm::TargetTransformInfoImplBase::enableMaskedInterleavedAccessVectorization ( )
inline

Definition at line 317 of file TargetTransformInfoImpl.h.

◆ enableMemCmpExpansion()

const TTI::MemCmpExpansionOptions* llvm::TargetTransformInfoImplBase::enableMemCmpExpansion ( bool  IsZeroCmp) const
inline

Definition at line 310 of file TargetTransformInfoImpl.h.

◆ getAddressComputationCost()

unsigned llvm::TargetTransformInfoImplBase::getAddressComputationCost ( Type Tp,
ScalarEvolution ,
const SCEV  
)
inline

Definition at line 478 of file TargetTransformInfoImpl.h.

◆ getArithmeticInstrCost()

unsigned llvm::TargetTransformInfoImplBase::getArithmeticInstrCost ( unsigned  Opcode,
Type Ty,
TTI::OperandValueKind  Opd1Info,
TTI::OperandValueKind  Opd2Info,
TTI::OperandValueProperties  Opd1PropInfo,
TTI::OperandValueProperties  Opd2PropInfo,
ArrayRef< const Value *>  Args 
)
inline

Definition at line 404 of file TargetTransformInfoImpl.h.

◆ getArithmeticReductionCost()

unsigned llvm::TargetTransformInfoImplBase::getArithmeticReductionCost ( unsigned  ,
Type ,
bool   
)
inline

Definition at line 483 of file TargetTransformInfoImpl.h.

◆ getAtomicMemIntrinsicMaxElementSize()

unsigned llvm::TargetTransformInfoImplBase::getAtomicMemIntrinsicMaxElementSize ( ) const
inline

Definition at line 493 of file TargetTransformInfoImpl.h.

◆ getCacheAssociativity()

llvm::Optional<unsigned> llvm::TargetTransformInfoImplBase::getCacheAssociativity ( TargetTransformInfo::CacheLevel  Level)
inline

◆ getCacheLineSize()

unsigned llvm::TargetTransformInfoImplBase::getCacheLineSize ( )
inline

Definition at line 371 of file TargetTransformInfoImpl.h.

◆ getCacheSize()

llvm::Optional<unsigned> llvm::TargetTransformInfoImplBase::getCacheSize ( TargetTransformInfo::CacheLevel  Level)
inline

◆ getCallCost()

unsigned llvm::TargetTransformInfoImplBase::getCallCost ( FunctionType FTy,
int  NumArgs 
)
inline

◆ getCallInstrCost()

unsigned llvm::TargetTransformInfoImplBase::getCallInstrCost ( Function F,
Type RetTy,
ArrayRef< Type *>  Tys 
)
inline

Definition at line 472 of file TargetTransformInfoImpl.h.

◆ getCastInstrCost()

unsigned llvm::TargetTransformInfoImplBase::getCastInstrCost ( unsigned  Opcode,
Type Dst,
Type Src,
const Instruction I 
)
inline

Definition at line 418 of file TargetTransformInfoImpl.h.

◆ getCFInstrCost()

unsigned llvm::TargetTransformInfoImplBase::getCFInstrCost ( unsigned  Opcode)
inline

Definition at line 426 of file TargetTransformInfoImpl.h.

◆ getCmpSelInstrCost()

unsigned llvm::TargetTransformInfoImplBase::getCmpSelInstrCost ( unsigned  Opcode,
Type ValTy,
Type CondTy,
const Instruction I 
)
inline

Definition at line 428 of file TargetTransformInfoImpl.h.

◆ getConstantStrideStep()

const SCEVConstant* llvm::TargetTransformInfoImplBase::getConstantStrideStep ( ScalarEvolution SE,
const SCEV Ptr 
)
inlineprotected

◆ getCostOfKeepingLiveOverCall()

unsigned llvm::TargetTransformInfoImplBase::getCostOfKeepingLiveOverCall ( ArrayRef< Type *>  Tys)
inline

Definition at line 487 of file TargetTransformInfoImpl.h.

◆ getDataLayout()

const DataLayout& llvm::TargetTransformInfoImplBase::getDataLayout ( ) const
inline

◆ getEstimatedNumberOfCaseClusters()

unsigned llvm::TargetTransformInfoImplBase::getEstimatedNumberOfCaseClusters ( const SwitchInst SI,
unsigned JTSize 
)
inline

Definition at line 117 of file TargetTransformInfoImpl.h.

References llvm::SwitchInst::getNumCases().

◆ getExtCost()

int llvm::TargetTransformInfoImplBase::getExtCost ( const Instruction I,
const Value Src 
)
inline

Definition at line 123 of file TargetTransformInfoImpl.h.

References llvm::TargetTransformInfo::TCC_Basic.

◆ getExtractWithExtendCost()

unsigned llvm::TargetTransformInfoImplBase::getExtractWithExtendCost ( unsigned  Opcode,
Type Dst,
VectorType VecTy,
unsigned  Index 
)
inline

Definition at line 421 of file TargetTransformInfoImpl.h.

◆ getFlatAddressSpace()

unsigned llvm::TargetTransformInfoImplBase::getFlatAddressSpace ( )
inline

Definition at line 191 of file TargetTransformInfoImpl.h.

◆ getFPOpCost()

unsigned llvm::TargetTransformInfoImplBase::getFPOpCost ( Type Ty)
inline

Definition at line 335 of file TargetTransformInfoImpl.h.

References llvm::TargetTransformInfo::TCC_Basic.

◆ getGatherScatterOpCost()

unsigned llvm::TargetTransformInfoImplBase::getGatherScatterOpCost ( unsigned  Opcode,
Type DataTy,
Value Ptr,
bool  VariableMask,
unsigned  Alignment 
)
inline

◆ getGEPCost()

int llvm::TargetTransformInfoImplBase::getGEPCost ( Type PointeeType,
const Value Ptr,
ArrayRef< const Value *>  Operands 
)
inline

◆ getInliningThresholdMultiplier()

unsigned llvm::TargetTransformInfoImplBase::getInliningThresholdMultiplier ( )
inline

Definition at line 142 of file TargetTransformInfoImpl.h.

◆ getInterleavedMemoryOpCost()

unsigned llvm::TargetTransformInfoImplBase::getInterleavedMemoryOpCost ( unsigned  Opcode,
Type VecTy,
unsigned  Factor,
ArrayRef< unsigned Indices,
unsigned  Alignment,
unsigned  AddressSpace,
bool  UseMaskForCond = false,
bool  UseMaskForGaps = false 
)
inline

Definition at line 453 of file TargetTransformInfoImpl.h.

◆ getIntImmCodeSizeCost()

int llvm::TargetTransformInfoImplBase::getIntImmCodeSizeCost ( unsigned  Opcode,
unsigned  Idx,
const APInt Imm,
Type Ty 
)
inline

Definition at line 337 of file TargetTransformInfoImpl.h.

◆ getIntImmCost() [1/3]

unsigned llvm::TargetTransformInfoImplBase::getIntImmCost ( const APInt Imm,
Type Ty 
)
inline

◆ getIntImmCost() [2/3]

unsigned llvm::TargetTransformInfoImplBase::getIntImmCost ( unsigned  Opcode,
unsigned  Idx,
const APInt Imm,
Type Ty 
)
inline

Definition at line 344 of file TargetTransformInfoImpl.h.

References llvm::TargetTransformInfo::TCC_Free.

◆ getIntImmCost() [3/3]

unsigned llvm::TargetTransformInfoImplBase::getIntImmCost ( Intrinsic::ID  IID,
unsigned  Idx,
const APInt Imm,
Type Ty 
)
inline

Definition at line 349 of file TargetTransformInfoImpl.h.

References llvm::TargetTransformInfo::TCC_Free.

◆ getIntrinsicCost()

unsigned llvm::TargetTransformInfoImplBase::getIntrinsicCost ( Intrinsic::ID  IID,
Type RetTy,
ArrayRef< Type *>  ParamTys 
)
inline

◆ getIntrinsicInstrCost() [1/2]

unsigned llvm::TargetTransformInfoImplBase::getIntrinsicInstrCost ( Intrinsic::ID  ID,
Type RetTy,
ArrayRef< Type *>  Tys,
FastMathFlags  FMF,
unsigned  ScalarizationCostPassed 
)
inline

Definition at line 462 of file TargetTransformInfoImpl.h.

◆ getIntrinsicInstrCost() [2/2]

unsigned llvm::TargetTransformInfoImplBase::getIntrinsicInstrCost ( Intrinsic::ID  ID,
Type RetTy,
ArrayRef< Value *>  Args,
FastMathFlags  FMF,
unsigned  VF 
)
inline

Definition at line 467 of file TargetTransformInfoImpl.h.

◆ getJumpBufAlignment()

unsigned llvm::TargetTransformInfoImplBase::getJumpBufAlignment ( )
inline

Definition at line 290 of file TargetTransformInfoImpl.h.

◆ getJumpBufSize()

unsigned llvm::TargetTransformInfoImplBase::getJumpBufSize ( )
inline

Definition at line 292 of file TargetTransformInfoImpl.h.

◆ getLoadStoreVecRegBitWidth()

unsigned llvm::TargetTransformInfoImplBase::getLoadStoreVecRegBitWidth ( unsigned  AddrSpace) const
inline

◆ getLoadVectorFactor()

unsigned llvm::TargetTransformInfoImplBase::getLoadVectorFactor ( unsigned  VF,
unsigned  LoadSize,
unsigned  ChainSizeInBytes,
VectorType VecTy 
) const
inline

Definition at line 565 of file TargetTransformInfoImpl.h.

Referenced by llvm::GCNTTIImpl::getPopcntSupport().

◆ getMaskedMemoryOpCost()

unsigned llvm::TargetTransformInfoImplBase::getMaskedMemoryOpCost ( unsigned  Opcode,
Type Src,
unsigned  Alignment,
unsigned  AddressSpace 
)
inline

◆ getMaxInterleaveFactor()

unsigned llvm::TargetTransformInfoImplBase::getMaxInterleaveFactor ( unsigned  VF)
inline

Definition at line 402 of file TargetTransformInfoImpl.h.

◆ getMaxPrefetchIterationsAhead()

unsigned llvm::TargetTransformInfoImplBase::getMaxPrefetchIterationsAhead ( )
inline

Definition at line 400 of file TargetTransformInfoImpl.h.

◆ getMemcpyLoopLoweringType()

Type* llvm::TargetTransformInfoImplBase::getMemcpyLoopLoweringType ( LLVMContext Context,
Value Length,
unsigned  SrcAlign,
unsigned  DestAlign 
) const
inline

Definition at line 507 of file TargetTransformInfoImpl.h.

References llvm::Type::getInt8Ty().

◆ getMemcpyLoopResidualLoweringType()

void llvm::TargetTransformInfoImplBase::getMemcpyLoopResidualLoweringType ( SmallVectorImpl< Type *> &  OpsOut,
LLVMContext Context,
unsigned  RemainingBytes,
unsigned  SrcAlign,
unsigned  DestAlign 
) const
inline

◆ getMemoryOpCost()

unsigned llvm::TargetTransformInfoImplBase::getMemoryOpCost ( unsigned  Opcode,
Type Src,
unsigned  Alignment,
unsigned  AddressSpace,
const Instruction I 
)
inline

Definition at line 437 of file TargetTransformInfoImpl.h.

◆ getMinimumVF()

unsigned llvm::TargetTransformInfoImplBase::getMinimumVF ( unsigned  ElemWidth) const
inline

Definition at line 362 of file TargetTransformInfoImpl.h.

◆ getMinMaxReductionCost()

unsigned llvm::TargetTransformInfoImplBase::getMinMaxReductionCost ( Type ,
Type ,
bool  ,
bool   
)
inline

Definition at line 485 of file TargetTransformInfoImpl.h.

◆ getMinPrefetchStride()

unsigned llvm::TargetTransformInfoImplBase::getMinPrefetchStride ( )
inline

Definition at line 398 of file TargetTransformInfoImpl.h.

◆ getMinVectorRegisterBitWidth()

unsigned llvm::TargetTransformInfoImplBase::getMinVectorRegisterBitWidth ( )
inline

◆ getNumberOfParts()

unsigned llvm::TargetTransformInfoImplBase::getNumberOfParts ( Type Tp)
inline

Definition at line 476 of file TargetTransformInfoImpl.h.

◆ getNumberOfRegisters()

unsigned llvm::TargetTransformInfoImplBase::getNumberOfRegisters ( bool  Vector)
inline

Definition at line 354 of file TargetTransformInfoImpl.h.

◆ getOperandsScalarizationOverhead()

unsigned llvm::TargetTransformInfoImplBase::getOperandsScalarizationOverhead ( ArrayRef< const Value *>  Args,
unsigned  VF 
)
inline

Definition at line 303 of file TargetTransformInfoImpl.h.

◆ getOperationCost()

unsigned llvm::TargetTransformInfoImplBase::getOperationCost ( unsigned  Opcode,
Type Ty,
Type OpTy 
)
inline

◆ getOrCreateResultFromMemIntrinsic()

Value* llvm::TargetTransformInfoImplBase::getOrCreateResultFromMemIntrinsic ( IntrinsicInst Inst,
Type ExpectedType 
)
inline

Definition at line 502 of file TargetTransformInfoImpl.h.

◆ getPopcntSupport()

TTI::PopcntSupportKind llvm::TargetTransformInfoImplBase::getPopcntSupport ( unsigned  IntTyWidthInBit)
inline

◆ getPrefetchDistance()

unsigned llvm::TargetTransformInfoImplBase::getPrefetchDistance ( )
inline

Definition at line 396 of file TargetTransformInfoImpl.h.

◆ getRegisterBitWidth()

unsigned llvm::TargetTransformInfoImplBase::getRegisterBitWidth ( bool  Vector) const
inline

Definition at line 356 of file TargetTransformInfoImpl.h.

◆ getScalarizationOverhead()

unsigned llvm::TargetTransformInfoImplBase::getScalarizationOverhead ( Type Ty,
bool  Insert,
bool  Extract 
)
inline

Definition at line 299 of file TargetTransformInfoImpl.h.

◆ getScalingFactorCost()

int llvm::TargetTransformInfoImplBase::getScalingFactorCost ( Type Ty,
GlobalValue BaseGV,
int64_t  BaseOffset,
bool  HasBaseReg,
int64_t  Scale,
unsigned  AddrSpace 
)
inline

Definition at line 271 of file TargetTransformInfoImpl.h.

References isLegalAddressingMode().

◆ getShuffleCost()

unsigned llvm::TargetTransformInfoImplBase::getShuffleCost ( TTI::ShuffleKind  Kind,
Type Ty,
int  Index,
Type SubTp 
)
inline

Definition at line 413 of file TargetTransformInfoImpl.h.

◆ getStoreVectorFactor()

unsigned llvm::TargetTransformInfoImplBase::getStoreVectorFactor ( unsigned  VF,
unsigned  StoreSize,
unsigned  ChainSizeInBytes,
VectorType VecTy 
) const
inline

Definition at line 571 of file TargetTransformInfoImpl.h.

Referenced by llvm::GCNTTIImpl::getPopcntSupport().

◆ getTgtMemIntrinsic()

bool llvm::TargetTransformInfoImplBase::getTgtMemIntrinsic ( IntrinsicInst Inst,
MemIntrinsicInfo Info 
)
inline

Definition at line 489 of file TargetTransformInfoImpl.h.

Referenced by llvm::GCNTTIImpl::getPopcntSupport().

◆ getUnrollingPreferences()

void llvm::TargetTransformInfoImplBase::getUnrollingPreferences ( Loop ,
ScalarEvolution ,
TTI::UnrollingPreferences  
)
inline

Definition at line 231 of file TargetTransformInfoImpl.h.

◆ getVectorInstrCost()

unsigned llvm::TargetTransformInfoImplBase::getVectorInstrCost ( unsigned  Opcode,
Type Val,
unsigned  Index 
)
inline

Definition at line 433 of file TargetTransformInfoImpl.h.

◆ hasBranchDivergence()

bool llvm::TargetTransformInfoImplBase::hasBranchDivergence ( )
inline

Definition at line 185 of file TargetTransformInfoImpl.h.

◆ hasDivRemOp()

bool llvm::TargetTransformInfoImplBase::hasDivRemOp ( Type DataType,
bool  IsSigned 
)
inline

Definition at line 265 of file TargetTransformInfoImpl.h.

◆ hasVolatileVariant()

bool llvm::TargetTransformInfoImplBase::hasVolatileVariant ( Instruction I,
unsigned  AddrSpace 
)
inline

Definition at line 267 of file TargetTransformInfoImpl.h.

◆ haveFastSqrt()

bool llvm::TargetTransformInfoImplBase::haveFastSqrt ( Type Ty)
inline

Definition at line 331 of file TargetTransformInfoImpl.h.

◆ isAlwaysUniform()

bool llvm::TargetTransformInfoImplBase::isAlwaysUniform ( const Value V)
inline

Definition at line 189 of file TargetTransformInfoImpl.h.

◆ isConstantStridedAccessLessThan()

bool llvm::TargetTransformInfoImplBase::isConstantStridedAccessLessThan ( ScalarEvolution SE,
const SCEV Ptr,
int64_t  MergeDistance 
)
inlineprotected

◆ isFCmpOrdCheaperThanFCmpZero()

bool llvm::TargetTransformInfoImplBase::isFCmpOrdCheaperThanFCmpZero ( Type Ty)
inline

Definition at line 333 of file TargetTransformInfoImpl.h.

◆ isFPVectorizationPotentiallyUnsafe()

bool llvm::TargetTransformInfoImplBase::isFPVectorizationPotentiallyUnsafe ( )
inline

Definition at line 319 of file TargetTransformInfoImpl.h.

◆ isIndexedLoadLegal()

bool llvm::TargetTransformInfoImplBase::isIndexedLoadLegal ( TTI::MemIndexedMode  Mode,
Type Ty,
const DataLayout DL 
) const
inline

Definition at line 537 of file TargetTransformInfoImpl.h.

◆ isIndexedStoreLegal()

bool llvm::TargetTransformInfoImplBase::isIndexedStoreLegal ( TTI::MemIndexedMode  Mode,
Type Ty,
const DataLayout DL 
) const
inline

Definition at line 542 of file TargetTransformInfoImpl.h.

◆ isLegalAddImmediate()

bool llvm::TargetTransformInfoImplBase::isLegalAddImmediate ( int64_t  Imm)
inline

Definition at line 234 of file TargetTransformInfoImpl.h.

◆ isLegalAddressingMode()

bool llvm::TargetTransformInfoImplBase::isLegalAddressingMode ( Type Ty,
GlobalValue BaseGV,
int64_t  BaseOffset,
bool  HasBaseReg,
int64_t  Scale,
unsigned  AddrSpace,
Instruction I = nullptr 
)
inline

Definition at line 238 of file TargetTransformInfoImpl.h.

Referenced by getScalingFactorCost().

◆ isLegalICmpImmediate()

bool llvm::TargetTransformInfoImplBase::isLegalICmpImmediate ( int64_t  Imm)
inline

Definition at line 236 of file TargetTransformInfoImpl.h.

◆ isLegalMaskedGather()

bool llvm::TargetTransformInfoImplBase::isLegalMaskedGather ( Type DataType)
inline

Definition at line 263 of file TargetTransformInfoImpl.h.

◆ isLegalMaskedLoad()

bool llvm::TargetTransformInfoImplBase::isLegalMaskedLoad ( Type DataType)
inline

Definition at line 259 of file TargetTransformInfoImpl.h.

◆ isLegalMaskedScatter()

bool llvm::TargetTransformInfoImplBase::isLegalMaskedScatter ( Type DataType)
inline

Definition at line 261 of file TargetTransformInfoImpl.h.

◆ isLegalMaskedStore()

bool llvm::TargetTransformInfoImplBase::isLegalMaskedStore ( Type DataType)
inline

Definition at line 257 of file TargetTransformInfoImpl.h.

◆ isLegalToVectorizeLoad()

bool llvm::TargetTransformInfoImplBase::isLegalToVectorizeLoad ( LoadInst LI) const
inline

Definition at line 549 of file TargetTransformInfoImpl.h.

◆ isLegalToVectorizeLoadChain()

bool llvm::TargetTransformInfoImplBase::isLegalToVectorizeLoadChain ( unsigned  ChainSizeInBytes,
unsigned  Alignment,
unsigned  AddrSpace 
) const
inline

◆ isLegalToVectorizeStore()

bool llvm::TargetTransformInfoImplBase::isLegalToVectorizeStore ( StoreInst SI) const
inline

Definition at line 551 of file TargetTransformInfoImpl.h.

◆ isLegalToVectorizeStoreChain()

bool llvm::TargetTransformInfoImplBase::isLegalToVectorizeStoreChain ( unsigned  ChainSizeInBytes,
unsigned  Alignment,
unsigned  AddrSpace 
) const
inline

◆ isLoweredToCall()

bool llvm::TargetTransformInfoImplBase::isLoweredToCall ( const Function F)
inline

◆ isLSRCostLess()

bool llvm::TargetTransformInfoImplBase::isLSRCostLess ( TTI::LSRCost C1,
TTI::LSRCost C2 
)
inline

◆ isProfitableToHoist()

bool llvm::TargetTransformInfoImplBase::isProfitableToHoist ( Instruction I)
inline

Definition at line 284 of file TargetTransformInfoImpl.h.

◆ isSourceOfDivergence()

bool llvm::TargetTransformInfoImplBase::isSourceOfDivergence ( const Value V)
inline

Definition at line 187 of file TargetTransformInfoImpl.h.

◆ isStridedAccess()

bool llvm::TargetTransformInfoImplBase::isStridedAccess ( const SCEV Ptr)
inlineprotected

◆ isTruncateFree()

bool llvm::TargetTransformInfoImplBase::isTruncateFree ( Type Ty1,
Type Ty2 
)
inline

Definition at line 282 of file TargetTransformInfoImpl.h.

◆ isTypeLegal()

bool llvm::TargetTransformInfoImplBase::isTypeLegal ( Type Ty)
inline

Definition at line 288 of file TargetTransformInfoImpl.h.

◆ LSRWithInstrQueries()

bool llvm::TargetTransformInfoImplBase::LSRWithInstrQueries ( )
inline

Definition at line 280 of file TargetTransformInfoImpl.h.

◆ minRequiredElementSize()

unsigned llvm::TargetTransformInfoImplBase::minRequiredElementSize ( const Value Val,
bool isSigned 
)
inlineprotected

◆ prefersVectorizedAddressing()

bool llvm::TargetTransformInfoImplBase::prefersVectorizedAddressing ( )
inline

Definition at line 269 of file TargetTransformInfoImpl.h.

◆ shouldBuildLookupTables()

bool llvm::TargetTransformInfoImplBase::shouldBuildLookupTables ( )
inline

Definition at line 294 of file TargetTransformInfoImpl.h.

◆ shouldBuildLookupTablesForConstant()

bool llvm::TargetTransformInfoImplBase::shouldBuildLookupTablesForConstant ( Constant C)
inline

Definition at line 295 of file TargetTransformInfoImpl.h.

◆ shouldConsiderAddressTypePromotion()

bool llvm::TargetTransformInfoImplBase::shouldConsiderAddressTypePromotion ( const Instruction I,
bool AllowPromotionWithoutCommonHeader 
)
inline

Definition at line 365 of file TargetTransformInfoImpl.h.

◆ shouldExpandReduction()

bool llvm::TargetTransformInfoImplBase::shouldExpandReduction ( const IntrinsicInst II) const
inline

Definition at line 582 of file TargetTransformInfoImpl.h.

◆ shouldFavorPostInc()

bool llvm::TargetTransformInfoImplBase::shouldFavorPostInc ( ) const
inline

Definition at line 255 of file TargetTransformInfoImpl.h.

◆ shouldMaximizeVectorBandwidth()

bool llvm::TargetTransformInfoImplBase::shouldMaximizeVectorBandwidth ( bool  OptSize) const
inline

Definition at line 360 of file TargetTransformInfoImpl.h.

◆ supportsEfficientVectorElementLoadStore()

bool llvm::TargetTransformInfoImplBase::supportsEfficientVectorElementLoadStore ( )
inline

Definition at line 306 of file TargetTransformInfoImpl.h.

◆ useAA()

bool llvm::TargetTransformInfoImplBase::useAA ( )
inline

Definition at line 286 of file TargetTransformInfoImpl.h.

◆ useColdCCForColdCall()

bool llvm::TargetTransformInfoImplBase::useColdCCForColdCall ( Function F)
inline

Definition at line 297 of file TargetTransformInfoImpl.h.

◆ useReductionIntrinsic()

bool llvm::TargetTransformInfoImplBase::useReductionIntrinsic ( unsigned  Opcode,
Type Ty,
TTI::ReductionFlags  Flags 
) const
inline

Definition at line 577 of file TargetTransformInfoImpl.h.

Member Data Documentation

◆ DL

const DataLayout& llvm::TargetTransformInfoImplBase::DL
protected

Definition at line 36 of file TargetTransformInfoImpl.h.

Referenced by llvm::BasicTTIImplBase< AMDGPUTTIImpl >::BasicTTIImplBase(), llvm::X86TTIImpl::getArithmeticInstrCost(), llvm::NVPTXTTIImpl::getArithmeticInstrCost(), llvm::AArch64TTIImpl::getArithmeticInstrCost(), llvm::HexagonTTIImpl::getArithmeticInstrCost(), llvm::ARMTTIImpl::getArithmeticInstrCost(), llvm::GCNTTIImpl::getArithmeticInstrCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getArithmeticInstrCost(), llvm::X86TTIImpl::getArithmeticReductionCost(), llvm::AArch64TTIImpl::getArithmeticReductionCost(), llvm::GCNTTIImpl::getArithmeticReductionCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getArithmeticReductionCost(), llvm::X86TTIImpl::getCastInstrCost(), llvm::AArch64TTIImpl::getCastInstrCost(), llvm::HexagonTTIImpl::getCastInstrCost(), llvm::ARMTTIImpl::getCastInstrCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getCastInstrCost(), llvm::X86TTIImpl::getCmpSelInstrCost(), llvm::HexagonTTIImpl::getCmpSelInstrCost(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::ARMTTIImpl::getCmpSelInstrCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getCmpSelInstrCost(), getDataLayout(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getEstimatedNumberOfCaseClusters(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getExtCost(), llvm::AArch64TTIImpl::getExtractWithExtendCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getFPOpCost(), llvm::TargetTransformInfoImplCRTPBase< AMDGPUTTIImpl >::getGEPCost(), llvm::PPCTTIImpl::getInterleavedMemoryOpCost(), llvm::AArch64TTIImpl::getInterleavedMemoryOpCost(), llvm::ARMTTIImpl::getInterleavedMemoryOpCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getInterleavedMemoryOpCost(), llvm::X86TTIImpl::getInterleavedMemoryOpCostAVX2(), llvm::X86TTIImpl::getInterleavedMemoryOpCostAVX512(), llvm::X86TTIImpl::getIntrinsicInstrCost(), llvm::HexagonTTIImpl::getIntrinsicInstrCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getIntrinsicInstrCost(), llvm::X86TTIImpl::getMaskedMemoryOpCost(), llvm::X86TTIImpl::getMemoryOpCost(), llvm::PPCTTIImpl::getMemoryOpCost(), llvm::AArch64TTIImpl::getMemoryOpCost(), llvm::ARMTTIImpl::getMemoryOpCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getMemoryOpCost(), llvm::X86TTIImpl::getMinMaxReductionCost(), llvm::GCNTTIImpl::getMinMaxReductionCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getMinMaxReductionCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getNumberOfParts(), llvm::AArch64TTIImpl::getPopcntSupport(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getScalingFactorCost(), llvm::X86TTIImpl::getShuffleCost(), llvm::PPCTTIImpl::getShuffleCost(), llvm::ARMTTIImpl::getShuffleCost(), llvm::AArch64TTIImpl::getShuffleCost(), llvm::GCNTTIImpl::getShuffleCost(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), llvm::PPCTTIImpl::getUserCost(), llvm::X86TTIImpl::getUserCost(), llvm::HexagonTTIImpl::getUserCost(), llvm::X86TTIImpl::getVectorInstrCost(), llvm::AArch64TTIImpl::getVectorInstrCost(), llvm::GCNTTIImpl::getVectorInstrCost(), llvm::R600TTIImpl::getVectorInstrCost(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::getVectorInstrCost(), llvm::SystemZTTIImpl::hasDivRemOp(), llvm::X86TTIImpl::hasDivRemOp(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::haveFastSqrt(), llvm::BasicTTIImplBase< AMDGPUTTIImpl >::isLegalAddressingMode(), llvm::X86TTIImpl::isLegalMaskedGather(), llvm::X86TTIImpl::isLegalMaskedLoad(), and llvm::BasicTTIImplBase< AMDGPUTTIImpl >::isTypeLegal().


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