|
LLVM 22.0.0git
|
Classes | |
| struct | bind_cst_ty |
| struct | bind_ty |
| struct | class_match |
| struct | cst_pred_ty |
| struct | is_all_ones |
| struct | is_one |
| struct | is_specific_cst |
| struct | is_specific_signed_cst |
| struct | is_zero |
| struct | SCEVAffineAddRec_match |
| Match an affine SCEVAddRecExpr. More... | |
| struct | SCEVBinaryExpr_match |
| Match a binary SCEV. More... | |
| struct | SCEVUnaryExpr_match |
| Match a unary SCEV. More... | |
| struct | SCEVURem_match |
| Match unsigned remainder pattern. More... | |
| struct | specificloop_ty |
| Match a specified const Loop*. More... | |
| struct | specificscev_ty |
| Match a specified const SCEV *. More... | |
Functions | |
| template<typename Pattern> | |
| bool | match (const SCEV *S, const Pattern &P) |
| cst_pred_ty< is_zero > | m_scev_Zero () |
| Match an integer 0. | |
| cst_pred_ty< is_one > | m_scev_One () |
| Match an integer 1. | |
| cst_pred_ty< is_all_ones > | m_scev_AllOnes () |
| Match an integer with all bits set. | |
| class_match< const SCEV > | m_SCEV () |
| class_match< const SCEVConstant > | m_SCEVConstant () |
| class_match< const SCEVVScale > | m_SCEVVScale () |
| bind_ty< const SCEV > | m_SCEV (const SCEV *&V) |
| Match a SCEV, capturing it if we match. | |
| bind_ty< const SCEVConstant > | m_SCEVConstant (const SCEVConstant *&V) |
| bind_ty< const SCEVUnknown > | m_SCEVUnknown (const SCEVUnknown *&V) |
| bind_ty< const SCEVAddExpr > | m_scev_Add (const SCEVAddExpr *&V) |
| bind_ty< const SCEVMulExpr > | m_scev_Mul (const SCEVMulExpr *&V) |
| specificscev_ty | m_scev_Specific (const SCEV *S) |
| Match if we have a specific specified SCEV. | |
| cst_pred_ty< is_specific_cst > | m_scev_SpecificInt (uint64_t V) |
| Match an SCEV constant with a plain unsigned integer. | |
| cst_pred_ty< is_specific_signed_cst > | m_scev_SpecificSInt (int64_t V) |
| Match an SCEV constant with a plain signed integer (sign-extended value will be matched) | |
| bind_cst_ty | m_scev_APInt (const APInt *&C) |
| Match an SCEV constant and bind it to an APInt. | |
| template<typename SCEVTy, typename Op0_t> | |
| SCEVUnaryExpr_match< SCEVTy, Op0_t > | m_scev_Unary (const Op0_t &Op0) |
| template<typename Op0_t> | |
| SCEVUnaryExpr_match< SCEVSignExtendExpr, Op0_t > | m_scev_SExt (const Op0_t &Op0) |
| template<typename Op0_t> | |
| SCEVUnaryExpr_match< SCEVZeroExtendExpr, Op0_t > | m_scev_ZExt (const Op0_t &Op0) |
| template<typename Op0_t> | |
| SCEVUnaryExpr_match< SCEVPtrToIntExpr, Op0_t > | m_scev_PtrToInt (const Op0_t &Op0) |
| template<typename Op0_t> | |
| SCEVUnaryExpr_match< SCEVTruncateExpr, Op0_t > | m_scev_Trunc (const Op0_t &Op0) |
| template<typename SCEVTy, typename Op0_t, typename Op1_t, SCEV::NoWrapFlags WrapFlags = SCEV::FlagAnyWrap, bool Commutable = false> | |
| SCEVBinaryExpr_match< SCEVTy, Op0_t, Op1_t, WrapFlags, Commutable > | m_scev_Binary (const Op0_t &Op0, const Op1_t &Op1) |
| template<typename Op0_t, typename Op1_t> | |
| SCEVBinaryExpr_match< SCEVAddExpr, Op0_t, Op1_t > | m_scev_Add (const Op0_t &Op0, const Op1_t &Op1) |
| template<typename Op0_t, typename Op1_t> | |
| SCEVBinaryExpr_match< SCEVMulExpr, Op0_t, Op1_t > | m_scev_Mul (const Op0_t &Op0, const Op1_t &Op1) |
| template<typename Op0_t, typename Op1_t> | |
| SCEVBinaryExpr_match< SCEVMulExpr, Op0_t, Op1_t, SCEV::FlagAnyWrap, true > | m_scev_c_Mul (const Op0_t &Op0, const Op1_t &Op1) |
| template<typename Op0_t, typename Op1_t> | |
| SCEVBinaryExpr_match< SCEVMulExpr, Op0_t, Op1_t, SCEV::FlagNUW, true > | m_scev_c_NUWMul (const Op0_t &Op0, const Op1_t &Op1) |
| template<typename Op0_t, typename Op1_t> | |
| SCEVBinaryExpr_match< SCEVUDivExpr, Op0_t, Op1_t > | m_scev_UDiv (const Op0_t &Op0, const Op1_t &Op1) |
| template<typename Op0_t, typename Op1_t> | |
| SCEVBinaryExpr_match< SCEVSMaxExpr, Op0_t, Op1_t > | m_scev_SMax (const Op0_t &Op0, const Op1_t &Op1) |
| template<typename Op0_t, typename Op1_t> | |
| SCEVBinaryExpr_match< SCEVMinMaxExpr, Op0_t, Op1_t > | m_scev_MinMax (const Op0_t &Op0, const Op1_t &Op1) |
| template<typename Op0_t, typename Op1_t> | |
| SCEVURem_match< Op0_t, Op1_t > | m_scev_URem (Op0_t LHS, Op1_t RHS, ScalarEvolution &SE) |
| Match the mathematical pattern A - (A / B) * B, where A and B can be arbitrary expressions. | |
| class_match< const Loop > | m_Loop () |
| specificloop_ty | m_SpecificLoop (const Loop *L) |
| bind_ty< const Loop > | m_Loop (const Loop *&L) |
| template<typename Op0_t, typename Op1_t> | |
| SCEVAffineAddRec_match< Op0_t, Op1_t, class_match< const Loop > > | m_scev_AffineAddRec (const Op0_t &Op0, const Op1_t &Op1) |
| template<typename Op0_t, typename Op1_t, typename Loop_t> | |
| SCEVAffineAddRec_match< Op0_t, Op1_t, Loop_t > | m_scev_AffineAddRec (const Op0_t &Op0, const Op1_t &Op1, const Loop_t &L) |
|
inline |
Definition at line 341 of file ScalarEvolutionPatternMatch.h.
Referenced by DoInitialMatch(), IsKnownPredicateViaAddRecStart(), and m_scev_AffineAddRec().
Definition at line 368 of file ScalarEvolutionPatternMatch.h.
|
inline |
Definition at line 63 of file ScalarEvolutionPatternMatch.h.
Referenced by llvm::canPeelLastIteration(), collectDivisibilityInformation(), CollectSubexprs(), llvm::ScalarEvolution::computeConstantDifference(), DoInitialMatch(), llvm::ScalarEvolution::getAddExpr(), llvm::ScalarEvolution::getMulExpr(), getStrideFromPointer(), llvm::ScalarEvolution::getUDivExpr(), llvm::ScalarEvolution::getZeroExtendExprImpl(), isBigEndianBitShift(), isDivisibilityGuard(), isHighCostExpansion(), isKnownPredicateExtendIdiom(), IsKnownPredicateViaAddRecStart(), isLoopCounter(), llvm::SCEVPatternMatch::SCEVURem_match< Op0_t, Op1_t >::match(), MatchBinarySub(), MatchNotExpr(), mayUsePostIncMode(), llvm::LoopVectorizationPlanner::selectEpilogueVectorizationFactor(), llvm::LoopVectorizationCostModel::setVectorizedCallDecision(), and llvm::ScalarEvolution::SimplifyICmpOperands().
Match a SCEV, capturing it if we match.
Definition at line 86 of file ScalarEvolutionPatternMatch.h.
|
inline |
Definition at line 229 of file ScalarEvolutionPatternMatch.h.
References m_scev_Binary().
|
inline |
Definition at line 94 of file ScalarEvolutionPatternMatch.h.
Referenced by llvm::ScalarEvolution::getAddExpr(), llvm::ScalarEvolution::getMulExpr(), llvm::ScalarEvolution::getUDivExpr(), llvm::SCEVPatternMatch::SCEVURem_match< Op0_t, Op1_t >::match(), MatchBinarySub(), and MatchNotExpr().
|
inline |
Definition at line 372 of file ScalarEvolutionPatternMatch.h.
References m_Loop().
Referenced by llvm::canPeelLastIteration(), CollectSubexprs(), DoInitialMatch(), getStrideFromPointer(), IsKnownPredicateViaAddRecStart(), isLoopCounter(), mayUsePostIncMode(), and llvm::LoopVectorizationCostModel::setVectorizedCallDecision().
|
inline |
Definition at line 379 of file ScalarEvolutionPatternMatch.h.
|
inline |
Match an integer with all bits set.
Definition at line 55 of file ScalarEvolutionPatternMatch.h.
Referenced by llvm::ScalarEvolution::getAddExpr(), llvm::SCEV::isAllOnesValue(), MatchBinarySub(), and MatchNotExpr().
|
inline |
Match an SCEV constant and bind it to an APInt.
Definition at line 152 of file ScalarEvolutionPatternMatch.h.
References llvm::CallingConv::C.
Referenced by canFoldIVIncExpr(), llvm::ScalarEvolution::computeConstantDifference(), ExtractImmediate(), getNextSCEVDivisibleByDivisor(), getPreviousSCEVDivisibleByDivisor(), getSmallConstantTripCount(), getStrideFromAddRec(), llvm::ScalarEvolution::getUDivExpr(), llvm::ScalarEvolution::getZeroExtendExprImpl(), and mayLoopAccessLocation().
|
inline |
Definition at line 222 of file ScalarEvolutionPatternMatch.h.
Referenced by m_scev_Add(), m_scev_c_Mul(), m_scev_c_NUWMul(), m_scev_MinMax(), m_scev_Mul(), m_scev_SMax(), and m_scev_UDiv().
|
inline |
Definition at line 241 of file ScalarEvolutionPatternMatch.h.
References m_scev_Binary().
Referenced by llvm::LoopVectorizationPlanner::selectEpilogueVectorizationFactor(), and llvm::ScalarEvolution::SimplifyICmpOperands().
|
inline |
Definition at line 248 of file ScalarEvolutionPatternMatch.h.
References m_scev_Binary().
Referenced by llvm::ScalarEvolution::getUDivExpr().
|
inline |
Definition at line 267 of file ScalarEvolutionPatternMatch.h.
References m_scev_Binary().
|
inline |
Definition at line 235 of file ScalarEvolutionPatternMatch.h.
References m_scev_Binary().
|
inline |
Definition at line 98 of file ScalarEvolutionPatternMatch.h.
Referenced by canFoldIVIncExpr(), CollectSubexprs(), llvm::ScalarEvolution::computeConstantDifference(), ExtractImmediate(), llvm::ScalarEvolution::getAddExpr(), getSmallConstantTripCount(), llvm::ScalarEvolution::getZeroExtendExprImpl(), isBigEndianBitShift(), isHighCostExpansion(), llvm::SCEVPatternMatch::SCEVURem_match< Op0_t, Op1_t >::match(), MatchBinarySub(), and MatchNotExpr().
|
inline |
Match an integer 1.
Definition at line 48 of file ScalarEvolutionPatternMatch.h.
Referenced by llvm::canPeelLastIteration(), isLoopCounter(), and llvm::SCEV::isOne().
|
inline |
Definition at line 185 of file ScalarEvolutionPatternMatch.h.
|
inline |
Definition at line 173 of file ScalarEvolutionPatternMatch.h.
References m_scev_Unary().
Referenced by isKnownPredicateExtendIdiom(), and isSimpleCastedPHI().
|
inline |
Definition at line 261 of file ScalarEvolutionPatternMatch.h.
References m_scev_Binary().
Referenced by llvm::ScalarEvolution::getUDivExpr().
|
inline |
Match if we have a specific specified SCEV.
Definition at line 112 of file ScalarEvolutionPatternMatch.h.
Referenced by llvm::ScalarEvolution::getAddExpr(), llvm::ScalarEvolution::getUDivExpr(), isKnownPredicateExtendIdiom(), IsKnownPredicateViaAddRecStart(), and isSimpleCastedPHI().
|
inline |
Match an SCEV constant with a plain unsigned integer.
Definition at line 121 of file ScalarEvolutionPatternMatch.h.
Referenced by isBigEndianBitShift().
|
inline |
Match an SCEV constant with a plain signed integer (sign-extended value will be matched)
Definition at line 131 of file ScalarEvolutionPatternMatch.h.
Referenced by llvm::LoopVectorizationCostModel::setVectorizedCallDecision().
|
inline |
Definition at line 191 of file ScalarEvolutionPatternMatch.h.
References m_scev_Unary().
Referenced by llvm::ScalarEvolution::getZeroExtendExprImpl(), isSimpleCastedPHI(), and llvm::SCEVPatternMatch::SCEVURem_match< Op0_t, Op1_t >::match().
|
inline |
Definition at line 255 of file ScalarEvolutionPatternMatch.h.
References m_scev_Binary().
Referenced by llvm::ScalarEvolution::getMulExpr(), and isBigEndianBitShift().
|
inline |
Definition at line 167 of file ScalarEvolutionPatternMatch.h.
Referenced by m_scev_SExt(), m_scev_Trunc(), and m_scev_ZExt().
|
inline |
Match the mathematical pattern A - (A / B) * B, where A and B can be arbitrary expressions.
Also match zext (trunc A to iB) to iY, which is used for URem with constant power-of-2 second operands. It's not always easy, as A and B can be folded (imagine A is X / 2, and B is 4, A / B becomes X / 8).
Definition at line 336 of file ScalarEvolutionPatternMatch.h.
Referenced by collectDivisibilityInformation(), llvm::ScalarEvolution::getAddExpr(), llvm::ScalarEvolution::getZeroExtendExprImpl(), and isDivisibilityGuard().
|
inline |
Match an integer 0.
Definition at line 41 of file ScalarEvolutionPatternMatch.h.
Referenced by collectDivisibilityInformation(), llvm::ScalarEvolution::getUDivExpr(), and llvm::SCEV::isZero().
|
inline |
Definition at line 179 of file ScalarEvolutionPatternMatch.h.
References m_scev_Unary().
Referenced by llvm::ScalarEvolution::getAddExpr(), llvm::ScalarEvolution::getMulExpr(), isKnownPredicateExtendIdiom(), isSimpleCastedPHI(), and llvm::SCEVPatternMatch::SCEVURem_match< Op0_t, Op1_t >::match().
|
inline |
Definition at line 64 of file ScalarEvolutionPatternMatch.h.
Referenced by CollectSubexprs(), llvm::ScalarEvolution::getMulExpr(), and mayUsePostIncMode().
|
inline |
Definition at line 87 of file ScalarEvolutionPatternMatch.h.
|
inline |
Definition at line 90 of file ScalarEvolutionPatternMatch.h.
Referenced by collectDivisibilityInformation().
|
inline |
Definition at line 67 of file ScalarEvolutionPatternMatch.h.
Referenced by canFoldIVIncExpr(), ExtractImmediate(), getSmallConstantTripCount(), llvm::ScalarEvolution::getUDivExpr(), llvm::LoopVectorizationPlanner::selectEpilogueVectorizationFactor(), and llvm::ScalarEvolution::SimplifyICmpOperands().
|
inline |
Definition at line 366 of file ScalarEvolutionPatternMatch.h.
Referenced by llvm::canPeelLastIteration(), getStrideFromPointer(), IsKnownPredicateViaAddRecStart(), isLoopCounter(), and llvm::LoopVectorizationCostModel::setVectorizedCallDecision().
Definition at line 21 of file ScalarEvolutionPatternMatch.h.
References P.
Referenced by canFoldIVIncExpr(), llvm::canPeelLastIteration(), CollectSubexprs(), countToEliminateCompares(), DoInitialMatch(), emitTransformedIndex(), ExtractImmediate(), fixReductionScalarResumeWhenVectorizingEpilog(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::LoopVectorizationCostModel::getReductionPatternCost(), getSmallConstantTripCount(), getStartValueFromReductionResult(), isHighCostExpansion(), isLoopCounter(), isSignificantBitCheckWellFormed(), llvm::SCEVPatternMatch::SCEVURem_match< Op0_t, Op1_t >::match(), RecurrenceInfo::matchConditionalRecurrence(), mayUsePostIncMode(), optimizeLoopExitWithUnknownExitCount(), planContainsAdditionalSimplifications(), llvm::LoopVectorizationPlanner::selectEpilogueVectorizationFactor(), and llvm::LoopVectorizationCostModel::setVectorizedCallDecision().