LLVM 24.0.0git
llvm::MIPatternMatch Namespace Reference

Classes

struct  AllOnesConstantMatch
 Matches an integer constant with all bits set, regardless of width. More...
struct  And
 Matching combinators. More...
struct  And< Pred, Preds... >
struct  AnyImmMatch
 Matches any immediate operand. More...
struct  BinaryOp_match
struct  BinaryOpc_match
struct  bind_helper
struct  bind_helper< const ConstantFP * >
struct  bind_helper< const MachineInstr * >
struct  bind_helper< LLT >
struct  bind_helper< MachineInstr * >
struct  bind_ty
struct  BindImmMatch
struct  CheckType
struct  ClassifyOp_match
struct  CompareOp_match
struct  ConstantMatch
struct  deferred_helper
struct  deferred_helper< LLT >
struct  deferred_ty
struct  GConstantBitsMatch
 Match a literal G_CONSTANT or G_FCONSTANT, binding its raw bits to Bits (the integer value, or the float reinterpreted as an integer). More...
struct  GCstAndRegMatch
struct  GFCstAndRegMatch
struct  GFCstOrSplatGFCstMatch
struct  GFCstPredMatch
 Matches an FP constant whose value satisfies the given predicate. More...
struct  GFrameIndexMatch
 Matches a G_FRAME_INDEX, binding its frame index. More...
struct  GInstrBind
 Binds the defining instruction of Reg if it is a Class. More...
struct  GIntrinsic_match
 Matches a GIntrinsic with a specific intrinsic ID and optionally, matchers for its leading arguments. More...
struct  ICstOrSplatMatch
struct  ImplicitDefMatch
struct  LoadOp_match
 Match a load of type Class, matching its pointer operand and optionally binding the instruction and/or its MachineMemOperand. More...
struct  MIFlagsRef
 Wraps a MIFlags output for use as an optional trailing operand of an instruction matcher (e.g. More...
struct  MMORef
 Optional trailing operand for a load matcher (e.g. More...
struct  OneNonDBGUse_match
struct  OneUse_match
struct  operand_type_match
struct  Or
struct  Or< Pred, Preds... >
struct  ShuffleVectorMatch
 Matches a G_SHUFFLE_VECTOR, binding its two source operands and its mask. More...
struct  SpecificConstantMatch
 Matcher for a specific constant value. More...
struct  SpecificConstantOrSplatMatch
 Matcher for a specific constant or constant splat. More...
struct  SpecificConstantSplatMatch
 Matcher for a specific constant splat. More...
struct  SpecificImmMatch
struct  SpecificRegisterMatch
 Matcher for a specific register. More...
struct  SrcImmOp_match
 Matches an op that binds a source operand and an immediate operand with sub-matchers (e.g. More...
struct  TernaryOp_match
struct  UnaryOp_match

Functions

template<typename Reg, typename Pattern>
bool mi_match (Reg R, const MachineRegisterInfo &MRI, Pattern &&P)
template<typename Pattern>
bool mi_match (MachineInstr &MI, const MachineRegisterInfo &MRI, Pattern &&P)
template<typename Pattern>
bool mi_match (const MachineInstr &MI, const MachineRegisterInfo &MRI, Pattern &&P)
template<typename SubPat>
OneUse_match< SubPat > m_OneUse (const SubPat &SP)
template<typename SubPat>
OneNonDBGUse_match< SubPat > m_OneNonDBGUse (const SubPat &SP)
template<typename ConstT>
std::optional< ConstT > matchConstant (Register, const MachineRegisterInfo &)
template<>
std::optional< APInt > matchConstant (Register Reg, const MachineRegisterInfo &MRI)
template<>
std::optional< int64_t > matchConstant (Register Reg, const MachineRegisterInfo &MRI)
ConstantMatch< APInt > m_ICst (APInt &Cst)
ConstantMatch< int64_t > m_ICst (int64_t &Cst)
template<typename ConstT>
std::optional< ConstT > matchConstantSplat (Register, const MachineRegisterInfo &)
template<>
std::optional< APInt > matchConstantSplat (Register Reg, const MachineRegisterInfo &MRI)
template<>
std::optional< int64_t > matchConstantSplat (Register Reg, const MachineRegisterInfo &MRI)
ICstOrSplatMatch< APInt > m_ICstOrSplat (APInt &Cst)
ICstOrSplatMatch< int64_t > m_ICstOrSplat (int64_t &Cst)
GCstAndRegMatch m_GCst (std::optional< ValueAndVReg > &ValReg)
GFCstAndRegMatch m_GFCst (std::optional< FPValueAndVReg > &FPValReg)
GFCstOrSplatGFCstMatch m_GFCstOrSplat (std::optional< FPValueAndVReg > &FPValReg)
template<typename Pred>
 GFCstPredMatch (Pred) -> GFCstPredMatch< Pred >
auto m_PosZeroFP ()
 Matches a floating-point positive zero.
SpecificConstantMatch m_SpecificICst (const APInt &RequestedValue)
 Matches a constant equal to RequestedValue.
SpecificConstantMatch m_SpecificICst (int64_t RequestedValue)
SpecificImmMatch m_SpecificImm (int64_t RequestedValue)
 Matches an immediate operand equal to RequestedValue.
BindImmMatch m_Imm (int64_t &Imm)
 Binds an immediate operand's value.
AllOnesConstantMatch m_AllOnes ()
SpecificConstantSplatMatch m_SpecificICstSplat (const APInt &RequestedValue)
 Matches a constant splat of RequestedValue.
SpecificConstantSplatMatch m_SpecificICstSplat (int64_t RequestedValue)
SpecificConstantOrSplatMatch m_SpecificICstOrSplat (const APInt &RequestedValue)
 Matches a RequestedValue constant or a constant splat of RequestedValue.
SpecificConstantOrSplatMatch m_SpecificICstOrSplat (int64_t RequestedValue)
SpecificConstantMatch m_ZeroInt ()
 Convenience matchers for specific integer values.
SpecificConstantMatch m_AllOnesInt ()
SpecificRegisterMatch m_SpecificReg (Register RequestedReg)
 Matches a register only if it is equal to RequestedReg.
operand_type_match m_Reg ()
template<typename... Preds>
And< Preds... > m_all_of (Preds &&... preds)
template<typename... Preds>
Or< Preds... > m_any_of (Preds &&... preds)
bind_ty< Register > m_Reg (Register &R)
bind_ty< MachineInstr * > m_MInstr (MachineInstr *&MI)
bind_ty< const MachineInstr * > m_MInstr (const MachineInstr *&MI)
bind_ty< LLT > m_Type (LLT &Ty)
bind_ty< CmpInst::Predicate > m_Pred (CmpInst::Predicate &P)
operand_type_match m_Pred ()
bind_ty< FPClassTest > m_FPClassTest (FPClassTest &T)
MIFlagsRef m_MIFlags (uint32_t &Flags)
MMORef m_MMO (const MachineMemOperand *&MMO)
deferred_ty< Register > m_DeferredReg (Register &R)
 Similar to m_SpecificReg/Type, but the specific value to match originated from an earlier sub-pattern in the same mi_match expression.
deferred_ty< LLT > m_DeferredType (LLT &Ty)
ImplicitDefMatch m_GImplicitDef ()
GInstrBind< GConstant > m_GConstant (GConstant *&Inst)
 Match a literal G_CONSTANT instruction (no look-through of splats or copies).
GInstrBind< const GConstant > m_GConstant (const GConstant *&Inst)
GConstantBitsMatch m_GConstantOrFConstantBits (APInt &Bits)
template<typename PtrP>
LoadOp_match< GAnyLoad, PtrP > m_GAnyLoad (const PtrP &Ptr)
template<typename PtrP>
LoadOp_match< GAnyLoad, PtrP > m_GAnyLoad (GAnyLoad *&Inst, const PtrP &Ptr)
template<typename PtrP>
LoadOp_match< GAnyLoad, PtrP > m_GAnyLoad (GAnyLoad *&Inst, const PtrP &Ptr, MMORef MMO)
template<typename PtrP>
LoadOp_match< GLoad, PtrP > m_GLoad (const PtrP &Ptr)
template<typename PtrP>
LoadOp_match< GLoad, PtrP > m_GLoad (const PtrP &Ptr, MMORef MMO)
LoadOp_match< GSExtLoad, operand_type_match > m_GSExtLoad (GSExtLoad *&Inst)
LoadOp_match< GZExtLoad, operand_type_match > m_GZExtLoad (GZExtLoad *&Inst)
LoadOp_match< GSExtLoad, operand_type_match > m_GSExtLoad (GSExtLoad *&Inst, MMORef MMO)
LoadOp_match< GZExtLoad, operand_type_match > m_GZExtLoad (GZExtLoad *&Inst, MMORef MMO)
GInstrBind< GUnmerge > m_GUnmerge (GUnmerge *&Inst)
 Instruction binders for ops with no operand-form matcher (constant-immediate or variadic-source ops).
GInstrBind< GVScale > m_GVScale (GVScale *&Inst)
GInstrBind< GBuildVector > m_GBuildVector (GBuildVector *&Inst)
GInstrBind< GConcatVectors > m_GConcatVectors (GConcatVectors *&Inst)
GInstrBind< GIntrinsic > m_GIntrinsic (GIntrinsic *&Inst)
 Binds the defining instruction of Reg if it is a GIntrinsic (any of the four G_INTRINSIC* opcodes).
GInstrBind< const GIntrinsic > m_GIntrinsic (const GIntrinsic *&Inst)
template<Intrinsic::ID IntrID, typename... OpMatchers>
GIntrinsic_match< IntrID, OpMatchers... > m_GIntrinsic (const OpMatchers &...Ops)
template<typename Src1Ty, typename Src2Ty>
ShuffleVectorMatch< Src1Ty, Src2Ty > m_GShuffleVector (const Src1Ty &Src1, const Src2Ty &Src2, ArrayRef< int > &Mask)
GFrameIndexMatch m_GFrameIndex (int &FI)
bind_ty< const ConstantFP * > m_GFCst (const ConstantFP *&C)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, false > m_BinOp (unsigned Opcode, const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > m_CommutativeBinOp (unsigned Opcode, const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_ADD, true > m_GAdd (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_BUILD_VECTOR, false > m_GBuildVector (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_BUILD_VECTOR_TRUNC, false > m_GBuildVectorTrunc (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_PTR_ADD, false > m_GPtrAdd (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_PTR_ADD, false > m_GPtrAdd (const LHS &L, const RHS &R, MIFlagsRef Flags)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_SUB > m_GSub (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_SUB > m_GSub (const LHS &L, const RHS &R, MIFlagsRef Flags)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_MUL, true > m_GMul (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_FADD, true > m_GFAdd (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_FMUL, true > m_GFMul (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_FSUB, false > m_GFSub (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_AND, true > m_GAnd (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_XOR, true > m_GXor (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_OR, true > m_GOr (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_OR, true, MachineInstr::Disjoint > m_GDisjointOr (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
auto m_GAddLike (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_SHL, false > m_GShl (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_LSHR, false > m_GLShr (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_ASHR, false > m_GAShr (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_SMAX, true > m_GSMax (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_SMIN, true > m_GSMin (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_UMAX, true > m_GUMax (const LHS &L, const RHS &R)
template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_UMIN, true > m_GUMin (const LHS &L, const RHS &R)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_ANYEXT > m_GAnyExt (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_SEXT > m_GSExt (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_ZEXT > m_GZExt (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FPEXT > m_GFPExt (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_TRUNC > m_GTrunc (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_BITCAST > m_GBitcast (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_PTRTOINT > m_GPtrToInt (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_INTTOPTR > m_GIntToPtr (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FPTRUNC > m_GFPTrunc (const SrcTy &Src)
template<typename SrcTy>
SrcImmOp_match< SrcTy, AnyImmMatch, TargetOpcode::G_SEXT_INREG > m_GSExtInReg (const SrcTy &Src)
 Matches a G_SEXT_INREG, binding its source and immediate width.
template<typename SrcTy, typename ImmTy>
SrcImmOp_match< SrcTy, ImmTy, TargetOpcode::G_SEXT_INREG > m_GSExtInReg (const SrcTy &Src, const ImmTy &Imm)
template<typename SrcTy>
SrcImmOp_match< SrcTy, AnyImmMatch, TargetOpcode::G_ASSERT_ZEXT > m_GAssertZext (const SrcTy &Src)
 Matches a G_ASSERT_ZEXT, binding its source and immediate bit width.
template<typename SrcTy, typename ImmTy>
SrcImmOp_match< SrcTy, ImmTy, TargetOpcode::G_ASSERT_ZEXT > m_GAssertZext (const SrcTy &Src, const ImmTy &Imm)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FABS > m_GFabs (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FNEG > m_GFNeg (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::COPY > m_Copy (SrcTy &&Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FSQRT > m_GFSqrt (const SrcTy &Src)
template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FFLOOR > m_GFFloor (const SrcTy &Src)
template<typename Pred, typename LHS, typename RHS>
CompareOp_match< Pred, LHS, RHS, TargetOpcode::G_ICMP > m_GICmp (const Pred &P, const LHS &L, const RHS &R)
template<typename Pred, typename LHS, typename RHS>
CompareOp_match< Pred, LHS, RHS, TargetOpcode::G_FCMP > m_GFCmp (const Pred &P, const LHS &L, const RHS &R)
template<typename Pred, typename LHS, typename RHS>
CompareOp_match< Pred, LHS, RHS, TargetOpcode::G_ICMP, true > m_c_GICmp (const Pred &P, const LHS &L, const RHS &R)
 G_ICMP matcher that also matches commuted compares.
template<typename Pred, typename LHS, typename RHS>
CompareOp_match< Pred, LHS, RHS, TargetOpcode::G_FCMP, true > m_c_GFCmp (const Pred &P, const LHS &L, const RHS &R)
 G_FCMP matcher that also matches commuted compares.
template<typename LHS, typename Test>
ClassifyOp_match< LHS, Test, TargetOpcode::G_IS_FPCLASS > m_GIsFPClass (const LHS &L, const Test &T)
 Matches the register and immediate used in a fpclass test G_IS_FPCLASS val, 96.
CheckType m_SpecificType (LLT Ty)
template<typename Src0Ty, typename Src1Ty, typename Src2Ty>
TernaryOp_match< Src0Ty, Src1Ty, Src2Ty, TargetOpcode::G_INSERT_VECTOR_ELT > m_GInsertVecElt (const Src0Ty &Src0, const Src1Ty &Src1, const Src2Ty &Src2)
template<typename Src0Ty, typename Src1Ty, typename Src2Ty>
TernaryOp_match< Src0Ty, Src1Ty, Src2Ty, TargetOpcode::G_SELECT > m_GISelect (const Src0Ty &Src0, const Src1Ty &Src1, const Src2Ty &Src2)
template<typename SrcTy>
BinaryOp_match< SpecificConstantMatch, SrcTy, TargetOpcode::G_SUB > m_Neg (const SrcTy &&Src)
 Matches a register negated by a G_SUB.
template<typename SrcTy>
BinaryOp_match< SrcTy, SpecificConstantMatch, TargetOpcode::G_XOR, true > m_Not (const SrcTy &&Src)
 Matches a register not-ed by a G_XOR.

Function Documentation

◆ GFCstPredMatch()

template<typename Pred>
llvm::MIPatternMatch::GFCstPredMatch ( Pred ) -> GFCstPredMatch< Pred >

Referenced by m_PosZeroFP().

◆ m_all_of()

◆ m_AllOnes()

AllOnesConstantMatch llvm::MIPatternMatch::m_AllOnes ( )
inline

Definition at line 266 of file MIPatternMatch.h.

Referenced by areInverseVectorBitmasks(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedAddUnsigned(), canonicalizeSaturatedSubtractUnsigned(), combineRecipe(), dropRedundantMaskingOfLeftShiftInput(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBitCast(), foldICmpOfUAddOv(), foldICmpOfVectorReduce(), llvm::InstCombinerImpl::foldICmpOrConstant(), foldICmpPow2Test(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldSelectICmpMinMax(), foldSelectToUSATI(), llvm::InstCombinerImpl::foldVectorBinop(), llvm::AArch64TTIImpl::getCmpSelInstrCost(), llvm::AArch64TargetLowering::getJumpConditionMergingParams(), getKnownBitsFromAndXorOr(), getMaskedTypeForICmpPair(), instCombineSVEVectorMlaU(), llvm::isKnownToBeAPowerOfTwo(), isMaskOrZero(), llvm::SDPatternMatch::m_Not(), llvm::maskContainsAllOneOrUndef(), matchAndCC(), matchEquivZeroRHS(), matchOrCC(), matchSelectPattern(), matchSignedNewValueCC(), matchUAddWithOverflowConstantEdgeCases(), performLastTrueTestVectorCombine(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), simplifyAddInst(), simplifyAndCommutative(), simplifyAndInst(), simplifyAShrInst(), simplifyBinaryIntrinsic(), llvm::simplifyIntrinsic(), simplifyLogicalRecipe(), simplifyOrInst(), simplifySelectWithICmpCond(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().

◆ m_AllOnesInt()

SpecificConstantMatch llvm::MIPatternMatch::m_AllOnesInt ( )
inline

Definition at line 323 of file MIPatternMatch.h.

References llvm::APInt::getAllOnes().

Referenced by BitOp3_Op(), and m_Not().

◆ m_any_of()

◆ m_BinOp()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, false > llvm::MIPatternMatch::m_BinOp ( unsigned Opcode,
const LHS & L,
const RHS & R )
inline

Definition at line 821 of file MIPatternMatch.h.

References LHS, and RHS.

Referenced by foldSelectBinOpIdentity(), and llvm::InstCombinerImpl::foldSelectShuffle().

◆ m_c_GFCmp()

template<typename Pred, typename LHS, typename RHS>
CompareOp_match< Pred, LHS, RHS, TargetOpcode::G_FCMP, true > llvm::MIPatternMatch::m_c_GFCmp ( const Pred & P,
const LHS & L,
const RHS & R )
inline

G_FCMP matcher that also matches commuted compares.

E.g.

m_c_GFCmp(m_Pred(...), m_FAdd(...), m_GFMul(...))

Could match both of:

fcmp ogt (fadd x, y) (fmul a, b) fcmp olt (fmul a, b) (fadd x, y)

Definition at line 1214 of file MIPatternMatch.h.

References LHS, P, and RHS.

◆ m_c_GICmp()

template<typename Pred, typename LHS, typename RHS>
CompareOp_match< Pred, LHS, RHS, TargetOpcode::G_ICMP, true > llvm::MIPatternMatch::m_c_GICmp ( const Pred & P,
const LHS & L,
const RHS & R )
inline

G_ICMP matcher that also matches commuted compares.

E.g.

m_c_GICmp(m_Pred(...), m_GAdd(...), m_GSub(...))

Could match both of:

icmp ugt (add x, y) (sub a, b) icmp ult (sub a, b) (add x, y)

Definition at line 1199 of file MIPatternMatch.h.

References LHS, P, and RHS.

Referenced by llvm::CombinerHelper::matchRedundantBinOpInEquality().

◆ m_CommutativeBinOp()

template<typename LHS, typename RHS>
BinaryOpc_match< LHS, RHS, true > llvm::MIPatternMatch::m_CommutativeBinOp ( unsigned Opcode,
const LHS & L,
const RHS & R )
inline

Definition at line 828 of file MIPatternMatch.h.

References LHS, and RHS.

◆ m_Copy()

template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::COPY > llvm::MIPatternMatch::m_Copy ( SrcTy && Src)
inline

Definition at line 1098 of file MIPatternMatch.h.

Referenced by llvm::AMDGPU::getBaseWithConstantOffset(), and getLegalRegBank().

◆ m_DeferredReg()

deferred_ty< Register > llvm::MIPatternMatch::m_DeferredReg ( Register & R)
inline

Similar to m_SpecificReg/Type, but the specific value to match originated from an earlier sub-pattern in the same mi_match expression.

For example, we cannot match (add X, X) with m_GAdd(m_Reg(X), m_SpecificReg(X)) because X is not initialized at the time it's passed to m_SpecificReg. Instead, we can use m_GAdd(m_Reg(x), m_DeferredReg(X)).

Definition at line 519 of file MIPatternMatch.h.

Referenced by isAbsoluteValueULEOne(), llvm::CombinerHelper::matchCtls(), and llvm::CombinerHelper::matchSimplifyNegMinMax().

◆ m_DeferredType()

deferred_ty< LLT > llvm::MIPatternMatch::m_DeferredType ( LLT & Ty)
inline

Definition at line 520 of file MIPatternMatch.h.

◆ m_FPClassTest()

bind_ty< FPClassTest > llvm::MIPatternMatch::m_FPClassTest ( FPClassTest & T)
inline

Definition at line 473 of file MIPatternMatch.h.

References T.

◆ m_GAdd()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_ADD, true > llvm::MIPatternMatch::m_GAdd ( const LHS & L,
const RHS & R )
inline

◆ m_GAddLike()

template<typename LHS, typename RHS>
auto llvm::MIPatternMatch::m_GAddLike ( const LHS & L,
const RHS & R )
inline

Definition at line 926 of file MIPatternMatch.h.

References LHS, m_any_of(), m_GAdd(), m_GDisjointOr(), and RHS.

◆ m_GAnd()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_AND, true > llvm::MIPatternMatch::m_GAnd ( const LHS & L,
const RHS & R )
inline

◆ m_GAnyExt()

template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_ANYEXT > llvm::MIPatternMatch::m_GAnyExt ( const SrcTy & Src)
inline

◆ m_GAnyLoad() [1/3]

template<typename PtrP>
LoadOp_match< GAnyLoad, PtrP > llvm::MIPatternMatch::m_GAnyLoad ( const PtrP & Ptr)
inline

Definition at line 610 of file MIPatternMatch.h.

Referenced by llvm::CombinerHelper::matchCombineLoadWithAndMask().

◆ m_GAnyLoad() [2/3]

template<typename PtrP>
LoadOp_match< GAnyLoad, PtrP > llvm::MIPatternMatch::m_GAnyLoad ( GAnyLoad *& Inst,
const PtrP & Ptr )
inline

Definition at line 614 of file MIPatternMatch.h.

◆ m_GAnyLoad() [3/3]

template<typename PtrP>
LoadOp_match< GAnyLoad, PtrP > llvm::MIPatternMatch::m_GAnyLoad ( GAnyLoad *& Inst,
const PtrP & Ptr,
MMORef MMO )
inline

Definition at line 619 of file MIPatternMatch.h.

◆ m_GAShr()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_ASHR, false > llvm::MIPatternMatch::m_GAShr ( const LHS & L,
const RHS & R )
inline

◆ m_GAssertZext() [1/2]

template<typename SrcTy>
SrcImmOp_match< SrcTy, AnyImmMatch, TargetOpcode::G_ASSERT_ZEXT > llvm::MIPatternMatch::m_GAssertZext ( const SrcTy & Src)
inline

Matches a G_ASSERT_ZEXT, binding its source and immediate bit width.

Definition at line 1077 of file MIPatternMatch.h.

◆ m_GAssertZext() [2/2]

template<typename SrcTy, typename ImmTy>
SrcImmOp_match< SrcTy, ImmTy, TargetOpcode::G_ASSERT_ZEXT > llvm::MIPatternMatch::m_GAssertZext ( const SrcTy & Src,
const ImmTy & Imm )
inline

Definition at line 1083 of file MIPatternMatch.h.

References Imm.

◆ m_GBitcast()

◆ m_GBuildVector() [1/2]

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_BUILD_VECTOR, false > llvm::MIPatternMatch::m_GBuildVector ( const LHS & L,
const RHS & R )
inline

Definition at line 840 of file MIPatternMatch.h.

References LHS, and RHS.

◆ m_GBuildVector() [2/2]

◆ m_GBuildVectorTrunc()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_BUILD_VECTOR_TRUNC, false > llvm::MIPatternMatch::m_GBuildVectorTrunc ( const LHS & L,
const RHS & R )
inline

Definition at line 846 of file MIPatternMatch.h.

References LHS, and RHS.

Referenced by llvm::CombinerHelper::matchBuildVectorIdentityFold().

◆ m_GConcatVectors()

GInstrBind< GConcatVectors > llvm::MIPatternMatch::m_GConcatVectors ( GConcatVectors *& Inst)
inline

Definition at line 657 of file MIPatternMatch.h.

Referenced by llvm::CombinerHelper::matchCombineShuffleConcat().

◆ m_GConstant() [1/2]

GInstrBind< const GConstant > llvm::MIPatternMatch::m_GConstant ( const GConstant *& Inst)
inline

Definition at line 554 of file MIPatternMatch.h.

◆ m_GConstant() [2/2]

◆ m_GConstantOrFConstantBits()

GConstantBitsMatch llvm::MIPatternMatch::m_GConstantOrFConstantBits ( APInt & Bits)
inline

Definition at line 576 of file MIPatternMatch.h.

Referenced by llvm::CombinerHelper::matchCombineUnmergeConstant().

◆ m_GCst()

◆ m_GDisjointOr()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_OR, true, MachineInstr::Disjoint > llvm::MIPatternMatch::m_GDisjointOr ( const LHS & L,
const RHS & R )
inline

Definition at line 920 of file MIPatternMatch.h.

References llvm::MachineInstr::Disjoint, LHS, and RHS.

Referenced by m_GAddLike().

◆ m_GFabs()

template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FABS > llvm::MIPatternMatch::m_GFabs ( const SrcTy & Src)
inline

Definition at line 1088 of file MIPatternMatch.h.

Referenced by selectWMMAModsNegAbs().

◆ m_GFAdd()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_FADD, true > llvm::MIPatternMatch::m_GFAdd ( const LHS & L,
const RHS & R )
inline

Definition at line 883 of file MIPatternMatch.h.

References LHS, and RHS.

◆ m_GFCmp()

template<typename Pred, typename LHS, typename RHS>
CompareOp_match< Pred, LHS, RHS, TargetOpcode::G_FCMP > llvm::MIPatternMatch::m_GFCmp ( const Pred & P,
const LHS & L,
const RHS & R )
inline

Definition at line 1184 of file MIPatternMatch.h.

References LHS, P, and RHS.

Referenced by llvm::SPIRVCombinerHelper::matchSelectToFaceForward().

◆ m_GFCst() [1/2]

bind_ty< const ConstantFP * > llvm::MIPatternMatch::m_GFCst ( const ConstantFP *& C)
inline

Definition at line 750 of file MIPatternMatch.h.

References C().

◆ m_GFCst() [2/2]

GFCstAndRegMatch llvm::MIPatternMatch::m_GFCst ( std::optional< FPValueAndVReg > & FPValReg)
inline

◆ m_GFCstOrSplat()

◆ m_GFFloor()

template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FFLOOR > llvm::MIPatternMatch::m_GFFloor ( const SrcTy & Src)
inline

Definition at line 1109 of file MIPatternMatch.h.

Referenced by isAbsoluteValueULEOne().

◆ m_GFMul()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_FMUL, true > llvm::MIPatternMatch::m_GFMul ( const LHS & L,
const RHS & R )
inline

◆ m_GFNeg()

◆ m_GFPExt()

◆ m_GFPTrunc()

template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FPTRUNC > llvm::MIPatternMatch::m_GFPTrunc ( const SrcTy & Src)
inline

Definition at line 1035 of file MIPatternMatch.h.

◆ m_GFrameIndex()

GFrameIndexMatch llvm::MIPatternMatch::m_GFrameIndex ( int & FI)
inline

Definition at line 747 of file MIPatternMatch.h.

◆ m_GFSqrt()

template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_FSQRT > llvm::MIPatternMatch::m_GFSqrt ( const SrcTy & Src)
inline

Definition at line 1103 of file MIPatternMatch.h.

◆ m_GFSub()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_FSUB, false > llvm::MIPatternMatch::m_GFSub ( const LHS & L,
const RHS & R )
inline

Definition at line 895 of file MIPatternMatch.h.

References LHS, and RHS.

Referenced by isAbsoluteValueULEOne().

◆ m_GICmp()

template<typename Pred, typename LHS, typename RHS>
CompareOp_match< Pred, LHS, RHS, TargetOpcode::G_ICMP > llvm::MIPatternMatch::m_GICmp ( const Pred & P,
const LHS & L,
const RHS & R )
inline

Definition at line 1178 of file MIPatternMatch.h.

References LHS, P, and RHS.

Referenced by getOperandsForBranch(), and llvm::CombinerHelper::matchSelectIMinMax().

◆ m_GImplicitDef()

◆ m_GInsertVecElt()

template<typename Src0Ty, typename Src1Ty, typename Src2Ty>
TernaryOp_match< Src0Ty, Src1Ty, Src2Ty, TargetOpcode::G_INSERT_VECTOR_ELT > llvm::MIPatternMatch::m_GInsertVecElt ( const Src0Ty & Src0,
const Src1Ty & Src1,
const Src2Ty & Src2 )
inline

Definition at line 1262 of file MIPatternMatch.h.

Referenced by llvm::CombinerHelper::matchCombineInsertVecElts().

◆ m_GIntrinsic() [1/3]

GInstrBind< const GIntrinsic > llvm::MIPatternMatch::m_GIntrinsic ( const GIntrinsic *& Inst)
inline

Definition at line 664 of file MIPatternMatch.h.

◆ m_GIntrinsic() [2/3]

template<Intrinsic::ID IntrID, typename... OpMatchers>
GIntrinsic_match< IntrID, OpMatchers... > llvm::MIPatternMatch::m_GIntrinsic ( const OpMatchers &... Ops)
inline

Definition at line 701 of file MIPatternMatch.h.

References AbstractManglingParser< Derived, Alloc >::Ops.

◆ m_GIntrinsic() [3/3]

GInstrBind< GIntrinsic > llvm::MIPatternMatch::m_GIntrinsic ( GIntrinsic *& Inst)
inline

Binds the defining instruction of Reg if it is a GIntrinsic (any of the four G_INTRINSIC* opcodes).

Definition at line 663 of file MIPatternMatch.h.

Referenced by llvm::AArch64GISelUtils::extractPtrauthBlendDiscriminators(), and llvm::SPIRVCombinerHelper::matchSelectToFaceForward().

◆ m_GIntToPtr()

template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_INTTOPTR > llvm::MIPatternMatch::m_GIntToPtr ( const SrcTy & Src)
inline

Definition at line 1029 of file MIPatternMatch.h.

◆ m_GISelect()

template<typename Src0Ty, typename Src1Ty, typename Src2Ty>
TernaryOp_match< Src0Ty, Src1Ty, Src2Ty, TargetOpcode::G_SELECT > llvm::MIPatternMatch::m_GISelect ( const Src0Ty & Src0,
const Src1Ty & Src1,
const Src2Ty & Src2 )
inline

◆ m_GIsFPClass()

template<typename LHS, typename Test>
ClassifyOp_match< LHS, Test, TargetOpcode::G_IS_FPCLASS > llvm::MIPatternMatch::m_GIsFPClass ( const LHS & L,
const Test & T )
inline

Matches the register and immediate used in a fpclass test G_IS_FPCLASS val, 96.

Definition at line 1222 of file MIPatternMatch.h.

References LHS, T, and llvm::Test.

◆ m_GLoad() [1/2]

template<typename PtrP>
LoadOp_match< GLoad, PtrP > llvm::MIPatternMatch::m_GLoad ( const PtrP & Ptr)
inline

Definition at line 624 of file MIPatternMatch.h.

Referenced by llvm::CombinerHelper::matchSextInRegOfLoad().

◆ m_GLoad() [2/2]

template<typename PtrP>
LoadOp_match< GLoad, PtrP > llvm::MIPatternMatch::m_GLoad ( const PtrP & Ptr,
MMORef MMO )
inline

Definition at line 628 of file MIPatternMatch.h.

◆ m_GLShr()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_LSHR, false > llvm::MIPatternMatch::m_GLShr ( const LHS & L,
const RHS & R )
inline

◆ m_GMul()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_MUL, true > llvm::MIPatternMatch::m_GMul ( const LHS & L,
const RHS & R )
inline

Definition at line 877 of file MIPatternMatch.h.

References LHS, and RHS.

Referenced by llvm::CombinerHelper::matchMulOfVScale().

◆ m_GOr()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_OR, true > llvm::MIPatternMatch::m_GOr ( const LHS & L,
const RHS & R )
inline

◆ m_GPtrAdd() [1/2]

◆ m_GPtrAdd() [2/2]

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_PTR_ADD, false > llvm::MIPatternMatch::m_GPtrAdd ( const LHS & L,
const RHS & R,
MIFlagsRef Flags )
inline

Definition at line 859 of file MIPatternMatch.h.

References LHS, and RHS.

◆ m_GPtrToInt()

template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_PTRTOINT > llvm::MIPatternMatch::m_GPtrToInt ( const SrcTy & Src)
inline

Definition at line 1023 of file MIPatternMatch.h.

◆ m_GSExt()

template<typename SrcTy>
UnaryOp_match< SrcTy, TargetOpcode::G_SEXT > llvm::MIPatternMatch::m_GSExt ( const SrcTy & Src)
inline

◆ m_GSExtInReg() [1/2]

template<typename SrcTy>
SrcImmOp_match< SrcTy, AnyImmMatch, TargetOpcode::G_SEXT_INREG > llvm::MIPatternMatch::m_GSExtInReg ( const SrcTy & Src)
inline

Matches a G_SEXT_INREG, binding its source and immediate width.

Definition at line 1064 of file MIPatternMatch.h.

◆ m_GSExtInReg() [2/2]

template<typename SrcTy, typename ImmTy>
SrcImmOp_match< SrcTy, ImmTy, TargetOpcode::G_SEXT_INREG > llvm::MIPatternMatch::m_GSExtInReg ( const SrcTy & Src,
const ImmTy & Imm )
inline

Definition at line 1070 of file MIPatternMatch.h.

References Imm.

◆ m_GSExtLoad() [1/2]

LoadOp_match< GSExtLoad, operand_type_match > llvm::MIPatternMatch::m_GSExtLoad ( GSExtLoad *& Inst)
inline

Definition at line 633 of file MIPatternMatch.h.

References m_Reg().

◆ m_GSExtLoad() [2/2]

LoadOp_match< GSExtLoad, operand_type_match > llvm::MIPatternMatch::m_GSExtLoad ( GSExtLoad *& Inst,
MMORef MMO )
inline

Definition at line 641 of file MIPatternMatch.h.

References m_Reg().

◆ m_GShl()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_SHL, false > llvm::MIPatternMatch::m_GShl ( const LHS & L,
const RHS & R )
inline

◆ m_GShuffleVector()

template<typename Src1Ty, typename Src2Ty>
ShuffleVectorMatch< Src1Ty, Src2Ty > llvm::MIPatternMatch::m_GShuffleVector ( const Src1Ty & Src1,
const Src2Ty & Src2,
ArrayRef< int > & Mask )
inline

Definition at line 729 of file MIPatternMatch.h.

Referenced by isExtractHiElt().

◆ m_GSMax()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_SMAX, true > llvm::MIPatternMatch::m_GSMax ( const LHS & L,
const RHS & R )
inline

◆ m_GSMin()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_SMIN, true > llvm::MIPatternMatch::m_GSMin ( const LHS & L,
const RHS & R )
inline

◆ m_GSub() [1/2]

◆ m_GSub() [2/2]

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_SUB > llvm::MIPatternMatch::m_GSub ( const LHS & L,
const RHS & R,
MIFlagsRef Flags )
inline

Definition at line 871 of file MIPatternMatch.h.

References LHS, and RHS.

◆ m_GTrunc()

◆ m_GUMax()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_UMAX, true > llvm::MIPatternMatch::m_GUMax ( const LHS & L,
const RHS & R )
inline

Definition at line 962 of file MIPatternMatch.h.

References LHS, and RHS.

Referenced by llvm::CombinerHelper::matchSimplifyNegMinMax().

◆ m_GUMin()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_UMIN, true > llvm::MIPatternMatch::m_GUMin ( const LHS & L,
const RHS & R )
inline

◆ m_GUnmerge()

GInstrBind< GUnmerge > llvm::MIPatternMatch::m_GUnmerge ( GUnmerge *& Inst)
inline

Instruction binders for ops with no operand-form matcher (constant-immediate or variadic-source ops).

Definition at line 652 of file MIPatternMatch.h.

Referenced by isExtractHiElt(), and llvm::CombinerHelper::matchUseVectorTruncate().

◆ m_GVScale()

◆ m_GXor()

template<typename LHS, typename RHS>
BinaryOp_match< LHS, RHS, TargetOpcode::G_XOR, true > llvm::MIPatternMatch::m_GXor ( const LHS & L,
const RHS & R )
inline

◆ m_GZExt()

◆ m_GZExtLoad() [1/2]

LoadOp_match< GZExtLoad, operand_type_match > llvm::MIPatternMatch::m_GZExtLoad ( GZExtLoad *& Inst)
inline

Definition at line 637 of file MIPatternMatch.h.

References m_Reg().

◆ m_GZExtLoad() [2/2]

LoadOp_match< GZExtLoad, operand_type_match > llvm::MIPatternMatch::m_GZExtLoad ( GZExtLoad *& Inst,
MMORef MMO )
inline

Definition at line 645 of file MIPatternMatch.h.

References m_Reg().

◆ m_ICst() [1/2]

◆ m_ICst() [2/2]

ConstantMatch< int64_t > llvm::MIPatternMatch::m_ICst ( int64_t & Cst)
inline

Definition at line 107 of file MIPatternMatch.h.

◆ m_ICstOrSplat() [1/2]

◆ m_ICstOrSplat() [2/2]

ICstOrSplatMatch< int64_t > llvm::MIPatternMatch::m_ICstOrSplat ( int64_t & Cst)
inline

Definition at line 149 of file MIPatternMatch.h.

◆ m_Imm()

BindImmMatch llvm::MIPatternMatch::m_Imm ( int64_t & Imm)
inline

Binds an immediate operand's value.

Definition at line 256 of file MIPatternMatch.h.

References Imm.

◆ m_MIFlags()

◆ m_MInstr() [1/2]

bind_ty< const MachineInstr * > llvm::MIPatternMatch::m_MInstr ( const MachineInstr *& MI)
inline

Definition at line 467 of file MIPatternMatch.h.

References MI.

◆ m_MInstr() [2/2]

bind_ty< MachineInstr * > llvm::MIPatternMatch::m_MInstr ( MachineInstr *& MI)
inline

Definition at line 466 of file MIPatternMatch.h.

References MI.

Referenced by llvm::CombinerHelper::applyExtendThroughPhis(), llvm::AMDGPU::getBaseWithConstantOffset(), getSwitchCaseValue(), llvm::MIPatternMatch::BinaryOp_match< LHS_P, RHS_P, Opcode, Commutable, Flags >::match(), llvm::MIPatternMatch::BinaryOpc_match< LHS_P, RHS_P, Commutable >::match(), llvm::MIPatternMatch::ClassifyOp_match< LHS_P, Test_P, Opcode >::match(), llvm::MIPatternMatch::CompareOp_match< Pred_P, LHS_P, RHS_P, Opcode, Commutable >::match(), llvm::MIPatternMatch::GFrameIndexMatch::match(), llvm::MIPatternMatch::GInstrBind< Class >::match(), llvm::MIPatternMatch::GIntrinsic_match< IntrID, OpMatchers >::match(), llvm::MIPatternMatch::ImplicitDefMatch::match(), llvm::MIPatternMatch::LoadOp_match< Class, PtrP >::match(), llvm::MIPatternMatch::ShuffleVectorMatch< Src1Ty, Src2Ty >::match(), llvm::MIPatternMatch::SrcImmOp_match< SrcTy, ImmTy, Opcode >::match(), llvm::MIPatternMatch::TernaryOp_match< Src0Ty, Src1Ty, Src2Ty, Opcode >::match(), llvm::MIPatternMatch::UnaryOp_match< SrcTy, Opcode >::match(), llvm::CombinerHelper::matchCombineConcatVectors(), llvm::CombinerHelper::matchCombineFAddFMAFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFAddFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFAddFpExtFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFAddFpExtFMulToFMadOrFMAAggressive(), llvm::CombinerHelper::matchCombineFSubFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFSubFNegFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFSubFpExtFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFSubFpExtFNegFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineInsertVecElts(), llvm::CombinerHelper::matchCommuteConstantToRHS(), llvm::CombinerHelper::matchExtractVecEltBuildVec(), llvm::CombinerHelper::matchFoldBinOpIntoSelect(), llvm::CombinerHelper::matchFreezeOfSingleMaybePoisonOperand(), llvm::CombinerHelper::matchNotCmp(), llvm::CombinerHelper::matchPtrAddZeroVector(), llvm::CombinerHelper::matchReassocPtrAdd(), llvm::CombinerHelper::matchSDivOrSRemByConst(), llvm::CombinerHelper::matchShiftImmedChain(), llvm::CombinerHelper::matchShiftOfShiftedLogic(), llvm::CombinerHelper::matchSimplifyNegMinMax(), llvm::CombinerHelper::matchUDivOrURemByConst(), llvm::CombinerHelper::matchUseVectorTruncate(), llvm::LegalizationArtifactCombiner::tryCombineAnyExt(), llvm::LegalizationArtifactCombiner::tryCombineSExt(), and llvm::CombinerHelper::tryReassocBinOp().

◆ m_MMO()

MMORef llvm::MIPatternMatch::m_MMO ( const MachineMemOperand *& MMO)
inline

◆ m_Neg()

template<typename SrcTy>
BinaryOp_match< SpecificConstantMatch, SrcTy, TargetOpcode::G_SUB > llvm::MIPatternMatch::m_Neg ( const SrcTy && Src)
inline

Matches a register negated by a G_SUB.

G_SUB 0, negated_reg

Definition at line 1278 of file MIPatternMatch.h.

References m_GSub(), and m_ZeroInt().

Referenced by canonicalizeSaturatedSubtractSigned(), combineAddSubWithShlAddSub(), combineAndXorSubWithBMI(), combineLogicBlendIntoConditionalNegate(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), foldAbsDiff(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpBinOp(), foldICmpPow2Test(), foldICmpXNegX(), FoldOrOfSelectSmaxToAbs(), llvm::InstCombinerImpl::foldSelectShuffle(), llvm::InstCombiner::getComplexity(), getKnownBitsFromAndXorOr(), getRangeForSelectPattern(), llvm::isKnownNegation(), llvm::isKnownToBeAPowerOfTwo(), llvm::SelectionDAG::isKnownToBeAPowerOfTwo(), isMaskOrZero(), isNeg(), LinearizeExprTree(), matchAddCC(), matchSelectPattern(), llvm::CombinerHelper::matchSimplifyNegMinMax(), NegateValue(), setLimitsForBinOp(), ShouldBreakUpSubtract(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), simplifyAndCommutative(), simplifyGEPInst(), simplifyICmpWithBinOp(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithICmpCond(), llvm::stripNullTest(), tryToRecognizeTableBasedCttz(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitAtomicRMWInst(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitLShr(), llvm::InstCombinerImpl::visitMul(), and llvm::InstCombinerImpl::visitSub().

◆ m_Not()

template<typename SrcTy>
BinaryOp_match< SrcTy, SpecificConstantMatch, TargetOpcode::G_XOR, true > llvm::MIPatternMatch::m_Not ( const SrcTy && Src)
inline

Matches a register not-ed by a G_XOR.

G_XOR not_reg, -1

Definition at line 1286 of file MIPatternMatch.h.

References m_AllOnesInt(), and m_GXor().

Referenced by BitOp3_Op(), canonicalizeSaturatedAddUnsigned(), canShiftBinOpWithConstantRHS(), collectComplementaryPredicatedMemOps(), combineAndNotOrIntoAndNotAnd(), combineMaskBitOp(), combineRecipe(), combineShiftRightLogical(), computeKnownBitsFromCond(), llvm::computeKnownBitsFromContext(), computeKnownFPClassFromCond(), llvm::decomposeBitTest(), decomposeImpl(), dropRedundantMaskingOfLeftShiftInput(), llvm::SelectionDAGBuilder::FindMergedConditions(), FindSingleBitChange(), llvm::findValuesAffectedByCondition(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAndToXor(), llvm::InstCombinerImpl::foldBinOpOfSelectAndCastOfSelectCondition(), foldComplexAndOrPatterns(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldICmpAndConstant(), foldICmpWithHighBitMask(), foldMaskedMerge(), foldMulShl1(), foldNotXor(), llvm::InstCombinerImpl::FoldOrOfLogicalAnds(), foldOrToXor(), foldSubCtlzNot(), foldToUnsignedSaturatedAdd(), foldXorToXor(), llvm::AArch64TTIImpl::getArithmeticInstrCost(), llvm::InstCombiner::getComplexity(), llvm::InstCombiner::getFreelyInvertedImpl(), getNotValue(), llvm::AMDGPUTargetMachine::getPredicatedAddrSpace(), llvm::vputils::getSCEVExprForVPValue(), haveNoCommonBitsSetSpecialCases(), llvm::invertCondition(), llvm::isCheckForZeroAndMulWithOverflow(), llvm::isImpliedCondition(), llvm::isImpliedCondition(), isMaskOrZero(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), isVectorLatchCheck(), matchBSL(), matchDeMorgansLaws(), matchSelectWithOptionalNotCond(), narrowBitOpRMW(), OptimizeAndOrXor(), performANDORDUPNOTCombine(), reverseZExtICmpCombine(), simplifyAddInst(), simplifyAndCommutative(), simplifyBlends(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), simplifyGEPInst(), simplifyICmpOfBools(), simplifyLogicalRecipe(), simplifyOrLogic(), simplifyRecipe(), simplifySelectInst(), simplifyXorInst(), llvm::InstCombinerImpl::sinkNotIntoLogicalOp(), llvm::InstCombinerImpl::sinkNotIntoOtherHandOfLogicalOp(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitCondBrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitOr(), visitORCommutative(), llvm::InstCombinerImpl::visitSub(), and llvm::InstCombinerImpl::visitXor().

◆ m_OneNonDBGUse()

template<typename SubPat>
OneNonDBGUse_match< SubPat > llvm::MIPatternMatch::m_OneNonDBGUse ( const SubPat & SP)
inline

◆ m_OneUse()

template<typename SubPat>
OneUse_match< SubPat > llvm::MIPatternMatch::m_OneUse ( const SubPat & SP)
inline

Definition at line 58 of file MIPatternMatch.h.

Referenced by llvm::canConvertToMinOrMaxIntrinsic(), canonicalizeAbs(), canonicalizeBitCastExtElt(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeInsertSplat(), canonicalizeLogicFirst(), canonicalizeLowbitMask(), llvm::canPeelLastIteration(), cheapToScalarize(), combineAdd(), combineAddMulh(), combineAddOfExts(), combineAddPackedByteDot(), combineAddSubWithShlAddSub(), combineAnd(), combineAndNotOrIntoAndNotAnd(), combineAndXorSubWithBMI(), combineBitcast(), combineBTToBitOpFlag(), combineCastedMaskArithmetic(), combineMaskBitOp(), combineNarrowableShiftedLoad(), combineOrAndToBitfieldInsert(), combineOrToBitfieldInsert(), combineOrWithGF2P8AFFINEQB(), combinePExtWideningAddAcc(), combinePExtWideningSubAcc(), combineRecipe(), combineSetCC(), combineShiftOfLogicOp(), combineShiftToPMULH(), combineShlAddIAddImpl(), combineStore(), combineVectorInsert(), combineXorToBitfieldInsert(), combineXorWithGF2P8AFFINEQB(), combineXorWithTwoGF2P8AFFINEQB(), llvm::InstCombinerImpl::commonCastTransforms(), llvm::InstCombinerImpl::commonIDivTransforms(), llvm::InstCombinerImpl::commonShiftTransforms(), llvm::InstCombinerImpl::convertOrOfShiftsToFunnelShift(), dominatesMergePoint(), factorizeLerp(), llvm::SelectionDAGBuilder::FindMergedConditions(), llvm::InstCombinerImpl::foldAddWithConstant(), foldAdjacentReversesIntoTbls(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldBitOrderCrossLogicOp(), foldBoxMultiply(), foldComplexAndOrPatterns(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldDivCeil(), foldFDivPowDivisor(), llvm::InstCombinerImpl::foldFMulReassoc(), foldFNegIntoConstant(), foldFPtoI(), foldGuardedFunnelShift(), llvm::InstCombinerImpl::foldICmpAndConstant(), llvm::InstCombinerImpl::foldICmpAndConstConst(), llvm::InstCombinerImpl::foldICmpBinOp(), llvm::InstCombinerImpl::foldICmpBinOpEqualityWithConstant(), llvm::InstCombinerImpl::foldICmpEquality(), llvm::InstCombinerImpl::foldICmpInstWithConstant(), foldICmpOfVectorReduce(), foldICmpOrXorSubChain(), foldICmpPow2Test(), llvm::InstCombinerImpl::foldICmpTruncWithTruncOrExt(), llvm::InstCombinerImpl::foldICmpUsingBoolRange(), llvm::InstCombinerImpl::foldICmpWithClamp(), foldICmpWithHighBitMask(), foldICmpWithLowBitMaskedVal(), llvm::InstCombinerImpl::foldICmpWithTrunc(), foldICmpWithTruncSignExtendedVal(), foldICmpXNegX(), llvm::InstCombinerImpl::foldICmpXorShiftConst(), llvm::InstCombinerImpl::foldIRemByPowerOfTwoToBitTest(), llvm::InstCombinerImpl::foldIsMultipleOfAPowerOfTwo(), foldLoadsRecursive(), foldLogicCastConstant(), foldMaskedAddXorPattern(), foldMinimumOverTrailingOrLeadingZeroCount(), foldMulHigh(), foldMulSelectToNegate(), foldMulShl1(), llvm::InstCombinerImpl::foldMultiplicationOverflowCheck(), foldNotXor(), foldNoWrapAdd(), FoldOrOfSelectSmaxToAbs(), foldOrUnsignedUMulOverflowICmp(), llvm::InstCombinerImpl::foldPowiReassoc(), llvm::InstCombinerImpl::foldPtrToIntOrAddrOfGEP(), foldReductionIdiom(), foldRoundUpToPow2Alignment(), foldSelectGEP(), llvm::InstCombinerImpl::foldSelectICmp(), foldSelectSplitCTLZ(), foldSelectSplitCTTZ(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldSpliceBinOp(), foldSubNUWOfMaskAndZExt(), foldSubOfMinMax(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVecExtTruncToExtElt(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), getNegatibleInsts(), llvm::X86TTIImpl::getShuffleCost(), slpvectorizer::BoUpSLP::getTreeCost(), hoistMinMax(), hoistSubAddAssociation(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineSVELast(), instCombineSVEOrr(), instCombineSVEUMin(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::slpvectorizer::CmpSamePredicateHelper::isBitTest(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isFMulAddCandidate(), isFusableFMulOperand(), llvm::X86TTIImpl::isLegalAltInstr(), m_Tbl(), uitofp_tbl_match::match(), matchAddCC(), matchAndCC(), matchBSL(), llvm::CombinerHelper::matchCtls(), matchDeMorgansLaws(), matchesSquareSum(), matchFPExtFromF16(), matchIntPart(), matchOrCC(), matchOrConcat(), llvm::CombinerHelper::matchSimplifyNegMinMax(), matchSubCC(), matchXorCC(), matchZExtedSubInteger(), moveAddAfterMinMax(), narrowUDivURem(), narrowVectorSelect(), optimizeSymmetricCall(), llvm::RISCVTargetLowering::PerformDAGCombine(), performMINMAXCombine(), performSRLCombine(), performSUBCombine(), performVEXT_VLCombine(), performVP_STORECombine(), reassociateAddSubLong(), reassociateForUses(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), reverseZExtICmpCombine(), ShouldBreakUpDistribution(), shouldCanonicalizeGEPToPtrAdd(), shrinkInsertElt(), shrinkSplatShuffle(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedUseFPClass(), llvm::simplifyInstruction(), simplifyShiftSelectingPackedElement(), simplifyValueKnownNonZero(), splitMergedValStore(), llvm::InstCombinerImpl::tryFoldInstWithCtpopWithNot(), tryToFPToSat(), tryToRecognizePopCount2n3(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitAnd(), llvm::InstCombinerImpl::visitAShr(), llvm::InstCombinerImpl::visitBitCast(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitCondBrInst(), llvm::InstCombinerImpl::visitFAdd(), llvm::InstCombinerImpl::visitFCmpInst(), llvm::InstCombinerImpl::visitFDiv(), llvm::InstCombinerImpl::visitFMul(), llvm::InstCombinerImpl::visitFNeg(), llvm::InstCombinerImpl::visitFSub(), llvm::InstCombinerImpl::visitGetElementPtrInst(), llvm::InstCombinerImpl::visitICmpInst(), llvm::InstCombinerImpl::visitInsertElementInst(), llvm::InstCombinerImpl::visitIntToPtr(), llvm::InstCombinerImpl::visitLShr(), visitMaskedMerge(), llvm::InstCombinerImpl::visitMul(), llvm::InstCombinerImpl::visitOr(), llvm::InstCombinerImpl::visitPtrToAddr(), llvm::InstCombinerImpl::visitPtrToInt(), llvm::InstCombinerImpl::visitSDiv(), llvm::InstCombinerImpl::visitSExt(), llvm::InstCombinerImpl::visitShl(), llvm::InstCombinerImpl::visitSRem(), llvm::InstCombinerImpl::visitSub(), llvm::InstCombinerImpl::visitTrunc(), llvm::InstCombinerImpl::visitUDiv(), llvm::InstCombinerImpl::visitUIToFP(), llvm::InstCombinerImpl::visitXor(), and llvm::InstCombinerImpl::visitZExt().

◆ m_PosZeroFP()

auto llvm::MIPatternMatch::m_PosZeroFP ( )
inline

◆ m_Pred() [1/2]

◆ m_Pred() [2/2]

bind_ty< CmpInst::Predicate > llvm::MIPatternMatch::m_Pred ( CmpInst::Predicate & P)
inline

Definition at line 471 of file MIPatternMatch.h.

References P.

◆ m_Reg() [1/2]

operand_type_match llvm::MIPatternMatch::m_Reg ( )
inline

Definition at line 353 of file MIPatternMatch.h.

Referenced by llvm::AMDGPUCombinerHelper::applyFoldableFneg(), BitOp3_Op(), llvm::AArch64GISelUtils::extractPtrauthBlendDiscriminators(), getBaseWithConstantOffset(), llvm::AMDGPU::getBaseWithConstantOffset(), getOperandsForBranch(), llvm::GISelAddressing::getPointerInfo(), AMDGPURegBankLegalizeCombiner::getReadAnyLaneSrcs(), getTruncStoreByteOffset(), llvm::GISelAddressing::instMayAlias(), isAbsoluteValueULEOne(), llvm::GIMatchTableExecutor::isBaseWithConstantOffset(), isExtractHiElt(), isExtractLoElt(), isFPExtFromF16OrConst(), isLaneMaskFromSameBlock(), isLshrHalf(), isShlHalf(), m_GSExtLoad(), m_GSExtLoad(), m_GZExtLoad(), m_GZExtLoad(), llvm::CombinerHelper::matchAndOrDisjointMask(), llvm::CombinerHelper::matchAshrShlToSextInreg(), llvm::CombinerHelper::matchBuildVectorIdentityFold(), llvm::CombinerHelper::matchCombineAnyExtTrunc(), llvm::CombinerHelper::matchCombineBuildVectorOfBitcast(), llvm::CombinerHelper::matchCombineFAddFMAFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineInsertVecElts(), llvm::CombinerHelper::matchCombineLoadWithAndMask(), llvm::CombinerHelper::matchCombineShlOfExtend(), llvm::CombinerHelper::matchCombineUnmergeZExtToZExt(), llvm::CombinerHelper::matchCombineZextTrunc(), llvm::CombinerHelper::matchCtls(), llvm::CombinerHelper::matchExtractVecEltBuildVec(), llvm::CombinerHelper::matchFoldAMinusC1MinusC2(), llvm::CombinerHelper::matchFoldAMinusC1PlusC2(), llvm::CombinerHelper::matchFoldAPlusC1MinusC2(), llvm::CombinerHelper::matchFoldBinOpIntoSelect(), llvm::CombinerHelper::matchFoldC1Minus2MinusC2(), llvm::CombinerHelper::matchFoldC2MinusAPlusC1(), matchLDPSTPAddrMode(), matchLoadAndBytePosition(), llvm::CombinerHelper::matchMulOfVScale(), llvm::CombinerHelper::matchNonNegZext(), llvm::CombinerHelper::matchNotCmp(), llvm::CombinerHelper::matchOrShiftToFunnelShift(), llvm::CombinerHelper::matchOverlappingAnd(), llvm::CombinerHelper::matchPtrAddImmedChain(), llvm::CombinerHelper::matchReassocConstantInnerLHS(), llvm::CombinerHelper::matchRedundantBinOpInEquality(), llvm::CombinerHelper::matchSelectIMinMax(), llvm::SPIRVCombinerHelper::matchSelectToFaceForward(), llvm::CombinerHelper::matchSextInRegOfLoad(), llvm::CombinerHelper::matchSextTruncSextLoad(), llvm::CombinerHelper::matchShlOfVScale(), llvm::CombinerHelper::matchSimplifyNegMinMax(), llvm::CombinerHelper::matchSimplifySelectToMinMax(), llvm::CombinerHelper::matchSubOfVScale(), llvm::CombinerHelper::matchTruncBuildVectorFold(), llvm::CombinerHelper::matchTruncLshrBuildVectorFold(), llvm::CombinerHelper::matchTruncSSatS(), llvm::CombinerHelper::matchTruncSSatU(), llvm::CombinerHelper::matchTruncUSatU(), llvm::CombinerHelper::matchUnmergeValuesAnyExtBuildVector(), llvm::CombinerHelper::matchUseVectorTruncate(), llvm::CombinerHelper::matchXorOfAndWithSameReg(), peekThroughBitcast(), selectWMMAModsNegAbs(), stripBitCast(), llvm::LegalizationArtifactCombiner::tryCombineAnyExt(), llvm::LegalizationArtifactCombiner::tryCombineSExt(), llvm::LegalizationArtifactCombiner::tryCombineTrunc(), llvm::LegalizationArtifactCombiner::tryCombineZExt(), AMDGPURegBankLegalizeCombiner::tryEliminateReadAnyLane(), AMDGPURegBankLegalizeCombiner::tryMatchMergeReadAnyLane(), and widenBitCountOps().

◆ m_Reg() [2/2]

bind_ty< Register > llvm::MIPatternMatch::m_Reg ( Register & R)
inline

Definition at line 465 of file MIPatternMatch.h.

◆ m_SpecificICst() [1/2]

SpecificConstantMatch llvm::MIPatternMatch::m_SpecificICst ( const APInt & RequestedValue)
inline

Matches a constant equal to RequestedValue.

Definition at line 227 of file MIPatternMatch.h.

Referenced by isExtractHiElt(), llvm::CombinerHelper::matchCtls(), and llvm::CombinerHelper::matchICmpToLHSKnownBits().

◆ m_SpecificICst() [2/2]

SpecificConstantMatch llvm::MIPatternMatch::m_SpecificICst ( int64_t RequestedValue)
inline

Definition at line 231 of file MIPatternMatch.h.

◆ m_SpecificICstOrSplat() [1/2]

◆ m_SpecificICstOrSplat() [2/2]

SpecificConstantOrSplatMatch llvm::MIPatternMatch::m_SpecificICstOrSplat ( int64_t RequestedValue)
inline

Definition at line 314 of file MIPatternMatch.h.

◆ m_SpecificICstSplat() [1/2]

SpecificConstantSplatMatch llvm::MIPatternMatch::m_SpecificICstSplat ( const APInt & RequestedValue)
inline

Matches a constant splat of RequestedValue.

Definition at line 281 of file MIPatternMatch.h.

◆ m_SpecificICstSplat() [2/2]

SpecificConstantSplatMatch llvm::MIPatternMatch::m_SpecificICstSplat ( int64_t RequestedValue)
inline

Definition at line 285 of file MIPatternMatch.h.

◆ m_SpecificImm()

SpecificImmMatch llvm::MIPatternMatch::m_SpecificImm ( int64_t RequestedValue)
inline

Matches an immediate operand equal to RequestedValue.

Definition at line 242 of file MIPatternMatch.h.

◆ m_SpecificReg()

SpecificRegisterMatch llvm::MIPatternMatch::m_SpecificReg ( Register RequestedReg)
inline

Matches a register only if it is equal to RequestedReg.

Definition at line 337 of file MIPatternMatch.h.

Referenced by getLegalRegBank(), and llvm::SPIRVCombinerHelper::matchSelectToFaceForward().

◆ m_SpecificType()

◆ m_Type()

bind_ty< LLT > llvm::MIPatternMatch::m_Type ( LLT & Ty)
inline

Definition at line 470 of file MIPatternMatch.h.

◆ m_ZeroInt()

SpecificConstantMatch llvm::MIPatternMatch::m_ZeroInt ( )
inline

Convenience matchers for specific integer values.

Definition at line 320 of file MIPatternMatch.h.

References llvm::APInt::getZero().

Referenced by llvm::AMDGPURegisterBankInfo::applyMappingMAD_64_32(), BitOp3_Op(), combineRecipe(), foldFDivPowDivisor(), foldGuardedFunnelShift(), foldICmpOfUAddOv(), foldICmpOfVectorReduce(), foldICmpPow2Test(), foldInsEltIntoSplat(), foldIsPowerOf2(), foldIsPowerOf2OrZero(), FoldOrOfSelectSmaxToAbs(), foldRoundUpToPow2Alignment(), foldSelectSplitCTLZCTTZ(), foldSubOfMinMax(), getAlternateBinop(), llvm::vputils::getGEPFlagsForPtr(), llvm::getSplatValue(), llvm::VPWidenIntOrFpInductionRecipe::isCanonical(), isKnownMonotonic(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), llvm::ARMTTIImpl::isProfitableToSinkOperands(), llvm::RISCVTTIImpl::isProfitableToSinkOperands(), llvm::WebAssemblyTTIImpl::isProfitableToSinkOperands(), llvm::X86TTIImpl::isProfitableToSinkOperands(), isVectorLatchCheck(), m_Neg(), matchAndCC(), llvm::SPIRVCombinerHelper::matchFDivToNormalize(), matchOrCC(), matchSelectPattern(), matchSignedNewValueCC(), matchUAddWithOverflowConstantEdgeCases(), processLaneForReplicateRegion(), reduceToAnyAllTrue(), simplifyAndOrOfICmpsWithCtpop(), simplifyLogicalRecipe(), simplifyRecipe(), simplifySelectInst(), simplifySVEIntrinsic(), simplifySVEIntrinsicBinOp(), simplifySVEIntrinsicCompare(), simplifyX86addcarry(), tryToMatchAndCreateMulAccumulateReduction(), llvm::InstCombinerImpl::visitAdd(), llvm::InstCombinerImpl::visitCallInst(), llvm::InstCombinerImpl::visitOr(), and llvm::InstCombinerImpl::visitSub().

◆ matchConstant() [1/3]

template<>
std::optional< APInt > llvm::MIPatternMatch::matchConstant ( Register Reg,
const MachineRegisterInfo & MRI )
inline

Definition at line 81 of file MIPatternMatch.h.

References llvm::getIConstantVRegVal(), MRI, and Reg.

◆ matchConstant() [2/3]

template<>
std::optional< int64_t > llvm::MIPatternMatch::matchConstant ( Register Reg,
const MachineRegisterInfo & MRI )
inline

Definition at line 87 of file MIPatternMatch.h.

References llvm::getIConstantVRegSExtVal(), MRI, and Reg.

◆ matchConstant() [3/3]

template<typename ConstT>
std::optional< ConstT > llvm::MIPatternMatch::matchConstant ( Register ,
const MachineRegisterInfo &  )
inline

◆ matchConstantSplat() [1/3]

template<>
std::optional< APInt > llvm::MIPatternMatch::matchConstantSplat ( Register Reg,
const MachineRegisterInfo & MRI )
inline

Definition at line 116 of file MIPatternMatch.h.

References llvm::getIConstantSplatVal(), MRI, and Reg.

◆ matchConstantSplat() [2/3]

template<>
std::optional< int64_t > llvm::MIPatternMatch::matchConstantSplat ( Register Reg,
const MachineRegisterInfo & MRI )
inline

Definition at line 123 of file MIPatternMatch.h.

References llvm::getIConstantSplatSExtVal(), MRI, and Reg.

◆ matchConstantSplat() [3/3]

template<typename ConstT>
std::optional< ConstT > llvm::MIPatternMatch::matchConstantSplat ( Register ,
const MachineRegisterInfo &  )
inline

◆ mi_match() [1/3]

template<typename Pattern>
bool llvm::MIPatternMatch::mi_match ( const MachineInstr & MI,
const MachineRegisterInfo & MRI,
Pattern && P )
nodiscard

Definition at line 42 of file MIPatternMatch.h.

References MI, MRI, and P.

◆ mi_match() [2/3]

template<typename Pattern>
bool llvm::MIPatternMatch::mi_match ( MachineInstr & MI,
const MachineRegisterInfo & MRI,
Pattern && P )
nodiscard

Definition at line 36 of file MIPatternMatch.h.

References MI, MRI, and P.

◆ mi_match() [3/3]

template<typename Reg, typename Pattern>
bool llvm::MIPatternMatch::mi_match ( Reg R,
const MachineRegisterInfo & MRI,
Pattern && P )
nodiscard

Definition at line 30 of file MIPatternMatch.h.

References MRI, P, and Reg.

Referenced by llvm::CombinerHelper::applyExtendThroughPhis(), llvm::AMDGPUCombinerHelper::applyFoldableFneg(), llvm::AMDGPURegisterBankInfo::applyMappingImpl(), llvm::AMDGPURegisterBankInfo::applyMappingMAD_64_32(), BitOp3_Op(), clampVectorIndex(), llvm::AArch64GISelUtils::extractPtrauthBlendDiscriminators(), getBaseWithConstantOffset(), llvm::AMDGPU::getBaseWithConstantOffset(), getLegalRegBank(), getOperandsForBranch(), llvm::GISelAddressing::getPointerInfo(), AMDGPURegBankLegalizeCombiner::getReadAnyLaneSrcs(), getSwitchCaseValue(), getTruncStoreByteOffset(), llvm::GISelAddressing::instMayAlias(), isAbsoluteValueULEOne(), llvm::GIMatchTableExecutor::isBaseWithConstantOffset(), llvm::SITargetLowering::isCanonicalized(), isConstantCostlierToNegate(), isExtractHiElt(), isExtractLoElt(), isFPExtFromF16OrConst(), isLaneMaskFromSameBlock(), isLshrHalf(), llvm::LegalizationArtifactCombiner::ArtifactValueFinder::isSequenceFromUnmerge(), isShlHalf(), llvm::LegalizerHelper::lowerExtractInsertVectorElt(), llvm::LegalizerHelper::lowerVECTOR_COMPRESS(), llvm::MIPatternMatch::AllOnesConstantMatch::match(), llvm::MIPatternMatch::BinaryOp_match< LHS_P, RHS_P, Opcode, Commutable, Flags >::match(), llvm::MIPatternMatch::BinaryOpc_match< LHS_P, RHS_P, Commutable >::match(), llvm::MIPatternMatch::ClassifyOp_match< LHS_P, Test_P, Opcode >::match(), llvm::MIPatternMatch::CompareOp_match< Pred_P, LHS_P, RHS_P, Opcode, Commutable >::match(), llvm::MIPatternMatch::GFrameIndexMatch::match(), llvm::MIPatternMatch::GInstrBind< Class >::match(), llvm::MIPatternMatch::GIntrinsic_match< IntrID, OpMatchers >::match(), llvm::MIPatternMatch::ImplicitDefMatch::match(), llvm::MIPatternMatch::LoadOp_match< Class, PtrP >::match(), llvm::MIPatternMatch::ShuffleVectorMatch< Src1Ty, Src2Ty >::match(), llvm::MIPatternMatch::SpecificConstantMatch::match(), llvm::MIPatternMatch::SpecificConstantOrSplatMatch::match(), llvm::MIPatternMatch::SrcImmOp_match< SrcTy, ImmTy, Opcode >::match(), llvm::MIPatternMatch::TernaryOp_match< Src0Ty, Src1Ty, Src2Ty, Opcode >::match(), llvm::MIPatternMatch::UnaryOp_match< SrcTy, Opcode >::match(), llvm::CombinerHelper::matchAddOfVScale(), llvm::CombinerHelper::matchAndOrDisjointMask(), llvm::CombinerHelper::matchAshrShlToSextInreg(), llvm::CombinerHelper::matchBuildVectorIdentityFold(), llvm::CombinerHelper::matchCombineAnyExtTrunc(), llvm::CombinerHelper::matchCombineBuildVectorOfBitcast(), llvm::CombinerHelper::matchCombineConcatVectors(), llvm::CombinerHelper::matchCombineFAddFMAFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFAddFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFAddFpExtFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFAddFpExtFMulToFMadOrFMAAggressive(), llvm::CombinerHelper::matchCombineFSubFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFSubFNegFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFSubFpExtFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFSubFpExtFNegFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineInsertVecElts(), llvm::CombinerHelper::matchCombineLoadWithAndMask(), llvm::CombinerHelper::matchCombineShlOfExtend(), llvm::CombinerHelper::matchCombineShuffleConcat(), llvm::CombinerHelper::matchCombineUnmergeConstant(), llvm::CombinerHelper::matchCombineUnmergeUndef(), llvm::CombinerHelper::matchCombineUnmergeZExtToZExt(), llvm::CombinerHelper::matchCombineZextTrunc(), llvm::CombinerHelper::matchCommuteConstantToRHS(), llvm::CombinerHelper::matchCommuteFPConstantToRHS(), llvm::CombinerHelper::matchConstantFPOp(), llvm::CombinerHelper::matchCtls(), llvm::SPIRVCombinerHelper::matchDegrees(), llvm::CombinerHelper::matchExtractVecEltBuildVec(), llvm::SPIRVCombinerHelper::matchFDivToNormalize(), llvm::CombinerHelper::matchFoldAMinusC1MinusC2(), llvm::CombinerHelper::matchFoldAMinusC1PlusC2(), llvm::CombinerHelper::matchFoldAPlusC1MinusC2(), llvm::CombinerHelper::matchFoldBinOpIntoSelect(), llvm::CombinerHelper::matchFoldC1Minus2MinusC2(), llvm::CombinerHelper::matchFoldC2MinusAPlusC1(), llvm::CombinerHelper::matchFreezeOfSingleMaybePoisonOperand(), llvm::CombinerHelper::matchICmpToLHSKnownBits(), matchLDPSTPAddrMode(), matchLoadAndBytePosition(), llvm::CombinerHelper::matchLshrOfTruncOfLshr(), llvm::CombinerHelper::matchMulOBy0(), llvm::CombinerHelper::matchMulOfVScale(), llvm::CombinerHelper::matchNonNegZext(), llvm::CombinerHelper::matchNotCmp(), llvm::CombinerHelper::matchOrShiftToFunnelShift(), llvm::CombinerHelper::matchOverlappingAnd(), llvm::CombinerHelper::matchPtrAddImmedChain(), llvm::CombinerHelper::matchPtrAddZeroVector(), llvm::CombinerHelper::matchReassocConstantInnerLHS(), llvm::CombinerHelper::matchReassocPtrAdd(), llvm::CombinerHelper::matchRedundantBinOpInEquality(), llvm::CombinerHelper::matchSameRegOrICstOrSplat(), llvm::CombinerHelper::matchSDivOrSRemByConst(), llvm::CombinerHelper::matchSelectIMinMax(), llvm::SPIRVCombinerHelper::matchSelectToFaceForward(), llvm::CombinerHelper::matchSextInRegOfLoad(), llvm::CombinerHelper::matchSextTruncSextLoad(), llvm::CombinerHelper::matchShiftImmedChain(), llvm::CombinerHelper::matchShiftOfShiftedLogic(), llvm::CombinerHelper::matchShlOfVScale(), llvm::CombinerHelper::matchSimplifyNegMinMax(), llvm::CombinerHelper::matchSimplifySelectToMinMax(), llvm::CombinerHelper::matchSubOfVScale(), llvm::CombinerHelper::matchTruncBuildVectorFold(), llvm::CombinerHelper::matchTruncLshrBuildVectorFold(), llvm::CombinerHelper::matchTruncSSatS(), llvm::CombinerHelper::matchTruncSSatU(), llvm::CombinerHelper::matchTruncUSatU(), llvm::CombinerHelper::matchUDivOrURemByConst(), llvm::CombinerHelper::matchUnmergeValuesAnyExtBuildVector(), llvm::CombinerHelper::matchUseVectorTruncate(), llvm::CombinerHelper::matchXorOfAndWithSameReg(), peekThroughBitcast(), selectWMMAModsNegAbs(), stripBitCast(), llvm::LegalizationArtifactCombiner::tryCombineAnyExt(), llvm::LegalizationArtifactCombiner::tryCombineSExt(), llvm::LegalizationArtifactCombiner::tryCombineTrunc(), llvm::LegalizationArtifactCombiner::tryCombineZExt(), AMDGPURegBankLegalizeCombiner::tryEliminateReadAnyLane(), AMDGPURegBankLegalizeCombiner::tryMatchMergeReadAnyLane(), llvm::CombinerHelper::tryReassocBinOp(), and widenBitCountOps().