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, binding its pointer operand (like IR's m_Load), and optionally 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< APIntmatchConstant (Register Reg, const MachineRegisterInfo &MRI)
template<>
std::optional< int64_t > matchConstant (Register Reg, const MachineRegisterInfo &MRI)
ConstantMatch< APIntm_ICst (APInt &Cst)
ConstantMatch< int64_t > m_ICst (int64_t &Cst)
template<typename ConstT>
std::optional< ConstT > matchConstantSplat (Register, const MachineRegisterInfo &)
template<>
std::optional< APIntmatchConstantSplat (Register Reg, const MachineRegisterInfo &MRI)
template<>
std::optional< int64_t > matchConstantSplat (Register Reg, const MachineRegisterInfo &MRI)
ICstOrSplatMatch< APIntm_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< Registerm_Reg (Register &R)
bind_ty< MachineInstr * > m_MInstr (MachineInstr *&MI)
bind_ty< const MachineInstr * > m_MInstr (const MachineInstr *&MI)
bind_ty< LLTm_Type (LLT &Ty)
bind_ty< CmpInst::Predicatem_Pred (CmpInst::Predicate &P)
operand_type_match m_Pred ()
bind_ty< FPClassTestm_FPClassTest (FPClassTest &T)
MIFlagsRef m_MIFlags (uint32_t &Flags)
MMORef m_MMO (const MachineMemOperand *&MMO)
deferred_ty< Registerm_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< LLTm_DeferredType (LLT &Ty)
ImplicitDefMatch m_GImplicitDef ()
GInstrBind< GConstantm_GConstant (GConstant *&Inst)
 Match a literal G_CONSTANT instruction (no look-through of splats or copies).
GInstrBind< const GConstantm_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)
GInstrBind< GUnmergem_GUnmerge (GUnmerge *&Inst)
 Instruction binders for ops with no operand-form matcher (constant-immediate or variadic-source ops).
GInstrBind< GVScalem_GVScale (GVScale *&Inst)
GInstrBind< GBuildVectorm_GBuildVector (GBuildVector *&Inst)
GInstrBind< GConcatVectorsm_GConcatVectors (GConcatVectors *&Inst)
GInstrBind< GIntrinsicm_GIntrinsic (GIntrinsic *&Inst)
 Binds the defining instruction of Reg if it is a GIntrinsic (any of the four G_INTRINSIC* opcodes).
GInstrBind< const GIntrinsicm_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::Disjointm_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 271 of file MIPatternMatch.h.

Referenced by areInverseVectorBitmasks(), llvm::InstCombinerImpl::canonicalizeCondSignextOfHighBitExtractToSignextHighBitExtract(), canonicalizeLowbitMask(), canonicalizeSaturatedAddSigned(), canonicalizeSaturatedAddUnsigned(), canonicalizeSaturatedSubtractUnsigned(), 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(), simplifyGEPInst(), llvm::simplifyIntrinsic(), simplifyLogicalRecipe(), simplifyOrInst(), simplifyRecipe(), 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 333 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 812 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 1205 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 1190 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 819 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 1089 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 529 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 530 of file MIPatternMatch.h.

◆ m_FPClassTest()

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

Definition at line 483 of file MIPatternMatch.h.

References T.

◆ m_GAdd()

◆ m_GAddLike()

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

Definition at line 917 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 619 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 623 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 628 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 1068 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 1074 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 831 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 837 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 648 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 564 of file MIPatternMatch.h.

◆ m_GConstant() [2/2]

◆ m_GConstantOrFConstantBits()

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

Definition at line 586 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 911 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 1079 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 874 of file MIPatternMatch.h.

References LHS, and RHS.

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

◆ 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 1175 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 741 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 1100 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 1026 of file MIPatternMatch.h.

◆ m_GFrameIndex()

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

Definition at line 738 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 1094 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

◆ 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 1169 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 1253 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 655 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 692 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 654 of file MIPatternMatch.h.

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

◆ m_GIntToPtr()

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

◆ 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 1213 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 633 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 637 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 868 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 850 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

◆ 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 1055 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 1061 of file MIPatternMatch.h.

References Imm.

◆ 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 720 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 862 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 953 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 643 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_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 261 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 477 of file MIPatternMatch.h.

References MI.

◆ m_MInstr() [2/2]

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

Definition at line 476 of file MIPatternMatch.h.

References MI.

Referenced by llvm::CombinerHelper::applyExtendThroughPhis(), llvm::AMDGPU::getBaseWithConstantOffset(), 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::matchCommuteShift(), llvm::CombinerHelper::matchExtractVecEltBuildVec(), llvm::CombinerHelper::matchFoldBinOpIntoSelect(), llvm::CombinerHelper::matchFreezeOfSingleMaybePoisonOperand(), llvm::CombinerHelper::matchNotCmp(), llvm::CombinerHelper::matchPtrAddZero(), 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 1269 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::matchSimplifyAddToSub(), llvm::CombinerHelper::matchSimplifyNegMinMax(), NegateValue(), setLimitsForBinOp(), ShouldBreakUpSubtract(), llvm::X86TargetLowering::shouldFoldSelectWithIdentityConstant(), simplifyAndCommutative(), simplifyGEPInst(), simplifyICmpWithBinOp(), llvm::InstCombinerImpl::SimplifySelectsFeedingBinaryOp(), simplifySelectWithICmpCond(), 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 1277 of file MIPatternMatch.h.

References m_AllOnesInt(), and m_GXor().

Referenced by BitOp3_Op(), canonicalizeSaturatedAddUnsigned(), canShiftBinOpWithConstantRHS(), collectComplementaryPredicatedMemOps(), combineAndNotOrIntoAndNotAnd(), combineMaskBitOp(), combineShiftRightLogical(), computeKnownBitsFromCond(), llvm::computeKnownBitsFromContext(), computeKnownFPClassFromCond(), decompose(), llvm::decomposeBitTest(), 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::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(), matchDeMorgansLaws(), matchMinMaxOfMinMax(), matchSelectWithOptionalNotCond(), narrowBitOpRMW(), OptimizeAndOrXor(), performANDORDUPNOTCombine(), reverseZExtICmpCombine(), simplifyAddInst(), simplifyAndCommutative(), simplifyBlends(), simplifyBranchConditionForVFAndUF(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), 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(), combineAddSubWithShlAddSub(), combineAnd(), combineAndNotOrIntoAndNotAnd(), combineAndXorSubWithBMI(), combineBTToBitOpFlag(), combineCastedMaskArithmetic(), combineMaskBitOp(), combineNarrowableShiftedLoad(), combineOrAndToBitfieldInsert(), combineOrToBitfieldInsert(), combineOrWithGF2P8AFFINEQB(), 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(), foldAndOrOfICmpsWithPow2AndWithZero(), foldAnyOrAllBitsSet(), llvm::InstCombinerImpl::foldBinOpShiftWithShift(), foldBitCastBitwiseLogic(), foldBitCastSelect(), foldBitOrderCrossLogicOp(), foldBoxMultiply(), foldComplexAndOrPatterns(), foldCtpop(), foldCttzCtlz(), llvm::InstCombinerImpl::foldDivCeil(), 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(), foldSelectICmpAndAnd(), foldSelectSplitCTLZ(), foldSelectSplitCTTZ(), foldSetClearBits(), llvm::InstCombinerImpl::FoldShiftByConstant(), foldShiftIntoShiftInAnotherHandOfAndInICmp(), llvm::InstCombinerImpl::foldShuffledIntrinsicOperands(), foldSpliceBinOp(), foldSubOfMinMax(), llvm::InstCombinerImpl::foldVariableSignZeroExtensionOfVariableHighBitExtract(), foldVecExtTruncToExtElt(), llvm::InstCombinerImpl::foldVectorBinop(), foldVectorCmp(), getNegatibleInsts(), llvm::LoopVectorizationCostModel::getReductionPatternCost(), llvm::X86TTIImpl::getShuffleCost(), slpvectorizer::BoUpSLP::getTreeCost(), hoistMinMax(), hoistSubAddAssociation(), llvm::X86TTIImpl::instCombineIntrinsic(), instCombineSVELast(), instCombineSVEOrr(), instCombineSVEUMin(), llvm::RecurrenceDescriptor::isAnyOfPattern(), llvm::RecurrenceDescriptor::isConditionalRdxPattern(), isFMulAddCandidate(), llvm::AArch64TTIImpl::isProfitableToSinkOperands(), matchAddCC(), matchAndCC(), llvm::CombinerHelper::matchCtls(), matchDeMorgansLaws(), matchesSquareSum(), matchFPExtFromF16(), matchIntPart(), matchOrCC(), matchOrConcat(), llvm::CombinerHelper::matchSimplifyNegMinMax(), matchSubCC(), matchXorCC(), matchZExtedSubInteger(), moveAddAfterMinMax(), narrowUDivURem(), narrowVectorSelect(), optimizeSymmetricCall(), llvm::RISCVTargetLowering::PerformDAGCombine(), performMINMAXCombine(), performVEXT_VLCombine(), performVP_STORECombine(), reassociateForUses(), reassociateMinMaxWithConstantInOperand(), llvm::InstCombinerImpl::reassociateShiftAmtsOfTwoSameDirectionShifts(), reverseZExtICmpCombine(), ShouldBreakUpDistribution(), shouldCanonicalizeGEPToPtrAdd(), shrinkInsertElt(), shrinkSplatShuffle(), llvm::InstCombinerImpl::SimplifyAssociativeOrCommutative(), llvm::InstCombinerImpl::SimplifyDemandedUseBits(), llvm::InstCombinerImpl::SimplifyDemandedUseFPClass(), llvm::simplifyInstruction(), simplifyLogicalRecipe(), 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::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::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 481 of file MIPatternMatch.h.

References P.

◆ m_Reg() [1/2]

operand_type_match llvm::MIPatternMatch::m_Reg ( )
inline

Definition at line 363 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(), isFPExtFromF16OrConst(), isLaneMaskFromSameBlock(), isLshrHalf(), isShlHalf(), llvm::CombinerHelper::matchAddSubSameReg(), llvm::CombinerHelper::matchAndOrDisjointMask(), llvm::CombinerHelper::matchAshrShlToSextInreg(), llvm::CombinerHelper::matchBuildVectorIdentityFold(), llvm::CombinerHelper::matchCombineAddP2IToPtrAdd(), llvm::CombinerHelper::matchCombineAnyExtTrunc(), llvm::CombinerHelper::matchCombineBuildVectorOfBitcast(), llvm::CombinerHelper::matchCombineFAddFMAFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineI2PToP2I(), llvm::CombinerHelper::matchCombineInsertVecElts(), llvm::CombinerHelper::matchCombineLoadWithAndMask(), llvm::CombinerHelper::matchCombineShlOfExtend(), llvm::CombinerHelper::matchCombineUnmergeZExtToZExt(), llvm::CombinerHelper::matchCombineZextTrunc(), llvm::CombinerHelper::matchCommuteShift(), 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(), llvm::SPIRVCombinerHelper::matchLengthToDistance(), 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::matchRedundantNegOperands(), llvm::CombinerHelper::matchSelectIMinMax(), llvm::SPIRVCombinerHelper::matchSelectToFaceForward(), llvm::CombinerHelper::matchSextInRegOfLoad(), llvm::CombinerHelper::matchSextTruncSextLoad(), llvm::CombinerHelper::matchShlOfVScale(), llvm::CombinerHelper::matchSimplifyAddToSub(), llvm::CombinerHelper::matchSimplifyNegMinMax(), llvm::CombinerHelper::matchSimplifySelectToMinMax(), llvm::CombinerHelper::matchSubAddSameReg(), 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(), and AMDGPURegBankLegalizeCombiner::tryMatchMergeReadAnyLane().

◆ m_Reg() [2/2]

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

Definition at line 475 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 232 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 236 of file MIPatternMatch.h.

◆ m_SpecificICstOrSplat() [1/2]

◆ m_SpecificICstOrSplat() [2/2]

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

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

◆ m_SpecificICstSplat() [2/2]

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

Definition at line 290 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 247 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 347 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 480 of file MIPatternMatch.h.

◆ m_ZeroInt()

SpecificConstantMatch llvm::MIPatternMatch::m_ZeroInt ( )
inline

◆ 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(), 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(), 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(), 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(), 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, 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, 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 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(), getTruncStoreByteOffset(), llvm::GISelAddressing::instMayAlias(), isAbsoluteValueULEOne(), llvm::GIMatchTableExecutor::isBaseWithConstantOffset(), llvm::SITargetLowering::isCanonicalized(), isConstantCostlierToNegate(), isExtractHiElt(), 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::matchAddEToAddO(), llvm::CombinerHelper::matchAddOfVScale(), llvm::CombinerHelper::matchAddSubSameReg(), llvm::CombinerHelper::matchAndOrDisjointMask(), llvm::CombinerHelper::matchAshrShlToSextInreg(), llvm::CombinerHelper::matchBuildVectorIdentityFold(), llvm::CombinerHelper::matchCombineAddP2IToPtrAdd(), llvm::CombinerHelper::matchCombineAnyExtTrunc(), llvm::CombinerHelper::matchCombineBuildVectorOfBitcast(), llvm::CombinerHelper::matchCombineConcatVectors(), llvm::CombinerHelper::matchCombineConstPtrAddToI2P(), 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::matchCombineI2PToP2I(), 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::matchCommuteShift(), llvm::CombinerHelper::matchConstantFPOp(), llvm::CombinerHelper::matchCtls(), llvm::CombinerHelper::matchExtractVecEltBuildVec(), 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(), llvm::SPIRVCombinerHelper::matchLengthToDistance(), matchLoadAndBytePosition(), llvm::CombinerHelper::matchLshrOfTruncOfLshr(), llvm::CombinerHelper::matchMulOBy0(), llvm::CombinerHelper::matchMulOBy2(), llvm::CombinerHelper::matchMulOfVScale(), llvm::CombinerHelper::matchNonNegZext(), llvm::CombinerHelper::matchNotCmp(), llvm::CombinerHelper::matchOrShiftToFunnelShift(), llvm::CombinerHelper::matchOverlappingAnd(), llvm::CombinerHelper::matchPtrAddImmedChain(), llvm::CombinerHelper::matchPtrAddZero(), llvm::CombinerHelper::matchReassocConstantInnerLHS(), llvm::CombinerHelper::matchReassocPtrAdd(), llvm::CombinerHelper::matchRedundantBinOpInEquality(), llvm::CombinerHelper::matchRedundantNegOperands(), 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::matchSimplifyAddToSub(), llvm::CombinerHelper::matchSimplifyNegMinMax(), llvm::CombinerHelper::matchSimplifySelectToMinMax(), llvm::CombinerHelper::matchSubAddSameReg(), 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(), and llvm::CombinerHelper::tryReassocBinOp().