LLVM: lib/Target/AArch64/AArch64TargetTransformInfo.cpp File Reference (original) (raw)
Go to the source code of this file.
| Macros | |
|---|---|
| #define | DEBUG_TYPE "aarch64tti" |
| Variables | |
|---|---|
| static cl::opt< bool > | EnableFalkorHWPFUnrollFix ("enable-falkor-hwpf-unroll-fix", cl::init(true), cl::Hidden) |
| static cl::opt< bool > | SVEPreferFixedOverScalableIfEqualCost ("sve-prefer-fixed-over-scalable-if-equal", cl::Hidden) |
| static cl::opt< unsigned > | SVEGatherOverhead ("sve-gather-overhead", cl::init(10), cl::Hidden) |
| static cl::opt< unsigned > | SVEScatterOverhead ("sve-scatter-overhead", cl::init(10), cl::Hidden) |
| static cl::opt< unsigned > | SVETailFoldInsnThreshold ("sve-tail-folding-insn-threshold", cl::init(15), cl::Hidden) |
| static cl::opt< unsigned > | NeonNonConstStrideOverhead ("neon-nonconst-stride-overhead", cl::init(10), cl::Hidden) |
| static cl::opt< unsigned > | CallPenaltyChangeSM ("call-penalty-sm-change", cl::init(5), cl::Hidden, cl::desc("Penalty of calling a function that requires a change to PSTATE.SM")) |
| static cl::opt< unsigned > | InlineCallPenaltyChangeSM ("inline-call-penalty-sm-change", cl::init(10), cl::Hidden, cl::desc("Penalty of inlining a call that requires a change to PSTATE.SM")) |
| static cl::opt< bool > | EnableOrLikeSelectOpt ("enable-aarch64-or-like-select", cl::init(true), cl::Hidden) |
| static cl::opt< bool > | EnableLSRCostOpt ("enable-aarch64-lsr-cost-opt", cl::init(true), cl::Hidden) |
| static cl::opt< unsigned > | BaseHistCntCost ("aarch64-base-histcnt-cost", cl::init(8), cl::Hidden, cl::desc("The cost of a histcnt instruction")) |
| static cl::opt< unsigned > | DMBLookaheadThreshold ("dmb-lookahead-threshold", cl::init(10), cl::Hidden, cl::desc("The number of instructions to search for a redundant dmb")) |
| static cl::opt< int > | Aarch64ForceUnrollThreshold ("aarch64-force-unroll-threshold", cl::init(0), cl::Hidden, cl::desc("Threshold for forced unrolling of small loops in AArch64")) |
| TailFoldingOption | TailFoldingOptionLoc |
| static cl::opt< TailFoldingOption, true, cl::parser< std::string > > | SVETailFolding ("sve-tail-folding", cl::desc("Control the use of vectorisation using tail-folding for SVE where the" " option is specified in the form (Initial)[+(Flag1|Flag2 |
| static cl::opt< bool > | EnableFixedwidthAutovecInStreamingMode ("enable-fixedwidth-autovec-in-streaming-mode", cl::init(false), cl::Hidden) |
| static cl::opt< bool > | EnableScalableAutovecInStreamingMode ("enable-scalable-autovec-in-streaming-mode", cl::init(false), cl::Hidden) |
◆ DEBUG_TYPE
#define DEBUG_TYPE "aarch64tti"
◆ areExtractExts()
◆ areExtractShuffleVectors()
| bool areExtractShuffleVectors ( Value * Op1, Value * Op2, bool AllowSplat = false ) | static |
|---|
Check if both Op1 and Op2 are shufflevector extracts of either the lower or upper half of the vector elements.
Definition at line 6417 of file AArch64TargetTransformInfo.cpp.
References llvm::cast(), llvm::details::FixedOrScalableQuantity< LeafTy, ValueTy >::getFixedValue(), llvm::Type::getPrimitiveSizeInBits(), llvm::Value::getType(), llvm::ShuffleVectorInst::isExtractSubvectorMask(), llvm::Type::isScalableTy(), isSplatShuffle(), llvm::M1(), llvm::PatternMatch::m_Shuffle(), llvm::PatternMatch::m_Undef(), llvm::PatternMatch::m_Value(), and llvm::PatternMatch::match().
Referenced by llvm::AArch64TTIImpl::isProfitableToSinkOperands().
◆ areOperandsOfVmullHighP64()
◆ constructSVEIntrinsicInfo()
◆ containsDecreasingPointers()
◆ getAppleRuntimeUnrollPreferences()
For Apple CPUs, we want to runtime-unroll loops to make better use if the OOO engine's wide instruction window and various predictors.
Definition at line 5144 of file AArch64TargetTransformInfo.cpp.
References llvm::TargetTransformInfo::UnrollingPreferences::AddAdditionalAccumulators, llvm::any_of(), llvm::cast(), llvm::SmallPtrSetImpl< PtrType >::contains(), llvm::TargetTransformInfo::UnrollingPreferences::DefaultUnrollRuntimeCount, llvm::Depth, llvm::dyn_cast(), llvm::findStringMetadataForLoop(), llvm::ScalarEvolution::getBackedgeTakenCount(), llvm::getLoadStorePointerOperand(), llvm::ScalarEvolution::getSCEV(), llvm::ScalarEvolution::getSmallConstantMaxTripCount(), llvm::ScalarEvolution::getSmallConstantTripMultiple(), llvm::ScalarEvolution::getSymbolicMaxBackedgeTakenCount(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::is_contained(), llvm::isa(), llvm::ScalarEvolution::isLoopInvariant(), isLoopSizeWithinBudget(), llvm::PatternMatch::m_Br(), llvm::PatternMatch::m_ICmp(), llvm::PatternMatch::m_Instruction(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), llvm::TargetTransformInfo::UnrollingPreferences::MaxCount, llvm::none_of(), llvm::TargetTransformInfo::UnrollingPreferences::Partial, llvm::predecessors(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::TargetTransformInfo::UnrollingPreferences::Runtime, llvm::TargetTransformInfo::UnrollingPreferences::SCEVExpansionBudget, Size, and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by llvm::AArch64TTIImpl::getUnrollingPreferences().
◆ getFalkorUnrollingPreferences()
◆ getHistogramCost()
◆ getSVEGatherScatterOverhead()
◆ hasPossibleIncompatibleOps()
◆ instCombineConvertFromSVBool()
◆ instCombineDMB()
◆ instCombineInStreamingMode()
◆ instCombineLD1GatherIndex()
Definition at line 2562 of file AArch64TargetTransformInfo.cpp.
References llvm::InstCombiner::Builder, llvm::cast(), llvm::IRBuilderBase::CreateGEP(), llvm::IRBuilderBase::CreateMaskedLoad(), llvm::ConstantAggregateZero::get(), II, llvm::PatternMatch::m_Intrinsic(), llvm::PatternMatch::m_SpecificInt(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), llvm::InstCombiner::replaceInstUsesWith(), and llvm::Value::takeName().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineMaxMinNM()
◆ instCombinePTrue()
◆ instCombineRDFFR()
◆ instCombineSMECntsd()
◆ instCombineST1ScatterIndex()
Definition at line 2590 of file AArch64TargetTransformInfo.cpp.
References llvm::InstCombiner::Builder, llvm::cast(), llvm::IRBuilderBase::CreateGEP(), llvm::IRBuilderBase::CreateMaskedStore(), llvm::InstCombiner::eraseInstFromFunction(), llvm::Value::getType(), II, llvm::PatternMatch::m_Intrinsic(), llvm::PatternMatch::m_SpecificInt(), llvm::PatternMatch::m_Value(), and llvm::PatternMatch::match().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineSVECmpNE()
Definition at line 1936 of file AArch64TargetTransformInfo.cpp.
References llvm::InstCombiner::Builder, llvm::cast(), llvm::IRBuilderBase::CreateIntrinsic(), llvm::dyn_cast(), llvm::dyn_cast_or_null(), llvm::ScalableVectorType::get(), llvm::Type::getInt1Ty(), llvm::Type::getInt32Ty(), llvm::Constant::getNullValue(), llvm::getSplatValue(), I, II, llvm::isa(), isAllActivePredicate(), llvm::InstCombiner::replaceInstUsesWith(), llvm::AArch64::SVEBitsPerBlock, and llvm::Value::takeName().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineSVECntElts()
◆ instCombineSVECondLast()
Definition at line 2103 of file AArch64TargetTransformInfo.cpp.
References llvm::InstCombiner::Builder, llvm::cast(), llvm::IRBuilderBase::CreateBitCast(), llvm::IRBuilderBase::CreateIntrinsic(), Fallback, llvm::VectorType::get(), getBitWidth(), llvm::IRBuilderBase::getDoubleTy(), llvm::IRBuilderBase::getFloatTy(), llvm::IRBuilderBase::getHalfTy(), llvm::Value::getType(), II, and llvm::InstCombiner::replaceInstUsesWith().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineSVEDup()
Definition at line 1904 of file AArch64TargetTransformInfo.cpp.
References llvm::InstCombiner::Builder, llvm::cast(), llvm::IRBuilderBase::CreateInsertElement(), llvm::IRBuilderBase::CreateVectorSplat(), II, isAllActivePredicate(), llvm::PatternMatch::m_Intrinsic(), llvm::PatternMatch::m_SpecificInt(), llvm::PatternMatch::match(), llvm::InstCombiner::replaceInstUsesWith(), and llvm::Splat.
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineSVEDupqLane()
Definition at line 2683 of file AArch64TargetTransformInfo.cpp.
References llvm::InstCombiner::Builder, llvm::cast(), llvm::IRBuilderBase::CreateBitOrPointerCast(), llvm::IRBuilderBase::CreateInsertElement(), llvm::IRBuilderBase::CreateInsertVector(), llvm::IRBuilderBase::CreateShuffleVector(), Default, llvm::dyn_cast(), llvm::ConstantAggregateZero::get(), llvm::PoisonValue::get(), llvm::ScalableVectorType::get(), llvm::IRBuilderBase::getInt32Ty(), llvm::IRBuilderBase::getInt64(), llvm::IRBuilderBase::getIntNTy(), llvm::Value::getType(), I, II, llvm::isa(), llvm::PatternMatch::m_Intrinsic(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), llvm::InstCombiner::replaceInstUsesWith(), SimplifyValuePattern(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineSVEDupX()
◆ instCombineSVEInsr()
◆ instCombineSVELast()
Definition at line 2029 of file AArch64TargetTransformInfo.cpp.
References llvm::InstCombiner::Builder, llvm::CallingConv::C, llvm::cast(), llvm::ExtractElementInst::Create(), llvm::IRBuilderBase::CreateIntrinsic(), llvm::BinaryOperator::CreateWithCopiedFlags(), llvm::dyn_cast(), llvm::Type::getInt64Ty(), llvm::getNumElementsFromSVEPredPattern(), llvm::getSplatValue(), llvm::Value::getType(), II, llvm::isSplatValue(), LHS, llvm::PatternMatch::m_BinOp(), llvm::MIPatternMatch::m_OneUse(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), llvm::InstCombiner::replaceInstUsesWith(), and RHS.
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineSVELD1()
◆ instCombineSVEPTest()
Definition at line 2193 of file AArch64TargetTransformInfo.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::InstCombiner::Builder, llvm::IRBuilderBase::CreateIntrinsic(), llvm::dyn_cast(), llvm::CallBase::getArgOperand(), llvm::IntrinsicInst::getIntrinsicID(), llvm::Value::getType(), II, llvm::InstCombiner::replaceInstUsesWith(), and llvm::Value::takeName().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineSVESDIV()
Definition at line 2616 of file AArch64TargetTransformInfo.cpp.
References llvm::InstCombiner::Builder, llvm::IRBuilderBase::CreateIntrinsic(), llvm::dyn_cast_or_null(), llvm::IRBuilderBase::getInt32Ty(), llvm::APInt::getSExtValue(), llvm::getSplatValue(), llvm::ConstantInt::getValue(), II, llvm::Int32Ty, llvm::APInt::isNegatedPowerOf2(), llvm::APInt::isPowerOf2(), llvm::APInt::logBase2(), llvm::APInt::negate(), and llvm::InstCombiner::replaceInstUsesWith().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineSVESel()
◆ instCombineSVESrshl()
◆ instCombineSVEST1()
◆ instCombineSVETBL()
◆ instCombineSVEUnpack()
◆ instCombineSVEUxt()
◆ instCombineSVEUzp1()
Definition at line 2516 of file AArch64TargetTransformInfo.cpp.
References A(), B(), llvm::InstCombiner::Builder, llvm::cast(), llvm::IRBuilderBase::CreateInsertVector(), llvm::PoisonValue::get(), llvm::ScalableVectorType::getDoubleElementsVectorType(), II, llvm::PatternMatch::m_Intrinsic(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), llvm::InstCombiner::replaceInstUsesWith(), and llvm::Value::takeName().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ instCombineSVEVectorAdd()
◆ instCombineSVEVectorBinOp()
◆ instCombineSVEVectorFAdd()
◆ instCombineSVEVectorFAddU()
◆ instCombineSVEVectorFSub()
◆ instCombineSVEVectorFSubU()
◆ instCombineSVEVectorFuseMulAddSub()
Definition at line 2263 of file AArch64TargetTransformInfo.cpp.
References llvm::FastMathFlags::allowContract(), llvm::InstCombiner::Builder, llvm::cast(), llvm::IRBuilderBase::CreateIntrinsic(), II, llvm::PatternMatch::m_Intrinsic(), llvm::PatternMatch::m_Specific(), llvm::PatternMatch::m_Value(), llvm::PatternMatch::match(), Mul, P, and llvm::InstCombiner::replaceInstUsesWith().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic(), instCombineSVEVectorAdd(), instCombineSVEVectorFAdd(), instCombineSVEVectorFAddU(), instCombineSVEVectorFSub(), instCombineSVEVectorFSubU(), and instCombineSVEVectorSub().
◆ instCombineSVEVectorSub()
◆ instCombineSVEZip()
◆ instCombineWhilelo()
◆ intrinsicIDToBinOpCode()
◆ isAllActivePredicate()
| bool isAllActivePredicate ( Value * Pred) | static |
|---|
◆ isLoopSizeWithinBudget()
◆ isOperandOfVmullHighP64()
| bool isOperandOfVmullHighP64 ( Value * Op) | static |
|---|
◆ isSMEABIRoutineCall()
◆ isSplatShuffle()
◆ isUnpackedVectorVT()
| bool isUnpackedVectorVT ( EVT VecVT) | static |
|---|
◆ processPhiNode()
The function will remove redundant reinterprets casting in the presence of the control flow.
Definition at line 1071 of file AArch64TargetTransformInfo.cpp.
References llvm::PHINode::addIncoming(), assert(), llvm::InstCombiner::Builder, llvm::cast(), llvm::IRBuilderBase::CreatePHI(), llvm::dyn_cast(), I, II, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::InstCombiner::replaceInstUsesWith(), and llvm::IRBuilderBase::SetInsertPoint().
Referenced by instCombineConvertFromSVBool().
◆ shouldSinkVectorOfPtrs()
◆ shouldSinkVScale()
We want to sink following cases: (add|sub|gep) A, ((mul|shl) vscale, imm); (add|sub|gep) A, vscale; (add|sub|gep) A, ((mul|shl) zext(vscale), imm);.
Definition at line 6536 of file AArch64TargetTransformInfo.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::cast(), llvm::PatternMatch::m_ConstantInt(), llvm::PatternMatch::m_Mul(), llvm::PatternMatch::m_Shl(), llvm::PatternMatch::m_VScale(), llvm::PatternMatch::m_ZExt(), and llvm::PatternMatch::match().
Referenced by llvm::AArch64TTIImpl::isProfitableToSinkOperands().
◆ shouldUnrollMultiExitLoop()
◆ simplifySVEIntrinsic()
Definition at line 1736 of file AArch64TargetTransformInfo.cpp.
References llvm::InstCombiner::eraseInstFromFunction(), llvm::UndefValue::get(), SVEIntrinsicInfo::getGoverningPredicateOperandIdx(), SVEIntrinsicInfo::getMatchingIROpode(), SVEIntrinsicInfo::getMatchingUndefIntrinsic(), llvm::Constant::getNullValue(), SVEIntrinsicInfo::getOperandIdxInactiveLanesTakenFrom(), SVEIntrinsicInfo::getOperandIdxWithNoActiveLanes(), llvm::Intrinsic::getOrInsertDeclaration(), SVEIntrinsicInfo::hasGoverningPredicate(), SVEIntrinsicInfo::hasMatchingIROpode(), SVEIntrinsicInfo::hasMatchingUndefIntrinsic(), SVEIntrinsicInfo::hasOperandWithNoActiveLanes(), II, SVEIntrinsicInfo::inactiveLanesAreUnused(), SVEIntrinsicInfo::inactiveLanesTakenFromOperand(), llvm::isa(), isAllActivePredicate(), llvm::Instruction::isBinaryOp(), llvm::MIPatternMatch::m_ZeroInt(), llvm::PatternMatch::match(), OpIdx, llvm::InstCombiner::replaceInstUsesWith(), llvm::InstCombiner::replaceOperand(), SVEIntrinsicInfo::resultIsZeroInitialized(), and simplifySVEIntrinsicBinOp().
Referenced by llvm::AArch64TTIImpl::instCombineIntrinsic().
◆ simplifySVEIntrinsicBinOp()
Definition at line 1684 of file AArch64TargetTransformInfo.cpp.
References assert(), llvm::InstCombiner::Builder, llvm::IRBuilderBase::CreateSelect(), DL, llvm::dyn_cast(), SVEIntrinsicInfo::getMatchingIROpode(), SVEIntrinsicInfo::getOperandIdxInactiveLanesTakenFrom(), II, SVEIntrinsicInfo::inactiveLanesAreNotDefined(), llvm::isa(), llvm::Instruction::isBinaryOp(), llvm::Instruction::isCommutative(), Opc, llvm::InstCombiner::replaceInstUsesWith(), llvm::InstCombiner::replaceOperand(), llvm::simplifyBinOp(), and stripInactiveLanes().
Referenced by simplifySVEIntrinsic().
◆ SimplifyValuePattern()
Definition at line 2654 of file AArch64TargetTransformInfo.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::isPowerOf2_64(), LHS, llvm::SmallVectorImpl< T >::resize(), RHS, SimplifyValuePattern(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by instCombineSVEDupqLane(), and SimplifyValuePattern().
◆ stripInactiveLanes()
◆ tryCombineFromSVBoolBinOp()
◆ Aarch64ForceUnrollThreshold
| cl::opt< int > Aarch64ForceUnrollThreshold("aarch64-force-unroll-threshold", cl::init(0), cl::Hidden, cl::desc("Threshold for forced unrolling of small loops in AArch64")) ( "aarch64-force-unroll-threshold" , cl::init(0) , cl::Hidden , cl::desc("Threshold for forced unrolling of small loops in AArch64") ) | static |
|---|
◆ BaseHistCntCost
| cl::opt< unsigned > BaseHistCntCost("aarch64-base-histcnt-cost", cl::init(8), cl::Hidden, cl::desc("The cost of a histcnt instruction")) ( "aarch64-base-histcnt-cost" , cl::init(8) , cl::Hidden , cl::desc("The cost of a histcnt instruction") ) | static |
|---|
◆ CallPenaltyChangeSM
| cl::opt< unsigned > CallPenaltyChangeSM("call-penalty-sm-change", cl::init(5), cl::Hidden, cl::desc( "Penalty of calling a function that requires a change to PSTATE.SM")) ( "call-penalty-sm-change" , cl::init(5) , cl::Hidden , cl::desc( "Penalty of calling a function that requires a change to PSTATE.SM") ) | static |
|---|
◆ DMBLookaheadThreshold
◆ EnableFalkorHWPFUnrollFix
| cl::opt< bool > EnableFalkorHWPFUnrollFix("enable-falkor-hwpf-unroll-fix", cl::init(true), cl::Hidden) ( "enable-falkor-hwpf-unroll-fix" , cl::init(true) , cl::Hidden ) | static |
|---|
◆ EnableFixedwidthAutovecInStreamingMode
| cl::opt< bool > EnableFixedwidthAutovecInStreamingMode("enable-fixedwidth-autovec-in-streaming-mode", cl::init(false), cl::Hidden) ( "enable-fixedwidth-autovec-in-streaming-mode" , cl::init(false) , cl::Hidden ) | static |
|---|
◆ EnableLSRCostOpt
| cl::opt< bool > EnableLSRCostOpt("enable-aarch64-lsr-cost-opt", cl::init(true), cl::Hidden) ( "enable-aarch64-lsr-cost-opt" , cl::init(true) , cl::Hidden ) | static |
|---|
◆ EnableOrLikeSelectOpt
| cl::opt< bool > EnableOrLikeSelectOpt("enable-aarch64-or-like-select", cl::init(true), cl::Hidden) ( "enable-aarch64-or-like-select" , cl::init(true) , cl::Hidden ) | static |
|---|
◆ EnableScalableAutovecInStreamingMode
| cl::opt< bool > EnableScalableAutovecInStreamingMode("enable-scalable-autovec-in-streaming-mode", cl::init(false), cl::Hidden) ( "enable-scalable-autovec-in-streaming-mode" , cl::init(false) , cl::Hidden ) | static |
|---|
◆ InlineCallPenaltyChangeSM
| cl::opt< unsigned > InlineCallPenaltyChangeSM("inline-call-penalty-sm-change", cl::init(10), cl::Hidden, cl::desc("Penalty of inlining a call that requires a change to PSTATE.SM")) ( "inline-call-penalty-sm-change" , cl::init(10) , cl::Hidden , cl::desc("Penalty of inlining a call that requires a change to PSTATE.SM") ) | static |
|---|
◆ NeonNonConstStrideOverhead
| cl::opt< unsigned > NeonNonConstStrideOverhead("neon-nonconst-stride-overhead", cl::init(10), cl::Hidden) ( "neon-nonconst-stride-overhead" , cl::init(10) , cl::Hidden ) | static |
|---|
◆ SVEGatherOverhead
| cl::opt< unsigned > SVEGatherOverhead("sve-gather-overhead", cl::init(10), cl::Hidden) ( "sve-gather-overhead" , cl::init(10) , cl::Hidden ) | static |
|---|
◆ SVEPreferFixedOverScalableIfEqualCost
| cl::opt< bool > SVEPreferFixedOverScalableIfEqualCost("sve-prefer-fixed-over-scalable-if-equal", cl::Hidden) ( "sve-prefer-fixed-over-scalable-if-equal" , cl::Hidden ) | static |
|---|
◆ SVEScatterOverhead
| cl::opt< unsigned > SVEScatterOverhead("sve-scatter-overhead", cl::init(10), cl::Hidden) ( "sve-scatter-overhead" , cl::init(10) , cl::Hidden ) | static |
|---|
◆ SVETailFolding
| cl::opt< TailFoldingOption, true, cl::parser< std::string > > SVETailFolding("sve-tail-folding", cl::desc( "Control the use of vectorisation using tail-folding for SVE where the" " option is specified in the form (Initial)[+(Flag1|Flag2|...)]:" "\ndisabled (Initial) No loop types will vectorize using " "tail-folding" "\ndefault (Initial) Uses the default tail-folding settings for " "the target CPU" "\nall (Initial) All legal loop types will vectorize using " "tail-folding" "\nsimple (Initial) Use tail-folding for simple loops (not " "reductions or recurrences)" "\nreductions Use tail-folding for loops containing reductions" "\nnoreductions Inverse of above" "\nrecurrences Use tail-folding for loops containing fixed order " "recurrences" "\nnorecurrences Inverse of above" "\nreverse Use tail-folding for loops requiring reversed " "predicates" "\nnoreverse Inverse of above"), cl::location(TailFoldingOptionLoc)) ( "sve-tail-folding" , cl::desc( "Control the use of vectorisation using tail-folding for SVE where the" " option is specified in the form (Initial)[+(Flag1|Flag2|...)]:" "\ndisabled (Initial) No loop types will vectorize using " "tail-folding" "\ndefault (Initial) Uses the default tail-folding settings for " "the target CPU" "\nall (Initial) All legal loop types will vectorize using " "tail-folding" "\nsimple (Initial) Use tail-folding for simple loops (not " "reductions or recurrences)" "\nreductions Use tail-folding for loops containing reductions" "\nnoreductions Inverse of above" "\nrecurrences Use tail-folding for loops containing fixed order " "recurrences" "\nnorecurrences Inverse of above" "\nreverse Use tail-folding for loops requiring reversed " "predicates" "\nnoreverse Inverse of above") , cl::location(TailFoldingOptionLoc) ) | static | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
◆ SVETailFoldInsnThreshold
| cl::opt< unsigned > SVETailFoldInsnThreshold("sve-tail-folding-insn-threshold", cl::init(15), cl::Hidden) ( "sve-tail-folding-insn-threshold" , cl::init(15) , cl::Hidden ) | static |
|---|
◆ TailFoldingOptionLoc
TailFoldingOption TailFoldingOptionLoc