|
LLVM 24.0.0git
|
#include "Target/AArch64/AArch64TargetTransformInfo.h"
Definition at line 44 of file AArch64TargetTransformInfo.h.
|
inlineexplicit |
Definition at line 82 of file AArch64TargetTransformInfo.h.
References F, and llvm::TargetTransformInfoImplBase::getDataLayout().
|
overridevirtual |
The compiler must not inline when that may alter the behavior of the program.
This is especially relevant around SME which implements different runtime modes and maintains external state through attributes.
The compiler must not inline when:
The called function has operations that are incompatible in the mode of the caller, e.g.:
Inline asm blocks must be entered and exited in the [streaming] mode of the parent function. There is no language-level mechanism to inform the compiler that a particular inline asm block is streaming compatible, so the compiler must reject this as a candidate for inlining.
The compiler should not inline when:
If a callee is incompatible with its caller, then the inliner should prevent inlining. LLVM's alwaysinline attribute has no impact on whether a callee is inline compatible. This is especially relevant with streaming-mode attributes, where alwaysinlineing a function into a function with a different streaming mode may otherwise impact runtime behaviour.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 328 of file AArch64TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< AArch64TTIImpl >::areInlineCompatible(), CallAttrs, hasPossibleIncompatibleOps(), llvm::SMEAttrs::SM_Compatible, and llvm::SMEAttrs::SM_Enabled.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 366 of file AArch64TargetTransformInfo.cpp.
References llvm::any_of(), and llvm::TargetTransformInfoImplBase::areTypesABICompatible().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 575 of file AArch64TargetTransformInfo.h.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 121 of file AArch64TargetTransformInfo.h.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 123 of file AArch64TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5796 of file AArch64TargetTransformInfo.cpp.
References Options.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 456 of file AArch64TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 3844 of file AArch64TargetTransformInfo.cpp.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 550 of file AArch64TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5597 of file AArch64TargetTransformInfo.cpp.
References llvm::TargetTransformInfoImplBase::isConstantStridedAccessLessThan(), and llvm::Type::isVectorTy().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5183 of file AArch64TargetTransformInfo.cpp.
References A(), llvm::ISD::ADD, llvm::all_of(), B(), llvm::dyn_cast(), llvm::InstructionCost::getInvalid(), llvm::Instruction::getOpcode(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), llvm::ElementCount::getScalable(), llvm::Value::hasOneUse(), llvm::is_contained(), llvm::PatternMatch::m_BinOp(), llvm::MIPatternMatch::m_Not(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), matchBSL(), llvm::ISD::MUL, llvm::ISD::SUB, llvm::Value::use_empty(), useNeonVector(), llvm::Instruction::user_back(), and llvm::Instruction::users().
Referenced by getArithmeticReductionCost(), getArithmeticReductionCostSVE(), getIntrinsicInstrCost(), and getPartialReductionCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6930 of file AArch64TargetTransformInfo.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, assert(), llvm::cast(), llvm::CostTableLookup(), llvm::dyn_cast(), llvm::ISD::FADD, llvm::FixedVectorType::get(), getArithmeticInstrCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getArithmeticReductionCost(), getArithmeticReductionCostSVE(), llvm::APInt::getBitsSetFrom(), llvm::VectorType::getElementCount(), llvm::VectorType::getElementType(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::InstructionCost::getInvalid(), getMaxNumElements(), llvm::ElementCount::getScalable(), getScalarizationOverhead(), llvm::Type::getScalarType(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::MVT::getVectorNumElements(), llvm::isa(), llvm::Type::isBFloatTy(), llvm::Type::isIntOrIntVectorTy(), llvm::isPowerOf2_32(), llvm::MVT::isVector(), llvm::Log2_32(), llvm::ISD::OR, llvm::TargetTransformInfo::requiresOrderedReduction(), and llvm::ISD::XOR.
| InstructionCost AArch64TTIImpl::getArithmeticReductionCostSVE | ( | unsigned | Opcode, |
| VectorType * | ValTy, | ||
| TTI::TargetCostKind | CostKind ) const |
Definition at line 6904 of file AArch64TargetTransformInfo.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, assert(), llvm::ISD::FADD, getArithmeticInstrCost(), llvm::Type::getContext(), llvm::InstructionCost::getInvalid(), llvm::EVT::getTypeForEVT(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::ISD::OR, and llvm::ISD::XOR.
Referenced by getArithmeticReductionCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 620 of file AArch64TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 4064 of file AArch64TargetTransformInfo.cpp.
References llvm::ISD::ADDRSPACECAST, assert(), llvm::ISD::BITCAST, llvm::EVT::bitsGT(), llvm::cast(), llvm::ConvertCostTableLookup(), llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::dyn_cast(), llvm::ISD::FP_EXTEND, llvm::ISD::FP_ROUND, llvm::ISD::FP_TO_SINT, llvm::ISD::FP_TO_UINT, llvm::ScalableVectorType::get(), llvm::APInt::getAllOnes(), getCastInstrCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getCastInstrCost(), llvm::InstructionCost::getInvalid(), llvm::ElementCount::getScalable(), getScalarizationOverhead(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getScalarizationOverhead(), llvm::EVT::getScalarSizeInBits(), llvm::Type::getScalarSizeInBits(), llvm::EVT::getScalarType(), llvm::EVT::getSimpleVT(), llvm::Value::getType(), llvm::EVT::getTypeForEVT(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), getVectorInstrCost(), llvm::EVT::getVectorNumElements(), llvm::Type::getWithNewBitWidth(), I, llvm::is_contained(), llvm::isa(), isExtPartOfAvgExpr(), llvm::EVT::isFixedLengthVector(), llvm::isPowerOf2_32(), llvm::EVT::isScalableVector(), llvm::EVT::isSimple(), llvm::PatternMatch::m_APInt(), llvm::PatternMatch::m_Cmp(), llvm::PatternMatch::m_Instruction(), llvm::PatternMatch::m_SExt(), llvm::PatternMatch::m_Shl(), llvm::PatternMatch::m_Specific(), llvm::PatternMatch::m_Value(), llvm::TargetTransformInfo::Masked, llvm::PatternMatch::match(), llvm::TargetTransformInfo::None, llvm::TargetTransformInfo::Normal, Operands, llvm::ISD::SIGN_EXTEND, llvm::ISD::SINT_TO_FP, llvm::AArch64::SVEBitsPerBlock, llvm::TargetTransformInfo::TCK_CodeSize, llvm::ISD::TRUNCATE, llvm::TargetLoweringBase::TypePromoteInteger, llvm::TargetLoweringBase::TypeSplitVector, llvm::ISD::UINT_TO_FP, llvm::APInt::ule(), useNeonVector(), and llvm::ISD::ZERO_EXTEND.
Referenced by getCastInstrCost(), getCmpSelInstrCost(), getExtractWithExtendCost(), getFP16BF16PromoteCost(), getIntrinsicInstrCost(), and getSpliceCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 4884 of file AArch64TargetTransformInfo.cpp.
References assert(), I, and llvm::TargetTransformInfo::TCK_RecipThroughput.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5654 of file AArch64TargetTransformInfo.cpp.
References llvm::any_of(), llvm::CmpInst::BAD_ICMP_PREDICATE, llvm::cast(), llvm::ConvertCostTableLookup(), llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::equal_to(), llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_OGE, llvm::CmpInst::FCMP_OGT, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::FCMP_ONE, llvm::CmpInst::FCMP_ORD, llvm::CmpInst::FCMP_UEQ, llvm::CmpInst::FCMP_UNE, llvm::CmpInst::FCMP_UNO, llvm::BasicTTIImplBase< AArch64TTIImpl >::getCallInstrCost(), getCastInstrCost(), getCmpSelInstrCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getCmpSelInstrCost(), getFP16BF16PromoteCost(), llvm::VectorType::getInteger(), llvm::EVT::getSimpleVT(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), hasKnownLowerThroughputFromSchedulingModel(), I, llvm::CmpInst::ICMP_SGE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLE, llvm::CmpInst::ICMP_SLT, llvm::isa(), llvm::Type::isIntegerTy(), llvm::CmpInst::isIntPredicate(), llvm::EVT::isSimple(), llvm::CmpInst::isUnsigned(), llvm::MIPatternMatch::m_AllOnes(), llvm::PatternMatch::m_And(), llvm::PatternMatch::m_Cmp(), llvm::PatternMatch::m_One(), llvm::PatternMatch::m_Select(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::m_Zero(), llvm::PatternMatch::match(), llvm::TargetTransformInfo::None, llvm::TargetTransformInfo::TCK_Latency, and llvm::TargetTransformInfo::TCK_RecipThroughput.
Referenced by getCmpSelInstrCost(), getIntrinsicInstrCost(), and getSpliceCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6238 of file AArch64TargetTransformInfo.cpp.
References llvm::cast(), getMemoryOpCost(), I, and llvm::TargetTransformInfo::TCK_RecipThroughput.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7796 of file AArch64TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7078 of file AArch64TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::BasicTTIImplBase< AArch64TTIImpl >::getExtendedReductionCost(), llvm::EVT::getFixedSizeInBits(), llvm::EVT::getSizeInBits(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::EVT::isScalableVectorOf(), llvm::EVT::isScalableVT(), llvm::EVT::isSimple(), and llvm::BasicTTIImplBase< AArch64TTIImpl >::isTypeLegal().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 4825 of file AArch64TargetTransformInfo.cpp.
References assert(), llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, getCastInstrCost(), llvm::VectorType::getElementType(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), getVectorInstrCost(), llvm::isa(), llvm_unreachable, and llvm::TargetTransformInfo::None.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 270 of file AArch64TargetTransformInfo.cpp.
References extractAttrFeatures(), F, and llvm::AArch64::getCpuSupportsMask().
| std::optional< InstructionCost > AArch64TTIImpl::getFP16BF16PromoteCost | ( | Type * | Ty, |
| TTI::TargetCostKind | CostKind, | ||
| TTI::OperandValueInfo | Op1Info, | ||
| TTI::OperandValueInfo | Op2Info, | ||
| bool | IncludeTrunc, | ||
| bool | CanUseSVE, | ||
| std::function< InstructionCost(Type *)> | InstCost ) const |
FP16 and BF16 operations are lowered to fptrunc(op(fpext, fpext) if the architecture features are not present.
Definition at line 5159 of file AArch64TargetTransformInfo.cpp.
References getCastInstrCost(), llvm::Type::getFloatTy(), llvm::Type::getWithNewType(), llvm::TargetTransformInfo::OperandValueInfo::isConstant(), and llvm::TargetTransformInfo::None.
Referenced by getCmpSelInstrCost().
| InstructionCost AArch64TTIImpl::getGatherScatterOpCost | ( | const MemIntrinsicCostAttributes & | MICA, |
| TTI::TargetCostKind | CostKind ) const |
Definition at line 5921 of file AArch64TargetTransformInfo.cpp.
References llvm::cast(), llvm::MemIntrinsicCostAttributes::getAlignment(), llvm::MemIntrinsicCostAttributes::getDataType(), llvm::MemIntrinsicCostAttributes::getID(), llvm::MemIntrinsicCostAttributes::getInst(), llvm::InstructionCost::getInvalid(), getMaxNumElements(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getMemIntrinsicInstrCost(), getMemoryOpCost(), llvm::ElementCount::getScalable(), getSVEGatherScatterOverhead(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), I, isElementTypeLegalForScalableVector(), and isLegalMaskedGatherScatter().
Referenced by getMemIntrinsicInstrCost().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 471 of file AArch64TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5120 of file AArch64TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< AArch64TTIImpl >::getIndexedVectorInstrCostFromEnd(), llvm::isa(), and llvm::TargetTransformInfo::TCK_CodeSize.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 391 of file AArch64TargetTransformInfo.cpp.
References Call, CallAttrs, F, and llvm::SMECallAttrs::requiresSMChange().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6147 of file AArch64TargetTransformInfo.cpp.
References assert(), llvm::cast(), llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::VectorType::get(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getInterleavedMemoryOpCost(), llvm::InstructionCost::getInvalid(), getMemIntrinsicInstrCost(), getMemoryOpCost(), llvm::ElementCount::getScalable(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::Type::isScalableTy(), llvm::Log2_64(), and SubVecTy.
|
overridevirtual |
Calculate the cost of materializing the given constant.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 466 of file AArch64TargetTransformInfo.cpp.
References llvm::APInt::ashr(), assert(), getIntImmCost(), llvm::APInt::getSExtValue(), Imm, and llvm::APInt::sextOrTrunc().
| InstructionCost AArch64TTIImpl::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 450 of file AArch64TargetTransformInfo.cpp.
References llvm::AArch64_IMM::expandMOVImm(), llvm::AArch64_AM::isLogicalImmediate(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by getIntImmCost(), getIntImmCostInst(), and getIntImmCostIntrin().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 491 of file AArch64TargetTransformInfo.cpp.
References assert(), getIntImmCost(), Imm, llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 560 of file AArch64TargetTransformInfo.cpp.
References assert(), getIntImmCost(), Imm, llvm::isInt(), llvm::TargetTransformInfo::TCC_Basic, and llvm::TargetTransformInfo::TCC_Free.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 674 of file AArch64TargetTransformInfo.cpp.
References _, llvm::any_of(), llvm::FastMathFlags::approxFunc(), C(), llvm::cast(), llvm::CostTableLookup(), llvm::ISD::CTPOP, llvm::ISD::CTTZ_ELTS, llvm::divideCeil(), llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::dyn_cast(), llvm::dyn_cast_or_null(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::equal_to(), llvm::CmpInst::FCMP_UNO, llvm::FMul, llvm::FixedVectorType::get(), llvm::VectorType::get(), llvm::IntrinsicCostAttributes::getArgs(), llvm::IntrinsicCostAttributes::getArgTypes(), getArithmeticInstrCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getCallInstrCost(), getCastInstrCost(), getCmpSelInstrCost(), llvm::TargetTransformInfoImplBase::getDataLayout(), llvm::Instruction::getFastMathFlags(), llvm::Type::getFloatTy(), getHistogramCost(), llvm::IntrinsicCostAttributes::getID(), llvm::IntrinsicCostAttributes::getInst(), llvm::Type::getInt64Ty(), llvm::Type::getInt8Ty(), llvm::Type::getIntNTy(), getIntrinsicInstrCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getIntrinsicInstrCost(), llvm::InstructionCost::getInvalid(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::TargetTransformInfo::getOperandInfo(), llvm::IntrinsicCostAttributes::getReturnType(), llvm::ElementCount::getScalable(), llvm::MVT::getScalableVectorVT(), llvm::EVT::getScalarSizeInBits(), llvm::MVT::getScalarSizeInBits(), llvm::Type::getScalarType(), llvm::EVT::getSimpleVT(), llvm::Constant::getSplatValue(), llvm::Value::getType(), llvm::EVT::getTypeForEVT(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::DataLayout::getTypeSizeInBits(), llvm::MVT::getVectorElementType(), getVectorInstrCost(), llvm::EVT::getVectorMinNumElements(), llvm::EVT::getVectorNumElements(), llvm::Type::getWithNewBitWidth(), llvm::CmpInst::ICMP_UGT, llvm::is_contained(), llvm::isa(), llvm::TargetTransformInfo::OperandValueInfo::isConstant(), llvm::Type::isDoubleTy(), llvm::EVT::isFixedLengthVector(), llvm::MVT::isFixedLengthVector(), llvm::Type::isFloatTy(), llvm::Type::isHalfTy(), llvm::Type::isIntegerTy(), llvm::isPowerOf2_64(), llvm::MVT::isScalableVector(), llvm::EVT::isSimple(), llvm::BasicTTIImplBase< AArch64TTIImpl >::isTypeLegal(), llvm::TargetTransformInfo::OperandValueInfo::isUniform(), isUnpackedVectorVT(), llvm::InstructionCost::isValid(), llvm::MVT::isVector(), llvm::ConstantInt::isZero(), llvm::ISD::MULHU, llvm::FastMathFlags::noInfs(), llvm::TargetTransformInfo::None, llvm::FastMathFlags::noSignedZeros(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::AArch64::SVEBitsPerBlock, llvm::TargetTransformInfo::TCC_Free, llvm::TargetLoweringBase::TypeLegal, and llvm::TargetLoweringBase::TypeSplitVector.
Referenced by getIntrinsicInstrCost(), and getMinMaxReductionCost().
| InstructionCost AArch64TTIImpl::getMaskedMemoryOpCost | ( | const MemIntrinsicCostAttributes & | MICA, |
| TTI::TargetCostKind | CostKind ) const |
Definition at line 5835 of file AArch64TargetTransformInfo.cpp.
References llvm::cast(), llvm::MemIntrinsicCostAttributes::getAlignment(), llvm::MemIntrinsicCostAttributes::getDataType(), llvm::MemIntrinsicCostAttributes::getID(), llvm::InstructionCost::getInvalid(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getMemIntrinsicInstrCost(), llvm::ElementCount::getScalable(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::is_contained(), isLegalMaskedCompressStore(), isLegalMaskedExpandLoad(), and useNeonVector().
Referenced by getMemIntrinsicInstrCost(), and getMemoryOpCost().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 276 of file AArch64TargetTransformInfo.h.
References uint64_t.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6327 of file AArch64TargetTransformInfo.cpp.
References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), and llvm::ElementCount::isScalar().
|
inline |
Try to return an estimate cost factor that can be used as a multiplier when scalarizing an operation for a vector with ElementCount VF.
For scalable vectors this currently takes the most pessimistic view based upon the maximum possible value for vscale.
Definition at line 168 of file AArch64TargetTransformInfo.h.
References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), and llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable().
Referenced by getArithmeticReductionCost(), and getGatherScatterOpCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5819 of file AArch64TargetTransformInfo.cpp.
References getGatherScatterOpCost(), llvm::MemIntrinsicCostAttributes::getID(), getMaskedMemoryOpCost(), and llvm::BasicTTIImplBase< AArch64TTIImpl >::getMemIntrinsicInstrCost().
Referenced by getInterleavedMemoryOpCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5968 of file AArch64TargetTransformInfo.cpp.
References llvm::cast(), llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::InstructionCost::getInvalid(), getMaskedMemoryOpCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getMemoryOpCost(), llvm::ElementCount::getScalable(), llvm::EVT::getScalarSizeInBits(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), getValue(), llvm::EVT::getVectorElementType(), llvm::EVT::getVectorNumElements(), I, llvm::isPowerOf2_32(), llvm::MCSchedClassDesc::isValid(), llvm::MCSchedClassDesc::isVariant(), llvm_unreachable, llvm::NextPowerOf2(), llvm::Offset, llvm::SmallVectorImpl< T >::pop_back_val(), llvm::PowerOf2Ceil(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::TargetTransformInfo::TCK_CodeSize, llvm::TargetTransformInfo::TCK_Latency, llvm::TargetTransformInfo::TCK_SizeAndLatency, TII, and useNeonVector().
Referenced by getCostOfKeepingLiveOverCall(), getGatherScatterOpCost(), and getInterleavedMemoryOpCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6878 of file AArch64TargetTransformInfo.cpp.
References llvm::dyn_cast(), getIntrinsicInstrCost(), llvm::InstructionCost::getInvalid(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getMinMaxReductionCost(), llvm::ElementCount::getScalable(), llvm::EVT::getTypeForEVT(), and llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 567 of file AArch64TargetTransformInfo.h.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 475 of file AArch64TargetTransformInfo.h.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 153 of file AArch64TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7113 of file AArch64TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::BasicTTIImplBase< AArch64TTIImpl >::getMulAccReductionCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), and llvm::EVT::isSimple().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 127 of file AArch64TargetTransformInfo.h.
References llvm::Vector.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6709 of file AArch64TargetTransformInfo.cpp.
References llvm::CallBase::arg_size(), llvm::dyn_cast(), llvm::PoisonValue::get(), llvm::CallBase::getArgOperand(), llvm::IntrinsicInst::getIntrinsicID(), and llvm::Value::getType().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7195 of file AArch64TargetTransformInfo.cpp.
References assert(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::divideCoefficientBy(), llvm::VectorType::get(), getArithmeticInstrCost(), llvm::Type::getContext(), llvm::EVT::getEVT(), llvm::InstructionCost::getInvalid(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getPartialReductionCost(), llvm::Type::getScalarSizeInBits(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::Invalid, llvm::is_contained(), llvm::Type::isFloatingPointTy(), llvm::TargetTransformInfo::PR_None, llvm::TargetTransformInfo::PR_SignExtend, llvm::MVT::SimpleTy, llvm::TargetTransformInfo::TCC_Basic, llvm::TargetTransformInfo::TCK_RecipThroughput, llvm::TargetLoweringBase::TypeLegal, llvm::TargetLoweringBase::TypePromoteInteger, and llvm::TargetLoweringBase::TypeSplitVector.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6704 of file AArch64TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< AArch64TTIImpl >::getPeelingPreferences().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 612 of file AArch64TargetTransformInfo.cpp.
References assert(), llvm::isPowerOf2_32(), llvm::TargetTransformInfo::PSK_FastHardware, and llvm::TargetTransformInfo::PSK_Software.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 479 of file AArch64TargetTransformInfo.h.
References llvm::DataAndControlFlow, and llvm::DataWithoutLaneMask.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 276 of file AArch64TargetTransformInfo.cpp.
References extractAttrFeatures(), F, and llvm::AArch64::getFMVPriority().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 3851 of file AArch64TargetTransformInfo.cpp.
References llvm::TypeSize::getFixed(), llvm::TypeSize::getScalable(), llvm_unreachable, llvm::TargetTransformInfo::RGK_FixedWidthVector, llvm::TargetTransformInfo::RGK_ScalableVector, and llvm::TargetTransformInfo::RGK_Scalar.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5136 of file AArch64TargetTransformInfo.cpp.
References llvm::InstructionCost::getInvalid(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getScalarizationOverhead(), llvm::isa(), llvm::APInt::popcount(), and llvm::TargetTransformInfo::TCK_CodeSize.
Referenced by getArithmeticReductionCost(), and getCastInstrCost().
|
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 7842 of file AArch64TargetTransformInfo.cpp.
References llvm::TargetLoweringBase::AddrMode::BaseGV, llvm::TargetLoweringBase::AddrMode::BaseOffs, llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::StackOffset::getFixed(), llvm::InstructionCost::getInvalid(), llvm::StackOffset::getScalable(), llvm::TargetLoweringBase::AddrMode::HasBaseReg, llvm::BasicTTIImplBase< AArch64TTIImpl >::isLegalAddressingMode(), llvm::TargetLoweringBase::AddrMode::ScalableOffset, and llvm::TargetLoweringBase::AddrMode::Scale.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7401 of file AArch64TargetTransformInfo.cpp.
References llvm::all_of(), assert(), llvm::cast(), llvm::CostTableLookup(), llvm::drop_begin(), llvm::enumerate(), llvm::VectorType::get(), llvm::VectorType::getElementCount(), llvm::ElementCount::getFixed(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::FixedVectorType::getNumElements(), llvm::getPerfectShuffleCost(), llvm::Type::getPrimitiveSizeInBits(), llvm::Type::getScalarType(), getShuffleCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getShuffleCost(), getSpliceCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::Value::hasOneUse(), llvm::BasicTTIImplBase< AArch64TTIImpl >::improveShuffleKindFromMask(), llvm::isa(), llvm::ShuffleVectorInst::isDeInterleaveMaskOfFactor(), llvm::isDUPFirstSegmentMask(), llvm::isDUPQMask(), llvm::ShuffleVectorInst::isInterleaveMask(), isLegalBroadcastLoad(), llvm::isREVMask(), llvm::Type::isScalableTy(), llvm::isTRNMask(), llvm::isUZPMask(), llvm::isZIPMask(), N, llvm::PoisonMaskElem, llvm::SmallVectorTemplateBase< T, bool >::push_back(), 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::AArch64::SVEBitsPerBlock, llvm::TargetTransformInfo::TCK_CodeSize, and llvm::Instruction::user_begin().
Referenced by getShuffleCost().
| InstructionCost AArch64TTIImpl::getSpliceCost | ( | VectorType * | Tp, |
| int | Index, | ||
| TTI::TargetCostKind | CostKind ) const |
Definition at line 7136 of file AArch64TargetTransformInfo.cpp.
References llvm::CmpInst::BAD_ICMP_PREDICATE, llvm::CostTableLookup(), getCastInstrCost(), getCmpSelInstrCost(), llvm::Type::getContext(), llvm::VectorType::getElementCount(), llvm::InstructionCost::getInvalid(), llvm::ElementCount::getScalable(), llvm::EVT::getSimpleVT(), llvm::EVT::getTypeForEVT(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::TargetTransformInfo::None, and llvm::TargetTransformInfo::SK_Splice.
Referenced by getShuffleCost().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 556 of file AArch64TargetTransformInfo.h.
References llvm::BasicTTIImplBase< AArch64TTIImpl >::getStoreMinimumVF(), llvm::Type::isIntegerTy(), and llvm::isPowerOf2_32().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6752 of file AArch64TargetTransformInfo.cpp.
References llvm::CallBase::arg_size(), llvm::CallBase::getArgOperand(), and llvm::IntrinsicInst::getIntrinsicID().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6601 of file AArch64TargetTransformInfo.cpp.
References llvm::cast(), llvm::TargetTransformInfo::UnrollingPreferences::DefaultUnrollRuntimeCount, F, llvm::TargetTransformInfo::UnrollingPreferences::Force, llvm::AArch64Subtarget::Generic, getAppleRuntimeUnrollPreferences(), llvm::ScalarEvolution::getBackedgeTakenCount(), llvm::getBooleanLoopAttribute(), getCalledFunction(), getFalkorUnrollingPreferences(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getUnrollingPreferences(), I, llvm::isa(), llvm::ScalarEvolution::isBackedgeTakenCountMaxOrZero(), llvm::TargetTransformInfoImplBase::isLoweredToCall(), llvm::TargetTransformInfo::UnrollingPreferences::MaxUpperBound, Operands, llvm::TargetTransformInfo::UnrollingPreferences::Partial, llvm::TargetTransformInfo::UnrollingPreferences::PartialOptSizeThreshold, llvm::TargetTransformInfo::UnrollingPreferences::PartialThreshold, llvm::TargetTransformInfo::UnrollingPreferences::Runtime, llvm::TargetTransformInfo::UnrollingPreferences::RuntimeUnrollMultiExit, llvm::TargetTransformInfo::UnrollingPreferences::SCEVExpansionBudget, shouldUnrollMultiExitLoop(), llvm::TargetTransformInfo::TCK_SizeAndLatency, llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJam, llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJamInnerLoopThreshold, llvm::TargetTransformInfo::UnrollingPreferences::UnrollRemainder, and llvm::TargetTransformInfo::UnrollingPreferences::UpperBound.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5112 of file AArch64TargetTransformInfo.cpp.
References I.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5090 of file AArch64TargetTransformInfo.cpp.
References llvm::isa().
Referenced by getCastInstrCost(), getExtractWithExtendCost(), and getIntrinsicInstrCost().
|
overridevirtual |
| 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::TargetTransformInfoImplBase.
Definition at line 5103 of file AArch64TargetTransformInfo.cpp.
References Scalar.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 157 of file AArch64TargetTransformInfo.h.
| bool AArch64TTIImpl::hasKnownLowerThroughputFromSchedulingModel | ( | unsigned | Opcode1, |
| unsigned | Opcode2 ) const |
Check whether Opcode1 has less throughput according to the scheduling model than Opcode2.
For variant scheduling classes, the lowest throughput of Opcode1 and the highest throughput of Opcode2 are compared among all the scheduling classes they may be resolved to.
Definition at line 5621 of file AArch64TargetTransformInfo.cpp.
References llvm::append_range(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::MCSchedModel::getReciprocalThroughput(), llvm::MCSchedClassDesc::isValid(), llvm::MCSchedClassDesc::isVariant(), llvm::SmallVectorImpl< T >::pop_back_val(), and TII.
Referenced by getCmpSelInstrCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6279 of file AArch64TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::ActiveLaneMask, llvm::TargetTransformInfo::ArbitraryPredicate, llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::isa(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isKnownMultipleOf(), llvm::isPowerOf2_32(), llvm::TargetTransformInfo::None, and llvm::AArch64::SVEBitsPerBlock.
| bool AArch64TTIImpl::hasPossibleIncompatibleOps | ( | const Function * | F, |
| bool | ConsiderZA, | ||
| bool | ConsiderZT, | ||
| bool | ConsiderSM ) const |
Returns true if the function has explicit operations that can only be lowered using incompatible instructions for the selected mode.
This also returns true if the function F may use or modify ZA state.
Definition at line 178 of file AArch64TargetTransformInfo.cpp.
References llvm::any_of(), CallAttrs, llvm::cast(), llvm::dyn_cast(), F, llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), I, II, llvm::isa(), isValid(), T, and llvm::TargetTransformInfo::TCK_RecipThroughput.
Referenced by areInlineCompatible().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 3689 of file AArch64TargetTransformInfo.cpp.
References constructSVEIntrinsicInfo(), llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, I, II, instCombineConvertFromSVBool(), instCombineDMB(), instCombineInStreamingMode(), instCombineLD1GatherIndex(), instCombineMaxMinNM(), instCombinePTrue(), instCombineRDFFR(), instCombineSMECntsd(), instCombineST1ScatterIndex(), instCombineSVEAnd(), instCombineSVECmpNE(), instCombineSVECntElts(), instCombineSVECondLast(), instCombineSVEDup(), instCombineSVEDupqLane(), instCombineSVEDupX(), instCombineSVEInsr(), instCombineSVELast(), instCombineSVELD1(), instCombineSVEOrr(), instCombineSVEPairwiseAddLong(), instCombineSVEPTest(), instCombineSVESDIV(), instCombineSVESel(), instCombineSVESrshl(), instCombineSVEST1(), instCombineSVETBL(), instCombineSVEUMin(), instCombineSVEUnpack(), instCombineSVEUxt(), instCombineSVEUzp1(), instCombineSVEVectorAdd(), instCombineSVEVectorBinOp(), instCombineSVEVectorFAdd(), instCombineSVEVectorFAddU(), instCombineSVEVectorFSub(), instCombineSVEVectorFSubU(), instCombineSVEVectorFuseMulAddSub(), instCombineSVEVectorMlaU(), instCombineSVEVectorSub(), instCombineSVEZip(), instCombineWhilelo(), instCombineXorSVECmpCC(), and simplifySVEIntrinsic().
Definition at line 353 of file AArch64TargetTransformInfo.h.
References assert(), and llvm::is_contained().
Referenced by isLegalMaskedCompressStore().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 313 of file AArch64TargetTransformInfo.h.
Referenced by getGatherScatterOpCost(), isLegalMaskedCompressStore(), isLegalMaskedExpandLoad(), isLegalMaskedGatherScatter(), isLegalMaskedLoadStore(), and isLegalToVectorizeReduction().
| bool AArch64TTIImpl::isExtPartOfAvgExpr | ( | const Instruction * | ExtUser, |
| Type * | Dst, | ||
| Type * | Src ) const |
Definition at line 4022 of file AArch64TargetTransformInfo.cpp.
References llvm::Add, llvm::cast(), llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::dyn_cast_or_null(), llvm::Instruction::getOpcode(), llvm::Value::hasOneUse(), llvm::PatternMatch::m_c_Add(), llvm::PatternMatch::m_Instruction(), llvm::PatternMatch::m_One(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::m_ZExtOrSExt(), and llvm::PatternMatch::match().
Referenced by getCastInstrCost().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 390 of file AArch64TargetTransformInfo.h.
References llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::Type::getScalarSizeInBits(), and llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable().
Referenced by getShuffleCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 8471 of file AArch64TargetTransformInfo.cpp.
References llvm::Type::getInt32Ty(), llvm::Type::getInt64Ty(), llvm::EVT::getTypeForEVT(), llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::isa(), isElementTypeLegalForCompressStore(), and isElementTypeLegalForScalableVector().
Referenced by getMaskedMemoryOpCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6252 of file AArch64TargetTransformInfo.cpp.
References llvm::Type::getScalarType(), isElementTypeLegalForScalableVector(), and useNeonVector().
Referenced by getMaskedMemoryOpCost().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 382 of file AArch64TargetTransformInfo.h.
References isLegalMaskedGatherScatter().
Definition at line 369 of file AArch64TargetTransformInfo.h.
References llvm::dyn_cast(), and isElementTypeLegalForScalableVector().
Referenced by getGatherScatterOpCost(), isLegalMaskedGather(), and isLegalMaskedScatter().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 341 of file AArch64TargetTransformInfo.h.
References isLegalMaskedLoadStore().
Definition at line 328 of file AArch64TargetTransformInfo.h.
References llvm::BasicTTIImplBase< AArch64TTIImpl >::getTypeLegalizationCost(), llvm::isa(), and isElementTypeLegalForScalableVector().
Referenced by isLegalMaskedLoad(), and isLegalMaskedStore().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 386 of file AArch64TargetTransformInfo.h.
References isLegalMaskedGatherScatter().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 347 of file AArch64TargetTransformInfo.h.
References isLegalMaskedLoadStore().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 442 of file AArch64TargetTransformInfo.h.
References llvm::TargetTransformInfoImplBase::isLegalNTLoad(), and isLegalNTStoreLoad().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 435 of file AArch64TargetTransformInfo.h.
References llvm::TargetTransformInfoImplBase::isLegalNTStore(), and isLegalNTStoreLoad().
|
inline |
Definition at line 408 of file AArch64TargetTransformInfo.h.
References llvm::dyn_cast(), and llvm::isPowerOf2_64().
Referenced by isLegalNTLoad(), and isLegalNTStore().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6267 of file AArch64TargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::isPowerOf2_64(), and llvm::Size.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6843 of file AArch64TargetTransformInfo.cpp.
References llvm::Add, llvm::AddChainWithSubs, llvm::And, llvm::AnyOf, llvm::FAdd, llvm::FAddChainWithSubs, llvm::FindLast, llvm::FMax, llvm::FMin, llvm::FMulAdd, llvm::FSub, llvm::RecurrenceDescriptor::getRecurrenceKind(), llvm::RecurrenceDescriptor::getRecurrenceType(), isElementTypeLegalForScalableVector(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::isScalable(), llvm::Or, llvm::SMax, llvm::SMin, llvm::Sub, llvm::UMax, llvm::UMin, and llvm::Xor.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7883 of file AArch64TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::LSRCost::AddRecCost, C1, llvm::TargetTransformInfo::LSRCost::ImmCost, llvm::TargetTransformInfo::LSRCost::Insns, llvm::TargetTransformInfoImplBase::isLSRCostLess(), llvm::TargetTransformInfo::LSRCost::NumBaseAdds, llvm::TargetTransformInfo::LSRCost::NumIVMuls, llvm::TargetTransformInfo::LSRCost::NumPrePostIndex, llvm::TargetTransformInfo::LSRCost::NumRegs, llvm::TargetTransformInfo::LSRCost::ScaleCost, and llvm::TargetTransformInfo::LSRCost::SetupCost.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 282 of file AArch64TargetTransformInfo.cpp.
References F.
|
overridevirtual |
Check if sinking I's operands to I's basic block is profitable, because the operands can be folded into a target instruction, e.g.
shufflevectors extracts and/or sext/zext can be folded into (u,s)subl(2).
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 8057 of file AArch64TargetTransformInfo.cpp.
References A(), AbstractManglingParser< Derived, Alloc >::Ops, llvm::any_of(), areExtractExts(), areExtractShuffleVectors(), areOperandsOfVmullHighP64(), B(), llvm::cast(), Cond, llvm::BasicTTIImplBase< AArch64TTIImpl >::DL, llvm::dyn_cast(), getCondition(), llvm::APInt::getHighBitsSet(), llvm::getInterleaveIntrinsicFactor(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::Instruction::getOpcode(), llvm::User::getOperand(), llvm::User::getOperandUse(), I, II, llvm::isa(), isFNeg(), isSplatShuffle(), llvm::ConstantInt::isZero(), llvm::PatternMatch::m_And(), llvm::PatternMatch::m_c_BinOp(), llvm::PatternMatch::m_ConstantInt(), llvm::PatternMatch::m_InsertElt(), llvm::PatternMatch::m_Load(), llvm::MIPatternMatch::m_Not(), llvm::PatternMatch::m_SExt(), llvm::PatternMatch::m_Shift(), llvm::PatternMatch::m_Shuffle(), llvm::PatternMatch::m_Value(), llvm::MIPatternMatch::m_ZeroInt(), llvm::PatternMatch::m_ZExtOrSExt(), llvm::MaskedValueIsZero(), llvm::PatternMatch::match(), matchBSL(), shouldSinkVectorOfPtrs(), and shouldSinkVScale().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 548 of file AArch64TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7791 of file AArch64TargetTransformInfo.cpp.
References llvm::valueOr().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 499 of file AArch64TargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 5814 of file AArch64TargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7800 of file AArch64TargetTransformInfo.cpp.
References llvm::LoopBase< BlockT, LoopT >::blocks(), containsDecreasingPointers(), llvm::Disabled, llvm::LoopVectorizationLegality::getDominatorTree(), llvm::LoopVectorizationLegality::getFixedOrderRecurrences(), llvm::LoopVectorizationLegality::getLoop(), llvm::LoopVectorizationLegality::getPredicatedScalarEvolution(), llvm::LoopVectorizationLegality::getReductionVars(), llvm::InterleavedAccessInfo::hasGroups(), llvm::TailFoldingInfo::IAI, llvm::TailFoldingInfo::LVL, llvm::Recurrences, llvm::Reductions, llvm::Reverse, llvm::Simple, llvm::MapVector< KeyT, ValueT, MapType, VectorType, N >::size(), llvm::SmallPtrSetImplBase::size(), and TailFoldingOptionLoc.
|
overridevirtual |
See if I should be considered for address type promotion.
We check if I is a sext with right type and used in memory accesses. If it used in a "complex" getelementptr, we allow it to be promoted without finding other sext instructions that sign extended the same initial value. A getelementptr is considered as "complex" if it has more than 2 operands.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 6816 of file AArch64TargetTransformInfo.cpp.
References llvm::dyn_cast(), llvm::Type::getInt64Ty(), I, and llvm::isa().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 467 of file AArch64TargetTransformInfo.h.
References II.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 426 of file AArch64TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::FixedOrScalable, llvm::TargetTransformInfo::FixedWidth, llvm::Type::isIntegerTy(), and llvm::TargetTransformInfo::Scalable.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 7865 of file AArch64TargetTransformInfo.cpp.
References I, llvm::isa(), and llvm::TargetTransformInfoImplBase::shouldTreatInstructionLikeSelect().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 3818 of file AArch64TargetTransformInfo.cpp.
References II.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 490 of file AArch64TargetTransformInfo.h.
Definition at line 5964 of file AArch64TargetTransformInfo.cpp.
References llvm::isa().
Referenced by getArithmeticInstrCost(), getCastInstrCost(), getMaskedMemoryOpCost(), getMemoryOpCost(), and isLegalMaskedExpandLoad().