LLVM: llvm::SDPatternMatch Namespace Reference (original) (raw)

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

Not (const Pred &P) -> Not< Pred >

template

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

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 >

m_BitCast (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_BSwap (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_BitReverse (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_ZExt (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_NNegZExt (const Opnd &Op)

template

auto

m_SExt (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_AnyExt (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_Trunc (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_Abs (const Opnd &Op)

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 >

m_VScale (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_FPToUI (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_FPToSI (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_Ctpop (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_Ctlz (const Opnd &Op)

template

UnaryOpc_match< Opnd >

m_Cttz (const Opnd &Op)

template

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

BinaryOpc_match< Zero_match, ValTy, false >

m_Neg (const ValTy &V)

Match a negate as a sub(0, v)

template

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)