|
LLVM 23.0.0git
|
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 () |
| auto | m_Value (SDValue &N) |
| template<typename PredPattern> | |
| auto | m_Value (SDValue &N, const PredPattern &P) |
| Conditionally bind an SDValue based on the predicate. | |
| 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) |
| template<typename Pattern> | |
| ValueType_bind (const Pattern &P) -> ValueType_bind< Pattern > | |
| auto | m_VT (EVT &VT) |
| Retreive the ValueType of the current SDValue. | |
| template<typename Pattern> | |
| auto | m_VT (EVT &VT, const Pattern &P) |
| 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, SDNodeFlags Flgs=SDNodeFlags()) |
| template<typename LHS, typename RHS> | |
| BinaryOpc_match< LHS, RHS, true > | m_c_BinOp (unsigned Opc, const LHS &L, const RHS &R, SDNodeFlags Flgs=SDNodeFlags()) |
| 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<unsigned Opc, typename Pred, typename LHS, typename RHS> | |
| auto | m_MaxMinLike (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_Clmul (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> | |
| UnaryOpc_match< Opnd > | m_FAbs (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. | |
| Constant64_match< uint64_t > | m_ConstInt (uint64_t &V) |
| Match any integer constants or splat of an integer constant that can fit in 64 bits; return the specific constant or constant splat value, zero-extended to 64 bits. | |
| Constant64_match< int64_t > | m_ConstInt (int64_t &V) |
| Match any integer constants or splat of an integer constant that can fit in 64 bits; return the specific constant or constant splat value, sign-extended to 64 bits. | |
| 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) |
| Negative_match | m_Negative () |
| template<typename Pattern> | |
| auto | m_Negative (const Pattern &P) |
| NonNegative_match | m_NonNegative () |
| template<typename Pattern> | |
| auto | m_NonNegative (const Pattern &P) |
| StrictlyPositive_match | m_StrictlyPositive () |
| template<typename Pattern> | |
| auto | m_StrictlyPositive (const Pattern &P) |
| NonPositive_match | m_NonPositive () |
| template<typename Pattern> | |
| auto | m_NonPositive (const Pattern &P) |
| NonZero_match | m_NonZero () |
| template<typename Pattern> | |
| auto | m_NonZero (const Pattern &P) |
| 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<unsigned IntrinsicId, typename... OpndPreds> | |
| auto | m_IntrinsicWOChain (const OpndPreds &...Opnds) |
| SpecificNeg_match | m_SpecificNeg (SDValue V) |
| Match a negation of a specific value V, either as sub(0, V) or as constant(s) that are the negation of V's constant(s). | |
| 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) |
| template<typename... PatternTs> | |
| ReassociatableOpc_match< PatternTs... > | m_ReassociatableNSWAdd (const PatternTs &...Patterns) |
| template<typename... PatternTs> | |
| ReassociatableOpc_match< PatternTs... > | m_ReassociatableNUWAdd (const PatternTs &...Patterns) |
|
inline |
Definition at line 1086 of file SDPatternMatch.h.
References llvm::ISD::ABS.
Referenced by combineBasicSADPattern().
|
inline |
Definition at line 815 of file SDPatternMatch.h.
References llvm::ISD::ADD, LHS, and RHS.
Referenced by m_AddLike().
Definition at line 846 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 1113 of file SDPatternMatch.h.
References m_AnyExt().
Definition at line 214 of file SDPatternMatch.h.
Referenced by combineAdd(), combineAnd(), combineBasicSADPattern(), combineLogicBlendIntoConditionalNegate(), combineNarrowableShiftedLoad(), combineSCALAR_TO_VECTOR(), commuteSelect(), m_Negative(), m_Node(), m_NonNegative(), m_NonPositive(), m_NonZero(), m_StrictlyPositive(), and matchPMADDWD().
|
inline |
Definition at line 1367 of file SDPatternMatch.h.
|
inline |
Definition at line 830 of file SDPatternMatch.h.
References llvm::ISD::AND, LHS, and RHS.
Referenced by m_BitwiseLogic().
|
inline |
Definition at line 1078 of file SDPatternMatch.h.
References llvm::ISD::ANY_EXTEND.
Referenced by combineSCALAR_TO_VECTOR(), m_AExtOrSelf(), and visitORCommutative().
Definition at line 218 of file SDPatternMatch.h.
Referenced by combineBasicSADPattern(), getShlAddShlAdd(), m_AddLike(), m_BitwiseLogic(), m_ExactSr(), m_MaxMinLike(), m_NoneOf(), m_SelectCCLike(), m_SelectLike(), m_SExtLike(), m_SExtOrSelf(), m_SMaxLike(), m_SMinLike(), m_UMaxLike(), m_UMinLike(), m_Undef(), m_ZExtOrSelf(), llvm::RISCVTargetLowering::PerformDAGCombine(), and llvm::TargetLowering::SimplifyDemandedBits().
|
inline |
Definition at line 790 of file SDPatternMatch.h.
|
inline |
Definition at line 1051 of file SDPatternMatch.h.
References llvm::ISD::BITCAST.
|
inline |
Definition at line 1061 of file SDPatternMatch.h.
References llvm::ISD::BITREVERSE.
|
inline |
Definition at line 1056 of file SDPatternMatch.h.
References llvm::ISD::BSWAP.
|
inline |
Definition at line 797 of file SDPatternMatch.h.
|
inline |
Definition at line 809 of file SDPatternMatch.h.
|
inline |
Definition at line 571 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SETCC.
Referenced by isTruncateOf(), performAnyAllCombine(), and performBitcastCombine().
|
inline |
Definition at line 621 of file SDPatternMatch.h.
References Opc.
|
inline |
Definition at line 804 of file SDPatternMatch.h.
|
inline |
Definition at line 1046 of file SDPatternMatch.h.
References Opc.
|
inline |
Definition at line 966 of file SDPatternMatch.h.
References llvm::ISD::CLMUL, LHS, and RHS.
|
inline |
Match any conditional code SDNode.
Definition at line 1434 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 1436 of file SDPatternMatch.h.
|
inline |
Match any integer constants or splat of an integer constant.
Definition at line 1207 of file SDPatternMatch.h.
Referenced by combineAdd(), combineNarrowableShiftedLoad(), combineOrAndToBitfieldInsert(), combineOrToBitfieldInsert(), combinePMULH(), combineShlAddIAddImpl(), combineXorToBitfieldInsert(), combineXorWithGF2P8AFFINEQB(), combineXorWithTwoGF2P8AFFINEQB(), detectUSatPattern(), foldSubCtlzNot(), getShlAddShlAdd(), m_False(), m_True(), llvm::SDPatternMatch::SpecificInt_match::match(), matchPMADDWD(), matchPMADDWD_2(), performMINMAXCombine(), and reverseZExtICmpCombine().
|
inline |
Match any integer constants or splat of an integer constant; return the specific constant or constant splat value.
Definition at line 1210 of file SDPatternMatch.h.
|
inline |
Match any integer constants or splat of an integer constant that can fit in 64 bits; return the specific constant or constant splat value, sign-extended to 64 bits.
Definition at line 1220 of file SDPatternMatch.h.
|
inline |
Match any integer constants or splat of an integer constant that can fit in 64 bits; return the specific constant or constant splat value, zero-extended to 64 bits.
Definition at line 1214 of file SDPatternMatch.h.
|
inline |
Definition at line 329 of file SDPatternMatch.h.
References P.
|
inline |
Definition at line 1140 of file SDPatternMatch.h.
References llvm::ISD::CTLZ.
Referenced by foldSubCtlzNot().
|
inline |
Definition at line 1136 of file SDPatternMatch.h.
References llvm::ISD::CTPOP.
|
inline |
Definition at line 1144 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 146 of file SDPatternMatch.h.
|
inline |
Definition at line 840 of file SDPatternMatch.h.
References llvm::SDNodeFlags::Disjoint, LHS, llvm::ISD::OR, and RHS.
Referenced by m_AddLike().
Definition at line 950 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 1007 of file SDPatternMatch.h.
References llvm::ISD::EXTRACT_VECTOR_ELT, LHS, and RHS.
|
inline |
Definition at line 1012 of file SDPatternMatch.h.
References llvm::ISD::EXTRACT_SUBVECTOR, LHS, and RHS.
|
inline |
Definition at line 1090 of file SDPatternMatch.h.
References llvm::ISD::FABS.
|
inline |
Definition at line 971 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 1393 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 986 of file SDPatternMatch.h.
References llvm::ISD::FDIV, LHS, and RHS.
|
inline |
Definition at line 446 of file SDPatternMatch.h.
References m_Value().
Match fixed-length vector ValueTypes.
Definition at line 443 of file SDPatternMatch.h.
References P.
|
inline |
Definition at line 429 of file SDPatternMatch.h.
References m_Value().
|
inline |
Definition at line 981 of file SDPatternMatch.h.
References llvm::ISD::FMUL, LHS, and RHS.
|
inline |
Definition at line 1148 of file SDPatternMatch.h.
References llvm::ISD::FNEG.
|
inline |
Definition at line 1132 of file SDPatternMatch.h.
References llvm::ISD::FP_TO_SINT.
|
inline |
Definition at line 1128 of file SDPatternMatch.h.
References llvm::ISD::FP_TO_UINT.
Definition at line 991 of file SDPatternMatch.h.
References llvm::ISD::FREM, LHS, and RHS.
Definition at line 976 of file SDPatternMatch.h.
References llvm::ISD::FSUB, LHS, and RHS.
|
inline |
Definition at line 386 of file SDPatternMatch.h.
References m_SpecificVT().
|
inline |
Definition at line 602 of file SDPatternMatch.h.
References llvm::ISD::INSERT_VECTOR_ELT.
|
inline |
Definition at line 609 of file SDPatternMatch.h.
References llvm::sampleprof::Base, llvm::ISD::INSERT_SUBVECTOR, LHS, RHS, and llvm::Sub.
Referenced by combineOr(), combineTargetShuffle(), and llvm::RISCVTargetLowering::PerformDAGCombine().
|
inline |
Definition at line 421 of file SDPatternMatch.h.
References m_Value().
|
inline |
Definition at line 1457 of file SDPatternMatch.h.
References llvm::ISD::INTRINSIC_WO_CHAIN, m_Node(), and m_SpecificInt().
Match legal SDNodes based on the information provided by TargetLowering.
Definition at line 309 of file SDPatternMatch.h.
References llvm::TargetLoweringBase::isOperationLegal(), N, and P.
Match legal ValueTypes based on the information provided by TargetLowering.
Definition at line 461 of file SDPatternMatch.h.
References llvm::TargetLoweringBase::isTypeLegal(), N, and P.
|
inline |
Definition at line 595 of file SDPatternMatch.h.
References llvm::ISD::LOAD, m_Result(), and llvm::Offset.
Definition at line 861 of file SDPatternMatch.h.
References LHS, m_AnyOf(), Opc, and RHS.
Referenced by m_SMaxLike(), m_SMinLike(), m_UMaxLike(), and m_UMinLike().
|
inline |
Definition at line 825 of file SDPatternMatch.h.
References LHS, llvm::ISD::MUL, and RHS.
|
inline |
Match a negate as a sub(0, v)
Definition at line 1446 of file SDPatternMatch.h.
References m_Sub(), and llvm::PatternMatch::m_Zero().
Referenced by llvm::SDPatternMatch::SpecificNeg_match::match().
|
inline |
Definition at line 1339 of file SDPatternMatch.h.
Referenced by m_Negative(), m_SMaxLike(), m_SMinLike(), m_UMaxLike(), and m_UMinLike().
Definition at line 1340 of file SDPatternMatch.h.
References m_AllOf(), m_Negative(), and P.
|
inline |
Definition at line 1070 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 498 of file SDPatternMatch.h.
References m_AllOf(), and m_Opc().
Referenced by combineAdd(), m_IntrinsicWOChain(), m_SelectCC(), and llvm::RISCVTargetLowering::PerformDAGCombine().
| auto llvm::SDPatternMatch::m_NoneOf | ( | const Preds &... | preds | ) |
Definition at line 222 of file SDPatternMatch.h.
References m_AnyOf(), and m_Unless().
|
inline |
Definition at line 1343 of file SDPatternMatch.h.
Referenced by m_NonNegative(), m_SMaxLike(), m_SMinLike(), m_UMaxLike(), and m_UMinLike().
Definition at line 1344 of file SDPatternMatch.h.
References m_AllOf(), m_NonNegative(), and P.
|
inline |
Definition at line 1353 of file SDPatternMatch.h.
Referenced by m_NonPositive().
Definition at line 1354 of file SDPatternMatch.h.
References m_AllOf(), m_NonPositive(), and P.
|
inline |
Definition at line 1357 of file SDPatternMatch.h.
Referenced by m_NonZero().
Definition at line 1358 of file SDPatternMatch.h.
References m_AllOf(), m_NonZero(), and P.
|
inline |
Match a Not as a xor(v, -1) or xor(-1, v)
Definition at line 1452 of file SDPatternMatch.h.
References llvm::PatternMatch::m_AllOnes(), and m_Xor().
|
inline |
Definition at line 260 of file SDPatternMatch.h.
References m_Value().
|
inline |
Definition at line 253 of file SDPatternMatch.h.
References P.
|
inline |
Definition at line 1361 of file SDPatternMatch.h.
|
inline |
Definition at line 257 of file SDPatternMatch.h.
References m_Value().
Referenced by foldAndToUsubsat(), foldBitOrderCrossLogicOp(), foldMaskedMerge(), foldSelectWithIdentityConstant(), foldVSelectToSignBitSplatMask(), llvm::TargetLowering::SimplifyDemandedBits(), takeInexpensiveLog2(), tryToFoldExtendSelectLoad(), and visitORCommutative().
|
inline |
Definition at line 249 of file SDPatternMatch.h.
References P.
|
inline |
Definition at line 226 of file SDPatternMatch.h.
Referenced by combineNarrowableShiftedLoad(), 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 835 of file SDPatternMatch.h.
References LHS, llvm::ISD::OR, and RHS.
Referenced by m_BitwiseLogic().
|
inline |
Definition at line 387 of file SDPatternMatch.h.
References m_SpecificVT().
|
inline |
Definition at line 232 of file SDPatternMatch.h.
References llvm::ISD::POISON.
|
inline |
Definition at line 1555 of file SDPatternMatch.h.
References llvm::ISD::ADD.
|
inline |
Definition at line 1567 of file SDPatternMatch.h.
References llvm::ISD::AND.
|
inline |
Definition at line 1573 of file SDPatternMatch.h.
References llvm::ISD::MUL.
|
inline |
Definition at line 1579 of file SDPatternMatch.h.
References llvm::ISD::ADD, and llvm::SDNodeFlags::NoSignedWrap.
|
inline |
Definition at line 1586 of file SDPatternMatch.h.
References llvm::ISD::ADD, and llvm::SDNodeFlags::NoUnsignedWrap.
|
inline |
Definition at line 1561 of file SDPatternMatch.h.
References llvm::ISD::OR.
|
inline |
Match only if the SDValue is a certain result at ResNo.
Definition at line 127 of file SDPatternMatch.h.
References P.
Referenced by m_Load().
Definition at line 956 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::ROTL.
Definition at line 961 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::ROTR.
|
inline |
Definition at line 455 of file SDPatternMatch.h.
References m_Value().
Definition at line 923 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SDIV.
|
inline |
Definition at line 578 of file SDPatternMatch.h.
References Cond, F, llvm::ISD::SELECT, and T.
Referenced by m_SelectCCLike(), and m_SelectLike().
|
inline |
Definition at line 626 of file SDPatternMatch.h.
References F, m_Node(), llvm::ISD::SELECT_CC, and T.
Referenced by m_SelectCCLike().
|
inline |
Definition at line 632 of file SDPatternMatch.h.
References F, m_AnyOf(), m_Select(), m_SelectCC(), m_SetCC(), and T.
|
inline |
Definition at line 589 of file SDPatternMatch.h.
References Cond, F, m_AnyOf(), m_Select(), m_VSelect(), and T.
|
inline |
Definition at line 565 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SETCC.
Referenced by combineAnd(), combineSelect(), combineShiftLeft(), combineShiftRightLogical(), commuteSelect(), foldAddSubBoolOfMaskedVal(), foldVSelectToSignBitSplatMask(), m_SelectCCLike(), and performCTPOPCombine().
|
inline |
Definition at line 1074 of file SDPatternMatch.h.
References llvm::ISD::SIGN_EXTEND.
Referenced by m_SExtLike(), and m_SExtOrSelf().
|
inline |
Definition at line 1106 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 1102 of file SDPatternMatch.h.
Definition at line 937 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SHL.
|
inline |
Definition at line 996 of file SDPatternMatch.h.
References llvm::ISD::VECTOR_SHUFFLE.
|
inline |
Definition at line 1002 of file SDPatternMatch.h.
References mask().
|
inline |
Definition at line 880 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SMAX.
Definition at line 885 of file SDPatternMatch.h.
References LHS, m_AnyOf(), m_MaxMinLike(), m_Negative(), m_NonNegative(), and RHS.
Referenced by combineVTRUNCSAT().
|
inline |
Definition at line 867 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SMIN.
Definition at line 872 of file SDPatternMatch.h.
References LHS, m_AnyOf(), m_MaxMinLike(), m_Negative(), m_NonNegative(), and RHS.
|
inline |
Definition at line 109 of file SDPatternMatch.h.
Referenced by llvm::SDPatternMatch::SpecificNeg_match::match().
|
inline |
Match a conditional code SDNode with a specific ISD::CondCode.
Definition at line 1440 of file SDPatternMatch.h.
Referenced by combineSelect(), combineShiftLeft(), combineShiftRightLogical(), foldAddSubBoolOfMaskedVal(), isTruncateOf(), and performAnyAllCombine().
|
inline |
Match a specific float constant.
Definition at line 1262 of file SDPatternMatch.h.
|
inline |
Definition at line 1264 of file SDPatternMatch.h.
|
inline |
Match a specific integer constant or constant splat value.
Definition at line 1239 of file SDPatternMatch.h.
Referenced by m_IntrinsicWOChain().
|
inline |
Definition at line 1242 of file SDPatternMatch.h.
|
inline |
Match a negation of a specific value V, either as sub(0, V) or as constant(s) that are the negation of V's constant(s).
Definition at line 1480 of file SDPatternMatch.h.
|
inline |
Definition at line 395 of file SDPatternMatch.h.
References m_Value().
|
inline |
Definition at line 409 of file SDPatternMatch.h.
References m_Value().
|
inline |
Match a vector ValueType.
Definition at line 402 of file SDPatternMatch.h.
References P.
Referenced by combineBasicSADPattern().
|
inline |
Definition at line 382 of file SDPatternMatch.h.
References m_Value().
|
inline |
Match a specific ValueType.
Definition at line 379 of file SDPatternMatch.h.
References P.
Referenced by combineAdd(), combineAnd(), combineCastedMaskArithmetic(), combineOr(), combineOrAndToBitfieldInsert(), combineSCALAR_TO_VECTOR(), m_Glue(), m_OtherVT(), and performMINMAXCombine().
Definition at line 942 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SRA.
Referenced by foldAndToUsubsat().
Definition at line 932 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SREM.
Definition at line 946 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SRL.
Referenced by combineAdd(), combinePMULH(), and reverseZExtICmpCombine().
|
inline |
Definition at line 1347 of file SDPatternMatch.h.
Referenced by m_StrictlyPositive().
|
inline |
Definition at line 1350 of file SDPatternMatch.h.
References m_AllOf(), m_StrictlyPositive(), and P.
Definition at line 820 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::SUB.
Referenced by m_Neg().
|
inline |
Definition at line 615 of file SDPatternMatch.h.
References Opc.
Referenced by combineXorWithGF2P8AFFINEQB(), and combineXorWithTwoGF2P8AFFINEQB().
|
inline |
Match true boolean value based on the information provided by TargetLowering.
Definition at line 1373 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 1082 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 1120 of file SDPatternMatch.h.
References m_Trunc().
Definition at line 919 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::UDIV.
|
inline |
Definition at line 906 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::UMAX.
Definition at line 911 of file SDPatternMatch.h.
References LHS, m_AnyOf(), m_MaxMinLike(), m_Negative(), m_NonNegative(), and RHS.
|
inline |
Definition at line 893 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::UMIN.
Definition at line 898 of file SDPatternMatch.h.
References LHS, m_AnyOf(), m_MaxMinLike(), m_Negative(), m_NonNegative(), and RHS.
|
inline |
Definition at line 1042 of file SDPatternMatch.h.
References Opc.
Referenced by combineVTRUNCSAT(), and foldBitOrderCrossLogicOp().
|
inline |
Definition at line 228 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 210 of file SDPatternMatch.h.
References P.
Referenced by m_NoneOf().
Definition at line 928 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::UREM.
|
inline |
Match any valid SDValue.
Definition at line 107 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(), m_Value(), m_VectorVT(), and m_VT().
|
inline |
Definition at line 280 of file SDPatternMatch.h.
|
inline |
Conditionally bind an SDValue based on the predicate.
Definition at line 285 of file SDPatternMatch.h.
|
inline |
Definition at line 438 of file SDPatternMatch.h.
References m_Value().
|
inline |
Definition at line 1124 of file SDPatternMatch.h.
References llvm::ISD::VSCALE.
|
inline |
Definition at line 584 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 353 of file SDPatternMatch.h.
References m_Value(), and ValueType_bind().
Referenced by performCTPOPCombine().
Definition at line 355 of file SDPatternMatch.h.
References P, and ValueType_bind().
|
inline |
Definition at line 851 of file SDPatternMatch.h.
References LHS, RHS, and llvm::ISD::XOR.
Referenced by m_BitwiseLogic(), and m_Not().
|
inline |
Definition at line 1364 of file SDPatternMatch.h.
|
inline |
Definition at line 1065 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 1096 of file SDPatternMatch.h.
|
nodiscard |
Definition at line 66 of file SDPatternMatch.h.
References N, P, sd_context_match(), and SDValue().
|
nodiscard |
Definition at line 60 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::SpecificInt_match::match(), llvm::SDPatternMatch::SpecificNeg_match::match(), llvm::SDPatternMatch::TernaryOpc_match< T0_P, T1_P, T2_P, Commutable, ExcludeChain >::match(), llvm::SDPatternMatch::UnaryOpc_match< Opnd_P, ExcludeChain >::match(), llvm::SDPatternMatch::ReassociatableOpc_match< PatternTs >::reassociatableMatchHelper(), sd_context_match(), sd_match(), and sd_match().
|
nodiscard |
Definition at line 72 of file SDPatternMatch.h.
References N, P, and sd_context_match().
Referenced by combineAdd(), combineAnd(), combineAndNotOrIntoAndNotAnd(), combineAndXorSubWithBMI(), combineBasicSADPattern(), combineCastedMaskArithmetic(), combineLogicBlendIntoConditionalNegate(), combineNarrowableShiftedLoad(), combineOr(), combineOrAndToBitfieldInsert(), combineOrToBitfieldInsert(), combinePMULH(), combineSCALAR_TO_VECTOR(), combineSelect(), combineSetCC(), combineShiftLeft(), combineShiftRightArithmetic(), combineShiftRightLogical(), combineShiftToPMULH(), combineShlAddIAddImpl(), combineTargetShuffle(), combineVTRUNCSAT(), combineXorToBitfieldInsert(), combineXorWithGF2P8AFFINEQB(), combineXorWithTwoGF2P8AFFINEQB(), commuteSelect(), detectPMADDUBSW(), detectSSatPattern(), detectSSatSPattern(), detectSSatUPattern(), detectUSatPattern(), detectUSatUPattern(), expandMulToAddOrSubOfShl(), foldAddSubBoolOfMaskedVal(), foldAndToUsubsat(), foldBitOrderCrossLogicOp(), foldMaskedMerge(), foldReduceOperandViaVDOTA4(), foldSelectWithIdentityConstant(), foldToMaskedStore(), foldVSelectToSignBitSplatMask(), getShlAddShlAdd(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), isTruncateOf(), m_False(), m_True(), matchLogicBlend(), matchPMADDWD(), matchPMADDWD_2(), matchVPMADD52(), narrowBitOpRMW(), performAddTruncShiftCombine(), performANDORDUPNOTCombine(), performAnyAllCombine(), performBitcastCombine(), performCTPOPCombine(), llvm::RISCVTargetLowering::PerformDAGCombine(), performLastTrueTestVectorCombine(), performMINMAXCombine(), reverseZExtICmpCombine(), sd_match(), sd_match(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), llvm::TargetLowering::SimplifyDemandedBits(), takeInexpensiveLog2(), tryToFoldExtendSelectLoad(), and visitORCommutative().
|
nodiscard |
Definition at line 82 of file SDPatternMatch.h.
References N, P, and sd_match().
|
nodiscard |
Definition at line 77 of file SDPatternMatch.h.
References N, P, and sd_context_match().
|
nodiscard |
Definition at line 87 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.