LLVM
8.0.1
|
#include "Target/X86/X86TargetTransformInfo.h"
Additional Inherited Members | |
Protected Types inherited from llvm::TargetTransformInfoImplBase | |
typedef TargetTransformInfo | TTI |
Protected Member Functions inherited from llvm::BasicTTIImplBase< X86TTIImpl > | |
BasicTTIImplBase (const TargetMachine *TM, const DataLayout &DL) | |
Protected Member Functions inherited from llvm::TargetTransformInfoImplCRTPBase< X86TTIImpl > | |
TargetTransformInfoImplCRTPBase (const DataLayout &DL) | |
Protected Member Functions inherited from llvm::TargetTransformInfoImplBase | |
TargetTransformInfoImplBase (const DataLayout &DL) | |
unsigned | minRequiredElementSize (const Value *Val, bool &isSigned) |
bool | isStridedAccess (const SCEV *Ptr) |
const SCEVConstant * | getConstantStrideStep (ScalarEvolution *SE, const SCEV *Ptr) |
bool | isConstantStridedAccessLessThan (ScalarEvolution *SE, const SCEV *Ptr, int64_t MergeDistance) |
Protected Attributes inherited from llvm::TargetTransformInfoImplBase | |
const DataLayout & | DL |
Definition at line 28 of file X86TargetTransformInfo.h.
|
inlineexplicit |
Definition at line 40 of file X86TargetTransformInfo.h.
References areInlineCompatible(), llvm::AMDGPU::HSAMD::Kernel::Key::Args, Callee, canMacroFuseCmp(), enableInterleavedAccessVectorization(), enableMemCmpExpansion(), getAddressComputationCost(), getArithmeticInstrCost(), getArithmeticReductionCost(), getAtomicMemIntrinsicMaxElementSize(), getCacheAssociativity(), getCacheSize(), getCastInstrCost(), getCmpSelInstrCost(), getGatherScatterOpCost(), getInterleavedMemoryOpCost(), getInterleavedMemoryOpCostAVX2(), getInterleavedMemoryOpCostAVX512(), getIntImmCost(), getIntrinsicInstrCost(), getLoadStoreVecRegBitWidth(), getMaskedMemoryOpCost(), getMaxInterleaveFactor(), getMemoryOpCost(), getMinMaxReductionCost(), getNumberOfRegisters(), getPopcntSupport(), getRegisterBitWidth(), getShuffleCost(), getUserCost(), getVectorInstrCost(), hasDivRemOp(), I, isFCmpOrdCheaperThanFCmpZero(), isLegalMaskedGather(), isLegalMaskedLoad(), isLegalMaskedScatter(), isLegalMaskedStore(), isLSRCostLess(), Kind, llvm::TargetTransformInfo::OK_AnyValue, and llvm::TargetTransformInfo::OP_None.
Definition at line 2931 of file X86TargetTransformInfo.cpp.
References llvm::MCSubtargetInfo::getFeatureBits(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetLoweringBase::getTargetMachine(), and llvm::SystemZISD::TM.
Referenced by X86TTIImpl().
bool X86TTIImpl::canMacroFuseCmp | ( | ) |
Definition at line 2866 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasMacroFusion().
Referenced by X86TTIImpl().
bool X86TTIImpl::enableInterleavedAccessVectorization | ( | ) |
Definition at line 2981 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::isAtom().
Referenced by X86TTIImpl().
const X86TTIImpl::TTI::MemCmpExpansionOptions * X86TTIImpl::enableMemCmpExpansion | ( | bool | IsZeroCmp | ) | const |
Definition at line 2948 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::MemCmpExpansionOptions::AllowOverlappingLoads, llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::is64Bit(), llvm::TargetTransformInfo::MemCmpExpansionOptions::LoadSizes, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by X86TTIImpl().
int X86TTIImpl::getAddressComputationCost | ( | Type * | PtrTy, |
ScalarEvolution * | SE, | ||
const SCEV * | Ptr | ||
) |
Definition at line 2278 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::getAddressComputationCost(), llvm::TargetTransformInfoImplBase::getConstantStrideStep(), llvm::TargetTransformInfoImplBase::isStridedAccess(), and llvm::Type::isVectorTy().
Referenced by X86TTIImpl().
int X86TTIImpl::getArithmeticInstrCost | ( | unsigned | Opcode, |
Type * | Ty, | ||
TTI::OperandValueKind | Opd1Info = TTI::OK_AnyValue , |
||
TTI::OperandValueKind | Opd2Info = TTI::OK_AnyValue , |
||
TTI::OperandValueProperties | Opd1PropInfo = TTI::OP_None , |
||
TTI::OperandValueProperties | Opd2PropInfo = TTI::OP_None , |
||
ArrayRef< const Value *> | Args = ArrayRef<const Value *>() |
||
) |
Definition at line 172 of file X86TargetTransformInfo.cpp.
References llvm::MCID::Add, llvm::ISD::ADD, llvm::AMDGPU::HSAMD::Kernel::Key::Args, assert(), llvm::CostTableLookup(), llvm::TargetTransformInfoImplBase::DL, llvm::MVT::f32, llvm::MVT::f64, llvm::ISD::FADD, llvm::ISD::FDIV, llvm::ISD::FMUL, llvm::ISD::FSUB, llvm::BasicTTIImplBase< X86TTIImpl >::getArithmeticInstrCost(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasBWI(), llvm::X86Subtarget::hasDQI(), llvm::X86Subtarget::hasSSE1(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), llvm::X86Subtarget::hasSSE42(), llvm::X86Subtarget::hasXOP(), llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i8, if(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::X86Subtarget::isGLM(), llvm::X86Subtarget::isSLM(), llvm::AArch64CC::LT, llvm::max(), llvm::TargetTransformInfoImplBase::minRequiredElementSize(), llvm::ISD::MUL, llvm::TargetTransformInfo::OK_NonUniformConstantValue, llvm::TargetTransformInfo::OK_UniformConstantValue, llvm::TargetTransformInfo::OK_UniformValue, llvm::TargetTransformInfo::OP_None, llvm::TargetTransformInfo::OP_PowerOf2, llvm::ISD::SDIV, llvm::ISD::SHL, llvm::ISD::SRA, llvm::ISD::SREM, llvm::ISD::SRL, llvm::ISD::SUB, llvm::ISD::UDIV, llvm::ISD::UREM, llvm::MVT::v16f32, llvm::MVT::v16i16, llvm::MVT::v16i32, llvm::MVT::v16i8, llvm::MVT::v2f64, llvm::MVT::v2i64, llvm::MVT::v32i16, llvm::MVT::v32i8, llvm::MVT::v4f32, llvm::MVT::v4f64, llvm::MVT::v4i32, llvm::MVT::v4i64, llvm::MVT::v64i8, llvm::MVT::v8f32, llvm::MVT::v8f64, llvm::MVT::v8i16, llvm::MVT::v8i32, and llvm::MVT::v8i64.
Referenced by X86TTIImpl().
Definition at line 2303 of file X86TargetTransformInfo.cpp.
References llvm::ISD::ADD, assert(), llvm::CostTableLookup(), llvm::TargetTransformInfoImplBase::DL, llvm::ISD::FADD, llvm::BasicTTIImplBase< X86TTIImpl >::getArithmeticReductionCost(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasSSE42(), if(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::AArch64CC::LT, llvm::MVT::v2f64, llvm::MVT::v2i64, llvm::MVT::v4f32, llvm::MVT::v4f64, llvm::MVT::v4i32, llvm::MVT::v4i64, llvm::MVT::v8f32, llvm::MVT::v8i16, and llvm::MVT::v8i32.
Referenced by X86TTIImpl().
unsigned X86TTIImpl::getAtomicMemIntrinsicMaxElementSize | ( | ) | const |
Definition at line 1723 of file X86TargetTransformInfo.cpp.
Referenced by X86TTIImpl().
llvm::Optional< unsigned > X86TTIImpl::getCacheAssociativity | ( | TargetTransformInfo::CacheLevel | Level | ) | const |
Definition at line 99 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::L1D, llvm::TargetTransformInfo::L2D, LLVM_FALLTHROUGH, and llvm_unreachable.
Referenced by X86TTIImpl().
llvm::Optional< unsigned > X86TTIImpl::getCacheSize | ( | TargetTransformInfo::CacheLevel | Level | ) | const |
Definition at line 69 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::L1D, llvm::TargetTransformInfo::L2D, and llvm_unreachable.
Referenced by X86TTIImpl().
int X86TTIImpl::getCastInstrCost | ( | unsigned | Opcode, |
Type * | Dst, | ||
Type * | Src, | ||
const Instruction * | I = nullptr |
||
) |
Definition at line 1239 of file X86TargetTransformInfo.cpp.
References assert(), llvm::ConvertCostTableLookup(), llvm::TargetTransformInfoImplBase::DL, llvm::MVT::f64, llvm::ISD::FP_EXTEND, llvm::ISD::FP_ROUND, llvm::ISD::FP_TO_SINT, llvm::ISD::FP_TO_UINT, llvm::BasicTTIImplBase< X86TTIImpl >::getCastInstrCost(), llvm::EVT::getSimpleVT(), llvm::TargetLoweringBase::getTypeAction(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasBWI(), llvm::X86Subtarget::hasDQI(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), llvm::MVT::i64, if(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::EVT::isSimple(), llvm::ISD::SIGN_EXTEND, llvm::ISD::SINT_TO_FP, llvm::ISD::TRUNCATE, llvm::TargetLoweringBase::TypeSplitVector, llvm::ISD::UINT_TO_FP, llvm::MVT::v16f32, llvm::MVT::v16i1, llvm::MVT::v16i16, llvm::MVT::v16i32, llvm::MVT::v16i8, llvm::MVT::v2f32, llvm::MVT::v2f64, llvm::MVT::v2i16, llvm::MVT::v2i32, llvm::MVT::v2i64, llvm::MVT::v2i8, llvm::MVT::v32i1, llvm::MVT::v32i16, llvm::MVT::v32i8, llvm::MVT::v4f32, llvm::MVT::v4f64, llvm::MVT::v4i1, llvm::MVT::v4i16, llvm::MVT::v4i32, llvm::MVT::v4i64, llvm::MVT::v4i8, llvm::MVT::v64i1, llvm::MVT::v64i8, llvm::MVT::v8f32, llvm::MVT::v8f64, llvm::MVT::v8i1, llvm::MVT::v8i16, llvm::MVT::v8i32, llvm::MVT::v8i64, llvm::MVT::v8i8, and llvm::ISD::ZERO_EXTEND.
Referenced by X86TTIImpl().
int X86TTIImpl::getCmpSelInstrCost | ( | unsigned | Opcode, |
Type * | ValTy, | ||
Type * | CondTy, | ||
const Instruction * | I = nullptr |
||
) |
Definition at line 1644 of file X86TargetTransformInfo.cpp.
References assert(), llvm::CostTableLookup(), llvm::TargetTransformInfoImplBase::DL, llvm::BasicTTIImplBase< X86TTIImpl >::getCmpSelInstrCost(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasBWI(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE42(), if(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::AArch64CC::LT, llvm::ISD::SETCC, llvm::MVT::v16f32, llvm::MVT::v16i16, llvm::MVT::v16i32, llvm::MVT::v16i8, llvm::MVT::v2f64, llvm::MVT::v2i64, llvm::MVT::v32i16, llvm::MVT::v32i8, llvm::MVT::v4f32, llvm::MVT::v4f64, llvm::MVT::v4i32, llvm::MVT::v4i64, llvm::MVT::v64i8, llvm::MVT::v8f32, llvm::MVT::v8f64, llvm::MVT::v8i16, llvm::MVT::v8i32, and llvm::MVT::v8i64.
Referenced by getMaskedMemoryOpCost(), getUserCost(), and X86TTIImpl().
int X86TTIImpl::getGatherScatterOpCost | ( | unsigned | Opcode, |
Type * | DataTy, | ||
Value * | Ptr, | ||
bool | VariableMask, | ||
unsigned | Alignment | ||
) |
Calculate the cost of Gather / Scatter operation.
Definition at line 2824 of file X86TargetTransformInfo.cpp.
References assert(), llvm::dyn_cast(), llvm::PointerType::getAddressSpace(), llvm::Value::getType(), llvm::Type::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasVLX(), isLegalMaskedGather(), isLegalMaskedScatter(), llvm::Type::isVectorTy(), llvm::SPII::Load, and llvm::SPII::Store.
Referenced by X86TTIImpl().
int X86TTIImpl::getInterleavedMemoryOpCost | ( | unsigned | Opcode, |
Type * | VecTy, | ||
unsigned | Factor, | ||
ArrayRef< unsigned > | Indices, | ||
unsigned | Alignment, | ||
unsigned | AddressSpace, | ||
bool | UseMaskForCond = false , |
||
bool | UseMaskForGaps = false |
||
) |
Definition at line 3241 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::getInterleavedMemoryOpCost(), getInterleavedMemoryOpCostAVX2(), getInterleavedMemoryOpCostAVX512(), llvm::Type::getVectorElementType(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasBWI(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), llvm::Type::isIntegerTy(), and llvm::Type::isPointerTy().
Referenced by X86TTIImpl().
int X86TTIImpl::getInterleavedMemoryOpCostAVX2 | ( | unsigned | Opcode, |
Type * | VecTy, | ||
unsigned | Factor, | ||
ArrayRef< unsigned > | Indices, | ||
unsigned | Alignment, | ||
unsigned | AddressSpace, | ||
bool | UseMaskForCond = false , |
||
bool | UseMaskForGaps = false |
||
) |
Definition at line 3000 of file X86TargetTransformInfo.cpp.
References assert(), llvm::CostTableLookup(), llvm::TargetTransformInfoImplBase::DL, llvm::VectorType::get(), llvm::BasicTTIImplBase< X86TTIImpl >::getInterleavedMemoryOpCost(), getMemoryOpCost(), llvm::EVT::getSimpleVT(), llvm::MVT::getStoreSize(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::DataLayout::getTypeStoreSize(), llvm::TargetLoweringBase::getValueType(), llvm::Type::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::MVT::getVectorNumElements(), llvm::EVT::isSimple(), llvm::MVT::isVector(), llvm::SPII::Load, llvm::ArrayRef< T >::size(), llvm::SPII::Store, llvm::MVT::v16i8, llvm::MVT::v2i8, llvm::MVT::v32i8, llvm::MVT::v4f64, llvm::MVT::v4i64, llvm::MVT::v4i8, llvm::MVT::v8f32, and llvm::MVT::v8i8.
Referenced by getInterleavedMemoryOpCost(), and X86TTIImpl().
int X86TTIImpl::getInterleavedMemoryOpCostAVX512 | ( | unsigned | Opcode, |
Type * | VecTy, | ||
unsigned | Factor, | ||
ArrayRef< unsigned > | Indices, | ||
unsigned | Alignment, | ||
unsigned | AddressSpace, | ||
bool | UseMaskForCond = false , |
||
bool | UseMaskForGaps = false |
||
) |
Definition at line 3116 of file X86TargetTransformInfo.cpp.
References assert(), llvm::CostTableLookup(), llvm::TargetTransformInfoImplBase::DL, llvm::VectorType::get(), llvm::BasicTTIImplBase< X86TTIImpl >::getInterleavedMemoryOpCost(), getMemoryOpCost(), llvm::Type::getScalarType(), getShuffleCost(), llvm::MVT::getStoreSize(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::DataLayout::getTypeStoreSize(), llvm::Type::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::MVT::getVectorNumElements(), llvm::MVT::getVectorVT(), llvm::MVT::getVT(), llvm::SPII::Load, llvm::max(), llvm::ArrayRef< T >::size(), llvm::TargetTransformInfo::SK_PermuteSingleSrc, llvm::TargetTransformInfo::SK_PermuteTwoSrc, llvm::SPII::Store, llvm::MVT::v16i8, llvm::MVT::v32i8, llvm::MVT::v64i8, and llvm::MVT::v8i8.
Referenced by getInterleavedMemoryOpCost(), and X86TTIImpl().
int X86TTIImpl::getIntImmCost | ( | int64_t | Val | ) |
Calculate the cost of materializing a 64-bit value.
This helper method might only calculate a fraction of a larger immediate. Therefore it is valid to return a cost of ZERO.
Definition at line 2524 of file X86TargetTransformInfo.cpp.
References llvm::isInt< 32 >(), llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
Referenced by getIntImmCost(), and X86TTIImpl().
Definition at line 2534 of file X86TargetTransformInfo.cpp.
References llvm::alignTo(), llvm::APInt::ashr(), assert(), getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), llvm::APInt::getSExtValue(), llvm::Type::isIntegerTy(), llvm::max(), llvm::APInt::sext(), llvm::APInt::sextOrTrunc(), and llvm::TargetTransformInfo::TCC_Free.
Definition at line 2568 of file X86TargetTransformInfo.cpp.
References llvm::MCID::Add, assert(), llvm::MCID::Call, llvm::divideCeil(), llvm::APInt::getBitWidth(), getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), llvm::APInt::getZExtValue(), llvm::Type::isIntegerTy(), llvm::isUInt< 32 >(), llvm::SPII::Load, llvm::MipsISD::Ret, llvm::MCID::Select, llvm::SPII::Store, llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
int X86TTIImpl::getIntImmCost | ( | Intrinsic::ID | IID, |
unsigned | Idx, | ||
const APInt & | Imm, | ||
Type * | Ty | ||
) |
Definition at line 2665 of file X86TargetTransformInfo.cpp.
References assert(), llvm::Intrinsic::experimental_patchpoint_i64, llvm::Intrinsic::experimental_patchpoint_void, llvm::Intrinsic::experimental_stackmap, llvm::APInt::getBitWidth(), getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), llvm::APInt::getSExtValue(), llvm::isInt< 32 >(), llvm::Type::isIntegerTy(), llvm::Intrinsic::sadd_with_overflow, llvm::Intrinsic::smul_with_overflow, llvm::Intrinsic::ssub_with_overflow, llvm::TargetTransformInfo::TCC_Free, llvm::Intrinsic::uadd_with_overflow, llvm::Intrinsic::umul_with_overflow, and llvm::Intrinsic::usub_with_overflow.
int X86TTIImpl::getIntrinsicInstrCost | ( | Intrinsic::ID | IID, |
Type * | RetTy, | ||
ArrayRef< Type *> | Tys, | ||
FastMathFlags | FMF, | ||
unsigned | ScalarizationCostPassed = UINT_MAX |
||
) |
Definition at line 1725 of file X86TargetTransformInfo.cpp.
References llvm::Intrinsic::bitreverse, llvm::ISD::BITREVERSE, llvm::Intrinsic::bswap, llvm::ISD::BSWAP, llvm::CostTableLookup(), llvm::Intrinsic::ctlz, llvm::ISD::CTLZ, llvm::Intrinsic::ctpop, llvm::ISD::CTPOP, llvm::Intrinsic::cttz, llvm::ISD::CTTZ, llvm::ISD::DELETED_NODE, llvm::TargetTransformInfoImplBase::DL, llvm::MVT::f32, llvm::MVT::f64, llvm::ISD::FSQRT, llvm::BasicTTIImplBase< X86TTIImpl >::getIntrinsicInstrCost(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasBWI(), llvm::X86Subtarget::hasCDI(), llvm::X86Subtarget::hasSSE1(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE42(), llvm::X86Subtarget::hasSSSE3(), llvm::X86Subtarget::hasXOP(), llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::i8, if(), llvm::X86Subtarget::is64Bit(), llvm::X86Subtarget::isGLM(), llvm::X86Subtarget::isSLM(), llvm::AArch64CC::LT, llvm::Intrinsic::sadd_sat, llvm::ISD::SADDSAT, llvm::Intrinsic::sqrt, llvm::Intrinsic::ssub_sat, llvm::ISD::SSUBSAT, llvm::Intrinsic::uadd_sat, llvm::ISD::UADDSAT, llvm::Intrinsic::usub_sat, llvm::ISD::USUBSAT, llvm::MVT::v16i16, llvm::MVT::v16i32, llvm::MVT::v16i8, llvm::MVT::v2f64, llvm::MVT::v2i64, llvm::MVT::v32i16, llvm::MVT::v32i8, llvm::MVT::v4f32, llvm::MVT::v4f64, llvm::MVT::v4i32, llvm::MVT::v4i64, llvm::MVT::v64i8, llvm::MVT::v8f32, llvm::MVT::v8i16, llvm::MVT::v8i32, and llvm::MVT::v8i64.
Referenced by X86TTIImpl().
int X86TTIImpl::getIntrinsicInstrCost | ( | Intrinsic::ID | IID, |
Type * | RetTy, | ||
ArrayRef< Value *> | Args, | ||
FastMathFlags | FMF, | ||
unsigned | VF = 1 |
||
) |
Definition at line 2057 of file X86TargetTransformInfo.cpp.
References llvm::CostTableLookup(), llvm::ISD::DELETED_NODE, llvm::TargetTransformInfoImplBase::DL, llvm::Intrinsic::fshl, llvm::ISD::FSHL, llvm::Intrinsic::fshr, llvm::BasicTTIImplBase< X86TTIImpl >::getIntrinsicInstrCost(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasXOP(), llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::i8, if(), llvm::X86Subtarget::is64Bit(), llvm::AArch64CC::LT, llvm::ISD::ROTL, llvm::ISD::ROTR, llvm::MVT::v16i16, llvm::MVT::v16i32, llvm::MVT::v16i8, llvm::MVT::v2i64, llvm::MVT::v32i8, llvm::MVT::v4i32, llvm::MVT::v4i64, llvm::MVT::v8i16, llvm::MVT::v8i32, and llvm::MVT::v8i64.
Definition at line 150 of file X86TargetTransformInfo.cpp.
References getRegisterBitWidth().
Referenced by X86TTIImpl().
int X86TTIImpl::getMaskedMemoryOpCost | ( | unsigned | Opcode, |
Type * | Src, | ||
unsigned | Alignment, | ||
unsigned | AddressSpace | ||
) |
Definition at line 2226 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::DL, llvm::dyn_cast(), llvm::VectorType::get(), llvm::BasicTTIImplBase< X86TTIImpl >::getCFInstrCost(), getCmpSelInstrCost(), llvm::Type::getContext(), llvm::Type::getInt8Ty(), getMemoryOpCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getMemoryOpCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getScalarizationOverhead(), llvm::Type::getScalarType(), getShuffleCost(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::Type::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::X86Subtarget::hasAVX512(), isLegalMaskedLoad(), isLegalMaskedStore(), llvm::isPowerOf2_32(), llvm::SPII::Load, llvm::AArch64CC::LT, llvm::TargetTransformInfo::SK_InsertSubvector, llvm::TargetTransformInfo::SK_Select, and llvm::SPII::Store.
Referenced by X86TTIImpl().
Definition at line 154 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX(), and llvm::X86Subtarget::isAtom().
Referenced by X86TTIImpl().
int X86TTIImpl::getMemoryOpCost | ( | unsigned | Opcode, |
Type * | Src, | ||
unsigned | Alignment, | ||
unsigned | AddressSpace, | ||
const Instruction * | I = nullptr |
||
) |
Definition at line 2183 of file X86TargetTransformInfo.cpp.
References assert(), llvm::TargetTransformInfoImplBase::DL, llvm::BasicTTIImplBase< X86TTIImpl >::getMemoryOpCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getScalarizationOverhead(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::isPowerOf2_32(), llvm::X86Subtarget::isUnalignedMem32Slow(), llvm::SPII::Load, llvm::AArch64CC::LT, and llvm::SPII::Store.
Referenced by getInterleavedMemoryOpCostAVX2(), getInterleavedMemoryOpCostAVX512(), getMaskedMemoryOpCost(), getUserCost(), and X86TTIImpl().
int X86TTIImpl::getMinMaxReductionCost | ( | Type * | Ty, |
Type * | CondTy, | ||
bool | IsPairwiseForm, | ||
bool | IsUnsigned | ||
) |
Definition at line 2375 of file X86TargetTransformInfo.cpp.
References assert(), llvm::CostTableLookup(), llvm::TargetTransformInfoImplBase::DL, llvm::ISD::FMINNUM, llvm::BasicTTIImplBase< X86TTIImpl >::getMinMaxReductionCost(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE42(), if(), llvm::Type::isFPOrFPVectorTy(), llvm::Type::isIntOrIntVectorTy(), llvm::AArch64CC::LT, llvm::ISD::SMIN, llvm::ISD::UMIN, llvm::MVT::v16f32, llvm::MVT::v16i16, llvm::MVT::v16i32, llvm::MVT::v2f64, llvm::MVT::v2i64, llvm::MVT::v32i8, llvm::MVT::v4f32, llvm::MVT::v4f64, llvm::MVT::v4i32, llvm::MVT::v4i64, llvm::MVT::v8f32, llvm::MVT::v8f64, llvm::MVT::v8i16, llvm::MVT::v8i32, and llvm::MVT::v8i64.
Referenced by X86TTIImpl().
Definition at line 120 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), and llvm::X86Subtarget::is64Bit().
Referenced by X86TTIImpl().
TargetTransformInfo::PopcntSupportKind X86TTIImpl::getPopcntSupport | ( | unsigned | TyWidth | ) |
Definition at line 61 of file X86TargetTransformInfo.cpp.
References assert(), llvm::X86Subtarget::hasPOPCNT(), llvm::isPowerOf2_32(), llvm::TargetTransformInfo::PSK_FastHardware, and llvm::TargetTransformInfo::PSK_Software.
Referenced by X86TTIImpl().
Definition at line 132 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::getPreferVectorWidth(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), and llvm::X86Subtarget::is64Bit().
Referenced by getLoadStoreVecRegBitWidth(), and X86TTIImpl().
int X86TTIImpl::getShuffleCost | ( | TTI::ShuffleKind | Kind, |
Type * | Tp, | ||
int | Index, | ||
Type * | SubTp | ||
) |
Definition at line 888 of file X86TargetTransformInfo.cpp.
References llvm::CostTableLookup(), llvm::TargetTransformInfoImplBase::DL, llvm::VectorType::get(), llvm::Type::getPrimitiveSizeInBits(), llvm::BasicTTIImplBase< X86TTIImpl >::getShuffleCost(), llvm::MVT::getSizeInBits(), llvm::MVT::getStoreSize(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::DataLayout::getTypeStoreSize(), llvm::Type::getVectorElementType(), llvm::MVT::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::MVT::getVectorNumElements(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasBWI(), llvm::X86Subtarget::hasSSE1(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), llvm::X86Subtarget::hasSSSE3(), llvm::X86Subtarget::hasVBMI(), llvm::X86Subtarget::hasXOP(), llvm::MVT::isVector(), Kind, llvm::AArch64CC::LT, llvm::TargetTransformInfo::SK_Broadcast, llvm::TargetTransformInfo::SK_ExtractSubvector, llvm::TargetTransformInfo::SK_PermuteSingleSrc, llvm::TargetTransformInfo::SK_PermuteTwoSrc, llvm::TargetTransformInfo::SK_Reverse, llvm::TargetTransformInfo::SK_Select, llvm::TargetTransformInfo::SK_Transpose, llvm::MVT::v16f32, llvm::MVT::v16i16, llvm::MVT::v16i32, llvm::MVT::v16i8, llvm::MVT::v2f64, llvm::MVT::v2i64, llvm::MVT::v32i16, llvm::MVT::v32i8, llvm::MVT::v4f32, llvm::MVT::v4f64, llvm::MVT::v4i32, llvm::MVT::v4i64, llvm::MVT::v64i8, llvm::MVT::v8f32, llvm::MVT::v8f64, llvm::MVT::v8i16, llvm::MVT::v8i32, and llvm::MVT::v8i64.
Referenced by getInterleavedMemoryOpCostAVX512(), getMaskedMemoryOpCost(), and X86TTIImpl().
Definition at line 2700 of file X86TargetTransformInfo.cpp.
References llvm::all_of(), assert(), llvm::TargetTransformInfoImplBase::DL, llvm::dyn_cast(), GEP, llvm::IntegerType::get(), llvm::VectorType::get(), llvm::BasicTTIImplBase< X86TTIImpl >::getCFInstrCost(), getCmpSelInstrCost(), llvm::Type::getContext(), llvm::X86Subtarget::getGatherOverhead(), llvm::Type::getInt1Ty(), getMemoryOpCost(), llvm::User::getNumOperands(), llvm::User::getOperand(), llvm::GetElementPtrInst::getPointerOperand(), llvm::DataLayout::getPointerSizeInBits(), llvm::Type::getPrimitiveSizeInBits(), llvm::BasicTTIImplBase< X86TTIImpl >::getScalarizationOverhead(), llvm::Type::getScalarType(), llvm::X86Subtarget::getScatterOverhead(), llvm::getSplatValue(), llvm::Value::getType(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::TargetTransformInfoImplCRTPBase< X86TTIImpl >::getUserCost(), llvm::Type::getVectorElementType(), getVectorInstrCost(), llvm::Type::getVectorNumElements(), llvm::X86Subtarget::hasAVX512(), llvm::Type::isVectorTy(), llvm::SPII::Load, llvm::max(), and llvm::TargetTransformInfo::TCC_Basic.
Referenced by X86TTIImpl().
Definition at line 2152 of file X86TargetTransformInfo.cpp.
References assert(), llvm::TargetTransformInfoImplBase::DL, llvm::Type::getScalarType(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getVectorInstrCost(), llvm::Type::isVectorTy(), and llvm::AArch64CC::LT.
Referenced by getUserCost(), and X86TTIImpl().
Definition at line 2922 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::DL, llvm::TargetLoweringBase::getValueType(), llvm::TargetLoweringBase::isOperationLegal(), llvm::ISD::SDIVREM, and llvm::ISD::UDIVREM.
Referenced by X86TTIImpl().
Definition at line 2927 of file X86TargetTransformInfo.cpp.
Referenced by X86TTIImpl().
Definition at line 2886 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::DL, llvm::DataLayout::getPointerSizeInBits(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarType(), llvm::Type::getVectorNumElements(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasFastGather(), and llvm::isPowerOf2_32().
Referenced by getGatherScatterOpCost(), isLegalMaskedScatter(), and X86TTIImpl().
Definition at line 2870 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::DL, llvm::DataLayout::getPointerSizeInBits(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarType(), llvm::Type::getVectorNumElements(), llvm::X86Subtarget::hasAVX(), and llvm::X86Subtarget::hasBWI().
Referenced by getMaskedMemoryOpCost(), isLegalMaskedStore(), and X86TTIImpl().
Definition at line 2915 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX512(), and isLegalMaskedGather().
Referenced by getGatherScatterOpCost(), and X86TTIImpl().
Definition at line 2882 of file X86TargetTransformInfo.cpp.
References isLegalMaskedLoad().
Referenced by getMaskedMemoryOpCost(), and X86TTIImpl().
bool X86TTIImpl::isLSRCostLess | ( | TargetTransformInfo::LSRCost & | C1, |
TargetTransformInfo::LSRCost & | C2 | ||
) |
Definition at line 2855 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::LSRCost::AddRecCost, llvm::TargetTransformInfo::LSRCost::ImmCost, llvm::TargetTransformInfo::LSRCost::Insns, llvm::TargetTransformInfo::LSRCost::NumBaseAdds, llvm::TargetTransformInfo::LSRCost::NumIVMuls, llvm::TargetTransformInfo::LSRCost::NumRegs, llvm::TargetTransformInfo::LSRCost::ScaleCost, and llvm::TargetTransformInfo::LSRCost::SetupCost.
Referenced by X86TTIImpl().