|
LLVM
4.0.0
|
#include <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 42 of file X86TargetTransformInfo.h.
Definition at line 2115 of file X86TargetTransformInfo.cpp.
References llvm::MCSubtargetInfo::getFeatureBits(), llvm::TargetMachine::getSubtargetImpl(), llvm::TargetLoweringBase::getTargetMachine(), and llvm::SystemZISD::TM.
| bool X86TTIImpl::enableInterleavedAccessVectorization | ( | ) |
Definition at line 2131 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::isAtom(), and llvm::X86Subtarget::isSLM().
| int X86TTIImpl::getAddressComputationCost | ( | Type * | PtrTy, |
| ScalarEvolution * | SE, | ||
| const SCEV * | Ptr | ||
| ) |
| 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 116 of file X86TargetTransformInfo.cpp.
References llvm::MCID::Add, 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::TargetLoweringBase::getTypeLegalizationCost(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasBWI(), llvm::X86Subtarget::hasDQI(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), if(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::X86Subtarget::isSLM(), llvm::AArch64CC::LT, llvm::TargetTransformInfoImplBase::minRequiredElementSize(), llvm::ISD::MUL, llvm::TargetTransformInfo::OK_UniformConstantValue, llvm::TargetTransformInfo::OK_UniformValue, llvm::TargetTransformInfo::OP_None, llvm::TargetTransformInfo::OP_PowerOf2, llvm::ISD::SDIV, llvm::ISD::SHL, llvm::ArrayRef< T >::size(), llvm::ISD::SRA, llvm::ISD::SRL, llvm::ISD::UDIV, 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::v4i32, llvm::MVT::v4i64, llvm::MVT::v64i8, llvm::MVT::v8i16, llvm::MVT::v8i32, and llvm::MVT::v8i64.
Definition at line 909 of file X86TargetTransformInfo.cpp.
References assert(), llvm::ConvertCostTableLookup(), llvm::TargetTransformInfoImplBase::DL, 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::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasDQI(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::EVT::isSimple(), llvm::ISD::SIGN_EXTEND, llvm::ISD::SINT_TO_FP, llvm::ISD::TRUNCATE, 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::v4f32, llvm::MVT::v4f64, llvm::MVT::v4i1, llvm::MVT::v4i16, llvm::MVT::v4i32, llvm::MVT::v4i64, llvm::MVT::v4i8, 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.
Definition at line 1275 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::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::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 getMaskedMemoryOpCost().
| int X86TTIImpl::getGatherScatterOpCost | ( | unsigned | Opcode, |
| Type * | DataTy, | ||
| Value * | Ptr, | ||
| bool | VariableMask, | ||
| unsigned | Alignment | ||
| ) |
Calculate the cost of Gather / Scatter operation.
Definition at line 2046 of file X86TargetTransformInfo.cpp.
References assert(), llvm::dyn_cast(), llvm::PointerType::getAddressSpace(), llvm::Value::getType(), llvm::Type::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::X86Subtarget::hasVLX(), isLegalMaskedGather(), isLegalMaskedScatter(), llvm::Type::isVectorTy(), llvm::SPII::Load, and llvm::SPII::Store.
| int X86TTIImpl::getInterleavedMemoryOpCost | ( | unsigned | Opcode, |
| Type * | VecTy, | ||
| unsigned | Factor, | ||
| ArrayRef< unsigned > | Indices, | ||
| unsigned | Alignment, | ||
| unsigned | AddressSpace | ||
| ) |
Definition at line 2224 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::getInterleavedMemoryOpCost(), getInterleavedMemoryOpCostAVX512(), llvm::Type::getVectorElementType(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasBWI(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), llvm::Type::isIntegerTy(), and llvm::Type::isPointerTy().
| int X86TTIImpl::getInterleavedMemoryOpCostAVX512 | ( | unsigned | Opcode, |
| Type * | VecTy, | ||
| unsigned | Factor, | ||
| ArrayRef< unsigned > | Indices, | ||
| unsigned | Alignment, | ||
| unsigned | AddressSpace | ||
| ) |
Definition at line 2142 of file X86TargetTransformInfo.cpp.
References assert(), llvm::TargetTransformInfoImplBase::DL, llvm::VectorType::get(), getMemoryOpCost(), getShuffleCost(), llvm::MVT::getStoreSize(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::DataLayout::getTypeStoreSize(), llvm::Type::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::MVT::getVectorNumElements(), llvm::SPII::Load, llvm::ArrayRef< T >::size(), llvm::TargetTransformInfo::SK_PermuteSingleSrc, llvm::TargetTransformInfo::SK_PermuteTwoSrc, and llvm::SPII::Store.
Referenced by getInterleavedMemoryOpCost().
| 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 1774 of file X86TargetTransformInfo.cpp.
References llvm::isInt< 32 >(), llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
Referenced by getIntImmCost().
Definition at line 1784 of file X86TargetTransformInfo.cpp.
References llvm::APInt::ashr(), assert(), getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), llvm::APInt::getSExtValue(), llvm::Type::isIntegerTy(), llvm::APInt::sext(), llvm::APInt::sextOrTrunc(), and llvm::TargetTransformInfo::TCC_Free.
Definition at line 1818 of file X86TargetTransformInfo.cpp.
References llvm::MCID::Add, llvm::APIntOps::And(), assert(), llvm::Call, llvm::APInt::getBitWidth(), getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), llvm::APInt::getZExtValue(), llvm::Type::isIntegerTy(), llvm::isUInt< 32 >(), LLVM_FALLTHROUGH, llvm::SPII::Load, llvm::APIntOps::Or(), llvm::MipsISD::Ret, llvm::MCID::Select, llvm::SPII::Store, llvm::TargetTransformInfo::TCC_Basic, llvm::TargetTransformInfo::TCC_Free, and llvm::APIntOps::Xor().
| int X86TTIImpl::getIntImmCost | ( | Intrinsic::ID | IID, |
| unsigned | Idx, | ||
| const APInt & | Imm, | ||
| Type * | Ty | ||
| ) |
Definition at line 1905 of file X86TargetTransformInfo.cpp.
References assert(), llvm::APInt::getBitWidth(), getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), llvm::APInt::getSExtValue(), llvm::isInt< 32 >(), llvm::Type::isIntegerTy(), and llvm::TargetTransformInfo::TCC_Free.
| int X86TTIImpl::getIntrinsicInstrCost | ( | Intrinsic::ID | IID, |
| Type * | RetTy, | ||
| ArrayRef< Type * > | Tys, | ||
| FastMathFlags | FMF | ||
| ) |
Definition at line 1344 of file X86TargetTransformInfo.cpp.
References llvm::ISD::BITREVERSE, llvm::ISD::BSWAP, llvm::CostTableLookup(), llvm::ISD::CTLZ, llvm::ISD::CTPOP, 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::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::AArch64CC::LT, llvm::MVT::v16i16, llvm::MVT::v16i8, 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::v8i16, and llvm::MVT::v8i32.
| int X86TTIImpl::getIntrinsicInstrCost | ( | Intrinsic::ID | IID, |
| Type * | RetTy, | ||
| ArrayRef< Value * > | Args, | ||
| FastMathFlags | FMF | ||
| ) |
Definition at line 1529 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::getIntrinsicInstrCost().
| int X86TTIImpl::getMaskedMemoryOpCost | ( | unsigned | Opcode, |
| Type * | Src, | ||
| unsigned | Alignment, | ||
| unsigned | AddressSpace | ||
| ) |
Definition at line 1622 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::Type::getScalarType(), getShuffleCost(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::Type::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::MVT::getVectorNumElements(), llvm::X86Subtarget::hasAVX512(), isLegalMaskedLoad(), isLegalMaskedStore(), llvm::isPowerOf2_32(), llvm::SPII::Load, llvm::AArch64CC::LT, llvm::TargetTransformInfo::SK_Alternate, llvm::TargetTransformInfo::SK_InsertSubvector, and llvm::SPII::Store.
Definition at line 98 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX(), and llvm::X86Subtarget::isAtom().
| int X86TTIImpl::getMemoryOpCost | ( | unsigned | Opcode, |
| Type * | Src, | ||
| unsigned | Alignment, | ||
| unsigned | AddressSpace | ||
| ) |
Definition at line 1579 of file X86TargetTransformInfo.cpp.
References assert(), llvm::TargetTransformInfoImplBase::DL, llvm::BasicTTIImplBase< X86TTIImpl >::getMemoryOpCost(), llvm::TargetLoweringBase::getTypeLegalizationCost(), llvm::isPowerOf2_32(), llvm::X86Subtarget::isUnalignedMem32Slow(), llvm::SPII::Load, llvm::AArch64CC::LT, and llvm::SPII::Store.
Referenced by getInterleavedMemoryOpCostAVX512(), and getMaskedMemoryOpCost().
Definition at line 69 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), and llvm::X86Subtarget::is64Bit().
| 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.
Definition at line 1699 of file X86TargetTransformInfo.cpp.
References llvm::ISD::ADD, assert(), llvm::CostTableLookup(), llvm::TargetTransformInfoImplBase::DL, llvm::ISD::FADD, llvm::BasicTTIImplBase< X86TTIImpl >::getReductionCost(), 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.
Definition at line 81 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), and llvm::X86Subtarget::is64Bit().
| int X86TTIImpl::getShuffleCost | ( | TTI::ShuffleKind | Kind, |
| Type * | Tp, | ||
| int | Index, | ||
| Type * | SubTp | ||
| ) |
Definition at line 657 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::MVT::getVectorElementType(), llvm::Type::getVectorElementType(), llvm::Type::getVectorNumElements(), llvm::MVT::getVectorNumElements(), llvm::X86Subtarget::hasVBMI(), llvm::AArch64CC::LT, llvm::TargetTransformInfo::SK_Broadcast, llvm::TargetTransformInfo::SK_PermuteSingleSrc, llvm::TargetTransformInfo::SK_PermuteTwoSrc, llvm::TargetTransformInfo::SK_Reverse, llvm::MVT::v16i8, llvm::MVT::v32i16, llvm::MVT::v32i8, and llvm::MVT::v64i8.
Referenced by getInterleavedMemoryOpCostAVX512(), and getMaskedMemoryOpCost().
Definition at line 1534 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.
Definition at line 2090 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::DL, llvm::DataLayout::getPointerSizeInBits(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarType(), llvm::Type::getVectorNumElements(), llvm::X86Subtarget::hasAVX512(), and llvm::isPowerOf2_32().
Referenced by getGatherScatterOpCost(), and isLegalMaskedScatter().
Definition at line 2077 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::DL, llvm::DataLayout::getPointerSizeInBits(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarType(), llvm::X86Subtarget::hasAVX(), and llvm::X86Subtarget::hasBWI().
Referenced by getMaskedMemoryOpCost(), and isLegalMaskedStore().
Definition at line 2111 of file X86TargetTransformInfo.cpp.
References isLegalMaskedGather().
Referenced by getGatherScatterOpCost().
Definition at line 2086 of file X86TargetTransformInfo.cpp.
References isLegalMaskedLoad().
Referenced by getMaskedMemoryOpCost().
1.8.6