LLVM 22.0.0git
|
#include "Target/X86/X86TargetTransformInfo.h"
Definition at line 28 of file X86TargetTransformInfo.h.
|
inlineexplicit |
Definition at line 113 of file X86TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6513 of file X86TargetTransformInfo.cpp.
References llvm::all_of(), areTypesABICompatible(), llvm::TargetLoweringBase::getTargetMachine(), I, instructions, and llvm::Intrinsic::not_intrinsic.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6561 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::areTypesABICompatible(), llvm::TargetLoweringBase::getTargetMachine(), llvm::none_of(), and llvm::X86Subtarget::useAVX512Regs().
Referenced by areInlineCompatible().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6289 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6616 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6584 of file X86TargetTransformInfo.cpp.
References llvm::TargetLoweringBase::getMaxExpandSizeMemcmp(), llvm::X86Subtarget::getPreferVectorWidth(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE2(), and Options.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6422 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX512().
Referenced by forceScalarizeMaskedScatter(), and getGatherScatterOpCost().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 281 of file X86TargetTransformInfo.h.
References forceScalarizeMaskedGather().
Referenced by getGatherScatterOpCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5499 of file X86TargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< X86TTIImpl >::getAddressComputationCost(), llvm::TargetTransformInfoImplBase::getConstantStrideStep(), llvm::X86Subtarget::hasAVX2(), llvm::TargetTransformInfoImplBase::isStridedAccess(), llvm::Type::isVectorTy(), and Ptr.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1524 of file X86TargetTransformInfo.cpp.
References llvm::InstructionCost::getInvalid(), isLegalAltInstr(), and llvm::TargetTransformInfo::TCC_Basic.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 253 of file X86TargetTransformInfo.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, assert(), CostKind, llvm::CostTableLookup(), llvm::ISD::FADD, llvm::ISD::FDIV, llvm::ISD::FMUL, llvm::ISD::FNEG, llvm::ISD::FSUB, getArithmeticInstrCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getArithmeticInstrCost(), getCastInstrCost(), llvm::VectorType::getExtendedElementVectorType(), llvm::TargetTransformInfo::OperandValueInfo::getNoProps(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarSizeInBits(), llvm::Type::getScalarType(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::MVT::getVectorVT(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), llvm::X86Subtarget::hasSSE42(), llvm::X86Subtarget::hasSSSE3(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::TargetTransformInfo::OperandValueInfo::isConstant(), llvm::TargetTransformInfo::OperandValueInfo::isNegatedPowerOf2(), llvm::TargetTransformInfo::OperandValueInfo::isPowerOf2(), llvm::TargetTransformInfo::OperandValueInfo::isUniform(), llvm::Type::isVectorTy(), llvm::TargetTransformInfoImplBase::minRequiredElementSize(), llvm::ISD::MUL, llvm::TargetTransformInfo::None, llvm::ISD::OR, llvm::X86ISD::PMULUDQ, llvm::ISD::SDIV, llvm::ISD::SHL, llvm::ISD::SRA, llvm::ISD::SREM, llvm::ISD::SRL, llvm::ISD::SUB, llvm::TargetTransformInfo::TCK_CodeSize, llvm::TargetTransformInfo::TCK_RecipThroughput, llvm::ISD::UDIV, llvm::ISD::UREM, and llvm::ISD::XOR.
Referenced by getArithmeticInstrCost(), getArithmeticReductionCost(), getCmpSelInstrCost(), getInterleavedMemoryOpCostAVX512(), getIntrinsicInstrCost(), and getMinMaxReductionCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5528 of file X86TargetTransformInfo.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, assert(), CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::ISD::FADD, llvm::IntegerType::get(), llvm::FixedVectorType::get(), getArithmeticInstrCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getArithmeticReductionCost(), getArithmeticReductionCost(), getCastInstrCost(), llvm::Type::getDoubleTy(), llvm::Type::getFloatTy(), llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::Type::getIntNTy(), llvm::MVT::getScalarSizeInBits(), llvm::MVT::getScalarType(), getShuffleCost(), llvm::EVT::getSimpleVT(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), getVectorInstrCost(), llvm::MVT::getVectorNumElements(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE2(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::isPowerOf2_32(), llvm::EVT::isSimple(), llvm::MVT::isVector(), llvm::ISD::MUL, llvm::TargetTransformInfo::None, llvm::TargetTransformInfo::OK_AnyValue, llvm::TargetTransformInfo::OK_UniformConstantValue, llvm::TargetTransformInfo::OP_None, llvm::ISD::OR, llvm::TargetTransformInfo::requiresOrderedReduction(), Size, llvm::TargetTransformInfo::SK_ExtractSubvector, and llvm::TargetTransformInfo::SK_PermuteSingleSrc.
Referenced by getArithmeticReductionCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 3630 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7133 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 143 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::L1D, llvm::TargetTransformInfo::L2D, and llvm_unreachable.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 113 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::L1D, llvm::TargetTransformInfo::L2D, and llvm_unreachable.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2305 of file X86TargetTransformInfo.cpp.
References assert(), llvm::ConvertCostTableLookup(), CostKind, llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::ISD::FP_EXTEND, llvm::ISD::FP_ROUND, llvm::ISD::FP_TO_SINT, llvm::ISD::FP_TO_UINT, llvm::BasicTTIImplBase< X86TTIImpl >::getCastInstrCost(), getCastInstrCost(), llvm::EVT::getSimpleVT(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), I, llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::EVT::isSimple(), N, llvm::TargetTransformInfo::None, llvm::ISD::SIGN_EXTEND, llvm::ISD::SINT_TO_FP, llvm::TargetTransformInfo::TCC_Free, llvm::TargetTransformInfo::TCK_RecipThroughput, llvm::ISD::TRUNCATE, llvm::ISD::UINT_TO_FP, llvm::X86Subtarget::useAVX512Regs(), and llvm::ISD::ZERO_EXTEND.
Referenced by getArithmeticInstrCost(), getArithmeticReductionCost(), getCastInstrCost(), getIntrinsicInstrCost(), and getReplicationShuffleCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6153 of file X86TargetTransformInfo.cpp.
References CostKind, llvm::TargetTransformInfo::TCC_Basic, llvm::TargetTransformInfo::TCC_Free, and llvm::TargetTransformInfo::TCK_RecipThroughput.
Referenced by getMaskedMemoryOpCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 3331 of file X86TargetTransformInfo.cpp.
References assert(), llvm::CmpInst::BAD_FCMP_PREDICATE, llvm::CmpInst::BAD_ICMP_PREDICATE, CostKind, llvm::CostTableLookup(), llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_ONE, llvm::CmpInst::FCMP_UEQ, llvm::CmpInst::FCMP_UNO, getArithmeticInstrCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getCmpSelInstrCost(), getCmpSelInstrCost(), llvm::MVT::getScalarSizeInBits(), llvm::Type::getScalarType(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), llvm::X86Subtarget::hasSSE42(), I, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGE, llvm::CmpInst::ICMP_SLE, llvm::CmpInst::ICMP_UGE, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULE, llvm::CmpInst::ICMP_ULT, llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::MVT::is128BitVector(), llvm::Type::isFloatingPointTy(), llvm::Type::isFPOrFPVectorTy(), llvm::Type::isIntOrIntVectorTy(), llvm::MVT::isVector(), llvm::ISD::SELECT, llvm::ISD::SETCC, and llvm::TargetTransformInfo::TCK_Latency.
Referenced by getCmpSelInstrCost(), getIntrinsicInstrCost(), and getMaskedMemoryOpCost().
|
overridevirtual |
Calculate the cost of Gather / Scatter operation.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6254 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, forceScalarizeMaskedGather(), forceScalarizeMaskedScatter(), llvm::PointerType::getAddressSpace(), llvm::BasicTTIImplBase< X86TTIImpl >::getGatherScatterOpCost(), I, isLegalMaskedGather(), isLegalMaskedScatter(), llvm::Type::isVectorTy(), and Ptr.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6783 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, llvm::CostTableLookup(), llvm::divideCeil(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::FixedVectorType::get(), llvm::Type::getContext(), llvm::BasicTTIImplBase< X86TTIImpl >::getInterleavedMemoryOpCost(), getInterleavedMemoryOpCostAVX512(), llvm::Type::getIntNTy(), getMemoryOpCost(), llvm::EVT::getSimpleVT(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::DataLayout::getTypeSizeInBits(), llvm::TargetLoweringBase::getValueType(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSSE3(), llvm::Type::isBFloatTy(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), llvm::Type::isHalfTy(), llvm::Type::isIntegerTy(), llvm::Type::isPointerTy(), llvm::EVT::isSimple(), llvm::MVT::isVector(), and llvm::ArrayRef< T >::size().
InstructionCost X86TTIImpl::getInterleavedMemoryOpCostAVX512 | ( | unsigned | Opcode, |
FixedVectorType * | VecTy, | ||
unsigned | Factor, | ||
ArrayRef< unsigned > | Indices, | ||
Align | Alignment, | ||
unsigned | AddressSpace, | ||
TTI::TargetCostKind | CostKind, | ||
bool | UseMaskForCond = false , |
||
bool | UseMaskForGaps = false |
||
) | const |
Definition at line 6627 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::FixedVectorType::get(), llvm::APInt::getAllOnes(), getArithmeticInstrCost(), llvm::Type::getContext(), llvm::VectorType::getElementType(), llvm::Type::getInt1Ty(), getMaskedMemoryOpCost(), getMemoryOpCost(), llvm::FixedVectorType::getNumElements(), getReplicationShuffleCost(), llvm::Type::getScalarType(), getShuffleCost(), llvm::TargetLoweringBase::getSimpleValueType(), llvm::MVT::getStoreSize(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::DataLayout::getTypeStoreSize(), llvm::MVT::getVectorNumElements(), llvm::MVT::getVectorVT(), llvm::APInt::getZero(), llvm::APInt::setBit(), llvm::ArrayRef< T >::size(), llvm::TargetTransformInfo::SK_PermuteSingleSrc, and llvm::TargetTransformInfo::SK_PermuteTwoSrc.
Referenced by getInterleavedMemoryOpCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5969 of file X86TargetTransformInfo.cpp.
References llvm::alignTo(), llvm::APInt::ashr(), assert(), getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), llvm::APInt::getSExtValue(), llvm::Type::isIntegerTy(), llvm::APInt::sextOrTrunc(), and llvm::TargetTransformInfo::TCC_Free.
InstructionCost X86TTIImpl::getIntImmCost | ( | int64_t | Val | ) | const |
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 5959 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
Referenced by getIntImmCost(), getIntImmCostInst(), and getIntImmCostIntrin().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6004 of file X86TargetTransformInfo.cpp.
References assert(), llvm::computeKnownBits(), CostKind, llvm::KnownBits::countMinTrailingZeros(), llvm::divideCeil(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), Idx, llvm::Type::isIntegerTy(), llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6117 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), Idx, llvm::Type::isIntegerTy(), and llvm::TargetTransformInfo::TCC_Free.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 3633 of file X86TargetTransformInfo.cpp.
References llvm::ISD::ABS, llvm::ISD::BITREVERSE, llvm::ISD::BSWAP, CostKind, llvm::CostTableLookup(), llvm::ISD::CTLZ, llvm::ISD::CTLZ_ZERO_UNDEF, llvm::ISD::CTPOP, llvm::ISD::CTTZ, llvm::ISD::CTTZ_ZERO_UNDEF, llvm::ISD::DELETED_NODE, llvm::ISD::FMAXNUM, llvm::ISD::FMINNUM, llvm::ISD::FSHL, llvm::ISD::FSQRT, llvm::IntrinsicCostAttributes::getArgs(), llvm::IntrinsicCostAttributes::getArgTypes(), getArithmeticInstrCost(), getCastInstrCost(), getCmpSelInstrCost(), llvm::IntrinsicCostAttributes::getFlags(), llvm::IntrinsicCostAttributes::getID(), llvm::IntrinsicCostAttributes::getInst(), llvm::BasicTTIImplBase< X86TTIImpl >::getIntrinsicInstrCost(), llvm::IntrinsicCostAttributes::getReturnType(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), llvm::X86Subtarget::hasSSE42(), llvm::X86Subtarget::hasSSSE3(), llvm::CmpInst::ICMP_EQ, II, llvm::MVT::isScalarInteger(), llvm::IntrinsicCostAttributes::isTypeBasedOnly(), llvm::MVT::isVector(), llvm::PatternMatch::m_APIntAllowPoison(), llvm::PatternMatch::match(), llvm::TargetTransformInfo::None, RetTy, llvm::ISD::ROTL, llvm::ISD::ROTR, llvm::ISD::SADDO, llvm::ISD::SADDSAT, llvm::ISD::SMAX, llvm::ISD::SMIN, llvm::ISD::SMULO, llvm::ISD::SSUBSAT, llvm::TargetTransformInfo::TCC_Free, llvm::TargetTransformInfo::TCK_CodeSize, llvm::ISD::UADDO, llvm::ISD::UADDSAT, llvm::ISD::UMAX, llvm::ISD::UMIN, llvm::ISD::UMULO, llvm::ISD::USUBSAT, and llvm::X86ISD::VROTLI.
Referenced by getMinMaxCost().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 230 of file X86TargetTransformInfo.cpp.
References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), getRegisterBitWidth(), and llvm::TargetTransformInfo::RGK_FixedWidthVector.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5412 of file X86TargetTransformInfo.cpp.
References llvm::CmpInst::BAD_ICMP_PREDICATE, CostKind, llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::FixedVectorType::get(), llvm::APInt::getAllOnes(), getCFInstrCost(), getCmpSelInstrCost(), llvm::Type::getInt8Ty(), llvm::BasicTTIImplBase< X86TTIImpl >::getMemoryOpCost(), getMemoryOpCost(), getScalarizationOverhead(), getShuffleCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::MVT::getVectorNumElements(), llvm::X86Subtarget::hasAVX512(), isLegalMaskedLoad(), isLegalMaskedStore(), llvm::TargetTransformInfo::SK_InsertSubvector, and llvm::TargetTransformInfo::SK_PermuteTwoSrc.
Referenced by getInterleavedMemoryOpCostAVX512().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 235 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX(), and llvm::ElementCount::isScalar().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 301 of file X86TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5241 of file X86TargetTransformInfo.cpp.
References llvm::all_of(), assert(), llvm::commonAlignment(), CostKind, llvm::divideCeil(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, GEP, llvm::IntegerType::get(), llvm::FixedVectorType::get(), llvm::DataLayout::getABITypeAlign(), llvm::APInt::getBitsSet(), llvm::BasicTTIImplBase< X86TTIImpl >::getMemoryOpCost(), getMemoryOpCost(), getScalarizationOverhead(), getShuffleCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::DataLayout::getTypeSizeInBits(), llvm::TargetLoweringBase::getValueType(), I, llvm::TargetTransformInfo::OperandValueInfo::isConstant(), llvm::TargetTransformInfo::OperandValueInfo::isUniform(), llvm::APInt::popcount(), llvm::TargetTransformInfo::SK_ExtractSubvector, llvm::TargetTransformInfo::SK_InsertSubvector, llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCK_RecipThroughput.
Referenced by getInterleavedMemoryOpCost(), getInterleavedMemoryOpCostAVX512(), getMaskedMemoryOpCost(), getMemoryOpCost(), and getVectorInstrCost().
InstructionCost X86TTIImpl::getMinMaxCost | ( | Intrinsic::ID | IID, |
Type * | Ty, | ||
TTI::TargetCostKind | CostKind, | ||
FastMathFlags | FMF | ||
) | const |
Definition at line 5777 of file X86TargetTransformInfo.cpp.
References CostKind, and getIntrinsicInstrCost().
Referenced by getMinMaxReductionCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5785 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::ISD::FMINIMUM, llvm::ISD::FMINNUM, llvm::FixedVectorType::get(), getArithmeticInstrCost(), llvm::Type::getContext(), llvm::Type::getDoubleTy(), llvm::Type::getFloatTy(), llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::Type::getIntNTy(), getMinMaxCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getMinMaxReductionCost(), llvm::MVT::getScalarSizeInBits(), llvm::Type::getScalarSizeInBits(), getShuffleCost(), llvm::EVT::getSimpleVT(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), getVectorInstrCost(), llvm::MVT::getVectorNumElements(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), if(), llvm::Type::isFloatingPointTy(), llvm::Type::isFPOrFPVectorTy(), llvm::Type::isIntOrIntVectorTy(), llvm::isPowerOf2_32(), llvm::EVT::isSimple(), llvm::MVT::isVector(), llvm::TargetTransformInfo::OK_AnyValue, llvm::TargetTransformInfo::OK_UniformConstantValue, llvm::TargetTransformInfo::OP_None, Size, llvm::TargetTransformInfo::SK_ExtractSubvector, llvm::TargetTransformInfo::SK_PermuteSingleSrc, llvm::ISD::SMIN, llvm::TargetTransformInfo::TCK_RecipThroughput, and llvm::ISD::UMIN.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 172 of file X86TargetTransformInfo.cpp.
References GPRClass, llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), and VectorClass.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplCRTPBase< T >.
Definition at line 5479 of file X86TargetTransformInfo.cpp.
References llvm::sampleprof::Base, CostKind, llvm::BasicTTIImplBase< X86TTIImpl >::getGEPCost(), llvm::TargetTransformInfoImplBase::getPointersChainCost(), Info, and llvm::TargetTransformInfo::TCC_Free.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 105 of file X86TargetTransformInfo.cpp.
References assert(), llvm::isPowerOf2_32(), llvm::TargetTransformInfo::PSK_FastHardware, and llvm::TargetTransformInfo::PSK_Software.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 210 of file X86TargetTransformInfo.cpp.
References llvm::TypeSize::getFixed(), llvm::X86Subtarget::getPreferVectorWidth(), llvm::TypeSize::getScalable(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), llvm_unreachable, llvm::TargetTransformInfo::RGK_FixedWidthVector, llvm::TargetTransformInfo::RGK_ScalableVector, and llvm::TargetTransformInfo::RGK_Scalar.
Referenced by getLoadStoreVecRegBitWidth().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 166 of file X86TargetTransformInfo.cpp.
References GPRClass, llvm::Type::isFloatingPointTy(), ScalarFPClass, llvm::Vector, and VectorClass.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5135 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, llvm::divideCeil(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::FixedVectorType::get(), getCastInstrCost(), llvm::Type::getContext(), llvm::Type::getIntNTy(), llvm::BasicTTIImplBase< X86TTIImpl >::getReplicationShuffleCost(), getReplicationShuffleCost(), llvm::MVT::getScalarSizeInBits(), llvm::MVT::getScalarType(), getShuffleCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::DataLayout::getTypeSizeInBits(), llvm::MVT::getVectorNumElements(), llvm::X86Subtarget::hasAVX512(), llvm::MVT::isVector(), llvm::TargetTransformInfo::None, llvm::APInt::popcount(), llvm::APIntOps::ScaleBitMask(), llvm::TargetTransformInfo::SK_PermuteSingleSrc, and llvm::APInt::zext().
Referenced by getInterleavedMemoryOpCostAVX512(), and getReplicationShuffleCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 4953 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, llvm::ArrayRef< T >::empty(), llvm::APInt::extractBits(), llvm::FixedVectorType::get(), llvm::APInt::getBitWidth(), llvm::VectorType::getElementType(), llvm::Constant::getNullValue(), getNumElements(), llvm::BasicTTIImplBase< X86TTIImpl >::getScalarizationOverhead(), llvm::Type::getScalarSizeInBits(), getShuffleCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), getVectorInstrCost(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), I, llvm::APInt::isAllOnes(), llvm::MVT::isInteger(), llvm::Type::isIntOrIntVectorTy(), llvm::APInt::isZero(), llvm::APInt::popcount(), llvm::PowerOf2Ceil(), llvm::APIntOps::ScaleBitMask(), llvm::seq(), llvm::TargetTransformInfo::SK_ExtractSubvector, llvm::TargetTransformInfo::SK_InsertSubvector, and llvm::APInt::zext().
Referenced by getMaskedMemoryOpCost(), and getMemoryOpCost().
|
overridevirtual |
Return the cost of the scaling factor used in the addressing mode represented by AM for this target, for a load/store of the specified type.
If the AM is supported, the return value must be >= 0. If the AM is not supported, it returns an invalid cost.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7098 of file X86TargetTransformInfo.cpp.
References llvm::TargetLoweringBase::AddrMode::BaseGV, llvm::TargetLoweringBase::AddrMode::BaseOffs, llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::StackOffset::getFixed(), llvm::InstructionCost::getInvalid(), llvm::StackOffset::getScalable(), llvm::TargetLoweringBase::AddrMode::HasBaseReg, llvm::BasicTTIImplBase< X86TTIImpl >::isLegalAddressingMode(), llvm::TargetLoweringBase::AddrMode::ScalableOffset, and llvm::TargetLoweringBase::AddrMode::Scale.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1532 of file X86TargetTransformInfo.cpp.
References llvm::alignDown(), llvm::all_of(), llvm::any_of(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::copy(), CostKind, llvm::CostTableLookup(), llvm::count_if(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::ArrayRef< T >::empty(), llvm::enumerate(), llvm::FixedVectorType::get(), llvm::VectorType::getDoubleElementsVectorType(), llvm::VectorType::getElementCount(), llvm::VectorType::getElementType(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarSizeInBits(), llvm::Type::getScalarType(), llvm::BasicTTIImplBase< X86TTIImpl >::getShuffleCost(), getShuffleCost(), llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), llvm::MVT::getSizeInBits(), llvm::MVT::getStoreSize(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::DataLayout::getTypeStoreSize(), llvm::InstructionCost::getValue(), llvm::TargetLoweringBase::getValueType(), llvm::MVT::getVectorElementType(), llvm::MVT::getVectorNumElements(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX2(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE3(), llvm::X86Subtarget::hasSSE41(), llvm::X86Subtarget::hasSSSE3(), I, llvm::BasicTTIImplBase< X86TTIImpl >::improveShuffleKindFromMask(), llvm::ShuffleVectorInst::isIdentityMask(), isLegalBroadcastLoad(), llvm::Type::isScalableTy(), llvm::EVT::isSimple(), llvm::InstructionCost::isValid(), llvm::EVT::isVector(), llvm::MVT::isVector(), llvm::PatternMatch::m_Load(), llvm::MIPatternMatch::m_OneUse(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), P, llvm::PoisonMaskElem, llvm::processShuffleMasks(), llvm::TargetTransformInfo::SK_Broadcast, llvm::TargetTransformInfo::SK_ExtractSubvector, llvm::TargetTransformInfo::SK_InsertSubvector, llvm::TargetTransformInfo::SK_PermuteSingleSrc, llvm::TargetTransformInfo::SK_PermuteTwoSrc, llvm::TargetTransformInfo::SK_Reverse, llvm::TargetTransformInfo::SK_Select, llvm::TargetTransformInfo::SK_Splice, llvm::TargetTransformInfo::SK_Transpose, llvm::TargetTransformInfo::TCC_Basic, llvm::TargetTransformInfo::TCC_Free, X, and Y.
Referenced by getArithmeticReductionCost(), getInterleavedMemoryOpCostAVX512(), getMaskedMemoryOpCost(), getMemoryOpCost(), getMinMaxReductionCost(), getReplicationShuffleCost(), getScalarizationOverhead(), getShuffleCost(), and getVectorInstrCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7160 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::getStoreMinimumVF(), and llvm::Type::isHalfTy().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 4804 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::ISD::EXTRACT_VECTOR_ELT, llvm::FixedVectorType::get(), getMemoryOpCost(), llvm::DataLayout::getPrefTypeAlign(), llvm::Type::getScalarSizeInBits(), llvm::EVT::getScalarType(), llvm::Type::getScalarType(), getShuffleCost(), llvm::EVT::getSizeInBits(), llvm::Value::getType(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::BasicTTIImplBase< X86TTIImpl >::getVectorInstrCost(), llvm::X86Subtarget::hasSSE1(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::Type::isFloatingPointTy(), llvm::MVT::isInteger(), llvm::Type::isIntegerTy(), llvm::Type::isVectorTy(), llvm::TargetTransformInfo::SK_PermuteTwoSrc, and llvm::TargetTransformInfo::TCC_Free.
Referenced by getArithmeticReductionCost(), getMinMaxReductionCost(), and getScalarizationOverhead().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 186 of file X86TargetTransformInfo.cpp.
References getBitWidth(), llvm::Type::getScalarType(), and llvm::Type::isIntegerTy().
Referenced by isLegalMaskedLoad(), and isLegalMaskedStore().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6497 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::TargetLoweringBase::getValueType(), llvm::TargetLoweringBase::isOperationLegal(), llvm::ISD::SDIVREM, and llvm::ISD::UDIVREM.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2154 of file X86InstCombineIntrinsic.cpp.
References llvm::any_of(), assert(), llvm::BitWidth, llvm::InstCombiner::Builder, llvm::CallingConv::C, llvm::SelectInst::Create(), llvm::IRBuilderBase::CreateAnd(), llvm::IRBuilderBase::CreateBitCast(), llvm::IRBuilderBase::CreateExtractElement(), llvm::IRBuilderBase::CreateFAdd(), llvm::IRBuilderBase::CreateFDiv(), llvm::IRBuilderBase::CreateFMul(), llvm::IRBuilderBase::CreateFSub(), llvm::IRBuilderBase::CreateInsertElement(), llvm::IRBuilderBase::CreateLShr(), llvm::IRBuilderBase::CreateSelect(), llvm::IRBuilderBase::CreateShl(), llvm::IRBuilderBase::CreateShuffleVector(), llvm::FixedVectorType::get(), llvm::ConstantAggregateZero::get(), llvm::IntegerType::getBitWidth(), llvm::InstCombiner::getDataLayout(), llvm::IRBuilderBase::getInt1Ty(), llvm::APInt::getLowBitsSet(), getNegativeIsTrueBoolVec(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarSizeInBits(), llvm::APInt::getSplat(), llvm::Value::getType(), I, Idx, II, llvm::isPowerOf2_32(), llvm::APInt::isSubsetOf(), llvm::Type::isVectorTy(), llvm::Length, LHS, llvm_unreachable, llvm::APInt::lshr(), llvm::MIPatternMatch::m_OneUse(), llvm::PatternMatch::m_SExt(), llvm::PatternMatch::m_Shuffle(), llvm::PatternMatch::m_Undef(), llvm::PatternMatch::m_Value(), llvm::Masked, llvm::PatternMatch::match(), llvm::InstCombiner::peekThroughBitcast(), llvm::InstCombiner::replaceInstUsesWith(), llvm::InstCombiner::replaceOperand(), RHS, llvm::scaleShuffleMaskElts(), llvm::InstCombiner::SimplifyDemandedBits(), llvm::InstCombiner::SimplifyDemandedVectorElts(), simplifyTernarylogic(), simplifyX86addcarry(), simplifyX86extrq(), simplifyX86immShift(), simplifyX86insertps(), simplifyX86insertq(), simplifyX86MaskedLoad(), simplifyX86MaskedStore(), simplifyX86movmsk(), simplifyX86pack(), simplifyX86pmadd(), simplifyX86pmulh(), simplifyX86pshufb(), simplifyX86varShift(), simplifyX86vpermilvar(), simplifyX86VPERMMask(), simplifyX86vpermv(), simplifyX86vpermv3(), llvm::ArrayRef< T >::size(), and llvm::APInt::zextOrTrunc().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplCRTPBase< T >.
Definition at line 6502 of file X86TargetTransformInfo.cpp.
References I, and llvm::TargetTransformInfoImplBase::isExpensiveToSpeculativelyExecute().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6511 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6457 of file X86TargetTransformInfo.cpp.
References assert(), llvm::X86Subtarget::hasSSE3(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), llvm::isPowerOf2_32(), Opc, llvm::SmallBitVector::size(), and llvm::SmallBitVector::test().
Referenced by getAltInstrCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6378 of file X86TargetTransformInfo.cpp.
References llvm::Type::getContext(), llvm::Type::getDoubleTy(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::X86Subtarget::hasSSE3(), and llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable().
Referenced by getShuffleCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6410 of file X86TargetTransformInfo.cpp.
References isLegalMaskedExpandLoad().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6386 of file X86TargetTransformInfo.cpp.
References llvm::Type::getIntegerBitWidth(), getNumElements(), llvm::X86Subtarget::hasAVX512(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), and llvm::Type::isIntegerTy().
Referenced by isLegalMaskedCompressStore().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6451 of file X86TargetTransformInfo.cpp.
References isLegalMaskedGatherScatter().
Referenced by getGatherScatterOpCost().
Definition at line 6435 of file X86TargetTransformInfo.cpp.
References llvm::Type::getIntegerBitWidth(), llvm::Type::getScalarType(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), llvm::Type::isIntegerTy(), and llvm::Type::isPointerTy().
Referenced by isLegalMaskedGather(), and isLegalMaskedScatter().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6317 of file X86TargetTransformInfo.cpp.
References getNumElements(), llvm::Type::getScalarType(), hasConditionalLoadStoreForType(), and isLegalMaskedLoadStore().
Referenced by getMaskedMemoryOpCost().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6490 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX512(), and isLegalMaskedGatherScatter().
Referenced by getGatherScatterOpCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6330 of file X86TargetTransformInfo.cpp.
References getNumElements(), llvm::Type::getScalarType(), hasConditionalLoadStoreForType(), and isLegalMaskedLoadStore().
Referenced by getMaskedMemoryOpCost().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6343 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::DataLayout::getTypeStoreSize(), llvm::X86Subtarget::hasAVX2(), and llvm::X86Subtarget::hasSSE1().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6354 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::DataLayout::getTypeStoreSize(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasSSE1(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), and llvm::isPowerOf2_32().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6280 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.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7168 of file X86TargetTransformInfo.cpp.
References llvm::any_of(), llvm::SmallVectorBase< Size_T >::empty(), llvm::VectorType::getElementType(), llvm::getSplatIndex(), llvm::X86Subtarget::hasSSE2(), llvm::X86Subtarget::hasSSE41(), I, II, llvm::Type::isIntegerTy(), isVectorShiftByScalarCheap(), llvm::PatternMatch::m_And(), llvm::PatternMatch::m_AShr(), llvm::PatternMatch::m_Shl(), llvm::PatternMatch::m_SpecificInt(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7138 of file X86TargetTransformInfo.cpp.
References llvm::Type::getScalarSizeInBits(), and llvm::X86Subtarget::hasAVX2().
Referenced by isProfitableToSinkOperands().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 307 of file X86TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6608 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 3092 of file X86InstCombineIntrinsic.cpp.
References llvm::Constant::getNullValue(), II, llvm::APInt::isZero(), llvm::APInt::setBitsFrom(), llvm::KnownBits::Zero, and llvm::APInt::zextOrTrunc().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 3132 of file X86InstCombineIntrinsic.cpp.
References llvm::InstCombiner::addToWorklist(), assert(), llvm::InstCombiner::Builder, llvm::APInt::clearBit(), llvm::IRBuilderBase::CreateBinOp(), llvm::ConstantAggregateZero::get(), llvm::APInt::getLoBits(), llvm::APInt::getSplat(), Idx, II, llvm::APInt::isSubsetOf(), llvm::APInt::lshr(), llvm::APIntOps::ScaleBitMask(), llvm::APInt::setBit(), llvm::APInt::setHighBits(), llvm::IRBuilderBase::SetInsertPoint(), and llvm::APInt::zext().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6612 of file X86TargetTransformInfo.cpp.