class X86TTIImpl

Declaration

class X86TTIImpl : public BasicTTIImplBase { /* full declaration omitted */ };

Description

Base class which can be used to help build a TTI implementation. This class provides as much implementation of the TTI interface as is possible using the target independent parts of the code generator. In order to subclass it, your class must implement a getST() method to return the subtarget, and a getTLI() method to return the target lowering. We need these methods implemented in the derived class so that this class doesn't have to duplicate storage for them.

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:27

Inherits from: BasicTTIImplBase

Member Variables

private const llvm::X86Subtarget* ST
private const llvm::X86TargetLowering* TLI
private const llvm::FeatureBitset InlineFeatureIgnoreList = {X86::FeatureX86_64, X86::FeatureNOPL, X86::FeatureCX16, X86::FeatureLAHFSAHF64, X86::FeatureSSEUnalignedMem, X86::TuningFast11ByteNOP, X86::TuningFast15ByteNOP, X86::TuningFastBEXTR, X86::TuningFastHorizontalOps, X86::TuningFastLZCNT, X86::TuningFastScalarFSQRT, X86::TuningFastSHLDRotate, X86::TuningFastScalarShiftMasks, X86::TuningFastVectorShiftMasks, X86::TuningFastVariableCrossLaneShuffle, X86::TuningFastVariablePerLaneShuffle, X86::TuningFastVectorFSQRT, X86::TuningLEAForSP, X86::TuningLEAUsesAG, X86::TuningLZCNTFalseDeps, X86::TuningBranchFusion, X86::TuningMacroFusion, X86::TuningPadShortFunctions, X86::TuningPOPCNTFalseDeps, X86::TuningMULCFalseDeps, X86::TuningPERMFalseDeps, X86::TuningRANGEFalseDeps, X86::TuningGETMANTFalseDeps, X86::TuningMULLQFalseDeps, X86::TuningSlow3OpsLEA, X86::TuningSlowDivide32, X86::TuningSlowDivide64, X86::TuningSlowIncDec, X86::TuningSlowLEA, X86::TuningSlowPMADDWD, X86::TuningSlowPMULLD, X86::TuningSlowSHLD, X86::TuningSlowTwoMemOps, X86::TuningSlowUAMem16, X86::TuningPreferMaskRegisters, X86::TuningInsertVZEROUPPER, X86::TuningUseSLMArithCosts, X86::TuningUseGLMDivSqrtCosts, X86::TuningFastGather, X86::TuningSlowUAMem32, X86::TuningPrefer128Bit, X86::TuningPrefer256Bit, X86::ProcIntelAtom}

Method Overview

  • public X86TTIImpl(const llvm::X86TargetMachine * TM, const llvm::Function & F)
  • public bool areInlineCompatible(const llvm::Function * Caller, const llvm::Function * Callee) const
  • public bool areTypesABICompatible(const llvm::Function * Caller, const llvm::Function * Callee, const ArrayRef<llvm::Type *> & Type) const
  • public bool canMacroFuseCmp()
  • public bool enableInterleavedAccessVectorization()
  • public TTI::MemCmpExpansionOptions enableMemCmpExpansion(bool OptSize, bool IsZeroCmp) const
  • public bool forceScalarizeMaskedGather(llvm::VectorType * VTy, llvm::Align Alignment)
  • public bool forceScalarizeMaskedScatter(llvm::VectorType * VTy, llvm::Align Alignment)
  • public llvm::InstructionCost getAddressComputationCost(llvm::Type * PtrTy, llvm::ScalarEvolution * SE, const llvm::SCEV * Ptr)
  • public llvm::InstructionCost getArithmeticInstrCost(unsigned int Opcode, llvm::Type * Ty, TTI::TargetCostKind CostKind, TTI::OperandValueKind Opd1Info = TargetTransformInfo::OK_AnyValue, TTI::OperandValueKind Opd2Info = TargetTransformInfo::OK_AnyValue, TTI::OperandValueProperties Opd1PropInfo = TargetTransformInfo::OP_None, TTI::OperandValueProperties Opd2PropInfo = TargetTransformInfo::OP_None, ArrayRef<const llvm::Value *> Args = llvm::ArrayRef<const llvm::Value *>(), const llvm::Instruction * CxtI = nullptr)
  • public llvm::InstructionCost getArithmeticReductionCost(unsigned int Opcode, llvm::VectorType * Ty, Optional<llvm::FastMathFlags> FMF, TTI::TargetCostKind CostKind)
  • public unsigned int getAtomicMemIntrinsicMaxElementSize() const
  • public llvm::InstructionCost getCFInstrCost(unsigned int Opcode, TTI::TargetCostKind CostKind, const llvm::Instruction * I = nullptr)
  • public llvm::Optional<unsigned int> getCacheAssociativity(TargetTransformInfo::CacheLevel Level) const
  • public llvm::Optional<unsigned int> getCacheSize(TargetTransformInfo::CacheLevel Level) const
  • public llvm::InstructionCost getCastInstrCost(unsigned int Opcode, llvm::Type * Dst, llvm::Type * Src, TTI::CastContextHint CCH, TTI::TargetCostKind CostKind, const llvm::Instruction * I = nullptr)
  • public llvm::InstructionCost getCmpSelInstrCost(unsigned int Opcode, llvm::Type * ValTy, llvm::Type * CondTy, CmpInst::Predicate VecPred, TTI::TargetCostKind CostKind, const llvm::Instruction * I = nullptr)
  • private llvm::InstructionCost getGSScalarCost(unsigned int Opcode, llvm::Type * DataTy, bool VariableMask, llvm::Align Alignment, unsigned int AddressSpace)
  • private llvm::InstructionCost getGSVectorCost(unsigned int Opcode, llvm::Type * DataTy, const llvm::Value * Ptr, llvm::Align Alignment, unsigned int AddressSpace)
  • private int getGatherOverhead() const
  • public llvm::InstructionCost getGatherScatterOpCost(unsigned int Opcode, llvm::Type * DataTy, const llvm::Value * Ptr, bool VariableMask, llvm::Align Alignment, TTI::TargetCostKind CostKind, const llvm::Instruction * I)
  • public llvm::InstructionCost getIntImmCost(int64_t)
  • public llvm::InstructionCost getIntImmCost(const llvm::APInt & Imm, llvm::Type * Ty, TTI::TargetCostKind CostKind)
  • public llvm::InstructionCost getIntImmCostInst(unsigned int Opcode, unsigned int Idx, const llvm::APInt & Imm, llvm::Type * Ty, TTI::TargetCostKind CostKind, llvm::Instruction * Inst = nullptr)
  • public llvm::InstructionCost getIntImmCostIntrin(Intrinsic::ID IID, unsigned int Idx, const llvm::APInt & Imm, llvm::Type * Ty, TTI::TargetCostKind CostKind)
  • public llvm::InstructionCost getInterleavedMemoryOpCost(unsigned int Opcode, llvm::Type * VecTy, unsigned int Factor, ArrayRef<unsigned int> Indices, llvm::Align Alignment, unsigned int AddressSpace, TTI::TargetCostKind CostKind, bool UseMaskForCond = false, bool UseMaskForGaps = false)
  • public llvm::InstructionCost getInterleavedMemoryOpCostAVX512(unsigned int Opcode, llvm::FixedVectorType * VecTy, unsigned int Factor, ArrayRef<unsigned int> Indices, llvm::Align Alignment, unsigned int AddressSpace, TTI::TargetCostKind CostKind, bool UseMaskForCond = false, bool UseMaskForGaps = false)
  • public llvm::InstructionCost getIntrinsicInstrCost(const llvm::IntrinsicCostAttributes & ICA, TTI::TargetCostKind CostKind)
  • public unsigned int getLoadStoreVecRegBitWidth(unsigned int AS) const
  • public llvm::InstructionCost getMaskedMemoryOpCost(unsigned int Opcode, llvm::Type * Src, llvm::Align Alignment, unsigned int AddressSpace, TTI::TargetCostKind CostKind)
  • public unsigned int getMaxInterleaveFactor(unsigned int VF)
  • public llvm::InstructionCost getMemoryOpCost(unsigned int Opcode, llvm::Type * Src, llvm::MaybeAlign Alignment, unsigned int AddressSpace, TTI::TargetCostKind CostKind, const llvm::Instruction * I = nullptr)
  • public llvm::InstructionCost getMinMaxCost(llvm::Type * Ty, llvm::Type * CondTy, bool IsUnsigned)
  • public llvm::InstructionCost getMinMaxReductionCost(llvm::VectorType * Ty, llvm::VectorType * CondTy, bool IsUnsigned, TTI::TargetCostKind CostKind)
  • public unsigned int getNumberOfRegisters(unsigned int ClassID) const
  • public TTI::PopcntSupportKind getPopcntSupport(unsigned int TyWidth)
  • public llvm::TypeSize getRegisterBitWidth(TargetTransformInfo::RegisterKind K) const
  • public llvm::InstructionCost getReplicationShuffleCost(llvm::Type * EltTy, int ReplicationFactor, int VF, const llvm::APInt & DemandedDstElts, TTI::TargetCostKind CostKind)
  • private const llvm::X86Subtarget * getST() const
  • public llvm::InstructionCost getScalarizationOverhead(llvm::VectorType * Ty, const llvm::APInt & DemandedElts, bool Insert, bool Extract)
  • private int getScatterOverhead() const
  • public llvm::InstructionCost getShuffleCost(TTI::ShuffleKind Kind, llvm::VectorType * Tp, ArrayRef<int> Mask, int Index, llvm::VectorType * SubTp, ArrayRef<const llvm::Value *> Args = None)
  • private const llvm::X86TargetLowering * getTLI() const
  • public llvm::InstructionCost getTypeBasedIntrinsicInstrCost(const llvm::IntrinsicCostAttributes & ICA, TTI::TargetCostKind CostKind)
  • public llvm::InstructionCost getVectorInstrCost(unsigned int Opcode, llvm::Type * Val, unsigned int Index)
  • public bool hasDivRemOp(llvm::Type * DataType, bool IsSigned)
  • public Optional<llvm::Instruction *> instCombineIntrinsic(llvm::InstCombiner & IC, llvm::IntrinsicInst & II) const
  • public bool isFCmpOrdCheaperThanFCmpZero(llvm::Type * Ty)
  • public bool isLSRCostLess(const TargetTransformInfo::LSRCost & C1, const TargetTransformInfo::LSRCost & C2)
  • public bool isLegalAltInstr(llvm::VectorType * VecTy, unsigned int Opcode0, unsigned int Opcode1, const llvm::SmallBitVector & OpcodeMask) const
  • public bool isLegalBroadcastLoad(llvm::Type * ElementTy, llvm::ElementCount NumElements) const
  • public bool isLegalMaskedCompressStore(llvm::Type * DataType)
  • public bool isLegalMaskedExpandLoad(llvm::Type * DataType)
  • public bool isLegalMaskedGather(llvm::Type * DataType, llvm::Align Alignment)
  • public bool isLegalMaskedLoad(llvm::Type * DataType, llvm::Align Alignment)
  • public bool isLegalMaskedScatter(llvm::Type * DataType, llvm::Align Alignment)
  • public bool isLegalMaskedStore(llvm::Type * DataType, llvm::Align Alignment)
  • public bool isLegalNTLoad(llvm::Type * DataType, llvm::Align Alignment)
  • public bool isLegalNTStore(llvm::Type * DataType, llvm::Align Alignment)
  • public bool prefersVectorizedAddressing() const
  • public Optional<llvm::Value *> simplifyDemandedUseBitsIntrinsic(llvm::InstCombiner & IC, llvm::IntrinsicInst & II, llvm::APInt DemandedMask, llvm::KnownBits & Known, bool & KnownBitsComputed) const
  • public Optional<llvm::Value *> simplifyDemandedVectorEltsIntrinsic(llvm::InstCombiner & IC, llvm::IntrinsicInst & II, llvm::APInt DemandedElts, llvm::APInt & UndefElts, llvm::APInt & UndefElts2, llvm::APInt & UndefElts3, std::function<void (Instruction *, unsigned int, APInt, APInt &)> SimplifyAndSetOp) const
  • public bool supportsEfficientVectorElementLoadStore() const
  • private bool supportsGather() const

Methods

X86TTIImpl(const llvm::X86TargetMachine* TM,
           const llvm::Function& F)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:104

Parameters

const llvm::X86TargetMachine* TM
const llvm::Function& F

bool areInlineCompatible(
    const llvm::Function* Caller,
    const llvm::Function* Callee) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:248

Parameters

const llvm::Function* Caller
const llvm::Function* Callee

bool areTypesABICompatible(
    const llvm::Function* Caller,
    const llvm::Function* Callee,
    const ArrayRef<llvm::Type*>& Type) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:250

Parameters

const llvm::Function* Caller
const llvm::Function* Callee
const ArrayRef<llvm::Type*>& Type

bool canMacroFuseCmp()

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:230

bool enableInterleavedAccessVectorization()

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:256

TTI::MemCmpExpansionOptions enableMemCmpExpansion(
    bool OptSize,
    bool IsZeroCmp) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:252

Parameters

bool OptSize
bool IsZeroCmp

bool forceScalarizeMaskedGather(
    llvm::VectorType* VTy,
    llvm::Align Alignment)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:236

Parameters

llvm::VectorType* VTy
llvm::Align Alignment

bool forceScalarizeMaskedScatter(
    llvm::VectorType* VTy,
    llvm::Align Alignment)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:237

Parameters

llvm::VectorType* VTy
llvm::Align Alignment

llvm::InstructionCost getAddressComputationCost(
    llvm::Type* PtrTy,
    llvm::ScalarEvolution* SE,
    const llvm::SCEV* Ptr)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:170

Parameters

llvm::Type* PtrTy
llvm::ScalarEvolution* SE
const llvm::SCEV* Ptr

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

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:129

Parameters

unsigned int Opcode
llvm::Type* Ty
TTI::TargetCostKind CostKind
TTI::OperandValueKind Opd1Info = TargetTransformInfo::OK_AnyValue
TTI::OperandValueKind Opd2Info = TargetTransformInfo::OK_AnyValue
TTI::OperandValueProperties Opd1PropInfo = TargetTransformInfo::OP_None
TTI::OperandValueProperties Opd2PropInfo = TargetTransformInfo::OP_None
ArrayRef<const llvm::Value*> Args = llvm::ArrayRef<const llvm::Value *>()
const llvm::Instruction* CxtI = nullptr

llvm::InstructionCost getArithmeticReductionCost(
    unsigned int Opcode,
    llvm::VectorType* Ty,
    Optional<llvm::FastMathFlags> FMF,
    TTI::TargetCostKind CostKind)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:193

Parameters

unsigned int Opcode
llvm::VectorType* Ty
Optional<llvm::FastMathFlags> FMF
TTI::TargetCostKind CostKind

unsigned int getAtomicMemIntrinsicMaxElementSize()
    const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:185

llvm::InstructionCost getCFInstrCost(
    unsigned int Opcode,
    TTI::TargetCostKind CostKind,
    const llvm::Instruction* I = nullptr)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:218

Parameters

unsigned int Opcode
TTI::TargetCostKind CostKind
const llvm::Instruction* I = nullptr

llvm::Optional<unsigned int>
getCacheAssociativity(
    TargetTransformInfo::CacheLevel Level) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:118

Parameters

TargetTransformInfo::CacheLevel Level

llvm::Optional<unsigned int> getCacheSize(
    TargetTransformInfo::CacheLevel Level) const

Description

@ {

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:116

Parameters

TargetTransformInfo::CacheLevel Level

llvm::InstructionCost getCastInstrCost(
    unsigned int Opcode,
    llvm::Type* Dst,
    llvm::Type* Src,
    TTI::CastContextHint CCH,
    TTI::TargetCostKind CostKind,
    const llvm::Instruction* I = nullptr)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:141

Parameters

unsigned int Opcode
llvm::Type* Dst
llvm::Type* Src
TTI::CastContextHint CCH
TTI::TargetCostKind CostKind
const llvm::Instruction* I = nullptr

llvm::InstructionCost getCmpSelInstrCost(
    unsigned int Opcode,
    llvm::Type* ValTy,
    llvm::Type* CondTy,
    CmpInst::Predicate VecPred,
    TTI::TargetCostKind CostKind,
    const llvm::Instruction* I = nullptr)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:145

Parameters

unsigned int Opcode
llvm::Type* ValTy
llvm::Type* CondTy
CmpInst::Predicate VecPred
TTI::TargetCostKind CostKind
const llvm::Instruction* I = nullptr

llvm::InstructionCost getGSScalarCost(
    unsigned int Opcode,
    llvm::Type* DataTy,
    bool VariableMask,
    llvm::Align Alignment,
    unsigned int AddressSpace)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:260

Parameters

unsigned int Opcode
llvm::Type* DataTy
bool VariableMask
llvm::Align Alignment
unsigned int AddressSpace

llvm::InstructionCost getGSVectorCost(
    unsigned int Opcode,
    llvm::Type* DataTy,
    const llvm::Value* Ptr,
    llvm::Align Alignment,
    unsigned int AddressSpace)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:263

Parameters

unsigned int Opcode
llvm::Type* DataTy
const llvm::Value* Ptr
llvm::Align Alignment
unsigned int AddressSpace

int getGatherOverhead() const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:267

llvm::InstructionCost getGatherScatterOpCost(
    unsigned int Opcode,
    llvm::Type* DataTy,
    const llvm::Value* Ptr,
    bool VariableMask,
    llvm::Align Alignment,
    TTI::TargetCostKind CostKind,
    const llvm::Instruction* I)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:165

Parameters

unsigned int Opcode
llvm::Type* DataTy
const llvm::Value* Ptr
bool VariableMask
llvm::Align Alignment
TTI::TargetCostKind CostKind
const llvm::Instruction* I

llvm::InstructionCost getIntImmCost(int64_t)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:213

Parameters

int64_t

llvm::InstructionCost getIntImmCost(
    const llvm::APInt& Imm,
    llvm::Type* Ty,
    TTI::TargetCostKind CostKind)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:215

Parameters

const llvm::APInt& Imm
llvm::Type* Ty
TTI::TargetCostKind CostKind

llvm::InstructionCost getIntImmCostInst(
    unsigned int Opcode,
    unsigned int Idx,
    const llvm::APInt& Imm,
    llvm::Type* Ty,
    TTI::TargetCostKind CostKind,
    llvm::Instruction* Inst = nullptr)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:221

Parameters

unsigned int Opcode
unsigned int Idx
const llvm::APInt& Imm
llvm::Type* Ty
TTI::TargetCostKind CostKind
llvm::Instruction* Inst = nullptr

llvm::InstructionCost getIntImmCostIntrin(
    Intrinsic::ID IID,
    unsigned int Idx,
    const llvm::APInt& Imm,
    llvm::Type* Ty,
    TTI::TargetCostKind CostKind)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:225

Parameters

Intrinsic::ID IID
unsigned int Idx
const llvm::APInt& Imm
llvm::Type* Ty
TTI::TargetCostKind CostKind

llvm::InstructionCost getInterleavedMemoryOpCost(
    unsigned int Opcode,
    llvm::Type* VecTy,
    unsigned int Factor,
    ArrayRef<unsigned int> Indices,
    llvm::Align Alignment,
    unsigned int AddressSpace,
    TTI::TargetCostKind CostKind,
    bool UseMaskForCond = false,
    bool UseMaskForGaps = false)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:203

Parameters

unsigned int Opcode
llvm::Type* VecTy
unsigned int Factor
ArrayRef<unsigned int> Indices
llvm::Align Alignment
unsigned int AddressSpace
TTI::TargetCostKind CostKind
bool UseMaskForCond = false
bool UseMaskForGaps = false

llvm::InstructionCost
getInterleavedMemoryOpCostAVX512(
    unsigned int Opcode,
    llvm::FixedVectorType* VecTy,
    unsigned int Factor,
    ArrayRef<unsigned int> Indices,
    llvm::Align Alignment,
    unsigned int AddressSpace,
    TTI::TargetCostKind CostKind,
    bool UseMaskForCond = false,
    bool UseMaskForGaps = false)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:207

Parameters

unsigned int Opcode
llvm::FixedVectorType* VecTy
unsigned int Factor
ArrayRef<unsigned int> Indices
llvm::Align Alignment
unsigned int AddressSpace
TTI::TargetCostKind CostKind
bool UseMaskForCond = false
bool UseMaskForGaps = false

llvm::InstructionCost getIntrinsicInstrCost(
    const llvm::IntrinsicCostAttributes& ICA,
    TTI::TargetCostKind CostKind)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:190

Parameters

const llvm::IntrinsicCostAttributes& ICA
TTI::TargetCostKind CostKind

unsigned int getLoadStoreVecRegBitWidth(
    unsigned int AS) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:127

Parameters

unsigned int AS

llvm::InstructionCost getMaskedMemoryOpCost(
    unsigned int Opcode,
    llvm::Type* Src,
    llvm::Align Alignment,
    unsigned int AddressSpace,
    TTI::TargetCostKind CostKind)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:162

Parameters

unsigned int Opcode
llvm::Type* Src
llvm::Align Alignment
unsigned int AddressSpace
TTI::TargetCostKind CostKind

unsigned int getMaxInterleaveFactor(
    unsigned int VF)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:128

Parameters

unsigned int VF

llvm::InstructionCost getMemoryOpCost(
    unsigned int Opcode,
    llvm::Type* Src,
    llvm::MaybeAlign Alignment,
    unsigned int AddressSpace,
    TTI::TargetCostKind CostKind,
    const llvm::Instruction* I = nullptr)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:158

Parameters

unsigned int Opcode
llvm::Type* Src
llvm::MaybeAlign Alignment
unsigned int AddressSpace
TTI::TargetCostKind CostKind
const llvm::Instruction* I = nullptr

llvm::InstructionCost getMinMaxCost(
    llvm::Type* Ty,
    llvm::Type* CondTy,
    bool IsUnsigned)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:197

Parameters

llvm::Type* Ty
llvm::Type* CondTy
bool IsUnsigned

llvm::InstructionCost getMinMaxReductionCost(
    llvm::VectorType* Ty,
    llvm::VectorType* CondTy,
    bool IsUnsigned,
    TTI::TargetCostKind CostKind)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:199

Parameters

llvm::VectorType* Ty
llvm::VectorType* CondTy
bool IsUnsigned
TTI::TargetCostKind CostKind

unsigned int getNumberOfRegisters(
    unsigned int ClassID) const

Description

@ {

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:125

Parameters

unsigned int ClassID

TTI::PopcntSupportKind getPopcntSupport(
    unsigned int TyWidth)

Description

@ {

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:110

Parameters

unsigned int TyWidth

llvm::TypeSize getRegisterBitWidth(
    TargetTransformInfo::RegisterKind K) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:126

Parameters

TargetTransformInfo::RegisterKind K

llvm::InstructionCost getReplicationShuffleCost(
    llvm::Type* EltTy,
    int ReplicationFactor,
    int VF,
    const llvm::APInt& DemandedDstElts,
    TTI::TargetCostKind CostKind)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:154

Parameters

llvm::Type* EltTy
int ReplicationFactor
int VF
const llvm::APInt& DemandedDstElts
TTI::TargetCostKind CostKind

const llvm::X86Subtarget* getST() const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:35

llvm::InstructionCost getScalarizationOverhead(
    llvm::VectorType* Ty,
    const llvm::APInt& DemandedElts,
    bool Insert,
    bool Extract)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:151

Parameters

llvm::VectorType* Ty
const llvm::APInt& DemandedElts
bool Insert
bool Extract

int getScatterOverhead() const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:268

llvm::InstructionCost getShuffleCost(
    TTI::ShuffleKind Kind,
    llvm::VectorType* Tp,
    ArrayRef<int> Mask,
    int Index,
    llvm::VectorType* SubTp,
    ArrayRef<const llvm::Value*> Args = None)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:137

Parameters

TTI::ShuffleKind Kind
llvm::VectorType* Tp
ArrayRef<int> Mask
int Index
llvm::VectorType* SubTp
ArrayRef<const llvm::Value*> Args = None

const llvm::X86TargetLowering* getTLI() const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:36

llvm::InstructionCost
getTypeBasedIntrinsicInstrCost(
    const llvm::IntrinsicCostAttributes& ICA,
    TTI::TargetCostKind CostKind)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:188

Parameters

const llvm::IntrinsicCostAttributes& ICA
TTI::TargetCostKind CostKind

llvm::InstructionCost getVectorInstrCost(
    unsigned int Opcode,
    llvm::Type* Val,
    unsigned int Index)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:149

Parameters

unsigned int Opcode
llvm::Type* Val
unsigned int Index

bool hasDivRemOp(llvm::Type* DataType,
                 bool IsSigned)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:246

Parameters

llvm::Type* DataType
bool IsSigned

Optional<llvm::Instruction*> instCombineIntrinsic(
    llvm::InstCombiner& IC,
    llvm::IntrinsicInst& II) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:173

Parameters

llvm::InstCombiner& IC
llvm::IntrinsicInst& II

bool isFCmpOrdCheaperThanFCmpZero(llvm::Type* Ty)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:247

Parameters

llvm::Type* Ty

bool isLSRCostLess(
    const TargetTransformInfo::LSRCost& C1,
    const TargetTransformInfo::LSRCost& C2)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:228

Parameters

const TargetTransformInfo::LSRCost& C1
const TargetTransformInfo::LSRCost& C2

bool isLegalAltInstr(
    llvm::VectorType* VecTy,
    unsigned int Opcode0,
    unsigned int Opcode1,
    const llvm::SmallBitVector& OpcodeMask) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:244

Parameters

llvm::VectorType* VecTy
unsigned int Opcode0
unsigned int Opcode1
const llvm::SmallBitVector& OpcodeMask

bool isLegalBroadcastLoad(
    llvm::Type* ElementTy,
    llvm::ElementCount NumElements) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:235

Parameters

llvm::Type* ElementTy
llvm::ElementCount NumElements

bool isLegalMaskedCompressStore(
    llvm::Type* DataType)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:243

Parameters

llvm::Type* DataType

bool isLegalMaskedExpandLoad(llvm::Type* DataType)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:242

Parameters

llvm::Type* DataType

bool isLegalMaskedGather(llvm::Type* DataType,
                         llvm::Align Alignment)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:240

Parameters

llvm::Type* DataType
llvm::Align Alignment

bool isLegalMaskedLoad(llvm::Type* DataType,
                       llvm::Align Alignment)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:231

Parameters

llvm::Type* DataType
llvm::Align Alignment

bool isLegalMaskedScatter(llvm::Type* DataType,
                          llvm::Align Alignment)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:241

Parameters

llvm::Type* DataType
llvm::Align Alignment

bool isLegalMaskedStore(llvm::Type* DataType,
                        llvm::Align Alignment)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:232

Parameters

llvm::Type* DataType
llvm::Align Alignment

bool isLegalNTLoad(llvm::Type* DataType,
                   llvm::Align Alignment)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:233

Parameters

llvm::Type* DataType
llvm::Align Alignment

bool isLegalNTStore(llvm::Type* DataType,
                    llvm::Align Alignment)

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:234

Parameters

llvm::Type* DataType
llvm::Align Alignment

bool prefersVectorizedAddressing() const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:254

Optional<llvm::Value*>
simplifyDemandedUseBitsIntrinsic(
    llvm::InstCombiner& IC,
    llvm::IntrinsicInst& II,
    llvm::APInt DemandedMask,
    llvm::KnownBits& Known,
    bool& KnownBitsComputed) const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:176

Parameters

llvm::InstCombiner& IC
llvm::IntrinsicInst& II
llvm::APInt DemandedMask
llvm::KnownBits& Known
bool& KnownBitsComputed

Optional<llvm::Value*>
simplifyDemandedVectorEltsIntrinsic(
    llvm::InstCombiner& IC,
    llvm::IntrinsicInst& II,
    llvm::APInt DemandedElts,
    llvm::APInt& UndefElts,
    llvm::APInt& UndefElts2,
    llvm::APInt& UndefElts3,
    std::function<void(Instruction*,
                       unsigned int,
                       APInt,
                       APInt&)> SimplifyAndSetOp)
    const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:179

Parameters

llvm::InstCombiner& IC
llvm::IntrinsicInst& II
llvm::APInt DemandedElts
llvm::APInt& UndefElts
llvm::APInt& UndefElts2
llvm::APInt& UndefElts3
std::function<void(Instruction*, unsigned int, APInt, APInt&)> SimplifyAndSetOp

bool supportsEfficientVectorElementLoadStore()
    const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:255

bool supportsGather() const

Declared at: llvm/lib/Target/X86/X86TargetTransformInfo.h:259