LLVM: llvm::SCEVPatternMatch Namespace Reference (original) (raw)
| 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_undef_or_poison |
| 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) |
| is_undef_or_poison | m_scev_UndefOrPoison () |
| Match an SCEVUnknown wrapping undef or poison. |
◆ m_Loop() [1/2]
◆ m_Loop() [2/2]
◆ m_SCEV() [1/2]
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(), llvm::RecurrenceDescriptor::isFindIVPattern(), isHighCostExpansion(), llvm::InductionDescriptor::isInductionPHI(), 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().
◆ m_SCEV() [2/2]
◆ m_scev_Add() [1/2]
template<typename Op0_t, typename Op1_t>
◆ m_scev_Add() [2/2]
◆ m_scev_AffineAddRec() [1/2]
template<typename Op0_t, typename Op1_t>
◆ m_scev_AffineAddRec() [2/2]
template<typename Op0_t, typename Op1_t, typename Loop_t>
◆ m_scev_AllOnes()
◆ m_scev_APInt()
◆ m_scev_Binary()
template<typename SCEVTy, typename Op0_t, typename Op1_t, SCEV::NoWrapFlags WrapFlags = SCEV::FlagAnyWrap, bool Commutable = false>
◆ m_scev_c_Mul()
template<typename Op0_t, typename Op1_t>
◆ m_scev_c_NUWMul()
template<typename Op0_t, typename Op1_t>
◆ m_scev_MinMax()
template<typename Op0_t, typename Op1_t>
◆ m_scev_Mul() [1/2]
template<typename Op0_t, typename Op1_t>
◆ m_scev_Mul() [2/2]
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().
◆ m_scev_One()
◆ m_scev_PtrToInt()
◆ m_scev_SExt()
◆ m_scev_SMax()
template<typename Op0_t, typename Op1_t>
◆ m_scev_Specific()
◆ m_scev_SpecificInt()
◆ m_scev_SpecificSInt()
◆ m_scev_Trunc()
◆ m_scev_UDiv()
template<typename Op0_t, typename Op1_t>
◆ m_scev_Unary()
template<typename SCEVTy, typename Op0_t>
◆ m_scev_UndefOrPoison()
◆ m_scev_URem()
template<typename Op0_t, typename Op1_t>
◆ m_scev_Zero()
◆ m_scev_ZExt()
◆ m_SCEVConstant() [1/2]
◆ m_SCEVConstant() [2/2]
◆ m_SCEVUnknown()
◆ m_SCEVVScale()
◆ m_SpecificLoop()
◆ match()
Definition at line 21 of file ScalarEvolutionPatternMatch.h.
References P.
Referenced by canFoldIVIncExpr(), llvm::canPeelLastIteration(), CollectSubexprs(), countToEliminateCompares(), DoInitialMatch(), emitTransformedIndex(), ExtractImmediate(), llvm::LoopVectorizationCostModel::getInstructionCost(), llvm::LoopVectorizationCostModel::getReductionPatternCost(), getSmallConstantTripCount(), isHighCostExpansion(), isLoopCounter(), isSignificantBitCheckWellFormed(), llvm::SCEVPatternMatch::is_undef_or_poison::match(), llvm::SCEVPatternMatch::SCEVURem_match< Op0_t, Op1_t >::match(), RecurrenceInfo::matchConditionalRecurrence(), mayUsePostIncMode(), optimizeLoopExitWithUnknownExitCount(), planContainsAdditionalSimplifications(), llvm::LoopVectorizationPlanner::selectEpilogueVectorizationFactor(), and llvm::LoopVectorizationCostModel::setVectorizedCallDecision().