LLVM: llvm::SDPatternMatch Namespace Reference (original) (raw)
Functions
template<typename Pattern, typename MatchContext>
sd_context_match (SDValue N, const MatchContext &Ctx, Pattern &&P)
template<typename Pattern, typename MatchContext>
sd_context_match (SDNode *N, const MatchContext &Ctx, Pattern &&P)
template<typename Pattern>
sd_match (SDNode *N, const SelectionDAG *DAG, Pattern &&P)
template<typename Pattern>
sd_match (SDValue N, const SelectionDAG *DAG, Pattern &&P)
template<typename Pattern>
sd_match (SDNode *N, Pattern &&P)
template<typename Pattern>
sd_match (SDValue N, Pattern &&P)
m_Value ()
Match any valid SDValue.
template<unsigned ResNo, typename Pattern>
Result_match< ResNo, Pattern >
Match only if the SDValue is a certain result at ResNo.
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
Not (const Pred &P) -> Not< Pred >
template
Not< Pred >
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)
auto
m_Undef ()
m_Poison ()
template<typename Pattern>
NUses_match< 1, Pattern >
template<unsigned N, typename Pattern>
NUses_match< N, Pattern >
NUses_match< 1, Value_match >
m_OneUse ()
template<unsigned N>
NUses_match< N, Value_match >
m_NUses ()
template<typename PredFuncT, typename Pattern>
TLI_pred_match (const PredFuncT &Pred, const Pattern &P) -> TLI_pred_match< Pattern, PredFuncT >
template<typename Pattern>
auto
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)
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
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
template<typename Pattern>
auto
m_ScalableVectorVT (const Pattern &P)
Match scalable vector ValueTypes.
auto
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
UnaryOpc_match< Opnd >
m_UnaryOp (unsigned Opc, const Opnd &Op)
template
UnaryOpc_match< Opnd, true >
m_ChainedUnaryOp (unsigned Opc, const Opnd &Op)
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
m_BitReverse (const Opnd &Op)
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
m_NNegZExt (const Opnd &Op)
template
auto
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
template
auto
m_ZExtOrSelf (const Opnd &Op)
Match a zext or identity Allows to peek through optional extensions.
template
auto
m_SExtOrSelf (const Opnd &Op)
Match a sext or identity Allows to peek through optional extensions.
template
auto
m_SExtLike (const Opnd &Op)
template
Or< UnaryOpc_match< Opnd >, Opnd >
m_AExtOrSelf (const Opnd &Op)
Match a aext or identity Allows to peek through optional extensions.
template
Or< UnaryOpc_match< Opnd >, Opnd >
m_TruncOrSelf (const Opnd &Op)
Match a trunc or identity Allows to peek through optional truncations.
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
template
UnaryOpc_match< Opnd >
m_ConstInt ()
Match any integer constants or splat of an integer constant.
m_ConstInt (APInt &V)
Match any integer constants or splat of an integer constant; return the specific constant or constant splat value.
m_SpecificInt (APInt V)
Match a specific integer constant or constant splat value.
m_SpecificFP (APFloat V)
Match a specific float constant.
m_SpecificFP (double V)
m_One (bool AllowUndefs=false)
m_Zero (bool AllowUndefs=false)
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.
m_CondCode ()
Match any conditional code SDNode.
m_CondCode (ISD::CondCode &CC)
Match any conditional code SDNode and return its ISD::CondCode value.
m_SpecificCondCode (ISD::CondCode CC)
Match a conditional code SDNode with a specific ISD::CondCode.
template
BinaryOpc_match< Zero_match, ValTy, false >
Match a negate as a sub(0, v)
template
BinaryOpc_match< ValTy, AllOnes_match, true >
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)