|
LLVM 22.0.0git
|
Classes | |
| struct | AllOnes_match |
| struct | And |
| struct | And< Pred, Preds... > |
| class | BasicMatchContext |
| MatchContext can repurpose existing patterns to behave differently under a certain context. More... | |
| struct | BinaryOpc_match |
| struct | CondCode_match |
| struct | ConstantInt_match |
| struct | DeferredValue_match |
| struct | EffectiveOperands |
| Provide number of operands that are not chain or glue, as well as the first index of such operand. More... | |
| struct | EffectiveOperands< false > |
| struct | m_Mask |
| struct | m_SpecificMask |
| struct | MaxMin_match |
| struct | Not |
| struct | NUses_match |
| struct | Ones_match |
| struct | Opcode_match |
| struct | Operands_match |
| struct | Operands_match< OpIdx, OpndPred, OpndPreds... > |
| struct | Or |
| struct | Or< Pred, Preds... > |
| struct | ReassociatableOpc_match |
| struct | Result_match |
| struct | SDShuffle_match |
| Matching while capturing mask. More... | |
| struct | smax_pred_ty |
| struct | smin_pred_ty |
| struct | SpecificFP_match |
| struct | SpecificInt_match |
| struct | SwitchContext |
| Switch to a different MatchContext for subsequent patterns. More... | |
| struct | TernaryOpc_match |
| struct | TLI_pred_match |
| struct | umax_pred_ty |
| struct | umin_pred_ty |
| struct | UnaryOpc_match |
| struct | Value_bind |
| struct | Value_match |
| struct | ValueType_bind |
| struct | ValueType_match |
| struct | Zero_match |
Functions | |
| template<typename Pattern, typename MatchContext> | |
| bool | sd_context_match (SDValue N, const MatchContext &Ctx, Pattern &&P) |
| template<typename Pattern, typename MatchContext> | |
| bool | sd_context_match (SDNode *N, const MatchContext &Ctx, Pattern &&P) |
| template<typename Pattern> | |
| bool | sd_match (SDNode *N, const SelectionDAG *DAG, Pattern &&P) |
| template<typename Pattern> | |
| bool | sd_match (SDValue N, const SelectionDAG *DAG, Pattern &&P) |
| template<typename Pattern> | |
| bool | sd_match (SDNode *N, Pattern &&P) |
| template<typename Pattern> | |
| bool | sd_match (SDValue N, Pattern &&P) |
| Value_match | m_Value () |
| Match any valid SDValue. | |
| Value_match | m_Specific (SDValue N) |
| template<unsigned ResNo, typename Pattern> | |
| Result_match< ResNo, Pattern > | m_Result (const Pattern &P) |
| Match only if the SDValue is a certain result at ResNo. | |
| DeferredValue_match | m_Deferred (SDValue &V) |
| Similar to m_Specific, but the specific value to match is determined by another sub-pattern in the same sd_match() expression. | |
| template<typename Pred> | |
| Not (const Pred &P) -> Not< Pred > | |
| template<typename Pred> | |
| Not< Pred > | m_Unless (const Pred &P) |
| Match if the inner pattern does NOT match. | |
| template<typename... Preds> | |
| And< Preds... > | m_AllOf (const Preds &...preds) |
| template<typename... Preds> | |
| Or< Preds... > | m_AnyOf (const Preds &...preds) |
| template<typename... Preds> | |
| auto | m_NoneOf (const Preds &...preds) |
| Opcode_match | m_Opc (unsigned Opcode) |
| auto | m_Undef () |
| Opcode_match | m_Poison () |
| template<typename Pattern> | |
| NUses_match< 1, Pattern > | m_OneUse (const Pattern &P) |
| template<unsigned N, typename Pattern> | |
| NUses_match< N, Pattern > | m_NUses (const Pattern &P) |
| NUses_match< 1, Value_match > | m_OneUse () |
| template<unsigned N> | |
| NUses_match< N, Value_match > | m_NUses () |
| Value_bind | m_Value (SDValue &N) |
| template<typename PredFuncT, typename Pattern> | |
| TLI_pred_match (const PredFuncT &Pred, const Pattern &P) -> TLI_pred_match< Pattern, PredFuncT > | |
| template<typename Pattern> | |
| auto | m_LegalOp (const Pattern &P) |
| Match legal SDNodes based on the information provided by TargetLowering. | |
| template<typename MatchContext, typename Pattern> | |
| SwitchContext< MatchContext, Pattern > | m_Context (const MatchContext &Ctx, Pattern &&P) |
| ValueType_bind | m_VT (EVT &VT) |
| Retreive the ValueType of the current SDValue. | |
| template<typename PredFuncT, typename Pattern> | |
| ValueType_match (const PredFuncT &Pred, const Pattern &P) -> ValueType_match< Pattern, PredFuncT > | |
| template<typename Pattern> | |
| auto | m_SpecificVT (EVT RefVT, const Pattern &P) |
| Match a specific ValueType. | |
| auto | m_SpecificVT (EVT RefVT) |
| auto | m_Glue () |
| auto | m_OtherVT () |
| template<typename Pattern> | |
| auto | m_SpecificScalarVT (EVT RefVT, const Pattern &P) |
| Match a scalar ValueType. | |
| auto | m_SpecificScalarVT (EVT RefVT) |
| template<typename Pattern> | |
| auto | m_SpecificVectorElementVT (EVT RefVT, const Pattern &P) |
| Match a vector ValueType. | |
| auto | m_SpecificVectorElementVT (EVT RefVT) |
| template<typename Pattern> | |
| auto | m_IntegerVT (const Pattern &P) |
| Match any integer ValueTypes. | |
| auto | m_IntegerVT () |
| template<typename Pattern> | |
| auto | m_FloatingPointVT (const Pattern &P) |
| Match any floating point ValueTypes. | |
| auto | m_FloatingPointVT () |
| template<typename Pattern> | |
| auto | m_VectorVT (const Pattern &P) |
| Match any vector ValueTypes. | |
| auto | m_VectorVT () |
| template<typename Pattern> | |
| auto | m_FixedVectorVT (const Pattern &P) |
| Match fixed-length vector ValueTypes. | |
| auto | m_FixedVectorVT () |
| template<typename Pattern> | |
| auto | m_ScalableVectorVT (const Pattern &P) |
| Match scalable vector ValueTypes. | |
| auto | m_ScalableVectorVT () |
| template<typename Pattern> | |
| auto | m_LegalType (const Pattern &P) |
| Match legal ValueTypes based on the information provided by TargetLowering. | |
| template<typename... OpndPreds> | |
| auto | m_Node (unsigned Opcode, const OpndPreds &...preds) |
| template<typename T0_P, typename T1_P, typename T2_P> | |
| TernaryOpc_match< T0_P, T1_P, T2_P > | m_SetCC (const T0_P &LHS, const T1_P &RHS, const T2_P &CC) |
| template<typename T0_P, typename T1_P, typename T2_P> | |
| TernaryOpc_match< T0_P, T1_P, T2_P, true, false > | m_c_SetCC (const T0_P &LHS, const T1_P &RHS, const T2_P &CC) |
| template<typename T0_P, typename T1_P, typename T2_P> | |
| TernaryOpc_match< T0_P, T1_P, T2_P > | m_Select (const T0_P &Cond, const T1_P &T, const T2_P &F) |
| template<typename T0_P, typename T1_P, typename T2_P> | |
| TernaryOpc_match< T0_P, T1_P, T2_P > | m_VSelect (const T0_P &Cond, const T1_P &T, const T2_P &F) |
| template<typename T0_P, typename T1_P, typename T2_P> | |
| auto | m_SelectLike (const T0_P &Cond, const T1_P &T, const T2_P &F) |
| template<typename T0_P, typename T1_P, typename T2_P> | |
| Result_match< 0, TernaryOpc_match< T0_P, T1_P, T2_P > > | m_Load (const T0_P &Ch, const T1_P &Ptr, const T2_P &Offset) |
| template<typename T0_P, typename T1_P, typename T2_P> | |
| TernaryOpc_match< T0_P, T1_P, T2_P > | m_InsertElt (const T0_P &Vec, const T1_P &Val, const T2_P &Idx) |
| template<typename LHS, typename RHS, typename IDX> | |
| TernaryOpc_match< LHS, RHS, IDX > | m_InsertSubvector (const LHS &Base, const RHS &Sub, const IDX &Idx) |
| template<typename T0_P, typename T1_P, typename T2_P> | |
| TernaryOpc_match< T0_P, T1_P, T2_P > | m_TernaryOp (unsigned Opc, const T0_P &Op0, const T1_P &Op1, const T2_P &Op2) |
| template<typename T0_P, typename T1_P, typename T2_P> | |
| TernaryOpc_match< T0_P, T1_P, T2_P, true > | m_c_TernaryOp (unsigned Opc, const T0_P &Op0, const T1_P &Op1, const T2_P &Op2) |
| template<typename LTy, typename RTy, typename TTy, typename FTy, typename CCTy> | |
| auto | m_SelectCC (const LTy &L, const RTy &R, const TTy &T, const FTy &F, const CCTy &CC) |
| template<typename LTy, typename RTy, typename TTy, typename FTy, typename CCTy> | |
| auto | m_SelectCCLike (const LTy &L, const RTy &R, const TTy &T, const FTy &F, const CCTy &CC) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_BinOp (unsigned Opc, const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_c_BinOp (unsigned Opc, const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, false, true > | m_ChainedBinOp (unsigned Opc, const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true, true > | m_c_ChainedBinOp (unsigned Opc, const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_Add (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_Sub (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_Mul (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_And (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_Or (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_DisjointOr (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| auto | m_AddLike (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_Xor (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| auto | m_BitwiseLogic (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_SMin (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| auto | m_SMinLike (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_SMax (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| auto | m_SMaxLike (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_UMin (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| auto | m_UMinLike (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_UMax (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| auto | m_UMaxLike (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_UDiv (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_SDiv (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_URem (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_SRem (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_Shl (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_Sra (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_Srl (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| auto | m_ExactSr (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_Rotl (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_Rotr (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_FAdd (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_FSub (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_FMul (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_FDiv (const LHS &L, const RHS &R) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_FRem (const LHS &L, const RHS &R) |
| template<typename V1_t, typename V2_t> | |
| BinaryOpc_match< V1_t, V2_t > | m_Shuffle (const V1_t &v1, const V2_t &v2) |
| template<typename V1_t, typename V2_t, typename Mask_t> | |
| SDShuffle_match< V1_t, V2_t, Mask_t > | m_Shuffle (const V1_t &v1, const V2_t &v2, const Mask_t &mask) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_ExtractElt (const LHS &Vec, const RHS &Idx) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS > | m_ExtractSubvector (const LHS &Vec, const RHS &Idx) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_UnaryOp (unsigned Opc, const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd, true > | m_ChainedUnaryOp (unsigned Opc, const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_BitCast (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_BSwap (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_BitReverse (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_ZExt (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_NNegZExt (const Opnd &Op) |
| template<typename Opnd> | |
| auto | m_SExt (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_AnyExt (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_Trunc (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_Abs (const Opnd &Op) |
| template<typename Opnd> | |
| auto | m_ZExtOrSelf (const Opnd &Op) |
| Match a zext or identity Allows to peek through optional extensions. | |
| template<typename Opnd> | |
| auto | m_SExtOrSelf (const Opnd &Op) |
| Match a sext or identity Allows to peek through optional extensions. | |
| template<typename Opnd> | |
| auto | m_SExtLike (const Opnd &Op) |
| template<typename Opnd> | |
| Or< UnaryOpc_match< Opnd >, Opnd > | m_AExtOrSelf (const Opnd &Op) |
| Match a aext or identity Allows to peek through optional extensions. | |
| template<typename Opnd> | |
| Or< UnaryOpc_match< Opnd >, Opnd > | m_TruncOrSelf (const Opnd &Op) |
| Match a trunc or identity Allows to peek through optional truncations. | |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_VScale (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_FPToUI (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_FPToSI (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_Ctpop (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_Ctlz (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_Cttz (const Opnd &Op) |
| template<typename Opnd> | |
| UnaryOpc_match< Opnd > | m_FNeg (const Opnd &Op) |
| ConstantInt_match | m_ConstInt () |
| Match any integer constants or splat of an integer constant. | |
| ConstantInt_match | m_ConstInt (APInt &V) |
| Match any integer constants or splat of an integer constant; return the specific constant or constant splat value. | |
| SpecificInt_match | m_SpecificInt (APInt V) |
| Match a specific integer constant or constant splat value. | |
| SpecificInt_match | m_SpecificInt (uint64_t V) |
| SpecificFP_match | m_SpecificFP (APFloat V) |
| Match a specific float constant. | |
| SpecificFP_match | m_SpecificFP (double V) |
| Ones_match | m_One (bool AllowUndefs=false) |
| Zero_match | m_Zero (bool AllowUndefs=false) |
| AllOnes_match | m_AllOnes (bool AllowUndefs=false) |
| auto | m_True () |
| Match true boolean value based on the information provided by TargetLowering. | |
| auto | m_False () |
| Match false boolean value based on the information provided by TargetLowering. | |
| CondCode_match | m_CondCode () |
| Match any conditional code SDNode. | |
| CondCode_match | m_CondCode (ISD::CondCode &CC) |
| Match any conditional code SDNode and return its ISD::CondCode value. | |
| CondCode_match | m_SpecificCondCode (ISD::CondCode CC) |
| Match a conditional code SDNode with a specific ISD::CondCode. | |
| template<typename ValTy> | |
| BinaryOpc_match< Zero_match, ValTy, false > | m_Neg (const ValTy &V) |
| Match a negate as a sub(0, v) | |
| template<typename ValTy> | |
| BinaryOpc_match< ValTy, AllOnes_match, true > | m_Not (const ValTy &V) |
| Match a Not as a xor(v, -1) or xor(-1, v) | |
| template<typename... PatternTs> | |
| ReassociatableOpc_match< PatternTs... > | m_ReassociatableAdd (const PatternTs &...Patterns) |
| template<typename... PatternTs> | |
| ReassociatableOpc_match< PatternTs... > | m_ReassociatableOr (const PatternTs &...Patterns) |
| template<typename... PatternTs> | |
| ReassociatableOpc_match< PatternTs... > | m_ReassociatableAnd (const PatternTs &...Patterns) |
| template<typename... PatternTs> | |
| ReassociatableOpc_match< PatternTs... > | m_ReassociatableMul (const PatternTs &...Patterns) |
|
inline |
Definition at line 1042 of file SDPatternMatch.h.
References llvm::ISD::ABS.
Referenced by combineBasicSADPattern().
|
inline |
Definition at line 788 of file SDPatternMatch.h.
References llvm::ISD::ADD, LHS, and RHS.
Referenced by m_AddLike().
Definition at line 819 of file SDPatternMatch.h.
References LHS, m_Add(), m_AnyOf(), m_DisjointOr(), and RHS.
|
inline |
Match a aext or identity Allows to peek through optional extensions.
Definition at line 1065 of file SDPatternMatch.h.
References m_AnyExt().
Definition at line 211 of file SDPatternMatch.h.
Referenced by combineAdd(), combineAnd(), combineBasicSADPattern(), combineLogicBlendIntoConditionalNegate(), combineSCALAR_TO_VECTOR(), commuteSelect(), m_Node(), and matchPMADDWD().
|
inline |
Definition at line 1213 of file SDPatternMatch.h.
|
inline |
Definition at line 803 of file SDPatternMatch.h.
References llvm::ISD::AND, LHS, and RHS.
Referenced by m_BitwiseLogic().
|
inline |
Definition at line 1034 of file SDPatternMatch.h.
References llvm::ISD::ANY_EXTEND.
Referenced by combineSCALAR_TO_VECTOR(), m_AExtOrSelf(), and visitORCommutative().
Definition at line 215 of file SDPatternMatch.h.
Referenced by combineBasicSADPattern(), getShlAddShlAdd(), m_AddLike(), m_BitwiseLogic(), m_ExactSr(), m_NoneOf(), m_SelectCCLike(), m_SelectLike(), m_SExtLike(), m_SExtOrSelf(), m_SMaxLike(), m_SMinLike(), m_UMaxLike(), m_UMinLike(), m_Undef(), m_ZExtOrSelf(), and llvm::RISCVTargetLowering::PerformDAGCombine().
|
inline |
Definition at line 765 of file SDPatternMatch.h.
|
inline |
Definition at line 1007 of file SDPatternMatch.h.
|
inline |
Definition at line 1017 of file SDPatternMatch.h.
References llvm::ISD::BITREVERSE.
|
inline |
Definition at line 1012 of file SDPatternMatch.h.
References llvm::ISD::BSWAP.
|
inline |
Definition at line 770 of file SDPatternMatch.h.
|
inline |
Definition at line 782 of file SDPatternMatch.h.
|
inline |
Definition at line 546 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SETCC.
Referenced by isTruncateOf(), performAnyAllCombine(), and performBitcastCombine().
|
inline |
Definition at line 596 of file SDPatternMatch.h.
References Opc.
|
inline |
Definition at line 777 of file SDPatternMatch.h.
|
inline |
Definition at line 1002 of file SDPatternMatch.h.
References Opc.
|
inline |
Match any conditional code SDNode.
Definition at line 1280 of file SDPatternMatch.h.
Referenced by commuteSelect(), foldVSelectToSignBitSplatMask(), performAnyAllCombine(), and performBitcastCombine().
|
inline |
Match any conditional code SDNode and return its ISD::CondCode value.
Definition at line 1282 of file SDPatternMatch.h.
|
inline |
Match any integer constants or splat of an integer constant.
Definition at line 1127 of file SDPatternMatch.h.
Referenced by combineAdd(), combineOrAndToBitfieldInsert(), combineOrToBitfieldInsert(), combinePMULH(), combineShlAddIAddImpl(), combineXorToBitfieldInsert(), detectUSatPattern(), foldSubCtlzNot(), getShlAddShlAdd(), m_False(), m_True(), llvm::SDPatternMatch::SpecificInt_match::match(), matchPMADDWD(), matchPMADDWD_2(), and reverseZExtICmpCombine().
|
inline |
Match any integer constants or splat of an integer constant; return the specific constant or constant splat value.
Definition at line 1130 of file SDPatternMatch.h.
|
inline |
Definition at line 314 of file SDPatternMatch.h.
References P.
|
inline |
Definition at line 1092 of file SDPatternMatch.h.
References llvm::ISD::CTLZ.
Referenced by foldSubCtlzNot().
|
inline |
Definition at line 1088 of file SDPatternMatch.h.
References llvm::ISD::CTPOP.
|
inline |
Definition at line 1096 of file SDPatternMatch.h.
References llvm::ISD::CTTZ.
|
inline |
Similar to m_Specific, but the specific value to match is determined by another sub-pattern in the same sd_match() expression.
For instance, We cannot match (add V, V) with m_Add(m_Value(X), m_Specific(X)) since X is not initialized at the time it got copied into m_Specific. Instead, we should use m_Add(m_Value(X), m_Deferred(X)).
Definition at line 143 of file SDPatternMatch.h.
|
inline |
Definition at line 813 of file SDPatternMatch.h.
References llvm::SDNodeFlags::Disjoint, LHS, llvm::ISD::OR, and RHS.
Referenced by m_AddLike().
Definition at line 909 of file SDPatternMatch.h.
References llvm::SDNodeFlags::Exact, LHS, m_AnyOf(), RHS, llvm::ISD::SRA, and llvm::ISD::SRL.
Referenced by expandMulToAddOrSubOfShl(), and getShlAddShlAdd().
|
inline |
Definition at line 961 of file SDPatternMatch.h.
References llvm::ISD::EXTRACT_VECTOR_ELT, LHS, and RHS.
|
inline |
Definition at line 966 of file SDPatternMatch.h.
References llvm::ISD::EXTRACT_SUBVECTOR, LHS, and RHS.
|
inline |
Definition at line 925 of file SDPatternMatch.h.
References llvm::ISD::FADD, LHS, and RHS.
|
inline |
Match false boolean value based on the information provided by TargetLowering.
Definition at line 1239 of file SDPatternMatch.h.
References llvm::TargetLoweringBase::getBooleanContents(), llvm::APInt::isZero(), m_ConstInt(), m_Value(), N, sd_match(), llvm::TargetLoweringBase::UndefinedBooleanContent, llvm::TargetLoweringBase::ZeroOrNegativeOneBooleanContent, and llvm::TargetLoweringBase::ZeroOrOneBooleanContent.
Definition at line 940 of file SDPatternMatch.h.
References llvm::ISD::FDIV, LHS, and RHS.
|
inline |
Definition at line 421 of file SDPatternMatch.h.
References m_Value().
Match fixed-length vector ValueTypes.
Definition at line 418 of file SDPatternMatch.h.
References P.
|
inline |
Definition at line 404 of file SDPatternMatch.h.
References m_Value().
|
inline |
Definition at line 935 of file SDPatternMatch.h.
References llvm::ISD::FMUL, LHS, and RHS.
|
inline |
Definition at line 1100 of file SDPatternMatch.h.
|
inline |
Definition at line 1084 of file SDPatternMatch.h.
References llvm::ISD::FP_TO_SINT.
|
inline |
Definition at line 1080 of file SDPatternMatch.h.
References llvm::ISD::FP_TO_UINT.
Definition at line 945 of file SDPatternMatch.h.
References llvm::ISD::FREM, LHS, and RHS.
Definition at line 930 of file SDPatternMatch.h.
References llvm::ISD::FSUB, LHS, and RHS.
|
inline |
Definition at line 361 of file SDPatternMatch.h.
References m_SpecificVT().
|
inline |
Definition at line 577 of file SDPatternMatch.h.
References llvm::ISD::INSERT_VECTOR_ELT.
|
inline |
Definition at line 584 of file SDPatternMatch.h.
References llvm::sampleprof::Base, llvm::ISD::INSERT_SUBVECTOR, LHS, RHS, and llvm::Sub.
Referenced by combineTargetShuffle().
|
inline |
Definition at line 396 of file SDPatternMatch.h.
References m_Value().
Match legal SDNodes based on the information provided by TargetLowering.
Definition at line 294 of file SDPatternMatch.h.
References llvm::TargetLoweringBase::isOperationLegal(), N, and P.
Match legal ValueTypes based on the information provided by TargetLowering.
Definition at line 436 of file SDPatternMatch.h.
References llvm::TargetLoweringBase::isTypeLegal(), N, and P.
|
inline |
Definition at line 570 of file SDPatternMatch.h.
References m_Result(), and llvm::Offset.
|
inline |
Definition at line 798 of file SDPatternMatch.h.
References LHS, llvm::ISD::MUL, and RHS.
|
inline |
Match a negate as a sub(0, v)
Definition at line 1292 of file SDPatternMatch.h.
References m_Sub(), and llvm::PatternMatch::m_Zero().
|
inline |
Definition at line 1026 of file SDPatternMatch.h.
References llvm::SDNodeFlags::NonNeg, and llvm::ISD::ZERO_EXTEND.
Referenced by m_SExtLike().
| auto llvm::SDPatternMatch::m_Node | ( | unsigned | Opcode, |
| const OpndPreds &... | preds ) |
Definition at line 473 of file SDPatternMatch.h.
References m_AllOf(), and m_Opc().
Referenced by combineAdd(), m_SelectCC(), and llvm::RISCVTargetLowering::PerformDAGCombine().
| auto llvm::SDPatternMatch::m_NoneOf | ( | const Preds &... | preds | ) |
Definition at line 219 of file SDPatternMatch.h.
References m_AnyOf(), and m_Unless().
|
inline |
Match a Not as a xor(v, -1) or xor(-1, v)
Definition at line 1298 of file SDPatternMatch.h.
References llvm::PatternMatch::m_AllOnes(), and m_Xor().
|
inline |
Definition at line 257 of file SDPatternMatch.h.
References m_Value().
|
inline |
Definition at line 250 of file SDPatternMatch.h.
References P.
|
inline |
Definition at line 1207 of file SDPatternMatch.h.
|
inline |
Definition at line 254 of file SDPatternMatch.h.
References m_Value().
Referenced by foldAndToUsubsat(), foldBitOrderCrossLogicOp(), foldMaskedMerge(), foldSelectWithIdentityConstant(), foldVSelectToSignBitSplatMask(), takeInexpensiveLog2(), tryToFoldExtendSelectLoad(), and visitORCommutative().
|
inline |
Definition at line 246 of file SDPatternMatch.h.
References P.
|
inline |
Definition at line 223 of file SDPatternMatch.h.
Referenced by m_Node(), llvm::SDPatternMatch::BinaryOpc_match< LHS_P, RHS_P, Commutable, ExcludeChain >::match(), llvm::SDPatternMatch::MaxMin_match< LHS_P, RHS_P, Pred_t, Commutable, ExcludeChain >::match(), llvm::SDPatternMatch::TernaryOpc_match< T0_P, T1_P, T2_P, Commutable, ExcludeChain >::match(), llvm::SDPatternMatch::UnaryOpc_match< Opnd_P, ExcludeChain >::match(), and matchPMADDWD().
|
inline |
Definition at line 808 of file SDPatternMatch.h.
References LHS, llvm::ISD::OR, and RHS.
Referenced by m_BitwiseLogic().
|
inline |
Definition at line 362 of file SDPatternMatch.h.
References m_SpecificVT().
|
inline |
Definition at line 229 of file SDPatternMatch.h.
References llvm::ISD::POISON.
|
inline |
Definition at line 1361 of file SDPatternMatch.h.
References llvm::ISD::ADD.
|
inline |
Definition at line 1373 of file SDPatternMatch.h.
References llvm::ISD::AND.
|
inline |
Definition at line 1379 of file SDPatternMatch.h.
References llvm::ISD::MUL.
|
inline |
Definition at line 1367 of file SDPatternMatch.h.
References llvm::ISD::OR.
|
inline |
Match only if the SDValue is a certain result at ResNo.
Definition at line 124 of file SDPatternMatch.h.
References P.
Referenced by m_Load().
Definition at line 915 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::ROTL.
Definition at line 920 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::ROTR.
|
inline |
Definition at line 430 of file SDPatternMatch.h.
References m_Value().
Definition at line 882 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SDIV.
|
inline |
Definition at line 553 of file SDPatternMatch.h.
References Cond, F, llvm::ISD::SELECT, and T.
Referenced by m_SelectCCLike(), and m_SelectLike().
|
inline |
Definition at line 601 of file SDPatternMatch.h.
References F, m_Node(), llvm::ISD::SELECT_CC, and T.
Referenced by m_SelectCCLike().
|
inline |
Definition at line 607 of file SDPatternMatch.h.
References F, m_AnyOf(), m_Select(), m_SelectCC(), m_SetCC(), and T.
|
inline |
Definition at line 564 of file SDPatternMatch.h.
References Cond, F, m_AnyOf(), m_Select(), m_VSelect(), and T.
Referenced by foldSelectWithIdentityConstant(), takeInexpensiveLog2(), and tryToFoldExtendSelectLoad().
|
inline |
Definition at line 540 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SETCC.
Referenced by combineAnd(), combineSelect(), combineShiftLeft(), combineShiftRightLogical(), commuteSelect(), foldAddSubBoolOfMaskedVal(), foldVSelectToSignBitSplatMask(), and m_SelectCCLike().
|
inline |
Definition at line 1030 of file SDPatternMatch.h.
References llvm::ISD::SIGN_EXTEND.
Referenced by m_SExtLike(), and m_SExtOrSelf().
|
inline |
Definition at line 1058 of file SDPatternMatch.h.
References m_AnyOf(), m_NNegZExt(), and m_SExt().
|
inline |
Match a sext or identity Allows to peek through optional extensions.
Definition at line 1054 of file SDPatternMatch.h.
Definition at line 896 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SHL.
|
inline |
Definition at line 950 of file SDPatternMatch.h.
References llvm::ISD::VECTOR_SHUFFLE.
|
inline |
Definition at line 956 of file SDPatternMatch.h.
References mask().
|
inline |
Definition at line 845 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SMAX.
Definition at line 850 of file SDPatternMatch.h.
References LHS, m_AnyOf(), RHS, and llvm::ISD::SMAX.
|
inline |
Definition at line 834 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SMIN.
Definition at line 839 of file SDPatternMatch.h.
References LHS, m_AnyOf(), RHS, and llvm::ISD::SMIN.
|
inline |
Definition at line 106 of file SDPatternMatch.h.
|
inline |
Match a conditional code SDNode with a specific ISD::CondCode.
Definition at line 1286 of file SDPatternMatch.h.
Referenced by combineSelect(), combineShiftLeft(), combineShiftRightLogical(), foldAddSubBoolOfMaskedVal(), isTruncateOf(), and performAnyAllCombine().
|
inline |
Match a specific float constant.
Definition at line 1170 of file SDPatternMatch.h.
|
inline |
Definition at line 1172 of file SDPatternMatch.h.
|
inline |
Match a specific integer constant or constant splat value.
Definition at line 1147 of file SDPatternMatch.h.
|
inline |
Definition at line 1150 of file SDPatternMatch.h.
|
inline |
Definition at line 370 of file SDPatternMatch.h.
References m_Value().
|
inline |
Definition at line 384 of file SDPatternMatch.h.
References m_Value().
|
inline |
Match a vector ValueType.
Definition at line 377 of file SDPatternMatch.h.
References P.
Referenced by combineBasicSADPattern().
|
inline |
Definition at line 357 of file SDPatternMatch.h.
References m_Value().
|
inline |
Match a specific ValueType.
Definition at line 354 of file SDPatternMatch.h.
References P.
Referenced by combineAdd(), combineAnd(), combineCastedMaskArithmetic(), combineOrAndToBitfieldInsert(), combineSCALAR_TO_VECTOR(), m_Glue(), and m_OtherVT().
Definition at line 901 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SRA.
Referenced by foldAndToUsubsat().
Definition at line 891 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SREM.
Definition at line 905 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SRL.
Referenced by combineAdd(), combinePMULH(), and reverseZExtICmpCombine().
Definition at line 793 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SUB.
Referenced by m_Neg().
|
inline |
Definition at line 590 of file SDPatternMatch.h.
References Opc.
|
inline |
Match true boolean value based on the information provided by TargetLowering.
Definition at line 1219 of file SDPatternMatch.h.
References llvm::TargetLoweringBase::getBooleanContents(), llvm::APInt::isAllOnes(), llvm::APInt::isOne(), m_ConstInt(), m_Value(), N, sd_match(), llvm::TargetLoweringBase::UndefinedBooleanContent, llvm::TargetLoweringBase::ZeroOrNegativeOneBooleanContent, and llvm::TargetLoweringBase::ZeroOrOneBooleanContent.
|
inline |
Definition at line 1038 of file SDPatternMatch.h.
References llvm::ISD::TRUNCATE.
Referenced by m_TruncOrSelf().
|
inline |
Match a trunc or identity Allows to peek through optional truncations.
Definition at line 1072 of file SDPatternMatch.h.
References m_Trunc().
Definition at line 878 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::UDIV.
|
inline |
Definition at line 867 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::UMAX.
Definition at line 872 of file SDPatternMatch.h.
References LHS, m_AnyOf(), RHS, and llvm::ISD::UMAX.
|
inline |
Definition at line 856 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::UMIN.
Definition at line 861 of file SDPatternMatch.h.
References LHS, m_AnyOf(), RHS, and llvm::ISD::UMIN.
|
inline |
Definition at line 998 of file SDPatternMatch.h.
References Opc.
Referenced by foldBitOrderCrossLogicOp().
|
inline |
Definition at line 225 of file SDPatternMatch.h.
References m_AnyOf(), llvm::ISD::POISON, and llvm::ISD::UNDEF.
Match if the inner pattern does NOT match.
Definition at line 207 of file SDPatternMatch.h.
References P.
Referenced by m_NoneOf().
Definition at line 887 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::UREM.
|
inline |
Match any valid SDValue.
Definition at line 104 of file SDPatternMatch.h.
Referenced by m_False(), m_FixedVectorVT(), m_FloatingPointVT(), m_IntegerVT(), m_NUses(), m_OneUse(), m_ScalableVectorVT(), m_SpecificScalarVT(), m_SpecificVectorElementVT(), m_SpecificVT(), m_True(), and m_VectorVT().
|
inline |
Definition at line 272 of file SDPatternMatch.h.
References N.
|
inline |
Definition at line 413 of file SDPatternMatch.h.
References m_Value().
|
inline |
Definition at line 1076 of file SDPatternMatch.h.
|
inline |
Definition at line 559 of file SDPatternMatch.h.
References Cond, F, T, and llvm::ISD::VSELECT.
Referenced by commuteSelect(), foldToMaskedStore(), and m_SelectLike().
|
inline |
Retreive the ValueType of the current SDValue.
Definition at line 332 of file SDPatternMatch.h.
|
inline |
Definition at line 824 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::XOR.
Referenced by m_BitwiseLogic(), and m_Not().
|
inline |
Definition at line 1210 of file SDPatternMatch.h.
|
inline |
Definition at line 1021 of file SDPatternMatch.h.
References llvm::ISD::ZERO_EXTEND.
Referenced by m_ZExtOrSelf().
|
inline |
Match a zext or identity Allows to peek through optional extensions.
Definition at line 1048 of file SDPatternMatch.h.
|
nodiscard |
Definition at line 63 of file SDPatternMatch.h.
References N, P, sd_context_match(), and SDValue().
|
nodiscard |
Definition at line 57 of file SDPatternMatch.h.
Referenced by foldSubCtlzNot(), llvm::SDPatternMatch::BinaryOpc_match< LHS_P, RHS_P, Commutable, ExcludeChain >::match(), llvm::SDPatternMatch::MaxMin_match< LHS_P, RHS_P, Pred_t, Commutable, ExcludeChain >::match(), llvm::SDPatternMatch::ReassociatableOpc_match< PatternTs >::match(), llvm::SDPatternMatch::SpecificInt_match::match(), llvm::SDPatternMatch::TernaryOpc_match< T0_P, T1_P, T2_P, Commutable, ExcludeChain >::match(), llvm::SDPatternMatch::UnaryOpc_match< Opnd_P, ExcludeChain >::match(), sd_context_match(), sd_match(), and sd_match().
|
nodiscard |
Definition at line 69 of file SDPatternMatch.h.
References N, P, and sd_context_match().
Referenced by combineAdd(), combineAnd(), combineAndNotOrIntoAndNotAnd(), combineAndXorSubWithBMI(), combineBasicSADPattern(), combineCastedMaskArithmetic(), combineLogicBlendIntoConditionalNegate(), combineOrAndToBitfieldInsert(), combineOrToBitfieldInsert(), combinePMULH(), combineSCALAR_TO_VECTOR(), combineSelect(), combineSetCC(), combineShiftLeft(), combineShiftRightArithmetic(), combineShiftRightLogical(), combineShiftToPMULH(), combineShlAddIAddImpl(), combineTargetShuffle(), combineXorToBitfieldInsert(), commuteSelect(), detectPMADDUBSW(), detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatPattern(), detectUSatUPattern(), expandMulToAddOrSubOfShl(), foldAddSubBoolOfMaskedVal(), foldAndToUsubsat(), foldBitOrderCrossLogicOp(), foldMaskedMerge(), foldReduceOperandViaVQDOT(), foldSelectWithIdentityConstant(), foldToMaskedStore(), foldVSelectToSignBitSplatMask(), getShlAddShlAdd(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), isTruncateOf(), m_False(), m_True(), matchLogicBlend(), matchPMADDWD(), matchPMADDWD_2(), matchVPMADD52(), narrowBitOpRMW(), performAddTruncShiftCombine(), performAnyAllCombine(), performBitcastCombine(), performCTPOPCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), reverseZExtICmpCombine(), sd_match(), sd_match(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), takeInexpensiveLog2(), tryToFoldExtendSelectLoad(), and visitORCommutative().
|
nodiscard |
Definition at line 79 of file SDPatternMatch.h.
References N, P, and sd_match().
|
nodiscard |
Definition at line 74 of file SDPatternMatch.h.
References N, P, and sd_context_match().
|
nodiscard |
Definition at line 84 of file SDPatternMatch.h.
References N, P, and sd_match().
| llvm::SDPatternMatch::TLI_pred_match | ( | const PredFuncT & | Pred, |
| const Pattern & | P ) -> TLI_pred_match< Pattern, PredFuncT > |
References P.