m_APFloat | Match a ConstantFP or splatted ConstantVector, binding the specified pointer to the contained APFloat. |
m_APFloatAllowPoison | Match APFloat while allowing poison in splat vector constants. |
m_APFloatForbidPoison | Match APFloat while forbidding poison in splat vector constants. |
m_APInt | Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt. |
m_APIntAllowPoison | Match APInt while allowing poison in splat vector constants. |
m_APIntForbidPoison | Match APInt while forbidding poison in splat vector constants. |
m_AShr | Matches an ashr of L and R. |
m_AShrOrSelf | Matches ashr L, ConstShAmt or L itself (R will be set to zero in this case). |
m_Add | Matches an add of L and R. |
m_AddLike | Match either "add" or "or disjoint". |
m_AllOnes | Match an integer or vector with all bits set. For vectors, this includes constants with undefined elements. |
m_AllOnesForbidPoison | Match an all-ones integer or vector, forbidding poison elements. |
m_AllOnesOrPoison | Match an all-ones constant or poison. |
m_AllowContract | Match an FP operator that allows contraction and matches SubPattern. |
m_AllowReassoc | Match an FP operator that allows reassociation and matches SubPattern. |
m_AllowReciprocal | Match an FP operator that allows reciprocal and matches SubPattern. |
m_And | Matches an and of L and R. |
m_AnyIntegralConstant | Match an integer or vector with any integral constant. For vectors, this includes constants with undefined elements. |
m_AnyIntrinsic | m_AnyIntrinsic overloads |
m_AnyZeroFP | Match a floating-point negative zero or positive zero. For vectors, this includes constants with undefined elements. |
m_ApproxFunc | Match an FP operator that allows approximate functions and matches SubPattern. |
m_Argument | Match an argument. |
m_BSwap | Matches a call to the llvm.bswap intrinsic. |
m_BasicBlock | m_BasicBlock overloads |
m_BinOp | m_BinOp overloads |
m_BitCast | Matches BitCast. |
m_BitReverse | Matches a call to the llvm.bitreverse intrinsic. |
m_BitwiseLogic | Matches bitwise logic operations. |
m_Br | m_Br overloads |
m_CastOrSelf | Matches any cast or self. Used to ignore casts. |
m_CheckedFp | m_CheckedFp overloads |
m_CheckedInt | m_CheckedInt overloads |
m_Cmp | m_Cmp overloads |
m_Constant | m_Constant overloads |
m_ConstantExpr | m_ConstantExpr overloads |
m_ConstantFP | m_ConstantFP overloads |
m_ConstantInt | m_ConstantInt overloads |
m_ConstantSplat | Match a constant splat. TODO: Extend this to non-constant splats. |
m_ContainsMatchingVectorElement | Match a vector constant with an element matching SubPattern. |
m_CopySign | Matches a call to the llvm.copysign intrinsic. |
m_Ctlz | Matches a call to the llvm.ctlz intrinsic. |
m_Ctpop | Matches a call to the llvm.ctpop intrinsic. |
m_Cttz | Matches a call to the llvm.cttz intrinsic. |
m_Deferred | m_Deferred overloads |
m_Deinterleave2 | Matches a call to the llvm.vector.deinterleave2 intrinsic. |
m_DisjointOr | Matches a disjoint or of L and R. |
m_ElementWiseBitCast | Matches an element-wise BitCast. |
m_Exact | Matches SubPattern only when the operator is marked exact. |
m_ExtractElt | Matches ExtractElementInst. |
m_ExtractValue | m_ExtractValue overloads |
m_FAbs | Matches a call to the llvm.fabs intrinsic. |
m_FAdd | Matches an fadd of L and R. |
m_FCanonicalize | Matches a call to the llvm.canonicalize intrinsic. |
m_FCmp | m_FCmp overloads |
m_FDiv | Matches an fdiv of L and R. |
m_FMaxNum | Matches a call to the llvm.maxnum intrinsic. |
m_FMaxNum_or_FMaximumNum | Matches a call to llvm.maxnum or llvm.maximumnum. |
m_FMaximum | Matches a call to the llvm.maximum intrinsic. |
m_FMaximumNum | Matches a call to the llvm.maximumnum intrinsic. |
m_FMinNum | Matches a call to the llvm.minnum intrinsic. |
m_FMinNum_or_FMinimumNum | Matches a call to llvm.minnum or llvm.minimumnum. |
m_FMinimum | Matches a call to the llvm.minimum intrinsic. |
m_FMinimumNum | Matches a call to the llvm.minimumnum intrinsic. |
m_FMul | Matches an fmul of L and R. |
m_FNeg | Match 'fneg X' as 'fsub -0.0, X'. |
m_FNegNSZ | Match 'fneg X' as 'fsub +-0.0, X'. |
m_FPExt | Matches FPExt. |
m_FPOne | Match a float 1.0 or vector with all elements equal to 1.0. |
m_FPToI | Matches FPToUI or FPToSI. |
m_FPToSI | Matches FPToSI. |
m_FPToUI | Matches FPToUI. |
m_FPTrunc | Matches FPTrunc. |
m_FRem | Matches an frem of L and R. |
m_FShl | Matches a call to the llvm.fshl intrinsic. |
m_FShr | Matches a call to the llvm.fshr intrinsic. |
m_FSub | Matches an fsub of L and R. |
m_Finite | m_Finite overloads |
m_FiniteNonZero | m_FiniteNonZero overloads |
m_Freeze | Matches FreezeInst. |
m_GEP | Matches GetElementPtrInst. |
m_ICmp | m_ICmp overloads |
m_ICmpLike | Matches icmp or an equivalent trunc-nuw-to-i1 pattern. |
m_IDiv | Matches integer division operations. |
m_IRem | Matches integer remainder operations. |
m_IToFP | Matches UIToFP or SIToFP. |
m_ImmConstant | m_ImmConstant overloads |
m_Inf | Match a positive or negative infinity FP constant. For vectors, this includes constants with undefined elements. |
m_InsertElt | Matches InsertElementInst. |
m_InsertValue | Matches a single index InsertValue instruction. |
m_Instruction | m_Instruction overloads |
m_IntToPtr | Matches IntToPtr. |
m_Interleave2 | Matches a call to the llvm.vector.interleave2 intrinsic. |
m_Intrinsic | Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X)) |
m_LShr | Matches an lshr of L and R. |
m_LShrOrSelf | Matches lshr L, ConstShAmt or L itself (R will be set to zero in this case). |
m_Load | Matches LoadInst. |
m_LoadSimple | Matches a simple (non-volatile, non-atomic) LoadInst. |
m_LogicalAnd | m_LogicalAnd overloads |
m_LogicalOp | m_LogicalOp overloads |
m_LogicalOr | m_LogicalOr overloads |
m_LogicalShift | Matches logical shift operations. |
m_LowBitMask | m_LowBitMask overloads |
m_LowBitMaskOrZero | m_LowBitMaskOrZero overloads |
m_MaskedGather | Matches MaskedGather Intrinsic. |
m_MaskedLoad | Matches MaskedLoad Intrinsic. |
m_MaskedStore | Matches MaskedStore Intrinsic. |
m_MaxOrMin | Matches a call to llvm.smax, smin, umax, or umin. |
m_MaxSignedValue | m_MaxSignedValue overloads |
m_Mul | Matches a mul of L and R. |
m_NNegZExt | Matches a zext with the nneg flag. |
m_NSWAdd | Matches an add nsw of L and R. |
m_NSWAddLike | Match either "add nsw" or "or disjoint". |
m_NSWMul | Matches a mul nsw of L and R. |
m_NSWNeg | Matches a 'Neg' as 'sub nsw 0, V'. |
m_NSWShl | Matches a shl nsw of L and R. |
m_NSWSub | Matches a sub nsw of L and R. |
m_NSWTrunc | Matches trunc nsw. |
m_NUWAdd | Matches an add nuw of L and R. |
m_NUWAddLike | Match either "add nuw" or "or disjoint". |
m_NUWMul | Matches a mul nuw of L and R. |
m_NUWShl | Matches a shl nuw of L and R. |
m_NUWSub | Matches a sub nuw of L and R. |
m_NUWTrunc | Matches trunc nuw. |
m_NaN | Match an arbitrary NaN constant. This includes quiet and signalling nans. For vectors, this includes constants with undefined elements. |
m_Neg | Matches a 'Neg' as 'sub 0, V'. |
m_NegInf | Match a negative infinity FP constant. For vectors, this includes constants with undefined elements. |
m_NegZeroFP | Match a floating-point negative zero. For vectors, this includes constants with undefined elements. |
m_NegatedPower2 | m_NegatedPower2 overloads |
m_NegatedPower2OrZero | m_NegatedPower2OrZero overloads |
m_Negative | m_Negative overloads |
m_NoInfs | Match an FP operator with ninf and matches SubPattern. |
m_NoNaNs | Match an FP operator with nnan and matches SubPattern. |
m_NoSignedZeros | Match an FP operator with nsz and matches SubPattern. |
m_NonInf | Match a non-infinity FP constant, i.e. finite or NaN. For vectors, this includes constants with undefined elements. |
m_NonNaN | Match a non-NaN FP constant. For vectors, this includes constants with undefined elements. |
m_NonNegative | m_NonNegative overloads |
m_NonPositive | m_NonPositive overloads |
m_NonZeroFP | Match a floating-point non-zero. For vectors, this includes constants with undefined elements. |
m_NonZeroInt | Match a non-zero integer or a vector with all non-zero elements. For vectors, this includes constants with undefined elements. |
m_NonZeroNotDenormalFP | Match a floating-point non-zero that is not a denormal. For vectors, this includes constants with undefined elements. |
m_Not | Matches a 'Not' as 'xor V, -1' or 'xor -1, V'. NOTE: we first match the 'Not' (by matching '-1'), and only then match the inner matcher! |
m_NotForbidPoison | Matches a 'Not' as 'xor V, -1' without allowing poison in the all-ones. |
m_One | Match an integer 1 or a vector with all elements equal to 1. For vectors, this includes constants with undefined elements. |
m_OneUse | Match a value with exactly one use that also matches SubPattern. |
m_Or | Matches an or of L and R. |
m_OrdFMax | Match an ordered floating-point maximum. |
m_OrdFMin | Match an ordered floating-point minimum. |
m_OrdOrUnordFMax | Match an ordered or unordered floating-point maximum. |
m_OrdOrUnordFMin | Match an ordered or unordered floating-point minimum. |
m_Phi | Match a PHI node, capturing it if we match. |
m_Poison | Match an arbitrary poison constant. |
m_PosInf | Match a positive infinity FP constant. For vectors, this includes constants with undefined elements. |
m_PosZeroFP | Match a floating-point positive zero. For vectors, this includes constants with undefined elements. |
m_Power2 | m_Power2 overloads |
m_Power2OrZero | m_Power2OrZero overloads |
m_PtrAdd | Matches GEP with i8 source element type. |
m_PtrToAddr | Matches PtrToAddr. |
m_PtrToInt | Matches PtrToInt. |
m_PtrToIntOrAddr | Matches PtrToInt or PtrToAddr. |
m_PtrToIntSameSize | Matches ptrtoint when the integer and pointer have the same size. |
m_SDiv | Matches an sdiv of L and R. |
m_SExt | Matches SExt. |
m_SExtLike | Match either "sext" or "zext nneg". |
m_SExtOrSelf | Matches SExt or the value itself. |
m_SIToFP | Matches SIToFP. |
m_SMax | Matches a call to the llvm.smax intrinsic. |
m_SMin | Matches a call to the llvm.smin intrinsic. |
m_SRem | Matches an srem of L and R. |
m_Select | Matches SelectInst. |
m_SelectCst | Matches a select of two integer constants. |
m_SelectLike | Matches a boolean-controlled select or equivalent zext/sext. |
m_Shift | Matches shift operations. |
m_ShiftedMask | Match an integer or vector shifted-mask constant. |
m_Shl | Matches a shl of L and R. |
m_ShlOrSelf | Matches shl L, ConstShAmt or L itself (R will be set to zero in this case). |
m_Shr | Matches right-shift operations. |
m_Shuffle | m_Shuffle overloads |
m_SignMask | Match an integer or vector with only the sign bit(s) set. For vectors, this includes constants with undefined elements. |
m_Signum | Matches a signum pattern. |
m_Specific | Match if we have a specific specified value. |
m_SpecificBB | Match a specific basic block value. |
m_SpecificCmp | Matches any compare of L and R with predicate MatchPred. |
m_SpecificFCmp | Matches an fcmp of L and R with predicate MatchPred. |
m_SpecificFP | Match a specific floating point value or vector with all elements equal to the value. |
m_SpecificICmp | Matches an icmp of L and R with predicate MatchPred. |
m_SpecificInt | m_SpecificInt overloads |
m_SpecificIntAllowPoison | m_SpecificIntAllowPoison overloads |
m_SpecificInt_ICMP | Match an integer or vector with every element comparing 'pred' (eg/ne/...) to Threshold. For vectors, this includes constants with undefined elements. |
m_SpecificType | m_SpecificType overloads |
m_Sqrt | Matches a call to the llvm.sqrt intrinsic. |
m_Store | Matches StoreInst. |
m_StrictlyPositive | m_StrictlyPositive overloads |
m_Sub | Matches a sub of L and R. |
m_Trunc | Matches Trunc. |
m_TruncOrSelf | Matches Trunc or the value itself. |
m_UAddWithOverflow | Match an icmp instruction checking for unsigned overflow on addition. |
m_UDiv | Matches a udiv of L and R. |
m_UIToFP | Matches UIToFP. |
m_UMax | Matches a call to the llvm.umax intrinsic. |
m_UMin | Matches a call to the llvm.umin intrinsic. |
m_URem | Matches a urem of L and R. |
m_UnOp | m_UnOp overloads |
m_UnconditionalBr | Matches an unconditional branch. |
m_Undef | Match an arbitrary undef constant. |
m_UndefValue | m_UndefValue overloads |
m_UnordFMax | Match an unordered floating-point maximum. |
m_UnordFMin | Match an unordered floating-point minimum. |
m_VScale | Matches a call to llvm.vscale(). |
m_Value | m_Value overloads |
m_VecReverse | Matches a call to the llvm.vector.reverse intrinsic. |
m_VectorInsert | Matches a call to the llvm.vector.insert intrinsic. |
m_WithOverflowInst | m_WithOverflowInst overloads |
m_Xor | Matches an xor of L and R. |
m_ZExt | Matches ZExt. |
m_ZExtOrSExt | Matches ZExt or SExt. |
m_ZExtOrSExtOrSelf | Matches ZExt, SExt, or the value itself. |
m_ZExtOrSelf | Matches ZExt or the value itself. |
m_ZExtOrTruncOrSelf | Matches ZExt, Trunc, or the value itself. |
m_Zero | Match any null constant or a vector with all elements equal to 0. For vectors, this includes constants with undefined elements. |
m_ZeroInt | Match an integer 0 or a vector with all elements equal to 0. For vectors, this includes constants with undefined elements. |
m_ZeroOrPoison | Match a zero constant or poison. |
m_c_Add | Matches a Add with LHS and RHS in either order. |
m_c_And | Matches an And with LHS and RHS in either order. |
m_c_BinOp | m_c_BinOp overloads |
m_c_BitwiseLogic | Matches bitwise logic operations in either order. |
m_c_DisjointOr | Matches a disjoint or of L and R in either order. |
m_c_FAdd | Matches FAdd with LHS and RHS in either order. |
m_c_FMul | Matches FMul with LHS and RHS in either order. |
m_c_ICmp | m_c_ICmp overloads |
m_c_Intrinsic | Matches a binary intrinsic with operands in either order. |
m_c_LogicalAnd | Matches L && R with LHS and RHS in either order. |
m_c_LogicalOp | Matches either L && R or L || R with LHS and RHS in either order. |
m_c_LogicalOr | Matches L || R with LHS and RHS in either order. |
m_c_MaxOrMin | Matches smin/smax/umin/umax with operands in either order. |
m_c_Mul | Matches a Mul with LHS and RHS in either order. |
m_c_NSWAdd | Matches an add nsw of L and R in either order. |
m_c_NUWAdd | Matches an add nuw of L and R in either order. |
m_c_Or | Matches an Or with LHS and RHS in either order. |
m_c_SMax | Matches an SMax with LHS and RHS in either order. |
m_c_SMin | Matches an SMin with LHS and RHS in either order. |
m_c_Select | Match Select(C, LHS, RHS) or Select(C, RHS, LHS). |
m_c_SpecificICmp | Matches an icmp of L and R with MatchPred in either order. |
m_c_UMax | Matches a UMax with LHS and RHS in either order. |
m_c_UMin | Matches a UMin with LHS and RHS in either order. |
m_c_Xor | Matches an Xor with LHS and RHS in either order. |
m_c_XorLike | Match either (xor L, R), (xor R, L) or (sub nuw R, L) iff R.isMask(). |
match | match overloads |
match_fn | A match functor that can be used as a UnaryPredicate in functional algorithms like all_of. |