LLVM 22.0.0git
|
#include "Target/ARM/ARMTargetTransformInfo.h"
Definition at line 57 of file ARMTargetTransformInfo.h.
|
inlineexplicit |
Definition at line 103 of file ARMTargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 90 of file ARMTargetTransformInfo.cpp.
References llvm::TargetLoweringBase::getTargetMachine().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 110 of file ARMTargetTransformInfo.h.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 197 of file ARMTargetTransformInfo.h.
Referenced by forceScalarizeMaskedScatter().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 206 of file ARMTargetTransformInfo.h.
References forceScalarizeMaskedGather().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1088 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::getAddressComputationCost(), llvm::TargetTransformInfoImplBase::isConstantStridedAccessLessThan(), llvm::Type::isVectorTy(), and Ptr.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1390 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(), I, 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(), LHS, llvm::ISD::OR, RHS, 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().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1799 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.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
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().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 484 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::getCFInstrCost(), I, and llvm::TargetTransformInfo::TCK_RecipThroughput.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
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().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1884 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().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1694 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.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1653 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().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 355 of file ARMTargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
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().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
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().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2009 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, Opc, and RetTy.
Referenced by getCmpSelInstrCost(), getIntrinsicInstrCost(), and getMinMaxReductionCost().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1634 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::getMaskedMemoryOpCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), isLegalMaskedLoad(), and isLegalMaskedStore().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 183 of file ARMTargetTransformInfo.h.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 219 of file ARMTargetTransformInfo.h.
Referenced by getNumBytesToPadGlobalArray().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1226 of file ARMTargetTransformInfo.cpp.
References getNumMemOps(), and I.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1587 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.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1949 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.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1919 of file ARMTargetTransformInfo.cpp.
References CostKind, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::InstructionCost::getInvalid(), llvm::BasicTTIImplBase< ARMTTIImpl >::getMulAccReductionCost(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::EVT::getSizeInBits(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::TargetLoweringBase::getValueType(), and llvm::EVT::isSimple().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 151 of file ARMTargetTransformInfo.h.
References llvm::Vector.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2933 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 1160 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().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2732 of file ARMTargetTransformInfo.cpp.
References llvm::BasicTTIImplBase< ARMTTIImpl >::getPeelingPreferences().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
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().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2592 of file ARMTargetTransformInfo.cpp.
References llvm::Data, llvm::DataWithoutLaneMask, and EnableTailPredication.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 167 of file ARMTargetTransformInfo.h.
References llvm::TypeSize::getFixed(), llvm::TypeSize::getScalable(), llvm_unreachable, llvm::TargetTransformInfo::RGK_FixedWidthVector, llvm::TargetTransformInfo::RGK_ScalableVector, and llvm::TargetTransformInfo::RGK_Scalar.
|
overridevirtual |
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 is an invalid cost.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2756 of file ARMTargetTransformInfo.cpp.
References llvm::TargetLoweringBase::AddrMode::BaseGV, llvm::TargetLoweringBase::AddrMode::BaseOffs, llvm::BasicTTIImplBase< ARMTTIImpl >::DL, llvm::StackOffset::getFixed(), llvm::InstructionCost::getInvalid(), llvm::StackOffset::getScalable(), llvm::TargetLoweringBase::AddrMode::HasBaseReg, llvm::BasicTTIImplBase< ARMTTIImpl >::isLegalAddressingMode(), llvm::TargetLoweringBase::AddrMode::ScalableOffset, and llvm::TargetLoweringBase::AddrMode::Scale.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1236 of file ARMTargetTransformInfo.cpp.
References assert(), CostKind, llvm::CostTableLookup(), llvm::VectorType::getElementCount(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getKnownMinValue(), llvm::ARMTargetLowering::getMaxSupportedInterleaveFactor(), llvm::ARMSubtarget::getMVEVectorCostFactor(), llvm::Type::getScalarType(), llvm::BasicTTIImplBase< ARMTTIImpl >::getShuffleCost(), llvm::BasicTTIImplBase< ARMTTIImpl >::getTypeLegalizationCost(), llvm::Value::hasOneUse(), llvm::BasicTTIImplBase< ARMTTIImpl >::improveShuffleKindFromMask(), llvm::ShuffleVectorInst::isDeInterleaveMaskOfFactor(), llvm::ShuffleVectorInst::isInterleaveMask(), llvm::Type::isScalableTy(), 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::Value::user_begin(), and llvm::ISD::VECTOR_SHUFFLE.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2602 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.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
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().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2774 of file ARMTargetTransformInfo.cpp.
References llvm::ARMSubtarget::hasARMOps(), and llvm::ARMSubtarget::isThumb2().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
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().
|
inlineoverridevirtual |
Floating-point computation using ARMv8 AArch32 Advanced SIMD instructions remains unchanged from ARMv7.
Only AArch64 SIMD and Arm MVE are IEEE-754 compliant.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 118 of file ARMTargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2303 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().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1148 of file ARMTargetTransformInfo.cpp.
References EnableMaskedGatherScatters, and llvm::Type::getScalarSizeInBits().
Referenced by isLegalMaskedScatter().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1127 of file ARMTargetTransformInfo.cpp.
References EnableMaskedLoadStores, llvm::Type::getPrimitiveSizeInBits(), and llvm::Type::getScalarSizeInBits().
Referenced by getMaskedMemoryOpCost(), and isLegalMaskedStore().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 213 of file ARMTargetTransformInfo.h.
References isLegalMaskedGather().
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 192 of file ARMTargetTransformInfo.h.
References isLegalMaskedLoad().
Referenced by getMaskedMemoryOpCost().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2154 of file ARMTargetTransformInfo.cpp.
References F, llvm::ARMSubtarget::hasFPARMv8Base(), llvm::ARMSubtarget::hasVFP2Base(), and llvm::TargetTransformInfoImplBase::isLoweredToCall().
Referenced by getUnrollingPreferences(), and maybeLoweredToCall().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 1110 of file ARMTargetTransformInfo.cpp.
|
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.
sext/zext can be folded into vsubl.
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2809 of file ARMTargetTransformInfo.cpp.
References llvm::any_of(), areExtractExts(), llvm::enumerate(), llvm::Instruction::getOpcode(), llvm::User::getOperand(), llvm::User::getOperandUse(), I, II, llvm::PatternMatch::m_FNeg(), llvm::PatternMatch::m_InsertElt(), llvm::PatternMatch::m_Shuffle(), llvm::PatternMatch::m_Undef(), llvm::PatternMatch::m_Value(), llvm::MIPatternMatch::m_ZeroInt(), llvm::PatternMatch::match(), OpIdx, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::Sub.
bool ARMTTIImpl::maybeLoweredToCall | ( | Instruction & | I | ) | const |
Definition at line 2216 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().
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2737 of file ARMTargetTransformInfo.cpp.
References llvm::Add, and llvm::Type::getScalarSizeInBits().
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2750 of file ARMTargetTransformInfo.cpp.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 2538 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.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 338 of file ARMTargetTransformInfo.h.
References llvm::CallingConv::C.
|
inlineoverridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 235 of file ARMTargetTransformInfo.h.
|
overridevirtual |
Reimplemented from llvm::TargetTransformInfoImplBase.
Definition at line 278 of file ARMTargetTransformInfo.cpp.
References llvm::APInt::getHighBitsSet(), llvm::APInt::getLowBitsSet(), llvm::APInt::getSplat(), and II.