LLVM API Documentation
Classes | |
struct | OneUse_match |
struct | class_match |
struct | match_combine_or |
Matching combinators. More... | |
struct | match_combine_and |
struct | match_zero |
struct | match_neg_zero |
struct | apint_match |
struct | constantint_match |
struct | cst_pred_ty |
struct | api_pred_ty |
struct | is_one |
struct | is_all_ones |
struct | is_sign_bit |
struct | is_power2 |
struct | bind_ty |
struct | specificval_ty |
specificval_ty - Match a specified Value*. More... | |
struct | specific_fpval |
struct | bind_const_intval_ty |
struct | BinaryOp_match |
struct | BinOp2_match |
struct | Exact_match |
struct | CmpClass_match |
struct | SelectClass_match |
struct | CastClass_match |
struct | not_match |
struct | neg_match |
struct | fneg_match |
struct | br_match |
struct | brc_match |
struct | MaxMin_match |
struct | smax_pred_ty |
smax_pred_ty - Helper class for identifying signed max predicates. More... | |
struct | smin_pred_ty |
smin_pred_ty - Helper class for identifying signed min predicates. More... | |
struct | umax_pred_ty |
umax_pred_ty - Helper class for identifying unsigned max predicates. More... | |
struct | umin_pred_ty |
umin_pred_ty - Helper class for identifying unsigned min predicates. More... | |
struct | ofmax_pred_ty |
ofmax_pred_ty - Helper class for identifying ordered max predicates. More... | |
struct | ofmin_pred_ty |
ofmin_pred_ty - Helper class for identifying ordered min predicates. More... | |
struct | ufmax_pred_ty |
ufmax_pred_ty - Helper class for identifying unordered max predicates. More... | |
struct | ufmin_pred_ty |
ufmin_pred_ty - Helper class for identifying unordered min predicates. More... | |
struct | Argument_match |
struct | IntrinsicID_match |
Intrinsic matchers. More... | |
struct | m_Intrinsic_Ty |
struct | m_Intrinsic_Ty< T0 > |
struct | m_Intrinsic_Ty< T0, T1 > |
struct | m_Intrinsic_Ty< T0, T1, T2 > |
struct | m_Intrinsic_Ty< T0, T1, T2, T3 > |
Functions | |
template<typename Val , typename Pattern > | |
bool | match (Val *V, const Pattern &P) |
template<typename T > | |
OneUse_match< T > | m_OneUse (const T &SubPattern) |
class_match< Value > | m_Value () |
m_Value() - Match an arbitrary value and ignore it. More... | |
class_match< ConstantInt > | m_ConstantInt () |
m_ConstantInt() - Match an arbitrary ConstantInt and ignore it. More... | |
class_match< UndefValue > | m_Undef () |
m_Undef() - Match an arbitrary undef constant. More... | |
class_match< Constant > | m_Constant () |
template<typename LTy , typename RTy > | |
match_combine_or< LTy, RTy > | m_CombineOr (const LTy &L, const RTy &R) |
Combine two pattern matchers matching L || R. More... | |
template<typename LTy , typename RTy > | |
match_combine_and< LTy, RTy > | m_CombineAnd (const LTy &L, const RTy &R) |
Combine two pattern matchers matching L && R. More... | |
match_zero | m_Zero () |
match_neg_zero | m_NegZero () |
match_combine_or< match_zero, match_neg_zero > | m_AnyZero () |
apint_match | m_APInt (const APInt *&Res) |
cst_pred_ty< is_one > | m_One () |
m_One() - Match an integer 1 or a vector with all elements equal to 1. More... | |
api_pred_ty< is_one > | m_One (const APInt *&V) |
cst_pred_ty< is_all_ones > | m_AllOnes () |
m_AllOnes() - Match an integer or vector with all bits set to true. More... | |
api_pred_ty< is_all_ones > | m_AllOnes (const APInt *&V) |
cst_pred_ty< is_sign_bit > | m_SignBit () |
m_SignBit() - Match an integer or vector with only the sign bit(s) set. More... | |
api_pred_ty< is_sign_bit > | m_SignBit (const APInt *&V) |
cst_pred_ty< is_power2 > | m_Power2 () |
m_Power2() - Match an integer or vector power of 2. More... | |
api_pred_ty< is_power2 > | m_Power2 (const APInt *&V) |
bind_ty< Value > | m_Value (Value *&V) |
m_Value - Match a value, capturing it if we match. More... | |
bind_ty< ConstantInt > | m_ConstantInt (ConstantInt *&CI) |
m_ConstantInt - Match a ConstantInt, capturing the value if we match. More... | |
bind_ty< Constant > | m_Constant (Constant *&C) |
m_Constant - Match a Constant, capturing the value if we match. More... | |
bind_ty< ConstantFP > | m_ConstantFP (ConstantFP *&C) |
m_ConstantFP - Match a ConstantFP, capturing the value if we match. More... | |
specificval_ty | m_Specific (const Value *V) |
m_Specific - Match if we have a specific specified value. More... | |
specific_fpval | m_SpecificFP (double V) |
specific_fpval | m_FPOne () |
Match a float 1.0 or vector with all elements equal to 1.0. More... | |
bind_const_intval_ty | m_ConstantInt (uint64_t &V) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Add > | m_Add (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FAdd > | m_FAdd (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Sub > | m_Sub (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FSub > | m_FSub (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Mul > | m_Mul (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FMul > | m_FMul (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::UDiv > | m_UDiv (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::SDiv > | m_SDiv (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FDiv > | m_FDiv (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::URem > | m_URem (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::SRem > | m_SRem (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::FRem > | m_FRem (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::And > | m_And (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Or > | m_Or (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Xor > | m_Xor (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::Shl > | m_Shl (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::LShr > | m_LShr (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinaryOp_match< LHS, RHS, Instruction::AShr > | m_AShr (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
BinOp2_match< LHS, RHS, Instruction::LShr, Instruction::AShr > | m_Shr (const LHS &L, const RHS &R) |
m_Shr - Matches LShr or AShr. More... | |
template<typename LHS , typename RHS > | |
BinOp2_match< LHS, RHS, Instruction::LShr, Instruction::Shl > | m_LogicalShift (const LHS &L, const RHS &R) |
m_LogicalShift - Matches LShr or Shl. More... | |
template<typename LHS , typename RHS > | |
BinOp2_match< LHS, RHS, Instruction::SDiv, Instruction::UDiv > | m_IDiv (const LHS &L, const RHS &R) |
m_IDiv - Matches UDiv and SDiv. More... | |
template<typename T > | |
Exact_match< T > | m_Exact (const T &SubPattern) |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, ICmpInst, ICmpInst::Predicate > | m_ICmp (ICmpInst::Predicate &Pred, const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
CmpClass_match< LHS, RHS, FCmpInst, FCmpInst::Predicate > | m_FCmp (FCmpInst::Predicate &Pred, const LHS &L, const RHS &R) |
template<typename Cond , typename LHS , typename RHS > | |
SelectClass_match< Cond, LHS, RHS > | m_Select (const Cond &C, const LHS &L, const RHS &R) |
template<int64_t L, int64_t R, typename Cond > | |
SelectClass_match< Cond, constantint_match< L > , constantint_match< R > > | m_SelectCst (const Cond &C) |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::BitCast > | m_BitCast (const OpTy &Op) |
m_BitCast More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::PtrToInt > | m_PtrToInt (const OpTy &Op) |
m_PtrToInt More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::Trunc > | m_Trunc (const OpTy &Op) |
m_Trunc More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::SExt > | m_SExt (const OpTy &Op) |
m_SExt More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::ZExt > | m_ZExt (const OpTy &Op) |
m_ZExt More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::UIToFP > | m_UIToFP (const OpTy &Op) |
m_UIToFP More... | |
template<typename OpTy > | |
CastClass_match< OpTy, Instruction::SIToFP > | m_SIToFP (const OpTy &Op) |
m_SIToFP More... | |
template<typename LHS > | |
not_match< LHS > | m_Not (const LHS &L) |
template<typename LHS > | |
neg_match< LHS > | m_Neg (const LHS &L) |
m_Neg - Match an integer negate. More... | |
template<typename LHS > | |
fneg_match< LHS > | m_FNeg (const LHS &L) |
m_FNeg - Match a floating point negate. More... | |
br_match | m_UnconditionalBr (BasicBlock *&Succ) |
template<typename Cond_t > | |
brc_match< Cond_t > | m_Br (const Cond_t &C, BasicBlock *&T, BasicBlock *&F) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, smax_pred_ty > | m_SMax (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, smin_pred_ty > | m_SMin (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umax_pred_ty > | m_UMax (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< ICmpInst, LHS, RHS, umin_pred_ty > | m_UMin (const LHS &L, const RHS &R) |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ofmax_pred_ty > | m_OrdFMax (const LHS &L, const RHS &R) |
Match an 'ordered' floating point maximum function. Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'maximum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ogt/ge, L, R), L, R) semantics matched by this predicate. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ofmin_pred_ty > | m_OrdFMin (const LHS &L, const RHS &R) |
Match an 'ordered' floating point minimum function. Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'minimum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(olt/le, L, R), L, R) semantics matched by this predicate. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ufmax_pred_ty > | m_UnordFMax (const LHS &L, const RHS &R) |
Match an 'unordered' floating point maximum function. Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'maximum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ugt/ge, L, R), L, R) semantics matched by this predicate. More... | |
template<typename LHS , typename RHS > | |
MaxMin_match< FCmpInst, LHS, RHS, ufmin_pred_ty > | m_UnordFMin (const LHS &L, const RHS &R) |
Match an 'unordered' floating point minimum function. Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'minimum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ult/le, L, R), L, R) semantics matched by this predicate. More... | |
template<unsigned OpI, typename Opnd_t > | |
Argument_match< Opnd_t > | m_Argument (const Opnd_t &Op) |
Match an argument. More... | |
template<Intrinsic::ID IntrID> | |
IntrinsicID_match | m_Intrinsic () |
template<Intrinsic::ID IntrID, typename T0 > | |
m_Intrinsic_Ty< T0 >::Ty | m_Intrinsic (const T0 &Op0) |
template<Intrinsic::ID IntrID, typename T0 , typename T1 > | |
m_Intrinsic_Ty< T0, T1 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1) |
template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 > | |
m_Intrinsic_Ty< T0, T1, T2 >::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2) |
template<Intrinsic::ID IntrID, typename T0 , typename T1 , typename T2 , typename T3 > | |
m_Intrinsic_Ty< T0, T1, T2, T3 > ::Ty | m_Intrinsic (const T0 &Op0, const T1 &Op1, const T2 &Op2, const T3 &Op3) |
template<typename Opnd0 > | |
m_Intrinsic_Ty< Opnd0 >::Ty | m_BSwap (const Opnd0 &Op0) |
|
inline |
Definition at line 395 of file PatternMatch.h.
Referenced by FindScalarElement(), llvm::InstCombiner::FoldOrOfICmps(), GatherConstantCompares(), getEdgeValueLocal(), llvm::isKnownNonZero(), llvm::isKnownToBeAPowerOfTwo(), SimplifySubInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), and llvm::InstCombiner::visitSub().
|
inline |
m_AllOnes() - Match an integer or vector with all bits set to true.
Definition at line 265 of file PatternMatch.h.
Referenced by SimplifyAndInst(), SimplifyAShrInst(), SimplifyOrInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitMul(), and llvm::InstCombiner::visitSub().
|
inline |
Definition at line 266 of file PatternMatch.h.
|
inline |
Definition at line 467 of file PatternMatch.h.
Referenced by llvm::InstCombiner::FoldAndOfICmps(), foldLogOpOfMaskedICmpsHelper(), llvm::InstCombiner::FoldOrWithConstants(), foldSelectICmpAnd(), foldSelectICmpAndOr(), llvm::InstCombiner::FoldShiftByConstant(), GatherConstantCompares(), llvm::isKnownToBeAPowerOfTwo(), SimplifyICmpInst(), SimplifyOrInst(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), and llvm::InstCombiner::visitXor().
|
inline |
m_AnyZero() - Match an arbitrary zero/null constant. This includes zero_initializer for vectors and ConstantPointerNull for pointers. For floating point constants, this will match negative zero and positive zero
Definition at line 157 of file PatternMatch.h.
References m_CombineOr(), m_NegZero(), and m_Zero().
Referenced by SimplifyFAddInst(), SimplifyFMulInst(), SimplifyFSubInst(), and llvm::InstCombiner::visitFAdd().
|
inline |
m_APInt - Match a ConstantInt or splatted ConstantVector, binding the specified pointer to the contained APInt.
Definition at line 183 of file PatternMatch.h.
Referenced by llvm::ComputeNumSignBits(), getLogBase2Vector(), and llvm::InstCombiner::visitMul().
|
inline |
Match an argument.
Definition at line 1037 of file PatternMatch.h.
|
inline |
Definition at line 497 of file PatternMatch.h.
Referenced by SimplifyICmpInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitSExt(), and llvm::InstCombiner::visitSub().
|
inline |
|
inline |
Definition at line 837 of file PatternMatch.h.
References llvm::CallingConv::C, F(), and T.
Referenced by tryToMoveFreeBeforeNullTest(), and llvm::InstCombiner::visitBranchInst().
|
inline |
Definition at line 1114 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitCallInst().
|
inline |
Combine two pattern matchers matching L && R.
Definition at line 122 of file PatternMatch.h.
Referenced by m_Intrinsic().
|
inline |
Combine two pattern matchers matching L || R.
Definition at line 116 of file PatternMatch.h.
Referenced by m_AnyZero().
|
inline |
Definition at line 78 of file PatternMatch.h.
Referenced by FindScalarElement(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitShl(), and llvm::InstCombiner::visitSub().
m_Constant - Match a Constant, capturing the value if we match.
Definition at line 306 of file PatternMatch.h.
References llvm::CallingConv::C.
|
inline |
m_ConstantFP - Match a ConstantFP, capturing the value if we match.
Definition at line 309 of file PatternMatch.h.
References llvm::CallingConv::C.
Referenced by llvm::InstCombiner::visitFDiv().
|
inline |
m_ConstantInt() - Match an arbitrary ConstantInt and ignore it.
m_ConstantInt<int64_t> - Match a ConstantInt with a specific value.
Definition at line 72 of file PatternMatch.h.
Referenced by CanEvaluateShifted(), llvm::InstCombiner::FoldAndOfICmps(), llvm::InstCombiner::FoldOrOfICmps(), llvm::InstCombiner::FoldOrWithConstants(), foldSelectICmpAnd(), llvm::InstCombiner::FoldShiftByConstant(), GatherConstantCompares(), getEdgeValueLocal(), OptimizeIntToFloatBitCast(), SimplifyICmpInst(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), and llvm::InstCombiner::visitUDiv().
|
inline |
m_ConstantInt - Match a ConstantInt, capturing the value if we match.
Definition at line 303 of file PatternMatch.h.
|
inline |
m_ConstantInt - Match a ConstantInt and bind to its value. This does not match ConstantInts wider than 64-bits.
Definition at line 367 of file PatternMatch.h.
|
inline |
Definition at line 564 of file PatternMatch.h.
Referenced by llvm::isKnownNonZero(), llvm::isKnownToBeAPowerOfTwo(), SimplifyMulInst(), and SimplifyShlInst().
|
inline |
Definition at line 401 of file PatternMatch.h.
|
inline |
Definition at line 599 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitBranchInst().
|
inline |
Definition at line 443 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitFDiv().
|
inline |
Definition at line 425 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitFDiv(), and llvm::InstCombiner::visitFMul().
|
inline |
m_FNeg - Match a floating point negate.
Definition at line 790 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitFCmpInst().
|
inline |
Match a float 1.0 or vector with all elements equal to 1.0.
Definition at line 348 of file PatternMatch.h.
References m_SpecificFP().
Referenced by SimplifyFMulInst(), and llvm::InstCombiner::visitFMul().
|
inline |
Definition at line 461 of file PatternMatch.h.
|
inline |
Definition at line 413 of file PatternMatch.h.
Referenced by SimplifyFAddInst(), SimplifyFSubInst(), and llvm::InstCombiner::visitFMul().
|
inline |
Definition at line 592 of file PatternMatch.h.
Referenced by tryToMoveFreeBeforeNullTest(), and llvm::InstCombiner::visitBranchInst().
|
inline |
m_IDiv - Matches UDiv and SDiv.
Definition at line 542 of file PatternMatch.h.
Referenced by llvm::isKnownNonZero(), and SimplifyMulInst().
|
inline |
Match intrinsic calls like this: m_Intrinsic<Intrinsic::fabs>(m_Value(X))
Definition at line 1085 of file PatternMatch.h.
|
inline |
Definition at line 1089 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 1095 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 1101 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
Definition at line 1107 of file PatternMatch.h.
References m_CombineAnd().
|
inline |
m_LogicalShift - Matches LShr or Shl.
Definition at line 535 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitOr().
|
inline |
Definition at line 491 of file PatternMatch.h.
Referenced by CanEvaluateShifted(), llvm::isKnownToBeAPowerOfTwo(), OptimizeIntToFloatBitCast(), SimplifyICmpInst(), simplifyValueKnownNonZero(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), and llvm::InstCombiner::visitUDiv().
|
inline |
Definition at line 419 of file PatternMatch.h.
Referenced by llvm::isKnownNonZero(), SimplifyDiv(), SimplifySubInst(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitMul(), and llvm::InstCombiner::visitSub().
|
inline |
m_Neg - Match an integer negate.
Definition at line 764 of file PatternMatch.h.
Referenced by llvm::isKnownToBeAPowerOfTwo(), SimplifyAndInst(), llvm::InstCombiner::visitGetElementPtrInst(), and llvm::InstCombiner::visitSub().
|
inline |
m_NegZero() - Match an arbitrary zero/null constant. This includes zero_initializer for vectors and ConstantPointerNull for pointers. For floating point constants, this will match negative zero but not positive zero
Definition at line 152 of file PatternMatch.h.
Referenced by m_AnyZero(), SimplifyFAddInst(), and SimplifyFSubInst().
|
inline |
Definition at line 738 of file PatternMatch.h.
Referenced by MatchSelectFromAndOr(), SimplifyAddInst(), SimplifyAndInst(), SimplifyOrInst(), SimplifyXorInst(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitBranchInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSelectInst(), llvm::InstCombiner::visitSub(), and llvm::InstCombiner::visitZExt().
|
inline |
m_One() - Match an integer 1 or a vector with all elements equal to 1.
Definition at line 257 of file PatternMatch.h.
Referenced by llvm::isKnownToBeAPowerOfTwo(), SimplifyDiv(), SimplifyICmpInst(), SimplifyMulInst(), SimplifyRem(), SimplifySubInst(), ThreadCmpOverSelect(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitICmpInstWithInstAndIntCst(), llvm::InstCombiner::visitMul(), and llvm::InstCombiner::visitURem().
|
inline |
Definition at line 258 of file PatternMatch.h.
|
inline |
Definition at line 60 of file PatternMatch.h.
Referenced by llvm::InstCombiner::FoldShiftByConstant(), simplifyValueKnownNonZero(), llvm::InstCombiner::visitICmpInst(), and llvm::InstCombiner::visitShl().
|
inline |
Definition at line 473 of file PatternMatch.h.
Referenced by foldSelectICmpAndOr(), llvm::isKnownNonZero(), SimplifyAndInst(), SimplifyICmpInst(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitICmpInstWithInstAndIntCst(), llvm::InstCombiner::visitOr(), and llvm::InstCombiner::visitXor().
|
inline |
Match an 'ordered' floating point maximum function. Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'maximum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ogt/ge, L, R), L, R) semantics matched by this predicate.
max(L, R) iff L and R are not NaN m_OrdFMax(L, R) = R iff L or R are NaN
Definition at line 973 of file PatternMatch.h.
|
inline |
Match an 'ordered' floating point minimum function. Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'minimum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(olt/le, L, R), L, R) semantics matched by this predicate.
max(L, R) iff L and R are not NaN m_OrdFMin(L, R) = R iff L or R are NaN
Definition at line 988 of file PatternMatch.h.
|
inline |
m_Power2() - Match an integer or vector power of 2.
Definition at line 281 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonShiftTransforms(), foldSelectICmpAndOr(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitSDiv(), and visitUDivOperand().
|
inline |
Definition at line 282 of file PatternMatch.h.
|
inline |
m_PtrToInt
Definition at line 671 of file PatternMatch.h.
Referenced by SimplifySubInst(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitICmpInstWithInstAndIntCst(), and llvm::InstCombiner::visitSub().
|
inline |
Definition at line 437 of file PatternMatch.h.
Referenced by SimplifyICmpInst(), and llvm::InstCombiner::visitSub().
|
inline |
Definition at line 630 of file PatternMatch.h.
References llvm::CallingConv::C.
Referenced by m_SelectCst(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitICmpInst(), and llvm::InstCombiner::visitOr().
|
inline |
m_SelectCst - This matches a select of two constants, e.g.: m_SelectCst<-1, 0>(m_Value(V))
Definition at line 638 of file PatternMatch.h.
References m_Select().
|
inline |
m_SExt
Definition at line 685 of file PatternMatch.h.
Referenced by MatchSelectFromAndOr(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSelectInstWithICmp(), and llvm::InstCombiner::visitSub().
|
inline |
Definition at line 485 of file PatternMatch.h.
Referenced by CanEvaluateShifted(), llvm::isKnownNonZero(), llvm::isKnownToBeAPowerOfTwo(), SimplifyAShrInst(), SimplifyLShrInst(), SimplifySubInst(), simplifyValueKnownNonZero(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitICmpInstWithInstAndIntCst(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), and visitUDivOperand().
|
inline |
m_Shr - Matches LShr or AShr.
Definition at line 528 of file PatternMatch.h.
Referenced by llvm::InstCombiner::FoldShiftByConstant(), llvm::isKnownNonZero(), llvm::isKnownToBeAPowerOfTwo(), and SimplifyShlInst().
|
inline |
m_SignBit() - Match an integer or vector with only the sign bit(s) set.
Definition at line 273 of file PatternMatch.h.
Referenced by llvm::isKnownToBeAPowerOfTwo().
|
inline |
Definition at line 274 of file PatternMatch.h.
|
inline |
m_SIToFP
Definition at line 706 of file PatternMatch.h.
|
inline |
Definition at line 940 of file PatternMatch.h.
Referenced by SimplifyICmpInst().
|
inline |
Definition at line 946 of file PatternMatch.h.
Referenced by SimplifyICmpInst().
|
inline |
m_Specific - Match if we have a specific specified value.
Definition at line 323 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonIDivTransforms(), llvm::InstCombiner::FoldAndOfICmps(), llvm::InstCombiner::FoldOrOfICmps(), foldSelectICmpAndOr(), llvm::InstCombiner::FoldShiftByConstant(), getEdgeValueLocal(), llvm::isKnownToBeAPowerOfTwo(), MatchSelectFromAndOr(), SimplifyAddInst(), SimplifyAndInst(), SimplifyAShrInst(), SimplifyDiv(), SimplifyFAddInst(), SimplifyICmpInst(), SimplifyLShrInst(), SimplifyMulInst(), SimplifyOrInst(), SimplifyShlInst(), SimplifySubInst(), SimplifyXorInst(), tryToMoveFreeBeforeNullTest(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSelectInst(), llvm::InstCombiner::visitSelectInstWithICmp(), and llvm::InstCombiner::visitSub().
|
inline |
Match a specific floating point value or vector with all elements equal to the value.
Definition at line 345 of file PatternMatch.h.
Referenced by m_FPOne().
|
inline |
Definition at line 455 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonIDivTransforms(), llvm::InstCombiner::commonShiftTransforms(), SimplifyDiv(), and SimplifyICmpInst().
|
inline |
Definition at line 407 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonIDivTransforms(), SimplifyAddInst(), SimplifySubInst(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitMul(), and llvm::InstCombiner::visitSub().
|
inline |
m_Trunc
Definition at line 678 of file PatternMatch.h.
Referenced by llvm::InstCombiner::FoldAndOfICmps(), OptimizeIntToFloatBitCast(), SimplifySubInst(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitSExt(), and llvm::InstCombiner::visitSub().
|
inline |
Definition at line 431 of file PatternMatch.h.
Referenced by llvm::isKnownToBeAPowerOfTwo(), and SimplifyICmpInst().
|
inline |
m_UIToFP
Definition at line 699 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitFMul().
|
inline |
Definition at line 952 of file PatternMatch.h.
Referenced by SimplifyICmpInst().
|
inline |
Definition at line 958 of file PatternMatch.h.
Referenced by SimplifyICmpInst().
|
inline |
Definition at line 814 of file PatternMatch.h.
Referenced by tryToMoveFreeBeforeNullTest().
|
inline |
m_Undef() - Match an arbitrary undef constant.
Definition at line 76 of file PatternMatch.h.
Referenced by SimplifyAddInst(), SimplifyAndInst(), SimplifyAShrInst(), SimplifyDiv(), SimplifyFDivInst(), SimplifyFRemInst(), SimplifyInsertValueInst(), SimplifyLShrInst(), SimplifyMulInst(), SimplifyOrInst(), SimplifyRem(), SimplifyShift(), SimplifyShlInst(), SimplifySubInst(), and SimplifyXorInst().
|
inline |
Match an 'unordered' floating point maximum function. Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'maximum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ugt/ge, L, R), L, R) semantics matched by this predicate.
max(L, R) iff L and R are not NaN m_UnordFMin(L, R) = L iff L or R are NaN
Definition at line 1003 of file PatternMatch.h.
|
inline |
Match an 'unordered' floating point minimum function. Floating point has one special value 'NaN'. Therefore, there is no total order. However, if we can ignore the 'NaN' value (for example, because of a 'no-nans-float-math' flag) a combination of a fcmp and select has 'minimum' semantics. In the presence of 'NaN' we have to preserve the original select(fcmp(ult/le, L, R), L, R) semantics matched by this predicate.
max(L, R) iff L and R are not NaN m_UnordFMin(L, R) = L iff L or R are NaN
Definition at line 1018 of file PatternMatch.h.
|
inline |
Definition at line 449 of file PatternMatch.h.
Referenced by llvm::InstCombiner::commonIDivTransforms(), SimplifyDiv(), and SimplifyICmpInst().
|
inline |
m_Value() - Match an arbitrary value and ignore it.
Definition at line 70 of file PatternMatch.h.
Referenced by CanEvaluateShifted(), llvm::InstCombiner::commonIDivTransforms(), llvm::InstCombiner::commonShiftTransforms(), FindScalarElement(), llvm::InstCombiner::FoldAndOfICmps(), foldLogOpOfMaskedICmpsHelper(), llvm::InstCombiner::FoldOrWithConstants(), foldSelectICmpAnd(), foldSelectICmpAndOr(), llvm::InstCombiner::FoldShiftByConstant(), GatherConstantCompares(), llvm::isKnownNonZero(), llvm::isKnownToBeAPowerOfTwo(), MatchSelectFromAndOr(), OptimizeIntToFloatBitCast(), SimplifyAddInst(), SimplifyAndInst(), SimplifyAShrInst(), SimplifyDiv(), SimplifyFSubInst(), SimplifyICmpInst(), SimplifyLShrInst(), SimplifyMulInst(), SimplifyOrInst(), SimplifyShlInst(), SimplifySubInst(), simplifyValueKnownNonZero(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitBranchInst(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitFCmpInst(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitICmpInstWithInstAndIntCst(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitUDiv(), visitUDivOperand(), llvm::InstCombiner::visitXor(), and llvm::InstCombiner::visitZExt().
m_Value - Match a value, capturing it if we match.
Definition at line 300 of file PatternMatch.h.
|
inline |
Definition at line 479 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitICmpInst(), and llvm::InstCombiner::visitOr().
|
inline |
m_Zero() - Match an arbitrary zero/null constant. This includes zero_initializer for vectors and ConstantPointerNull for pointers.
Definition at line 137 of file PatternMatch.h.
Referenced by foldSelectICmpAnd(), foldSelectICmpAndOr(), getGEPInductionOperand(), m_AnyZero(), SimplifyAddInst(), SimplifyAndInst(), SimplifyDiv(), SimplifyFAddInst(), SimplifyFSubInst(), SimplifyICmpInst(), SimplifyMulInst(), SimplifyOrInst(), SimplifyRem(), SimplifyShift(), SimplifySubInst(), SimplifyXorInst(), ThreadCmpOverSelect(), tryToMoveFreeBeforeNullTest(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitSDiv(), and llvm::InstCombiner::visitSub().
|
inline |
m_ZExt
Definition at line 692 of file PatternMatch.h.
Referenced by llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitSelectInstWithICmp(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), and visitUDivOperand().
bool llvm::PatternMatch::match | ( | Val * | V, |
const Pattern & | P | ||
) |
Definition at line 42 of file PatternMatch.h.
References P.
Referenced by CanEvaluateShifted(), llvm::InstCombiner::commonIDivTransforms(), llvm::InstCombiner::commonShiftTransforms(), llvm::ComputeNumSignBits(), FindScalarElement(), llvm::InstCombiner::FoldAndOfICmps(), foldLogOpOfMaskedICmpsHelper(), llvm::InstCombiner::FoldOrOfICmps(), llvm::InstCombiner::FoldOrWithConstants(), foldSelectICmpAnd(), foldSelectICmpAndOr(), llvm::InstCombiner::FoldShiftByConstant(), GatherConstantCompares(), getEdgeValueLocal(), getGEPInductionOperand(), getLogBase2Vector(), llvm::isKnownNonZero(), llvm::isKnownToBeAPowerOfTwo(), llvm::PatternMatch::MaxMin_match< CmpInst_t, LHS_t, RHS_t, Pred_t >::match(), MatchSelectFromAndOr(), OptimizeIntToFloatBitCast(), SimplifyAddInst(), SimplifyAndInst(), SimplifyAShrInst(), SimplifyDiv(), SimplifyFAddInst(), SimplifyFDivInst(), SimplifyFMulInst(), SimplifyFRemInst(), SimplifyFSubInst(), SimplifyICmpInst(), SimplifyInsertValueInst(), SimplifyLShrInst(), SimplifyMulInst(), SimplifyOrInst(), SimplifyRem(), SimplifyShift(), SimplifyShlInst(), SimplifySubInst(), simplifyValueKnownNonZero(), SimplifyXorInst(), ThreadCmpOverSelect(), tryToMoveFreeBeforeNullTest(), llvm::InstCombiner::visitAdd(), llvm::InstCombiner::visitAnd(), llvm::InstCombiner::visitAShr(), llvm::InstCombiner::visitBranchInst(), llvm::InstCombiner::visitCallInst(), llvm::InstCombiner::visitFAdd(), llvm::InstCombiner::visitFCmpInst(), llvm::InstCombiner::visitFDiv(), llvm::InstCombiner::visitFMul(), llvm::InstCombiner::visitGetElementPtrInst(), llvm::InstCombiner::visitICmpInst(), llvm::InstCombiner::visitICmpInstWithInstAndIntCst(), llvm::InstCombiner::visitMul(), llvm::InstCombiner::visitOr(), llvm::InstCombiner::visitSDiv(), llvm::InstCombiner::visitSelectInst(), llvm::InstCombiner::visitSelectInstWithICmp(), llvm::InstCombiner::visitSExt(), llvm::InstCombiner::visitShl(), llvm::InstCombiner::visitSub(), llvm::InstCombiner::visitTrunc(), llvm::InstCombiner::visitUDiv(), visitUDivOperand(), llvm::InstCombiner::visitURem(), llvm::InstCombiner::visitXor(), and llvm::InstCombiner::visitZExt().