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.
References F, and llvm::TargetTransformInfoImplBase::getDataLayout().
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 6515 of file X86TargetTransformInfo.cpp.
References llvm::all_of(), areTypesABICompatible(), llvm::dyn_cast(), I, instructions, llvm::Intrinsic::not_intrinsic, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6563 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::areTypesABICompatible(), llvm::none_of(), T, and llvm::X86Subtarget::useAVX512Regs().
Referenced by areInlineCompatible().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6291 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6618 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6586 of file X86TargetTransformInfo.cpp.
References Options.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6424 of file X86TargetTransformInfo.cpp.
References llvm::cast().
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::BasicTTIImplBase< X86TTIImpl >.
Definition at line 5501 of file X86TargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< X86TTIImpl >::getAddressComputationCost(), llvm::TargetTransformInfoImplBase::getConstantStrideStep(), llvm::TargetTransformInfoImplBase::isStridedAccess(), llvm::Type::isVectorTy(), and Ptr.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1526 of file X86TargetTransformInfo.cpp.
References CostKind, llvm::InstructionCost::getInvalid(), isLegalAltInstr(), and llvm::TargetTransformInfo::TCC_Basic.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 253 of file X86TargetTransformInfo.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, assert(), llvm::cast(), CostKind, llvm::CostTableLookup(), llvm::ISD::FADD, llvm::ISD::FDIV, llvm::ISD::FMUL, llvm::ISD::FSUB, llvm::BasicTTIImplBase< X86TTIImpl >::getArithmeticInstrCost(), getArithmeticInstrCost(), getCastInstrCost(), llvm::VectorType::getExtendedElementVectorType(), llvm::TargetTransformInfo::OperandValueInfo::getNoProps(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::MVT::getVectorVT(), llvm::isa(), llvm::TargetTransformInfo::OperandValueInfo::isConstant(), llvm::TargetTransformInfo::OperandValueInfo::isNegatedPowerOf2(), llvm::TargetTransformInfo::OperandValueInfo::isPowerOf2(), llvm::TargetTransformInfo::OperandValueInfo::isUniform(), 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::BasicTTIImplBase< X86TTIImpl >.
Definition at line 5530 of file X86TargetTransformInfo.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, assert(), llvm::cast(), CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::ISD::FADD, llvm::FixedVectorType::get(), llvm::IntegerType::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(), getVectorInstrCost(), llvm::MVT::getVectorNumElements(), 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 3632 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7135 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::BasicTTIImplBase< X86TTIImpl >.
Definition at line 2307 of file X86TargetTransformInfo.cpp.
References assert(), llvm::ConvertCostTableLookup(), CostKind, llvm::BasicTTIImplBase< X86TTIImpl >::DL, 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::Type::getWithNewBitWidth(), I, InstructionCost, llvm::isa(), 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, and llvm::ISD::ZERO_EXTEND.
Referenced by getArithmeticInstrCost(), getArithmeticReductionCost(), getCastInstrCost(), getIntrinsicInstrCost(), and getReplicationShuffleCost().
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 6155 of file X86TargetTransformInfo.cpp.
References CostKind, I, llvm::TargetTransformInfo::TCC_Basic, llvm::TargetTransformInfo::TCC_Free, and llvm::TargetTransformInfo::TCK_RecipThroughput.
Referenced by getMaskedMemoryOpCost().
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 3333 of file X86TargetTransformInfo.cpp.
References assert(), llvm::CmpInst::BAD_FCMP_PREDICATE, llvm::CmpInst::BAD_ICMP_PREDICATE, llvm::cast(), CostKind, llvm::CostTableLookup(), llvm::dyn_cast_or_null(), 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::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), 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::MVT::is128BitVector(), llvm::isa(), 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::BasicTTIImplBase< X86TTIImpl >.
Definition at line 6256 of file X86TargetTransformInfo.cpp.
References assert(), llvm::cast(), CostKind, llvm::dyn_cast(), forceScalarizeMaskedGather(), forceScalarizeMaskedScatter(), llvm::PointerType::getAddressSpace(), llvm::BasicTTIImplBase< X86TTIImpl >::getGatherScatterOpCost(), I, isLegalMaskedGather(), isLegalMaskedScatter(), llvm::Type::isVectorTy(), and Ptr.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 6785 of file X86TargetTransformInfo.cpp.
References assert(), llvm::cast(), 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::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 6629 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::MVT::getStoreSize(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), 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 5971 of file X86TargetTransformInfo.cpp.
References llvm::alignTo(), llvm::APInt::ashr(), assert(), CostKind, getIntImmCost(), llvm::APInt::getSExtValue(), 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 5961 of file X86TargetTransformInfo.cpp.
References llvm::isInt(), llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
Referenced by getIntImmCost(), getIntImmCostInst(), and getIntImmCostIntrin().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6006 of file X86TargetTransformInfo.cpp.
References assert(), llvm::computeKnownBits(), CostKind, llvm::KnownBits::countMinTrailingZeros(), llvm::divideCeil(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::dyn_cast_or_null(), getIntImmCost(), llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6119 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, getIntImmCost(), and llvm::TargetTransformInfo::TCC_Free.
|
overridevirtual |
Get intrinsic cost based on arguments.
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 3635 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::dyn_cast(), llvm::ISD::FSHL, llvm::IntrinsicCostAttributes::getArgs(), llvm::IntrinsicCostAttributes::getArgTypes(), getArithmeticInstrCost(), getCastInstrCost(), getCmpSelInstrCost(), llvm::Type::getContainedType(), llvm::IntrinsicCostAttributes::getFlags(), llvm::IntrinsicCostAttributes::getID(), llvm::IntrinsicCostAttributes::getInst(), llvm::BasicTTIImplBase< X86TTIImpl >::getIntrinsicInstrCost(), llvm::IntrinsicCostAttributes::getReturnType(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::Type::getWithNewBitWidth(), llvm::CmpInst::ICMP_EQ, II, llvm::isa(), llvm::MVT::isScalarInteger(), llvm::IntrinsicCostAttributes::isTypeBasedOnly(), llvm::MVT::isVector(), llvm::PatternMatch::m_APIntAllowPoison(), llvm::PatternMatch::match(), llvm::TargetTransformInfo::None, 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::BasicTTIImplBase< X86TTIImpl >.
Definition at line 5414 of file X86TargetTransformInfo.cpp.
References llvm::CmpInst::BAD_ICMP_PREDICATE, CostKind, llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::dyn_cast(), llvm::FixedVectorType::get(), llvm::APInt::getAllOnes(), getCFInstrCost(), getCmpSelInstrCost(), llvm::Type::getInt8Ty(), llvm::BasicTTIImplBase< X86TTIImpl >::getMemoryOpCost(), getMemoryOpCost(), getScalarizationOverhead(), getShuffleCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), isLegalMaskedLoad(), isLegalMaskedStore(), llvm::TargetTransformInfo::SK_InsertSubvector, and llvm::TargetTransformInfo::SK_PermuteTwoSrc.
Referenced by getInterleavedMemoryOpCostAVX512().
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 235 of file X86TargetTransformInfo.cpp.
References llvm::ElementCount::isScalar().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 301 of file X86TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 5243 of file X86TargetTransformInfo.cpp.
References llvm::all_of(), assert(), llvm::commonAlignment(), CostKind, llvm::divideCeil(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::dyn_cast(), llvm::dyn_cast_or_null(), GEP, llvm::FixedVectorType::get(), llvm::IntegerType::get(), llvm::APInt::getBitsSet(), llvm::BasicTTIImplBase< X86TTIImpl >::getMemoryOpCost(), getMemoryOpCost(), getScalarizationOverhead(), getShuffleCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), I, 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 5779 of file X86TargetTransformInfo.cpp.
References CostKind, and getIntrinsicInstrCost().
Referenced by getMinMaxReductionCost().
|
overridevirtual |
Try to calculate op costs for min/max reduction operations.
CondTy | Conditional type for the Select instruction. |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 5787 of file X86TargetTransformInfo.cpp.
References assert(), llvm::cast(), CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::FixedVectorType::get(), getArithmeticInstrCost(), llvm::Type::getDoubleTy(), llvm::Type::getFloatTy(), llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::Type::getIntNTy(), getMinMaxCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getMinMaxReductionCost(), llvm::MVT::getScalarSizeInBits(), getShuffleCost(), llvm::EVT::getSimpleVT(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), getVectorInstrCost(), llvm::MVT::getVectorNumElements(), 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, and VectorClass.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplCRTPBase< T >.
Definition at line 5481 of file X86TargetTransformInfo.cpp.
References llvm::sampleprof::Base, CostKind, llvm::dyn_cast(), llvm::BasicTTIImplBase< X86TTIImpl >::getGEPCost(), llvm::TargetTransformInfoImplBase::getPointersChainCost(), 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::BasicTTIImplBase< X86TTIImpl >.
Definition at line 210 of file X86TargetTransformInfo.cpp.
References llvm::TypeSize::getFixed(), llvm::TypeSize::getScalable(), 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, ScalarFPClass, llvm::Vector, and VectorClass.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 5137 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::MVT::getVectorNumElements(), 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 |
Estimate the overhead of scalarizing an instruction.
Insert and Extract are set if the demanded result elements need to be inserted and/or extracted from vectors.
FIXME: a bitfield is not a reasonable abstraction for talking about which elements are needed from a scalable vector
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 4955 of file X86TargetTransformInfo.cpp.
References assert(), llvm::cast(), CostKind, llvm::ArrayRef< T >::empty(), llvm::APInt::extractBits(), llvm::FixedVectorType::get(), llvm::APInt::getBitWidth(), llvm::Constant::getNullValue(), getNumElements(), llvm::BasicTTIImplBase< X86TTIImpl >::getScalarizationOverhead(), getShuffleCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), getVectorInstrCost(), I, llvm::APInt::isAllOnes(), llvm::MVT::isInteger(), 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::BasicTTIImplBase< X86TTIImpl >.
Definition at line 7100 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::BasicTTIImplBase< X86TTIImpl >.
Definition at line 1534 of file X86TargetTransformInfo.cpp.
References llvm::alignDown(), llvm::all_of(), llvm::any_of(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::cast(), 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::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::Type::getPrimitiveSizeInBits(), 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::InstructionCost::getValue(), llvm::MVT::getVectorElementType(), llvm::MVT::getVectorNumElements(), I, llvm::BasicTTIImplBase< X86TTIImpl >::improveShuffleKindFromMask(), llvm::isa(), 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::BasicTTIImplBase< X86TTIImpl >.
Definition at line 7162 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::getStoreMinimumVF(), and llvm::Type::isHalfTy().
|
inlineoverridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 1443 of file BasicTTIImpl.h.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 4806 of file X86TargetTransformInfo.cpp.
References assert(), llvm::cast(), CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::ISD::EXTRACT_VECTOR_ELT, llvm::FixedVectorType::get(), getMemoryOpCost(), llvm::Type::getScalarSizeInBits(), llvm::EVT::getScalarType(), llvm::Type::getScalarType(), getShuffleCost(), llvm::EVT::getSizeInBits(), llvm::Value::getType(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getVectorInstrCost(), llvm::isa(), llvm::isa_and_nonnull(), 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().
|
inlineoverridevirtual |
ScalarUserAndIdx | encodes the information about extracts from a vector with 'Scalar' being the value being extracted,'User' being the user of the extract(nullptr if user is not known before vectorization) and 'Idx' being the extract lane. |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 1434 of file BasicTTIImpl.h.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 186 of file X86TargetTransformInfo.cpp.
References llvm::cast(), llvm::dyn_cast(), and getBitWidth().
Referenced by isLegalMaskedLoad(), and isLegalMaskedStore().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6499 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::ISD::SDIVREM, and llvm::ISD::UDIVREM.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 2154 of file X86InstCombineIntrinsic.cpp.
References llvm::any_of(), assert(), llvm::BitWidth, llvm::InstCombiner::Builder, llvm::CallingConv::C, llvm::cast(), 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::dyn_cast(), llvm::dyn_cast_or_null(), llvm::ConstantAggregateZero::get(), llvm::FixedVectorType::get(), llvm::InstCombiner::getDataLayout(), llvm::IRBuilderBase::getInt1Ty(), llvm::APInt::getLowBitsSet(), getNegativeIsTrueBoolVec(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarSizeInBits(), llvm::APInt::getSplat(), llvm::Value::getType(), I, II, llvm::isa(), llvm::isPowerOf2_32(), llvm::APInt::isSubsetOf(), llvm::Type::isVectorTy(), llvm::Length, 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::maskTrailingOnes(), llvm::PatternMatch::match(), llvm::InstCombiner::peekThroughBitcast(), llvm::InstCombiner::replaceInstUsesWith(), llvm::InstCombiner::replaceOperand(), 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(), and llvm::APInt::zextOrTrunc().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplCRTPBase< T >.
Definition at line 6504 of file X86TargetTransformInfo.cpp.
References I, and llvm::TargetTransformInfoImplBase::isExpensiveToSpeculativelyExecute().
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 6513 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6459 of file X86TargetTransformInfo.cpp.
References assert(), llvm::cast(), llvm::isPowerOf2_32(), Opc, llvm::seq(), llvm::SmallBitVector::size(), and llvm::SmallBitVector::test().
Referenced by getAltInstrCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6380 of file X86TargetTransformInfo.cpp.
References llvm::Type::getContext(), llvm::Type::getDoubleTy(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), and llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable().
Referenced by getShuffleCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6412 of file X86TargetTransformInfo.cpp.
References isLegalMaskedExpandLoad().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6388 of file X86TargetTransformInfo.cpp.
References llvm::cast(), llvm::Type::getIntegerBitWidth(), getNumElements(), llvm::isa(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), and llvm::Type::isIntegerTy().
Referenced by isLegalMaskedCompressStore().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6453 of file X86TargetTransformInfo.cpp.
References isLegalMaskedGatherScatter().
Referenced by getGatherScatterOpCost().
Definition at line 6437 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 6319 of file X86TargetTransformInfo.cpp.
References llvm::cast(), getNumElements(), llvm::Type::getScalarType(), hasConditionalLoadStoreForType(), llvm::isa(), and isLegalMaskedLoadStore().
Referenced by getMaskedMemoryOpCost().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6492 of file X86TargetTransformInfo.cpp.
References isLegalMaskedGatherScatter().
Referenced by getGatherScatterOpCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6332 of file X86TargetTransformInfo.cpp.
References llvm::cast(), getNumElements(), llvm::Type::getScalarType(), hasConditionalLoadStoreForType(), llvm::isa(), and isLegalMaskedLoadStore().
Referenced by getMaskedMemoryOpCost().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6345 of file X86TargetTransformInfo.cpp.
References llvm::DataSize, and llvm::BasicTTIImplBase< X86TTIImpl >::DL.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6356 of file X86TargetTransformInfo.cpp.
References llvm::DataSize, llvm::BasicTTIImplBase< X86TTIImpl >::DL, and llvm::isPowerOf2_32().
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 6282 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 7170 of file X86TargetTransformInfo.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::any_of(), llvm::cast(), llvm::dyn_cast(), llvm::VectorType::getElementType(), llvm::getSplatIndex(), 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(), and llvm::PatternMatch::match().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7140 of file X86TargetTransformInfo.cpp.
Referenced by isProfitableToSinkOperands().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 307 of file X86TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6610 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 3092 of file X86InstCombineIntrinsic.cpp.
References llvm::cast(), llvm::Constant::getNullValue(), II, llvm::APInt::isZero(), llvm::APInt::setBitsFrom(), llvm::KnownBits::Zero, and llvm::APInt::zextOrTrunc().
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 3132 of file X86InstCombineIntrinsic.cpp.
References llvm::InstCombiner::addToWorklist(), assert(), llvm::InstCombiner::Builder, llvm::cast(), llvm::APInt::clearBit(), llvm::IRBuilderBase::CreateBinOp(), llvm::ConstantAggregateZero::get(), llvm::APInt::getLoBits(), llvm::APInt::getSplat(), 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 6614 of file X86TargetTransformInfo.cpp.