LLVM 20.0.0git
|
#include "Target/X86/X86TargetTransformInfo.h"
Definition at line 28 of file X86TargetTransformInfo.h.
|
inlineexplicit |
Definition at line 113 of file X86TargetTransformInfo.h.
Definition at line 6385 of file X86TargetTransformInfo.cpp.
References llvm::all_of(), areTypesABICompatible(), llvm::TargetLoweringBase::getTargetMachine(), I, and instructions.
bool X86TTIImpl::areTypesABICompatible | ( | const Function * | Caller, |
const Function * | Callee, | ||
const ArrayRef< Type * > & | Type | ||
) | const |
Definition at line 6443 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::areTypesABICompatible(), llvm::TargetLoweringBase::getTargetMachine(), llvm::none_of(), and llvm::X86Subtarget::useAVX512Regs().
Referenced by areInlineCompatible().
bool X86TTIImpl::canMacroFuseCmp | ( | ) |
Definition at line 6178 of file X86TargetTransformInfo.cpp.
bool X86TTIImpl::enableInterleavedAccessVectorization | ( | ) |
Definition at line 6498 of file X86TargetTransformInfo.cpp.
X86TTIImpl::TTI::MemCmpExpansionOptions X86TTIImpl::enableMemCmpExpansion | ( | bool | OptSize, |
bool | IsZeroCmp | ||
) | const |
Definition at line 6466 of file X86TargetTransformInfo.cpp.
References llvm::TargetLoweringBase::getMaxExpandSizeMemcmp(), llvm::X86Subtarget::getPreferVectorWidth(), llvm::X86Subtarget::hasAVX(), llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE2(), and Options.
bool X86TTIImpl::forceScalarizeMaskedGather | ( | VectorType * | VTy, |
Align | Alignment | ||
) |
Definition at line 6294 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX512().
Referenced by forceScalarizeMaskedScatter(), and getGatherScatterOpCost().
|
inline |
Definition at line 271 of file X86TargetTransformInfo.h.
References forceScalarizeMaskedGather().
Referenced by getGatherScatterOpCost().
InstructionCost X86TTIImpl::getAddressComputationCost | ( | Type * | PtrTy, |
ScalarEvolution * | SE, | ||
const SCEV * | Ptr | ||
) |
Definition at line 5393 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::getAddressComputationCost(), llvm::TargetTransformInfoImplBase::getConstantStrideStep(), llvm::X86Subtarget::hasAVX2(), llvm::TargetTransformInfoImplBase::isStridedAccess(), llvm::Type::isVectorTy(), and Ptr.
InstructionCost X86TTIImpl::getAltInstrCost | ( | VectorType * | VecTy, |
unsigned | Opcode0, | ||
unsigned | Opcode1, | ||
const SmallBitVector & | OpcodeMask, | ||
TTI::TargetCostKind | CostKind | ||
) | const |
Definition at line 1517 of file X86TargetTransformInfo.cpp.
References llvm::InstructionCost::getInvalid(), isLegalAltInstr(), and llvm::TargetTransformInfo::TCC_Basic.
InstructionCost X86TTIImpl::getArithmeticInstrCost | ( | unsigned | Opcode, |
Type * | Ty, | ||
TTI::TargetCostKind | CostKind, | ||
TTI::OperandValueInfo | Op1Info = {TTI::OK_AnyValue, TTI::OP_None} , |
||
TTI::OperandValueInfo | Op2Info = {TTI::OK_AnyValue, TTI::OP_None} , |
||
ArrayRef< const Value * > | Args = {} , |
||
const Instruction * | CxtI = nullptr |
||
) |
Definition at line 245 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(), and getMinMaxReductionCost().
InstructionCost X86TTIImpl::getArithmeticReductionCost | ( | unsigned | Opcode, |
VectorType * | Ty, | ||
std::optional< FastMathFlags > | FMF, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 5422 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().
unsigned X86TTIImpl::getAtomicMemIntrinsicMaxElementSize | ( | ) | const |
Definition at line 3569 of file X86TargetTransformInfo.cpp.
InstructionCost X86TTIImpl::getBranchMispredictPenalty | ( | ) | const |
Definition at line 7013 of file X86TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 142 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::L1D, llvm::TargetTransformInfo::L2D, and llvm_unreachable.
|
overridevirtual |
Reimplemented from llvm::BasicTTIImplBase< X86TTIImpl >.
Definition at line 112 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::L1D, llvm::TargetTransformInfo::L2D, and llvm_unreachable.
InstructionCost X86TTIImpl::getCastInstrCost | ( | unsigned | Opcode, |
Type * | Dst, | ||
Type * | Src, | ||
TTI::CastContextHint | CCH, | ||
TTI::TargetCostKind | CostKind, | ||
const Instruction * | I = nullptr |
||
) |
Definition at line 2244 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().
InstructionCost X86TTIImpl::getCFInstrCost | ( | unsigned | Opcode, |
TTI::TargetCostKind | CostKind, | ||
const Instruction * | I = nullptr |
||
) |
Definition at line 6039 of file X86TargetTransformInfo.cpp.
References CostKind, llvm::TargetTransformInfo::TCC_Basic, llvm::TargetTransformInfo::TCC_Free, and llvm::TargetTransformInfo::TCK_RecipThroughput.
Referenced by getMaskedMemoryOpCost().
InstructionCost X86TTIImpl::getCmpSelInstrCost | ( | unsigned | Opcode, |
Type * | ValTy, | ||
Type * | CondTy, | ||
CmpInst::Predicate | VecPred, | ||
TTI::TargetCostKind | CostKind, | ||
TTI::OperandValueInfo | Op1Info = {TTI::OK_AnyValue, TTI::OP_None} , |
||
TTI::OperandValueInfo | Op2Info = {TTI::OK_AnyValue, TTI::OP_None} , |
||
const Instruction * | I = nullptr |
||
) |
Definition at line 3270 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(), and getMaskedMemoryOpCost().
InstructionCost X86TTIImpl::getGatherScatterOpCost | ( | unsigned | Opcode, |
Type * | DataTy, | ||
const Value * | Ptr, | ||
bool | VariableMask, | ||
Align | Alignment, | ||
TTI::TargetCostKind | CostKind, | ||
const Instruction * | I = nullptr |
||
) |
Calculate the cost of Gather / Scatter operation.
Definition at line 6141 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, forceScalarizeMaskedGather(), forceScalarizeMaskedScatter(), llvm::PointerType::getAddressSpace(), llvm::BasicTTIImplBase< X86TTIImpl >::getGatherScatterOpCost(), I, isLegalMaskedGather(), isLegalMaskedScatter(), llvm::Type::isVectorTy(), and Ptr.
InstructionCost X86TTIImpl::getInterleavedMemoryOpCost | ( | unsigned | Opcode, |
Type * | VecTy, | ||
unsigned | Factor, | ||
ArrayRef< unsigned > | Indices, | ||
Align | Alignment, | ||
unsigned | AddressSpace, | ||
TTI::TargetCostKind | CostKind, | ||
bool | UseMaskForCond = false , |
||
bool | UseMaskForGaps = false |
||
) |
Definition at line 6663 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 |
||
) |
Definition at line 6509 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().
InstructionCost X86TTIImpl::getIntImmCost | ( | const APInt & | Imm, |
Type * | Ty, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 5863 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 | ) |
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 5853 of file X86TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
Referenced by getIntImmCost(), getIntImmCostInst(), and getIntImmCostIntrin().
InstructionCost X86TTIImpl::getIntImmCostInst | ( | unsigned | Opcode, |
unsigned | Idx, | ||
const APInt & | Imm, | ||
Type * | Ty, | ||
TTI::TargetCostKind | CostKind, | ||
Instruction * | Inst = nullptr |
||
) |
Definition at line 5898 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, llvm::divideCeil(), getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), Idx, llvm::Type::isIntegerTy(), llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
InstructionCost X86TTIImpl::getIntImmCostIntrin | ( | Intrinsic::ID | IID, |
unsigned | Idx, | ||
const APInt & | Imm, | ||
Type * | Ty, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 6003 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, getIntImmCost(), llvm::Type::getPrimitiveSizeInBits(), Idx, llvm::Type::isIntegerTy(), and llvm::TargetTransformInfo::TCC_Free.
InstructionCost X86TTIImpl::getIntrinsicInstrCost | ( | const IntrinsicCostAttributes & | ICA, |
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 3572 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(), getCastInstrCost(), 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(), 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().
Definition at line 222 of file X86TargetTransformInfo.cpp.
References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), getRegisterBitWidth(), and llvm::TargetTransformInfo::RGK_FixedWidthVector.
InstructionCost X86TTIImpl::getMaskedMemoryOpCost | ( | unsigned | Opcode, |
Type * | Src, | ||
Align | Alignment, | ||
unsigned | AddressSpace, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 5307 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().
unsigned X86TTIImpl::getMaxInterleaveFactor | ( | ElementCount | VF | ) |
Definition at line 227 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX(), and llvm::ElementCount::isScalar().
|
inline |
Definition at line 289 of file X86TargetTransformInfo.h.
InstructionCost X86TTIImpl::getMemoryOpCost | ( | unsigned | Opcode, |
Type * | Src, | ||
MaybeAlign | Alignment, | ||
unsigned | AddressSpace, | ||
TTI::TargetCostKind | CostKind, | ||
TTI::OperandValueInfo | OpInfo = {TTI::OK_AnyValue, TTI::OP_None} , |
||
const Instruction * | I = nullptr |
||
) |
Definition at line 5136 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, llvm::TargetTransformInfo::TCK_RecipThroughput, and llvm::MaybeAlign::valueOrOne().
Referenced by getInterleavedMemoryOpCost(), getInterleavedMemoryOpCostAVX512(), getMaskedMemoryOpCost(), getMemoryOpCost(), and getVectorInstrCost().
InstructionCost X86TTIImpl::getMinMaxCost | ( | Intrinsic::ID | IID, |
Type * | Ty, | ||
TTI::TargetCostKind | CostKind, | ||
FastMathFlags | FMF | ||
) |
Definition at line 5671 of file X86TargetTransformInfo.cpp.
References CostKind, and getIntrinsicInstrCost().
Referenced by getMinMaxReductionCost().
InstructionCost X86TTIImpl::getMinMaxReductionCost | ( | Intrinsic::ID | IID, |
VectorType * | Ty, | ||
FastMathFlags | FMF, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 5679 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.
Definition at line 163 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX512(), llvm::X86Subtarget::hasSSE1(), and llvm::Vector.
InstructionCost X86TTIImpl::getPointersChainCost | ( | ArrayRef< const Value * > | Ptrs, |
const Value * | Base, | ||
const TTI::PointersChainInfo & | Info, | ||
Type * | AccessTy, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 5374 of file X86TargetTransformInfo.cpp.
References llvm::sampleprof::Base, CostKind, llvm::BasicTTIImplBase< X86TTIImpl >::getGEPCost(), llvm::TargetTransformInfoImplCRTPBase< T >::getPointersChainCost(), Info, and llvm::TargetTransformInfo::TCC_Free.
TargetTransformInfo::PopcntSupportKind X86TTIImpl::getPopcntSupport | ( | unsigned | TyWidth | ) |
Definition at line 104 of file X86TargetTransformInfo.cpp.
References assert(), llvm::isPowerOf2_32(), llvm::TargetTransformInfo::PSK_FastHardware, and llvm::TargetTransformInfo::PSK_Software.
TypeSize X86TTIImpl::getRegisterBitWidth | ( | TargetTransformInfo::RegisterKind | K | ) | const |
Definition at line 202 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().
InstructionCost X86TTIImpl::getReplicationShuffleCost | ( | Type * | EltTy, |
int | ReplicationFactor, | ||
int | VF, | ||
const APInt & | DemandedDstElts, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 5031 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().
InstructionCost X86TTIImpl::getScalarizationOverhead | ( | VectorType * | Ty, |
const APInt & | DemandedElts, | ||
bool | Insert, | ||
bool | Extract, | ||
TTI::TargetCostKind | CostKind, | ||
ArrayRef< Value * > | VL = {} |
||
) |
Definition at line 4867 of file X86TargetTransformInfo.cpp.
References assert(), CostKind, llvm::APInt::extractBits(), llvm::FixedVectorType::get(), llvm::APInt::getBitWidth(), llvm::VectorType::getElementType(), getNumElements(), llvm::BasicTTIImplBase< X86TTIImpl >::getScalarizationOverhead(), llvm::Type::getScalarSizeInBits(), getShuffleCost(), llvm::BasicTTIImplBase< X86TTIImpl >::getTypeLegalizationCost(), 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::TargetTransformInfo::SK_ExtractSubvector, llvm::TargetTransformInfo::SK_InsertSubvector, and llvm::APInt::zext().
Referenced by getMaskedMemoryOpCost(), and getMemoryOpCost().
InstructionCost X86TTIImpl::getScalingFactorCost | ( | Type * | Ty, |
GlobalValue * | BaseGV, | ||
StackOffset | BaseOffset, | ||
bool | HasBaseReg, | ||
int64_t | Scale, | ||
unsigned | AddrSpace | ||
) | const |
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 a negative value.
Definition at line 6978 of file X86TargetTransformInfo.cpp.
References llvm::TargetLoweringBase::AddrMode::BaseGV, llvm::TargetLoweringBase::AddrMode::BaseOffs, llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::StackOffset::getFixed(), llvm::StackOffset::getScalable(), llvm::TargetLoweringBase::AddrMode::HasBaseReg, llvm::BasicTTIImplBase< X86TTIImpl >::isLegalAddressingMode(), llvm::TargetLoweringBase::AddrMode::ScalableOffset, and llvm::TargetLoweringBase::AddrMode::Scale.
InstructionCost X86TTIImpl::getShuffleCost | ( | TTI::ShuffleKind | Kind, |
VectorType * | Tp, | ||
ArrayRef< int > | Mask, | ||
TTI::TargetCostKind | CostKind, | ||
int | Index, | ||
VectorType * | SubTp, | ||
ArrayRef< const Value * > | Args = {} , |
||
const Instruction * | CxtI = nullptr |
||
) |
Definition at line 1525 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::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::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::EVT::isSimple(), llvm::InstructionCost::isValid(), llvm::EVT::isVector(), llvm::MVT::isVector(), llvm::PatternMatch::m_Load(), llvm::PatternMatch::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, and llvm::TargetTransformInfo::TCC_Free.
Referenced by getArithmeticReductionCost(), getInterleavedMemoryOpCostAVX512(), getMaskedMemoryOpCost(), getMemoryOpCost(), getMinMaxReductionCost(), getReplicationShuffleCost(), getScalarizationOverhead(), getShuffleCost(), and getVectorInstrCost().
unsigned X86TTIImpl::getStoreMinimumVF | ( | unsigned | VF, |
Type * | ScalarMemTy, | ||
Type * | ScalarValTy | ||
) | const |
Definition at line 7040 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::getStoreMinimumVF(), and llvm::Type::isHalfTy().
InstructionCost X86TTIImpl::getVectorInstrCost | ( | unsigned | Opcode, |
Type * | Val, | ||
TTI::TargetCostKind | CostKind, | ||
unsigned | Index, | ||
Value * | Op0, | ||
Value * | Op1 | ||
) |
Definition at line 4721 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::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(), and getMinMaxReductionCost().
Definition at line 178 of file X86TargetTransformInfo.cpp.
References getBitWidth(), llvm::Type::getScalarType(), and llvm::Type::isIntegerTy().
Referenced by isLegalMaskedLoad().
Definition at line 6367 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::TargetLoweringBase::getValueType(), llvm::TargetLoweringBase::isOperationLegal(), llvm::ISD::SDIVREM, and llvm::ISD::UDIVREM.
std::optional< Instruction * > X86TTIImpl::instCombineIntrinsic | ( | InstCombiner & | IC, |
IntrinsicInst & | II | ||
) | const |
Definition at line 2160 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::PatternMatch::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().
bool X86TTIImpl::isExpensiveToSpeculativelyExecute | ( | const Instruction * | I | ) |
Definition at line 6372 of file X86TargetTransformInfo.cpp.
References I, and llvm::TargetTransformInfoImplBase::isExpensiveToSpeculativelyExecute().
Definition at line 6381 of file X86TargetTransformInfo.cpp.
bool X86TTIImpl::isLegalAltInstr | ( | VectorType * | VecTy, |
unsigned | Opcode0, | ||
unsigned | Opcode1, | ||
const SmallBitVector & | OpcodeMask | ||
) | const |
Definition at line 6327 of file X86TargetTransformInfo.cpp.
References assert(), llvm::X86Subtarget::hasSSE3(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), llvm::isPowerOf2_32(), llvm::SmallBitVector::size(), and llvm::SmallBitVector::test().
Referenced by getAltInstrCost().
bool X86TTIImpl::isLegalBroadcastLoad | ( | Type * | ElementTy, |
ElementCount | NumElements | ||
) | const |
Definition at line 6251 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().
Definition at line 6283 of file X86TargetTransformInfo.cpp.
References isLegalMaskedExpandLoad().
Definition at line 6259 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().
Definition at line 6321 of file X86TargetTransformInfo.cpp.
References isLegalMaskedGatherScatter().
Referenced by getGatherScatterOpCost().
Definition at line 6306 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().
Definition at line 6182 of file X86TargetTransformInfo.cpp.
References llvm::Type::getIntegerBitWidth(), getNumElements(), llvm::Type::getScalarType(), llvm::X86Subtarget::hasAVX(), hasConditionalLoadStoreForType(), llvm::Type::isBFloatTy(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), llvm::Type::isHalfTy(), llvm::Type::isIntegerTy(), and llvm::Type::isPointerTy().
Referenced by getMaskedMemoryOpCost(), and isLegalMaskedStore().
Definition at line 6360 of file X86TargetTransformInfo.cpp.
References llvm::X86Subtarget::hasAVX512(), and isLegalMaskedGatherScatter().
Referenced by getGatherScatterOpCost().
Definition at line 6212 of file X86TargetTransformInfo.cpp.
References isLegalMaskedLoad().
Referenced by getMaskedMemoryOpCost().
Definition at line 6216 of file X86TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< X86TTIImpl >::DL, llvm::DataLayout::getTypeStoreSize(), llvm::X86Subtarget::hasAVX2(), and llvm::X86Subtarget::hasSSE1().
Definition at line 6227 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().
bool X86TTIImpl::isLSRCostLess | ( | const TargetTransformInfo::LSRCost & | C1, |
const TargetTransformInfo::LSRCost & | C2 | ||
) |
Definition at line 6167 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.
bool X86TTIImpl::isProfitableToSinkOperands | ( | Instruction * | I, |
SmallVectorImpl< Use * > & | Ops | ||
) | const |
Definition at line 7048 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().
Definition at line 7018 of file X86TargetTransformInfo.cpp.
References llvm::Type::getScalarSizeInBits(), and llvm::X86Subtarget::hasAVX2().
Referenced by isProfitableToSinkOperands().
bool X86TTIImpl::prefersVectorizedAddressing | ( | ) | const |
Definition at line 6490 of file X86TargetTransformInfo.cpp.
std::optional< Value * > X86TTIImpl::simplifyDemandedUseBitsIntrinsic | ( | InstCombiner & | IC, |
IntrinsicInst & | II, | ||
APInt | DemandedMask, | ||
KnownBits & | Known, | ||
bool & | KnownBitsComputed | ||
) | const |
Definition at line 3098 of file X86InstCombineIntrinsic.cpp.
References llvm::Constant::getNullValue(), II, llvm::APInt::isZero(), llvm::APInt::setBitsFrom(), llvm::KnownBits::Zero, and llvm::APInt::zextOrTrunc().
std::optional< Value * > X86TTIImpl::simplifyDemandedVectorEltsIntrinsic | ( | InstCombiner & | IC, |
IntrinsicInst & | II, | ||
APInt | DemandedElts, | ||
APInt & | UndefElts, | ||
APInt & | UndefElts2, | ||
APInt & | UndefElts3, | ||
std::function< void(Instruction *, unsigned, APInt, APInt &)> | SimplifyAndSetOp | ||
) | const |
Definition at line 3138 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().
bool X86TTIImpl::supportsEfficientVectorElementLoadStore | ( | ) | const |
Definition at line 6494 of file X86TargetTransformInfo.cpp.