|
template<typename Pattern > |
bool | match (SymbolicTree &st, const Pattern &p) |
|
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...
|
|
template<typename LHS , typename RHS > |
AnyBinaryOp_match< LHS, RHS > | m_BinOp (const LHS &L, const RHS &R, llvm::BinaryOperator **insn=nullptr) |
|
template<typename LHS , typename RHS > |
AnyBinaryOp_match< LHS, RHS, true > | m_c_BinOp (const LHS &L, const RHS &R, llvm::BinaryOperator **insn=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Add > | m_Add (const LHS &L, const RHS &R, llvm::BinaryOperator **add=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::FAdd > | m_FAdd (const LHS &L, const RHS &R, llvm::BinaryOperator **fadd=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Sub > | m_Sub (const LHS &L, const RHS &R, llvm::BinaryOperator **sub=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::FSub > | m_FSub (const LHS &L, const RHS &R, llvm::BinaryOperator **fsub=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Mul > | m_Mul (const LHS &L, const RHS &R, llvm::BinaryOperator **mul=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::FMul > | m_FMul (const LHS &L, const RHS &R, llvm::BinaryOperator **fmul=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::UDiv > | m_UDiv (const LHS &L, const RHS &R, llvm::BinaryOperator **udiv=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::SDiv > | m_SDiv (const LHS &L, const RHS &R, llvm::BinaryOperator **sdiv=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::FDiv > | m_FDiv (const LHS &L, const RHS &R, llvm::BinaryOperator **fdiv=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::URem > | m_URem (const LHS &L, const RHS &R, llvm::BinaryOperator **urem=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::SRem > | m_SRem (const LHS &L, const RHS &R, llvm::BinaryOperator **srem=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::FRem > | m_FRem (const LHS &L, const RHS &R, llvm::BinaryOperator **frem=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::And > | m_And (const LHS &L, const RHS &R, llvm::BinaryOperator **andi=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Or > | m_Or (const LHS &L, const RHS &R, llvm::BinaryOperator **ori=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Xor > | m_Xor (const LHS &L, const RHS &R, llvm::BinaryOperator **xori=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Shl > | m_Shl (const LHS &L, const RHS &R, llvm::BinaryOperator **shl=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::LShr > | m_LShr (const LHS &L, const RHS &R, llvm::BinaryOperator **lshr=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::AShr > | m_AShr (const LHS &L, const RHS &R, llvm::BinaryOperator **ashr=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Add, true > | m_c_Add (const LHS &L, const RHS &R, llvm::BinaryOperator **add=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Mul, true > | m_c_Mul (const LHS &L, const RHS &R, llvm::BinaryOperator **mul=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::And, true > | m_c_And (const LHS &L, const RHS &R, llvm::BinaryOperator **andi=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Or, true > | m_c_Or (const LHS &L, const RHS &R, llvm::BinaryOperator **ori=nullptr) |
|
template<typename LHS , typename RHS > |
BinaryOp_match< LHS, RHS, llvm::Instruction::Xor, true > | m_c_Xor (const LHS &L, const RHS &R, llvm::BinaryOperator **xori=nullptr) |
|
template<typename LHS > |
not_match< LHS > | m_Not (const LHS &L) |
|
template<typename LHS > |
neg_match< LHS > | m_Neg (const LHS &L) |
| Match an integer negate. More...
|
|
template<typename LHS , typename RHS > |
CmpClass_match< LHS, RHS, llvm::CmpInst, llvm::CmpInst::Predicate > | m_Cmp (llvm::CmpInst::Predicate &Pred, const LHS &L, const RHS &R, llvm::CmpInst **cmp=nullptr) |
|
template<typename LHS , typename RHS > |
CmpClass_match< LHS, RHS, llvm::ICmpInst, llvm::ICmpInst::Predicate > | m_ICmp (llvm::ICmpInst::Predicate &Pred, const LHS &L, const RHS &R, llvm::ICmpInst **icmp=nullptr) |
|
template<typename LHS , typename RHS > |
CmpClass_match< LHS, RHS, llvm::ICmpInst, llvm::ICmpInst::Predicate, true > | m_c_ICmp (llvm::ICmpInst::Predicate &Pred, const LHS &L, const RHS &R, llvm::ICmpInst **icmp=nullptr) |
|
template<typename LHS , typename RHS > |
CmpClass_match< LHS, RHS, llvm::FCmpInst, llvm::FCmpInst::Predicate > | m_FCmp (llvm::FCmpInst::Predicate &Pred, const LHS &L, const RHS &R, llvm::FCmpInst **fcmp=nullptr) |
|
template<typename LHS , typename RHS > |
CmpClass_pred_match< LHS, RHS, llvm::CmpInst, llvm::CmpInst::Predicate > | m_Cmp (llvm::CmpInst::Predicate Pred, const LHS &L, const RHS &R, llvm::CmpInst **cmp=nullptr) |
|
template<typename LHS , typename RHS > |
CmpClass_pred_match< LHS, RHS, llvm::ICmpInst, llvm::ICmpInst::Predicate > | m_ICmp (llvm::ICmpInst::Predicate Pred, const LHS &L, const RHS &R, llvm::ICmpInst **icmp=nullptr) |
|
template<typename LHS , typename RHS > |
CmpClass_pred_match< LHS, RHS, llvm::ICmpInst, llvm::ICmpInst::Predicate, true > | m_c_ICmp (llvm::ICmpInst::Predicate Pred, const LHS &L, const RHS &R, llvm::ICmpInst **icmp=nullptr) |
|
template<typename LHS , typename RHS > |
CmpClass_pred_match< LHS, RHS, llvm::FCmpInst, llvm::FCmpInst::Predicate > | m_FCmp (llvm::FCmpInst::Predicate Pred, const LHS &L, const RHS &R, llvm::FCmpInst **fcmp=nullptr) |
|
template<typename OpTy > |
LoadClass_match< OpTy > | m_Load (const OpTy &Op, llvm::LoadInst **l=nullptr) |
|
bind_ty< llvm::Value > | m_Value (llvm::Value *&V) |
|
bind_ty< const llvm::Value > | m_Value (const llvm::Value *&V) |
|
bind_ty< llvm::BinaryOperator > | m_BinOp (llvm::BinaryOperator *&I) |
|
bind_ty< llvm::ConstantInt > | m_ConstantInt (llvm::ConstantInt *&CI) |
|
bind_ty< llvm::Constant > | m_Constant (llvm::Constant *&C) |
|
bind_ty< llvm::ConstantFP > | m_ConstantFP (llvm::ConstantFP *&C) |
|
bind_ty< llvm::GlobalVariable > | m_GlobalVariable (llvm::GlobalVariable *&G) |
|
bind_ty< llvm::Instruction > | m_Instruction (llvm::Instruction *&I) |
|
template<typename Class > |
bind_ty< Class > | m_Instruction (Class *&I) |
|
class_match< llvm::Value > | m_Value () |
|
class_match< llvm::BinaryOperator > | m_BinOp () |
|
class_match< llvm::CmpInst > | m_Cmp () |
|
class_match< llvm::ConstantInt > | m_ConstantInt () |
| Match a ConstantInt with a specific value. More...
|
|
class_match< llvm::UndefValue > | m_Undef () |
|
class_match< llvm::Constant > | m_Constant () |
|
class_match< llvm::Instruction > | m_Instruction () |
|
apint_match | m_APInt (const llvm::APInt *&Res) |
| Match a ConstantInt, binding the specified pointer to the contained APInt. More...
|
|
apfloat_match | m_APFloat (const llvm::APFloat *&Res) |
| Match a ConstantFP, binding the specified pointer to the contained APFloat. More...
|
|
match_zero | m_Zero () |
| Match an arbitrary zero/null constant. This includes zero_initializer for vectors and ConstantPointerNull for pointers. More...
|
|
match_not_zero | m_not_Zero () |
| Match an arbitrary non-zero constant integer. More...
|
|
match_not_zero | m_not_Zero (llvm::ConstantInt *&CI) |
| Match and bind an arbitrary non-zero constant integer. More...
|
|
match_neg_zero | 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. More...
|
|
match_any_zero | 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
More...
|
|
match_one | m_One () |
|
specificval_ty | m_Specific (const llvm::Value *V) |
| Match if we have a specific specified value. More...
|
|
bind_const_intval_ty | m_ConstantInt (uint64_t &V) |
| Match a ConstantInt and bind to its value. This does not match ConstantInts wider than 64-bits. More...
|
|
specific_intval | m_SpecificInt (uint64_t V) |
|
specific_fpval | m_SpecificFP (double V) |
|
specific_fpval | m_FPOne () |
| Match a float 1.0. More...
|
|