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 91 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 1087 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 1349 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 1701 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 498 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 484 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 941 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 1786 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 1596 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 1555 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 356 of file ARMTargetTransformInfo.cpp.
InstructionCost ARMTTIImpl::getIntImmCost | ( | const APInt & | Imm, |
Type * | Ty, | ||
TTI::TargetCostKind | CostKind | ||
) |
Definition at line 321 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 413 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 1908 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 1538 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 1224 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 1490 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 1848 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 1821 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 2835 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 1158 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 2632 of file ARMTargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< ARMTTIImpl >::getPeelingPreferences().
TTI::AddressingModeKind ARMTTIImpl::getPreferredAddressingMode | ( | const Loop * | L, |
ScalarEvolution * | SE | ||
) | const |
Definition at line 110 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 2492 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 2658 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 1234 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 2502 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 902 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 2676 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 126 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 2202 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 1146 of file ARMTargetTransformInfo.cpp.
References EnableMaskedGatherScatters, and llvm::Type::getScalarSizeInBits().
Referenced by isLegalMaskedScatter().
Definition at line 1126 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 2053 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 1109 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 2711 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 2115 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 2637 of file ARMTargetTransformInfo.cpp.
References llvm::Type::getScalarSizeInBits().
bool ARMTTIImpl::preferPredicatedReductionSelect | ( | unsigned | Opcode, |
Type * | Ty, | ||
TTI::ReductionFlags | Flags | ||
) | const |
Definition at line 2651 of file ARMTargetTransformInfo.cpp.
bool ARMTTIImpl::preferPredicateOverEpilogue | ( | TailFoldingInfo * | TFI | ) |
Definition at line 2438 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 279 of file ARMTargetTransformInfo.cpp.
References llvm::APInt::getHighBitsSet(), llvm::APInt::getLowBitsSet(), llvm::APInt::getSplat(), and II.