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  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 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 >

References Pred.

Referenced by m_PosZeroFP().

◆ m_all_of()

◆ m_AllOnes()

AllOnesConstantMatch llvm::MIPatternMatch::m_AllOnes ( )
inline

Definition at line 252 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 309 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 807 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 1200 of file MIPatternMatch.h.

References LHS, P, Pred, 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 1185 of file MIPatternMatch.h.

References LHS, P, Pred, 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 814 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 1084 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 505 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 506 of file MIPatternMatch.h.

◆ m_FPClassTest()

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

Definition at line 459 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 912 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 596 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 600 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 605 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 1063 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 1069 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 826 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 832 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 643 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 540 of file MIPatternMatch.h.

◆ m_GConstant() [2/2]

◆ m_GConstantOrFConstantBits()

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

Definition at line 562 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 906 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 1074 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 869 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 1170 of file MIPatternMatch.h.

References LHS, P, Pred, 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 736 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 1095 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 1021 of file MIPatternMatch.h.

◆ m_GFrameIndex()

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

Definition at line 733 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 1089 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 881 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 1164 of file MIPatternMatch.h.

References LHS, P, Pred, 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 1248 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 650 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 687 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 649 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 1015 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 1208 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 610 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 614 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 863 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 845 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 1009 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 1050 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 1056 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 619 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 627 of file MIPatternMatch.h.

References m_Reg().

◆ m_GShl()

◆ 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 715 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 857 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 948 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 638 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 623 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 631 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 93 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 135 of file MIPatternMatch.h.

◆ m_Imm()

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

Binds an immediate operand's value.

Definition at line 242 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 453 of file MIPatternMatch.h.

References MI.

◆ m_MInstr() [2/2]

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

Definition at line 452 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 1264 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 1272 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_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(), llvm::slpvectorizer::isFusableFMulOperand(), llvm::X86TTIImpl::isLegalAltInstr(), m_Tbl(), uitofp_tbl_match::match(), matchAddCC(), matchAndCC(), matchBSL(), llvm::CombinerHelper::matchCtls(), matchDeMorgansLaws(), matchesSquareSum(), matchFPExtFromF16(), matchIntPart(), matchLoadAndBytePosition(), matchOrCC(), matchOrConcat(), llvm::CombinerHelper::matchReassocConstantInnerLHS(), llvm::CombinerHelper::matchSimplifyNegMinMax(), llvm::CombinerHelper::matchSimplifySelectToMinMax(), 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(), strengthReduceVectorPhiUsers(), 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 457 of file MIPatternMatch.h.

References P.

◆ m_Reg() [1/2]

operand_type_match llvm::MIPatternMatch::m_Reg ( )
inline

Definition at line 339 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::matchUDivByShiftedPow2(), 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 451 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 213 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 217 of file MIPatternMatch.h.

◆ m_SpecificICstOrSplat() [1/2]

◆ m_SpecificICstOrSplat() [2/2]

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

Definition at line 300 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 267 of file MIPatternMatch.h.

◆ m_SpecificICstSplat() [2/2]

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

Definition at line 271 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 228 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 323 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 456 of file MIPatternMatch.h.

◆ m_ZeroInt()

SpecificConstantMatch llvm::MIPatternMatch::m_ZeroInt ( )
inline

Convenience matchers for specific integer values.

Definition at line 306 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 67 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 73 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 102 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 109 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::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::matchUDivByShiftedPow2(), 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().