LLVM 20.0.0git
|
#include "Target/ARM/ARMTargetTransformInfo.h"
Definition at line 57 of file ARMTargetTransformInfo.h.
|
inlineexplicit |
Definition at line 103 of file ARMTargetTransformInfo.h.
Definition at line 87 of file ARMTargetTransformInfo.cpp.
References llvm::TargetLoweringBase::getTargetMachine().
|
inline |
Definition at line 110 of file ARMTargetTransformInfo.h.
|
inline |
Definition at line 193 of file ARMTargetTransformInfo.h.
Referenced by forceScalarizeMaskedScatter().
|
inline |
Definition at line 201 of file ARMTargetTransformInfo.h.
References forceScalarizeMaskedGather().
InstructionCost ARMTTIImpl::getAddressComputationCost | ( | Type * | Val, |
ScalarEvolution * | SE, | ||
const SCEV * | Ptr | ||
) |
Definition at line 1068 of file ARMTargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< ARMTTIImpl >::getAddressComputationCost(), llvm::TargetTransformInfoImplBase::isConstantStridedAccessLessThan(), llvm::Type::isVectorTy(), and Ptr.
InstructionCost ARMTTIImpl::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 = std::nullopt , |
||
const Instruction * | CxtI = nullptr |
||
) |
Definition at line 1330 of file ARMTargetTransformInfo.cpp.
References llvm::ISD::AND, CostKind, llvm::CostTableLookup(), getArithmeticInstrCost(), llvm::BasicTTIImplBase< ARMTTIImpl >::getArithmeticInstrCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::BasicTTIImplBase< ARMTTIImpl >::getScalarizationOverhead(), llvm::Type::getScalarType(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::Value::hasOneUse(), if(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::TargetTransformInfo::OperandValueInfo::isConstant(), llvm::Type::isIntegerTy(), llvm::TargetLoweringBase::isOperationLegalOrCustomOrPromote(), llvm::Instruction::isShift(), llvm::ARMSubtarget::isThumb1Only(), llvm::TargetTransformInfo::OperandValueInfo::isUniform(), llvm::Type::isVectorTy(), llvm::ISD::OR, llvm::ISD::SDIV, llvm::ISD::SREM, llvm::TargetTransformInfo::TCK_CodeSize, llvm::ISD::UDIV, llvm::ISD::UREM, llvm::Instruction::user_back(), and llvm::ISD::XOR.
Referenced by getArithmeticInstrCost(), getArithmeticReductionCost(), and getIntrinsicInstrCost().
InstructionCost ARMTTIImpl::getArithmeticReductionCost | ( | unsigned | Opcode, |
VectorType * | ValTy, | ||
std::optional< FastMathFlags > | FMF, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 1682 of file ARMTargetTransformInfo.cpp.
References llvm::ISD::ADD, llvm::ISD::AND, CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::ISD::FADD, llvm::ISD::FMUL, llvm::FixedVectorType::get(), getArithmeticInstrCost(), llvm::BasicTTIImplBase< ARMTTIImpl >::getArithmeticReductionCost(), llvm::VectorType::getElementType(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::EVT::getScalarSizeInBits(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::EVT::getVectorElementType(), llvm::ARMSubtarget::hasVFP2Base(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::isPowerOf2_32(), llvm::EVT::isSimple(), llvm::ISD::OR, llvm::TargetTransformInfo::requiresOrderedReduction(), and llvm::ISD::XOR.
InstructionCost ARMTTIImpl::getCastInstrCost | ( | unsigned | Opcode, |
Type * | Dst, | ||
Type * | Src, | ||
TTI::CastContextHint | CCH, | ||
TTI::TargetCostKind | CostKind, | ||
const Instruction * | I = nullptr |
||
) |
Definition at line 478 of file ARMTargetTransformInfo.cpp.
References llvm::ISD::ADD, assert(), llvm::ConvertCostTableLookup(), CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::ISD::FP_EXTEND, llvm::ISD::FP_ROUND, llvm::ISD::FP_TO_SINT, llvm::ISD::FP_TO_UINT, llvm::BasicTTIImplBase< ARMTTIImpl >::getCallInstrCost(), llvm::BasicTTIImplBase< ARMTTIImpl >::getCastInstrCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::EVT::getScalarType(), llvm::EVT::getSimpleVT(), llvm::EVT::getSizeInBits(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::EVT::getVectorNumElements(), llvm::ARMSubtarget::hasVFP2Base(), I, llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::EVT::isFixedLengthVector(), llvm::EVT::isFloatingPoint(), llvm::EVT::isInteger(), llvm::EVT::isSimple(), llvm::EVT::isVector(), llvm::TargetTransformInfo::Masked, llvm::ISD::MUL, llvm::TargetTransformInfo::Normal, llvm::ISD::SHL, llvm::ISD::SIGN_EXTEND, llvm::ISD::SINT_TO_FP, llvm::ISD::SUB, llvm::TargetTransformInfo::TCK_RecipThroughput, llvm::ISD::TRUNCATE, llvm::ISD::UINT_TO_FP, and llvm::ISD::ZERO_EXTEND.
Referenced by getIntrinsicInstrCost().
InstructionCost ARMTTIImpl::getCFInstrCost | ( | unsigned | Opcode, |
TTI::TargetCostKind | CostKind, | ||
const Instruction * | I = nullptr |
||
) |
Definition at line 464 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::getCFInstrCost(), I, and llvm::TargetTransformInfo::TCK_RecipThroughput.
InstructionCost ARMTTIImpl::getCmpSelInstrCost | ( | unsigned | Opcode, |
Type * | ValTy, | ||
Type * | CondTy, | ||
CmpInst::Predicate | VecPred, | ||
TTI::TargetCostKind | CostKind, | ||
const Instruction * | I = nullptr |
||
) |
Definition at line 921 of file ARMTargetTransformInfo.cpp.
References llvm::ConvertCostTableLookup(), CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::SelectPatternResult::Flavor, llvm::BasicTTIImplBase< ARMTTIImpl >::getCmpSelInstrCost(), getCmpSelInstrCost(), getIntrinsicInstrCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::FixedVectorType::getNumElements(), llvm::BasicTTIImplBase< ARMTTIImpl >::getScalarizationOverhead(), llvm::Type::getScalarType(), llvm::EVT::getSimpleVT(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::Value::hasOneUse(), I, llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::Type::isFPOrFPVectorTy(), llvm::Type::isIntegerTy(), llvm::Type::isIntOrIntVectorTy(), llvm::EVT::isSimple(), llvm::Type::isVectorTy(), LHS, llvm::CmpInst::makeCmpResultType(), llvm::matchSelectPattern(), RHS, llvm::ISD::SELECT, llvm::SPF_ABS, llvm::SPF_FMAXNUM, llvm::SPF_FMINNUM, llvm::SPF_SMAX, llvm::SPF_SMIN, llvm::SPF_UMAX, llvm::SPF_UMIN, llvm::TargetTransformInfo::TCC_Expensive, llvm::TargetTransformInfo::TCK_CodeSize, and llvm::Instruction::user_back().
Referenced by getCmpSelInstrCost(), and getIntrinsicInstrCost().
InstructionCost ARMTTIImpl::getExtendedReductionCost | ( | unsigned | Opcode, |
bool | IsUnsigned, | ||
Type * | ResTy, | ||
VectorType * | ValTy, | ||
FastMathFlags | FMF, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 1767 of file ARMTargetTransformInfo.cpp.
References llvm::ISD::ADD, CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::BasicTTIImplBase< ARMTTIImpl >::getExtendedReductionCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::EVT::getSizeInBits(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::TargetLoweringBase::InstructionOpcodeToISD(), and llvm::EVT::isSimple().
InstructionCost ARMTTIImpl::getGatherScatterOpCost | ( | unsigned | Opcode, |
Type * | DataTy, | ||
const Value * | Ptr, | ||
bool | VariableMask, | ||
Align | Alignment, | ||
TTI::TargetCostKind | CostKind, | ||
const Instruction * | I = nullptr |
||
) |
Definition at line 1577 of file ARMTargetTransformInfo.cpp.
References assert(), CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, EnableMaskedGatherScatters, GEP, llvm::BasicTTIImplBase< ARMTTIImpl >::getGatherScatterOpCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::BasicTTIImplBase< ARMTTIImpl >::getScalarizationOverhead(), llvm::DataLayout::getTypeAllocSize(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), I, llvm::Type::isVectorTy(), llvm::PatternMatch::match(), and Ptr.
InstructionCost ARMTTIImpl::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 1536 of file ARMTargetTransformInfo.cpp.
References assert(), CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::FixedVectorType::get(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::BasicTTIImplBase< ARMTTIImpl >::getInterleavedMemoryOpCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::ARMTargetLowering::getNumInterleavedAccesses(), llvm::Type::getScalarType(), llvm::DataLayout::getTypeSizeInBits(), llvm::Type::isIntOrIntVectorTy(), and llvm::ARMTargetLowering::isLegalInterleavedAccessType().
InstructionCost ARMTTIImpl::getIntImmCodeSizeCost | ( | unsigned | Opcode, |
unsigned | Idx, | ||
const APInt & | Imm, | ||
Type * | Ty | ||
) |
Definition at line 336 of file ARMTargetTransformInfo.cpp.
InstructionCost ARMTTIImpl::getIntImmCost | ( | const APInt & | Imm, |
Type * | Ty, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 301 of file ARMTargetTransformInfo.cpp.
References assert(), llvm::Type::getPrimitiveSizeInBits(), llvm::ARM_AM::getSOImmVal(), llvm::ARM_AM::getT2SOImmVal(), llvm::Type::isIntegerTy(), llvm::ARMSubtarget::isThumb2(), and llvm::ARM_AM::isThumbImmShiftedVal().
Referenced by getIntImmCostInst().
InstructionCost ARMTTIImpl::getIntImmCostInst | ( | unsigned | Opcode, |
unsigned | Idx, | ||
const APInt & | Imm, | ||
Type * | Ty, | ||
TTI::TargetCostKind | CostKind, | ||
Instruction * | Inst = nullptr |
||
) |
Definition at line 393 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::Type::getIntegerBitWidth(), getIntImmCost(), llvm::Value::hasOneUse(), llvm::ARMSubtarget::hasVFP2Base(), llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLE, Idx, isFPSatMinMaxPattern(), isSSATMinMaxPattern(), llvm::ARMSubtarget::isThumb2(), and llvm::Value::user_begin().
InstructionCost ARMTTIImpl::getIntrinsicInstrCost | ( | const IntrinsicCostAttributes & | ICA, |
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 1889 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::CmpInst::FCMP_UNO, llvm::IntrinsicCostAttributes::getArgTypes(), getArithmeticInstrCost(), getCastInstrCost(), getCmpSelInstrCost(), llvm::Type::getContext(), llvm::IntrinsicCostAttributes::getID(), llvm::Type::getIntNTy(), llvm::BasicTTIImplBase< ARMTTIImpl >::getIntrinsicInstrCost(), getIntrinsicInstrCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::IntrinsicCostAttributes::getReturnType(), llvm::EVT::getScalarSizeInBits(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::ARMSubtarget::hasVFP2Base(), llvm::CmpInst::ICMP_SGT, llvm::TargetTransformInfo::None, and RetTy.
Referenced by getCmpSelInstrCost(), getIntrinsicInstrCost(), and getMinMaxReductionCost().
InstructionCost ARMTTIImpl::getMaskedMemoryOpCost | ( | unsigned | Opcode, |
Type * | Src, | ||
Align | Alignment, | ||
unsigned | AddressSpace, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 1519 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::getMaskedMemoryOpCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), isLegalMaskedLoad(), and isLegalMaskedStore().
|
inline |
Definition at line 181 of file ARMTargetTransformInfo.h.
|
inline |
Definition at line 213 of file ARMTargetTransformInfo.h.
InstructionCost ARMTTIImpl::getMemcpyCost | ( | const Instruction * | I | ) |
Definition at line 1205 of file ARMTargetTransformInfo.cpp.
References getNumMemOps(), and I.
InstructionCost ARMTTIImpl::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 1471 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::BasicTTIImplBase< ARMTTIImpl >::getMemoryOpCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::FixedVectorType::getNumElements(), llvm::Type::getScalarType(), getType(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), I, llvm::Type::isFloatTy(), llvm::Type::isHalfTy(), and llvm::TargetTransformInfo::TCK_RecipThroughput.
InstructionCost ARMTTIImpl::getMinMaxReductionCost | ( | Intrinsic::ID | IID, |
VectorType * | Ty, | ||
FastMathFlags | FMF, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 1829 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::CostTableLookup(), llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::FixedVectorType::get(), llvm::VectorType::getElementType(), getIntrinsicInstrCost(), llvm::BasicTTIImplBase< ARMTTIImpl >::getMinMaxReductionCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::EVT::getScalarSizeInBits(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), llvm::EVT::getVectorElementType(), llvm::ARMSubtarget::hasVFP2Base(), llvm::isPowerOf2_32(), and llvm::ISD::SMIN.
InstructionCost ARMTTIImpl::getMulAccReductionCost | ( | bool | IsUnsigned, |
Type * | ResTy, | ||
VectorType * | ValTy, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 1802 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::BasicTTIImplBase< ARMTTIImpl >::getMulAccReductionCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::EVT::getSizeInBits(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), and llvm::EVT::isSimple().
Definition at line 150 of file ARMTargetTransformInfo.h.
References llvm::Vector.
int ARMTTIImpl::getNumMemOps | ( | const IntrinsicInst * | I | ) | const |
Given a memcpy/memset/memmove instruction, return the number of memory operations performed, via querying findOptimalMemOpLowering.
Returns -1 if a call is used.
Definition at line 1139 of file ARMTargetTransformInfo.cpp.
References llvm::CallingConv::C, llvm::MemOp::Copy(), F, llvm::TargetLoweringBase::getMaxStoresPerMemcpy(), llvm::TargetLoweringBase::getMaxStoresPerMemmove(), llvm::TargetLoweringBase::getMaxStoresPerMemset(), I, llvm_unreachable, llvm::MemOp::Set(), and Size.
Referenced by getMemcpyCost(), and maybeLoweredToCall().
void ARMTTIImpl::getPeelingPreferences | ( | Loop * | L, |
ScalarEvolution & | SE, | ||
TTI::PeelingPreferences & | PP | ||
) |
Definition at line 2591 of file ARMTargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< ARMTTIImpl >::getPeelingPreferences().
TTI::AddressingModeKind ARMTTIImpl::getPreferredAddressingMode | ( | const Loop * | L, |
ScalarEvolution * | SE | ||
) | const |
Definition at line 106 of file ARMTargetTransformInfo.cpp.
References llvm::TargetTransformInfo::AMK_None, llvm::TargetTransformInfo::AMK_PostIndexed, llvm::TargetTransformInfo::AMK_PreIndexed, llvm::ARMSubtarget::isMClass(), and llvm::ARMSubtarget::isThumb2().
TailFoldingStyle ARMTTIImpl::getPreferredTailFoldingStyle | ( | bool | IVUpdateMayOverflow = true | ) | const |
Definition at line 2472 of file ARMTargetTransformInfo.cpp.
References llvm::Data, llvm::DataWithoutLaneMask, and EnableTailPredication.
|
inline |
InstructionCost ARMTTIImpl::getScalingFactorCost | ( | Type * | Ty, |
GlobalValue * | BaseGV, | ||
StackOffset | BaseOffset, | ||
bool | HasBaseReg, | ||
int64_t | Scale, | ||
unsigned | AddrSpace | ||
) | const |
getScalingFactorCost - Return the cost of the scaling used in addressing mode represented by AM.
If the AM is supported, the return value must be >= 0. If the AM is not supported, the return value must be negative.
Definition at line 2617 of file ARMTargetTransformInfo.cpp.
References llvm::TargetLoweringBase::AddrMode::BaseGV, llvm::TargetLoweringBase::AddrMode::BaseOffs, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::StackOffset::getFixed(), llvm::StackOffset::getScalable(), llvm::TargetLoweringBase::AddrMode::HasBaseReg, llvm::BasicTTIImplBase< ARMTTIImpl >::isLegalAddressingMode(), llvm::TargetLoweringBase::AddrMode::ScalableOffset, and llvm::TargetLoweringBase::AddrMode::Scale.
InstructionCost ARMTTIImpl::getShuffleCost | ( | TTI::ShuffleKind | Kind, |
VectorType * | Tp, | ||
ArrayRef< int > | Mask, | ||
TTI::TargetCostKind | CostKind, | ||
int | Index, | ||
VectorType * | SubTp, | ||
ArrayRef< const Value * > | Args = std::nullopt , |
||
const Instruction * | CxtI = nullptr |
||
) |
Definition at line 1215 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::CostTableLookup(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::BasicTTIImplBase< ARMTTIImpl >::getShuffleCost(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::BasicTTIImplBase< ARMTTIImpl >::improveShuffleKindFromMask(), llvm::Type::isVectorTy(), llvm::isVREVMask(), llvm::TargetTransformInfo::SK_Broadcast, llvm::TargetTransformInfo::SK_ExtractSubvector, llvm::TargetTransformInfo::SK_PermuteSingleSrc, llvm::TargetTransformInfo::SK_Reverse, llvm::TargetTransformInfo::SK_Select, llvm::TargetTransformInfo::TCK_RecipThroughput, and llvm::ISD::VECTOR_SHUFFLE.
void ARMTTIImpl::getUnrollingPreferences | ( | Loop * | L, |
ScalarEvolution & | SE, | ||
TTI::UnrollingPreferences & | UP, | ||
OptimizationRemarkEmitter * | ORE | ||
) |
Definition at line 2482 of file ARMTargetTransformInfo.cpp.
References llvm::any_of(), llvm::count_if(), llvm::dbgs(), llvm::TargetTransformInfo::UnrollingPreferences::DefaultUnrollRuntimeCount, F, llvm::TargetTransformInfo::UnrollingPreferences::Force, llvm::getBooleanLoopAttribute(), getCalledFunction(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::BasicTTIImplBase< T >::getUnrollingPreferences(), I, isLoweredToCall(), llvm::ARMSubtarget::isMClass(), llvm::ARMSubtarget::isThumb1Only(), LLVM_DEBUG, Operands, llvm::TargetTransformInfo::UnrollingPreferences::OptSizeThreshold, llvm::TargetTransformInfo::UnrollingPreferences::Partial, llvm::TargetTransformInfo::UnrollingPreferences::PartialOptSizeThreshold, llvm::TargetTransformInfo::UnrollingPreferences::Runtime, llvm::SmallVectorBase< Size_T >::size(), llvm::TargetTransformInfo::TCK_SizeAndLatency, llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJam, llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJamInnerLoopThreshold, UnrollCount, llvm::TargetTransformInfo::UnrollingPreferences::UnrollRemainder, and llvm::TargetTransformInfo::UnrollingPreferences::UpperBound.
InstructionCost ARMTTIImpl::getVectorInstrCost | ( | unsigned | Opcode, |
Type * | Val, | ||
TTI::TargetCostKind | CostKind, | ||
unsigned | Index, | ||
Value * | Op0, | ||
Value * | Op1 | ||
) |
Definition at line 882 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::Type::getScalarSizeInBits(), llvm::Type::getScalarType(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::BasicTTIImplBase< ARMTTIImpl >::getVectorInstrCost(), llvm::Type::isIntegerTy(), and llvm::Type::isVectorTy().
Definition at line 2635 of file ARMTargetTransformInfo.cpp.
References llvm::ARMSubtarget::hasARMOps(), and llvm::ARMSubtarget::isThumb2().
std::optional< Instruction * > ARMTTIImpl::instCombineIntrinsic | ( | InstCombiner & | IC, |
IntrinsicInst & | II | ||
) | const |
Definition at line 122 of file ARMTargetTransformInfo.cpp.
References assert(), llvm::InstCombiner::Builder, llvm::BinaryOperator::Create(), llvm::IRBuilderBase::CreateIntrinsic(), llvm::IRBuilderBase::CreateVectorSplat(), llvm::InstCombiner::eraseInstFromFunction(), llvm::InstCombiner::getAssumptionCache(), llvm::InstCombiner::getDataLayout(), llvm::InstCombiner::getDominatorTree(), llvm::Type::getInt32Ty(), llvm::getKnownAlignment(), llvm::APInt::getLowBitsSet(), llvm::APInt::getOneBitSet(), llvm::IRBuilderBase::getTrue(), llvm::Value::getType(), I, II, llvm::ConstantRange::intersectWith(), llvm::PatternMatch::m_c_Add(), llvm::PatternMatch::m_Constant(), llvm::PatternMatch::m_Specific(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::m_Xor(), llvm::PatternMatch::m_Zero(), llvm::PatternMatch::match(), Range, llvm::InstCombiner::replaceInstUsesWith(), llvm::InstCombiner::replaceOperand(), llvm::IRBuilderBase::SetInsertPoint(), llvm::InstCombiner::SimplifyDemandedBits(), simplifyNeonVld1(), and llvm::Align::value().
|
inline |
Floating-point computation using ARMv8 AArch32 Advanced SIMD instructions remains unchanged from ARMv7.
Only AArch64 SIMD and Arm MVE are IEEE-754 compliant.
Definition at line 118 of file ARMTargetTransformInfo.h.
bool ARMTTIImpl::isHardwareLoopProfitable | ( | Loop * | L, |
ScalarEvolution & | SE, | ||
AssumptionCache & | AC, | ||
TargetLibraryInfo * | LibInfo, | ||
HardwareLoopInfo & | HWLoopInfo | ||
) |
Definition at line 2182 of file ARMTargetTransformInfo.cpp.
References AllowWLSLoops, llvm::CallingConv::C, llvm::HardwareLoopInfo::CounterInReg, llvm::HardwareLoopInfo::CountType, llvm::dbgs(), DisableLowOverheadLoops, llvm::ScalarEvolution::getAddExpr(), llvm::ScalarEvolution::getBackedgeTakenCount(), llvm::APInt::getBitWidth(), llvm::Type::getInt32Ty(), llvm::ScalarEvolution::getOne(), llvm::SCEV::getType(), llvm::ScalarEvolution::getUnsignedRangeMax(), llvm::ScalarEvolution::hasLoopInvariantBackedgeTakenCount(), I, II, llvm::HardwareLoopInfo::IsNestingLegal, LLVM_DEBUG, llvm::HardwareLoopInfo::LoopDecrement, maybeLoweredToCall(), and llvm::HardwareLoopInfo::PerformEntryTest.
Referenced by preferPredicateOverEpilogue().
Definition at line 1127 of file ARMTargetTransformInfo.cpp.
References EnableMaskedGatherScatters, and llvm::Type::getScalarSizeInBits().
Referenced by isLegalMaskedScatter().
Definition at line 1107 of file ARMTargetTransformInfo.cpp.
References EnableMaskedLoadStores, llvm::Type::getPrimitiveSizeInBits(), and llvm::Type::getScalarSizeInBits().
Referenced by getMaskedMemoryOpCost(), and isLegalMaskedStore().
Definition at line 207 of file ARMTargetTransformInfo.h.
References isLegalMaskedGather().
Definition at line 189 of file ARMTargetTransformInfo.h.
References isLegalMaskedLoad().
Referenced by getMaskedMemoryOpCost().
Definition at line 2034 of file ARMTargetTransformInfo.cpp.
References F, llvm::ARMSubtarget::hasFPARMv8Base(), llvm::ARMSubtarget::hasVFP2Base(), and llvm::TargetTransformInfoImplBase::isLoweredToCall().
Referenced by getUnrollingPreferences(), and maybeLoweredToCall().
bool ARMTTIImpl::isProfitableLSRChainElement | ( | Instruction * | I | ) |
Definition at line 1090 of file ARMTargetTransformInfo.cpp.
bool ARMTTIImpl::maybeLoweredToCall | ( | Instruction & | I | ) |
Definition at line 2095 of file ARMTargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< ARMTTIImpl >::DL, F, getNumMemOps(), llvm::TargetLoweringBase::getOperationAction(), llvm::EVT::getSizeInBits(), llvm::TargetLoweringBase::getValueType(), llvm::ARMSubtarget::hasFPARMv8Base(), I, II, llvm::TargetLoweringBase::InstructionOpcodeToISD(), llvm::EVT::isFloatingPoint(), llvm::EVT::isInteger(), isLoweredToCall(), llvm::TargetLoweringBase::LibCall, llvm::ISD::SDIV, llvm::ISD::SDIVREM, llvm::ISD::SREM, llvm::ISD::UDIV, llvm::ISD::UDIVREM, llvm::ISD::UREM, and llvm::ARMTargetLowering::useSoftFloat().
Referenced by isHardwareLoopProfitable().
bool ARMTTIImpl::preferInLoopReduction | ( | unsigned | Opcode, |
Type * | Ty, | ||
TTI::ReductionFlags | Flags | ||
) | const |
Definition at line 2596 of file ARMTargetTransformInfo.cpp.
References llvm::Type::getScalarSizeInBits().
bool ARMTTIImpl::preferPredicatedReductionSelect | ( | unsigned | Opcode, |
Type * | Ty, | ||
TTI::ReductionFlags | Flags | ||
) | const |
Definition at line 2610 of file ARMTargetTransformInfo.cpp.
bool ARMTTIImpl::preferPredicateOverEpilogue | ( | TailFoldingInfo * | TFI | ) |
Definition at line 2418 of file ARMTargetTransformInfo.cpp.
References assert(), llvm::HardwareLoopInfo::canAnalyze(), canTailPredicateLoop(), llvm::dbgs(), llvm::BasicTTIImplBase< ARMTTIImpl >::DL, EnableTailPredication, llvm::LoopVectorizationLegality::getAssumptionCache(), llvm::LoopVectorizationLegality::getDominatorTree(), llvm::LoopVectorizationLegality::getLAI(), llvm::LoopVectorizationLegality::getLoop(), llvm::LoopVectorizationLegality::getLoopInfo(), llvm::LoopVectorizationLegality::getScalarEvolution(), llvm::HardwareLoopInfo::isHardwareLoopCandidate(), isHardwareLoopProfitable(), LLVM_DEBUG, llvm::TailFoldingInfo::LVL, and llvm::TailFoldingInfo::TLI.
Definition at line 325 of file ARMTargetTransformInfo.h.
References llvm::CallingConv::C.
|
inline |
Definition at line 232 of file ARMTargetTransformInfo.h.
std::optional< Value * > ARMTTIImpl::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 259 of file ARMTargetTransformInfo.cpp.
References llvm::APInt::getHighBitsSet(), llvm::APInt::getLowBitsSet(), llvm::APInt::getSplat(), and II.