LLVM 19.0.0git
Classes | Functions
llvm::SDPatternMatch Namespace Reference

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  Not
 
struct  NUses_match
 
struct  Opcode_match
 
struct  Operands_match
 
struct  Operands_match< OpIdx, OpndPred, OpndPreds... >
 
struct  Or
 
struct  Or< Pred, Preds... >
 
struct  SpecificInt_match
 
struct  SwitchContext
 Switch to a different MatchContext for subsequent patterns. More...
 
struct  TLI_pred_match
 
struct  UnaryOpc_match
 
struct  Value_bind
 
struct  Value_match
 
struct  ValueType_bind
 
struct  ValueType_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)
 
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.
 
Opcode_match m_Opc (unsigned Opcode)
 
template<typename Pattern >
NUses_match< 1, Patternm_OneUse (const Pattern &P)
 
template<unsigned N, typename Pattern >
NUses_match< N, Patternm_NUses (const Pattern &P)
 
NUses_match< 1, Value_matchm_OneUse ()
 
template<unsigned N>
NUses_match< N, Value_matchm_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, Patternm_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_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 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)
 
template<typename... OpndPreds>
auto m_Node (unsigned Opcode, const OpndPreds &...preds)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_BinOp (unsigned Opc, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_c_BinOp (unsigned Opc, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false, truem_ChainedBinOp (unsigned Opc, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true, truem_c_ChainedBinOp (unsigned Opc, const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_Add (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_Sub (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_Mul (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_And (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_Or (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_Xor (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_SMin (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_SMax (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_UMin (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_UMax (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_UDiv (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_SDiv (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_URem (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_SRem (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_Shl (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_Sra (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_Srl (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_FAdd (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_FSub (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, truem_FMul (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_FDiv (const LHS &L, const RHS &R)
 
template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > m_FRem (const LHS &L, const RHS &R)
 
template<typename Opnd >
UnaryOpc_match< Opnd > m_UnaryOp (unsigned Opc, const Opnd &Op)
 
template<typename Opnd >
UnaryOpc_match< Opnd, truem_ChainedUnaryOp (unsigned Opc, 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 >
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 >
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 >
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.
 
ConstantInt_match m_ConstInt ()
 Match any interger constants or splat of an integer constant.
 
ConstantInt_match m_ConstInt (APInt &V)
 Match any interger 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)
 
SpecificInt_match m_Zero ()
 
SpecificInt_match m_One ()
 
AllOnes_match m_AllOnes ()
 
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< SpecificInt_match, ValTy > m_Neg (const ValTy &V)
 Match a negate as a sub(0, v)
 
template<typename ValTy >
BinaryOpc_match< ValTy, AllOnes_match, truem_Not (const ValTy &V)
 Match a Not as a xor(v, -1) or xor(-1, v)
 

Function Documentation

◆ m_Add()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_Add ( const LHS L,
const RHS R 
)
inline

Definition at line 500 of file SDPatternMatch.h.

References llvm::ISD::ADD.

◆ m_AExtOrSelf()

template<typename Opnd >
Or< UnaryOpc_match< Opnd >, Opnd > llvm::SDPatternMatch::m_AExtOrSelf ( const Opnd &  Op)
inline

Match a aext or identity Allows to peek through optional extensions.

Definition at line 671 of file SDPatternMatch.h.

References m_AnyExt().

◆ m_AllOf()

template<typename... Preds>
And< Preds... > llvm::SDPatternMatch::m_AllOf ( const Preds &...  preds)

Definition at line 376 of file SDPatternMatch.h.

Referenced by m_Node().

◆ m_AllOnes()

AllOnes_match llvm::SDPatternMatch::m_AllOnes ( )
inline

Definition at line 744 of file SDPatternMatch.h.

Referenced by m_Not().

◆ m_And()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_And ( const LHS L,
const RHS R 
)
inline

Definition at line 515 of file SDPatternMatch.h.

References llvm::ISD::AND.

◆ m_AnyExt()

template<typename Opnd >
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_AnyExt ( const Opnd &  Op)
inline

Definition at line 648 of file SDPatternMatch.h.

References llvm::ISD::ANY_EXTEND.

Referenced by m_AExtOrSelf(), and visitORCommutative().

◆ m_AnyOf()

template<typename... Preds>
Or< Preds... > llvm::SDPatternMatch::m_AnyOf ( const Preds &...  preds)

Definition at line 380 of file SDPatternMatch.h.

Referenced by m_NoneOf(), m_SExtOrSelf(), and m_ZExtOrSelf().

◆ m_BinOp()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_BinOp ( unsigned  Opc,
const LHS L,
const RHS R 
)
inline

Definition at line 477 of file SDPatternMatch.h.

◆ m_BitReverse()

template<typename Opnd >
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_BitReverse ( const Opnd &  Op)
inline

Definition at line 636 of file SDPatternMatch.h.

References llvm::ISD::BITREVERSE.

◆ m_c_BinOp()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_c_BinOp ( unsigned  Opc,
const LHS L,
const RHS R 
)
inline

Definition at line 482 of file SDPatternMatch.h.

◆ m_c_ChainedBinOp()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true, true > llvm::SDPatternMatch::m_c_ChainedBinOp ( unsigned  Opc,
const LHS L,
const RHS R 
)
inline

Definition at line 494 of file SDPatternMatch.h.

◆ m_ChainedBinOp()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false, true > llvm::SDPatternMatch::m_ChainedBinOp ( unsigned  Opc,
const LHS L,
const RHS R 
)
inline

Definition at line 489 of file SDPatternMatch.h.

◆ m_ChainedUnaryOp()

template<typename Opnd >
UnaryOpc_match< Opnd, true > llvm::SDPatternMatch::m_ChainedUnaryOp ( unsigned  Opc,
const Opnd &  Op 
)
inline

Definition at line 630 of file SDPatternMatch.h.

◆ m_CondCode() [1/2]

CondCode_match llvm::SDPatternMatch::m_CondCode ( )
inline

Match any conditional code SDNode.

Definition at line 809 of file SDPatternMatch.h.

◆ m_CondCode() [2/2]

CondCode_match llvm::SDPatternMatch::m_CondCode ( ISD::CondCode CC)
inline

Match any conditional code SDNode and return its ISD::CondCode value.

Definition at line 811 of file SDPatternMatch.h.

References CC.

◆ m_ConstInt() [1/2]

ConstantInt_match llvm::SDPatternMatch::m_ConstInt ( )
inline

Match any interger constants or splat of an integer constant.

Definition at line 705 of file SDPatternMatch.h.

Referenced by m_False(), m_True(), and llvm::SDPatternMatch::SpecificInt_match::match().

◆ m_ConstInt() [2/2]

ConstantInt_match llvm::SDPatternMatch::m_ConstInt ( APInt V)
inline

Match any interger constants or splat of an integer constant; return the specific constant or constant splat value.

Definition at line 708 of file SDPatternMatch.h.

◆ m_Context()

template<typename MatchContext , typename Pattern >
SwitchContext< MatchContext, Pattern > llvm::SDPatternMatch::m_Context ( const MatchContext &  Ctx,
Pattern &&  P 
)
inline

Definition at line 222 of file SDPatternMatch.h.

References P.

◆ m_Deferred()

DeferredValue_match llvm::SDPatternMatch::m_Deferred ( SDValue V)
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 122 of file SDPatternMatch.h.

◆ m_FAdd()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_FAdd ( const LHS L,
const RHS R 
)
inline

Definition at line 582 of file SDPatternMatch.h.

References llvm::ISD::FADD.

◆ m_False()

auto llvm::SDPatternMatch::m_False ( )
inline

◆ m_FDiv()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_FDiv ( const LHS L,
const RHS R 
)
inline

Definition at line 597 of file SDPatternMatch.h.

References llvm::ISD::FDIV.

◆ m_FixedVectorVT() [1/2]

auto llvm::SDPatternMatch::m_FixedVectorVT ( )
inline

Definition at line 301 of file SDPatternMatch.h.

References m_Value().

◆ m_FixedVectorVT() [2/2]

template<typename Pattern >
auto llvm::SDPatternMatch::m_FixedVectorVT ( const Pattern P)
inline

Match fixed-length vector ValueTypes.

Definition at line 298 of file SDPatternMatch.h.

References P.

◆ m_FloatingPointVT() [1/2]

auto llvm::SDPatternMatch::m_FloatingPointVT ( )
inline

Definition at line 284 of file SDPatternMatch.h.

References m_Value().

◆ m_FloatingPointVT() [2/2]

template<typename Pattern >
auto llvm::SDPatternMatch::m_FloatingPointVT ( const Pattern P)
inline

Match any floating point ValueTypes.

Definition at line 281 of file SDPatternMatch.h.

References P.

◆ m_FMul()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_FMul ( const LHS L,
const RHS R 
)
inline

Definition at line 592 of file SDPatternMatch.h.

References llvm::ISD::FMUL.

◆ m_FRem()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_FRem ( const LHS L,
const RHS R 
)
inline

Definition at line 602 of file SDPatternMatch.h.

References llvm::ISD::FREM.

◆ m_FSub()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_FSub ( const LHS L,
const RHS R 
)
inline

Definition at line 587 of file SDPatternMatch.h.

References llvm::ISD::FSUB.

◆ m_Glue()

auto llvm::SDPatternMatch::m_Glue ( )
inline

Definition at line 269 of file SDPatternMatch.h.

References m_SpecificVT().

◆ m_IntegerVT() [1/2]

auto llvm::SDPatternMatch::m_IntegerVT ( )
inline

Definition at line 276 of file SDPatternMatch.h.

References m_Value().

◆ m_IntegerVT() [2/2]

template<typename Pattern >
auto llvm::SDPatternMatch::m_IntegerVT ( const Pattern P)
inline

Match any integer ValueTypes.

Definition at line 273 of file SDPatternMatch.h.

References P.

◆ m_LegalOp()

template<typename Pattern >
auto llvm::SDPatternMatch::m_LegalOp ( const Pattern P)
inline

Match legal SDNodes based on the information provided by TargetLowering.

Definition at line 202 of file SDPatternMatch.h.

References llvm::TargetLoweringBase::isOperationLegal(), N, and P.

◆ m_LegalType()

template<typename Pattern >
auto llvm::SDPatternMatch::m_LegalType ( const Pattern P)
inline

Match legal ValueTypes based on the information provided by TargetLowering.

Definition at line 316 of file SDPatternMatch.h.

References llvm::TargetLoweringBase::isTypeLegal(), N, and P.

◆ m_Mul()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_Mul ( const LHS L,
const RHS R 
)
inline

Definition at line 510 of file SDPatternMatch.h.

References llvm::ISD::MUL.

◆ m_Neg()

template<typename ValTy >
BinaryOpc_match< SpecificInt_match, ValTy > llvm::SDPatternMatch::m_Neg ( const ValTy &  V)
inline

Match a negate as a sub(0, v)

Definition at line 821 of file SDPatternMatch.h.

References m_Sub(), and m_Zero().

◆ m_Node()

template<typename... OpndPreds>
auto llvm::SDPatternMatch::m_Node ( unsigned  Opcode,
const OpndPreds &...  preds 
)

Definition at line 417 of file SDPatternMatch.h.

References m_AllOf(), and m_Opc().

◆ m_NoneOf()

template<typename... Preds>
auto llvm::SDPatternMatch::m_NoneOf ( const Preds &...  preds)

Definition at line 384 of file SDPatternMatch.h.

References m_AnyOf(), and m_Unless().

◆ m_Not()

template<typename ValTy >
BinaryOpc_match< ValTy, AllOnes_match, true > llvm::SDPatternMatch::m_Not ( const ValTy &  V)
inline

Match a Not as a xor(v, -1) or xor(-1, v)

Definition at line 827 of file SDPatternMatch.h.

References m_AllOnes(), and m_Xor().

◆ m_NUses() [1/2]

template<unsigned N>
NUses_match< N, Value_match > llvm::SDPatternMatch::m_NUses ( )
inline

Definition at line 165 of file SDPatternMatch.h.

References m_Value().

◆ m_NUses() [2/2]

template<unsigned N, typename Pattern >
NUses_match< N, Pattern > llvm::SDPatternMatch::m_NUses ( const Pattern P)
inline

Definition at line 158 of file SDPatternMatch.h.

References P.

◆ m_One()

SpecificInt_match llvm::SDPatternMatch::m_One ( )
inline

Definition at line 733 of file SDPatternMatch.h.

References m_SpecificInt().

◆ m_OneUse() [1/2]

NUses_match< 1, Value_match > llvm::SDPatternMatch::m_OneUse ( )
inline

Definition at line 162 of file SDPatternMatch.h.

References m_Value().

Referenced by foldAndToUsubsat(), and visitORCommutative().

◆ m_OneUse() [2/2]

template<typename Pattern >
NUses_match< 1, Pattern > llvm::SDPatternMatch::m_OneUse ( const Pattern P)
inline

Definition at line 154 of file SDPatternMatch.h.

References P.

◆ m_Opc()

Opcode_match llvm::SDPatternMatch::m_Opc ( unsigned  Opcode)
inline

◆ m_Or()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_Or ( const LHS L,
const RHS R 
)
inline

Definition at line 520 of file SDPatternMatch.h.

References llvm::ISD::OR.

◆ m_OtherVT()

auto llvm::SDPatternMatch::m_OtherVT ( )
inline

Definition at line 270 of file SDPatternMatch.h.

References m_SpecificVT().

◆ m_ScalableVectorVT() [1/2]

auto llvm::SDPatternMatch::m_ScalableVectorVT ( )
inline

Definition at line 310 of file SDPatternMatch.h.

References m_Value().

◆ m_ScalableVectorVT() [2/2]

template<typename Pattern >
auto llvm::SDPatternMatch::m_ScalableVectorVT ( const Pattern P)
inline

Match scalable vector ValueTypes.

Definition at line 307 of file SDPatternMatch.h.

References P.

◆ m_SDiv()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_SDiv ( const LHS L,
const RHS R 
)
inline

Definition at line 554 of file SDPatternMatch.h.

References llvm::ISD::SDIV.

◆ m_SExt()

template<typename Opnd >
auto llvm::SDPatternMatch::m_SExt ( const Opnd &  Op)
inline

Definition at line 644 of file SDPatternMatch.h.

References llvm::ISD::SIGN_EXTEND.

Referenced by m_SExtOrSelf().

◆ m_SExtOrSelf()

template<typename Opnd >
auto llvm::SDPatternMatch::m_SExtOrSelf ( const Opnd &  Op)
inline

Match a sext or identity Allows to peek through optional extensions.

Definition at line 664 of file SDPatternMatch.h.

References m_AnyOf(), and m_SExt().

◆ m_Shl()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_Shl ( const LHS L,
const RHS R 
)
inline

Definition at line 568 of file SDPatternMatch.h.

References llvm::ISD::SHL.

◆ m_SMax()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_SMax ( const LHS L,
const RHS R 
)
inline

Definition at line 535 of file SDPatternMatch.h.

References llvm::ISD::SMAX.

◆ m_SMin()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_SMin ( const LHS L,
const RHS R 
)
inline

Definition at line 530 of file SDPatternMatch.h.

References llvm::ISD::SMIN.

◆ m_Specific()

Value_match llvm::SDPatternMatch::m_Specific ( SDValue  N)
inline

Definition at line 102 of file SDPatternMatch.h.

References assert(), and N.

◆ m_SpecificCondCode()

CondCode_match llvm::SDPatternMatch::m_SpecificCondCode ( ISD::CondCode  CC)
inline

Match a conditional code SDNode with a specific ISD::CondCode.

Definition at line 815 of file SDPatternMatch.h.

References CC.

◆ m_SpecificInt() [1/2]

SpecificInt_match llvm::SDPatternMatch::m_SpecificInt ( APInt  V)
inline

Match a specific integer constant or constant splat value.

Definition at line 725 of file SDPatternMatch.h.

Referenced by m_One(), and m_Zero().

◆ m_SpecificInt() [2/2]

SpecificInt_match llvm::SDPatternMatch::m_SpecificInt ( uint64_t  V)
inline

Definition at line 728 of file SDPatternMatch.h.

◆ m_SpecificVT() [1/2]

auto llvm::SDPatternMatch::m_SpecificVT ( EVT  RefVT)
inline

Definition at line 265 of file SDPatternMatch.h.

References m_Value().

◆ m_SpecificVT() [2/2]

template<typename Pattern >
auto llvm::SDPatternMatch::m_SpecificVT ( EVT  RefVT,
const Pattern P 
)
inline

Match a specific ValueType.

Definition at line 262 of file SDPatternMatch.h.

References P.

Referenced by m_Glue(), and m_OtherVT().

◆ m_Sra()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_Sra ( const LHS L,
const RHS R 
)
inline

Definition at line 573 of file SDPatternMatch.h.

References llvm::ISD::SRA.

Referenced by foldAndToUsubsat().

◆ m_SRem()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_SRem ( const LHS L,
const RHS R 
)
inline

Definition at line 563 of file SDPatternMatch.h.

References llvm::ISD::SREM.

◆ m_Srl()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_Srl ( const LHS L,
const RHS R 
)
inline

Definition at line 577 of file SDPatternMatch.h.

References llvm::ISD::SRL.

◆ m_Sub()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_Sub ( const LHS L,
const RHS R 
)
inline

Definition at line 505 of file SDPatternMatch.h.

References llvm::ISD::SUB.

Referenced by m_Neg().

◆ m_True()

auto llvm::SDPatternMatch::m_True ( )
inline

◆ m_Trunc()

template<typename Opnd >
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_Trunc ( const Opnd &  Op)
inline

Definition at line 652 of file SDPatternMatch.h.

References llvm::ISD::TRUNCATE.

Referenced by m_TruncOrSelf().

◆ m_TruncOrSelf()

template<typename Opnd >
Or< UnaryOpc_match< Opnd >, Opnd > llvm::SDPatternMatch::m_TruncOrSelf ( const Opnd &  Op)
inline

Match a trunc or identity Allows to peek through optional truncations.

Definition at line 678 of file SDPatternMatch.h.

References m_Trunc().

◆ m_UDiv()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_UDiv ( const LHS L,
const RHS R 
)
inline

Definition at line 550 of file SDPatternMatch.h.

References llvm::ISD::UDIV.

◆ m_UMax()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_UMax ( const LHS L,
const RHS R 
)
inline

Definition at line 545 of file SDPatternMatch.h.

References llvm::ISD::UMAX.

◆ m_UMin()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_UMin ( const LHS L,
const RHS R 
)
inline

Definition at line 540 of file SDPatternMatch.h.

References llvm::ISD::UMIN.

◆ m_UnaryOp()

template<typename Opnd >
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_UnaryOp ( unsigned  Opc,
const Opnd &  Op 
)
inline

Definition at line 626 of file SDPatternMatch.h.

◆ m_Unless()

template<typename Pred >
Not< Pred > llvm::SDPatternMatch::m_Unless ( const Pred &  P)
inline

Match if the inner pattern does NOT match.

Definition at line 372 of file SDPatternMatch.h.

References P.

Referenced by m_NoneOf().

◆ m_URem()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, false > llvm::SDPatternMatch::m_URem ( const LHS L,
const RHS R 
)
inline

Definition at line 559 of file SDPatternMatch.h.

References llvm::ISD::UREM.

◆ m_Value() [1/2]

Value_match llvm::SDPatternMatch::m_Value ( )
inline

◆ m_Value() [2/2]

Value_bind llvm::SDPatternMatch::m_Value ( SDValue N)
inline

Definition at line 180 of file SDPatternMatch.h.

References N.

◆ m_VectorVT() [1/2]

auto llvm::SDPatternMatch::m_VectorVT ( )
inline

Definition at line 293 of file SDPatternMatch.h.

References m_Value().

◆ m_VectorVT() [2/2]

template<typename Pattern >
auto llvm::SDPatternMatch::m_VectorVT ( const Pattern P)
inline

Match any vector ValueTypes.

Definition at line 290 of file SDPatternMatch.h.

References P.

◆ m_VT()

ValueType_bind llvm::SDPatternMatch::m_VT ( EVT VT)
inline

Retreive the ValueType of the current SDValue.

Definition at line 240 of file SDPatternMatch.h.

◆ m_Xor()

template<typename LHS , typename RHS >
BinaryOpc_match< LHS, RHS, true > llvm::SDPatternMatch::m_Xor ( const LHS L,
const RHS R 
)
inline

Definition at line 525 of file SDPatternMatch.h.

References llvm::ISD::XOR.

Referenced by m_Not().

◆ m_Zero()

SpecificInt_match llvm::SDPatternMatch::m_Zero ( )
inline

Definition at line 732 of file SDPatternMatch.h.

References m_SpecificInt().

Referenced by m_Neg().

◆ m_ZExt()

template<typename Opnd >
UnaryOpc_match< Opnd > llvm::SDPatternMatch::m_ZExt ( const Opnd &  Op)
inline

Definition at line 640 of file SDPatternMatch.h.

References llvm::ISD::ZERO_EXTEND.

Referenced by m_ZExtOrSelf().

◆ m_ZExtOrSelf()

template<typename Opnd >
auto llvm::SDPatternMatch::m_ZExtOrSelf ( const Opnd &  Op)
inline

Match a zext or identity Allows to peek through optional extensions.

Definition at line 658 of file SDPatternMatch.h.

References m_AnyOf(), and m_ZExt().

◆ Not()

template<typename Pred >
llvm::SDPatternMatch::Not ( const Pred &  P) -> Not< Pred >

◆ sd_context_match() [1/2]

template<typename Pattern , typename MatchContext >
bool llvm::SDPatternMatch::sd_context_match ( SDNode N,
const MatchContext &  Ctx,
Pattern &&  P 
)

Definition at line 59 of file SDPatternMatch.h.

References N, P, and sd_context_match().

◆ sd_context_match() [2/2]

template<typename Pattern , typename MatchContext >
bool llvm::SDPatternMatch::sd_context_match ( SDValue  N,
const MatchContext &  Ctx,
Pattern &&  P 
)

◆ sd_match() [1/4]

template<typename Pattern >
bool llvm::SDPatternMatch::sd_match ( SDNode N,
const SelectionDAG DAG,
Pattern &&  P 
)

◆ sd_match() [2/4]

template<typename Pattern >
bool llvm::SDPatternMatch::sd_match ( SDNode N,
Pattern &&  P 
)

Definition at line 75 of file SDPatternMatch.h.

References N, P, and sd_match().

◆ sd_match() [3/4]

template<typename Pattern >
bool llvm::SDPatternMatch::sd_match ( SDValue  N,
const SelectionDAG DAG,
Pattern &&  P 
)

Definition at line 70 of file SDPatternMatch.h.

References N, P, and sd_context_match().

◆ sd_match() [4/4]

template<typename Pattern >
bool llvm::SDPatternMatch::sd_match ( SDValue  N,
Pattern &&  P 
)

Definition at line 80 of file SDPatternMatch.h.

References N, P, and sd_match().

◆ TLI_pred_match()

template<typename PredFuncT , typename Pattern >
llvm::SDPatternMatch::TLI_pred_match ( const PredFuncT &  Pred,
const Pattern P 
) -> TLI_pred_match< Pattern, PredFuncT >

◆ ValueType_match()

template<typename PredFuncT , typename Pattern >
llvm::SDPatternMatch::ValueType_match ( const PredFuncT &  Pred,
const Pattern P 
) -> ValueType_match< Pattern, PredFuncT >