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 90 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 1086 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 = {} , |
||
const Instruction * | CxtI = nullptr |
||
) |
Definition at line 1348 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 1700 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 497 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 483 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, | ||
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 940 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 1785 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 1595 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 1554 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 355 of file ARMTargetTransformInfo.cpp.
InstructionCost ARMTTIImpl::getIntImmCost | ( | const APInt & | Imm, |
Type * | Ty, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 320 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 412 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 1907 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 1537 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.
Referenced by getNumBytesToPadGlobalArray().
InstructionCost ARMTTIImpl::getMemcpyCost | ( | const Instruction * | I | ) |
Definition at line 1223 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 1489 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 1847 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 1820 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.
Definition at line 2834 of file ARMTargetTransformInfo.cpp.
References llvm::dbgs(), llvm::Type::getArrayElementType(), getMaxMemIntrinsicInlineSizeThreshold(), llvm::Type::isArrayTy(), llvm::Type::isIntegerTy(), LLVM_DEBUG, Size, and UseWidenGlobalArrays.
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 1157 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 2631 of file ARMTargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< ARMTTIImpl >::getPeelingPreferences().
TTI::AddressingModeKind ARMTTIImpl::getPreferredAddressingMode | ( | const Loop * | L, |
ScalarEvolution * | SE | ||
) | const |
Definition at line 109 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 2491 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 2657 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 = {} , |
||
const Instruction * | CxtI = nullptr |
||
) |
Definition at line 1233 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 2501 of file ARMTargetTransformInfo.cpp.
References llvm::any_of(), llvm::count_if(), llvm::dbgs(), llvm::TargetTransformInfo::UnrollingPreferences::DefaultUnrollRuntimeCount, F, llvm::TargetTransformInfo::UnrollingPreferences::Force, llvm::ScalarEvolution::getBackedgeTakenCount(), llvm::getBooleanLoopAttribute(), getCalledFunction(), llvm::TargetTransformInfoImplCRTPBase< T >::getInstructionCost(), llvm::BasicTTIImplBase< T >::getUnrollingPreferences(), llvm::ScalarEvolution::hasLoopInvariantBackedgeTakenCount(), I, llvm::ScalarEvolution::isLoopInvariant(), 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::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 901 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 2675 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 125 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(), llvm::Attribute::getWithAlignment(), 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 2201 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 1145 of file ARMTargetTransformInfo.cpp.
References EnableMaskedGatherScatters, and llvm::Type::getScalarSizeInBits().
Referenced by isLegalMaskedScatter().
Definition at line 1125 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 2052 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 1108 of file ARMTargetTransformInfo.cpp.
bool ARMTTIImpl::isProfitableToSinkOperands | ( | Instruction * | I, |
SmallVectorImpl< Use * > & | Ops | ||
) | const |
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.
sext/zext can be folded into vsubl.
Definition at line 2710 of file ARMTargetTransformInfo.cpp.
References llvm::any_of(), areExtractExts(), llvm::enumerate(), llvm::Instruction::getOpcode(), llvm::User::getOperand(), llvm::User::getOperandUse(), I, II, Insn, llvm::PatternMatch::m_FNeg(), llvm::PatternMatch::m_InsertElt(), llvm::PatternMatch::m_Shuffle(), llvm::PatternMatch::m_Undef(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::m_ZeroInt(), llvm::PatternMatch::match(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
bool ARMTTIImpl::maybeLoweredToCall | ( | Instruction & | I | ) |
Definition at line 2114 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 2636 of file ARMTargetTransformInfo.cpp.
References llvm::Type::getScalarSizeInBits().
bool ARMTTIImpl::preferPredicatedReductionSelect | ( | unsigned | Opcode, |
Type * | Ty, | ||
TTI::ReductionFlags | Flags | ||
) | const |
Definition at line 2650 of file ARMTargetTransformInfo.cpp.
bool ARMTTIImpl::preferPredicateOverEpilogue | ( | TailFoldingInfo * | TFI | ) |
Definition at line 2437 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 326 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 278 of file ARMTargetTransformInfo.cpp.
References llvm::APInt::getHighBitsSet(), llvm::APInt::getLowBitsSet(), llvm::APInt::getSplat(), and II.