retdec
Classes | Namespaces | Functions
symbolic_tree_match.h File Reference
#include "retdec/bin2llvmir/analyses/symbolic_tree.h"

Go to the source code of this file.

Classes

struct  retdec::bin2llvmir::st_match::match_combine_or< LTy, RTy >
 
struct  retdec::bin2llvmir::st_match::match_combine_and< LTy, RTy >
 
struct  retdec::bin2llvmir::st_match::AnyBinaryOp_match< LHS_t, RHS_t, Commutable >
 
struct  retdec::bin2llvmir::st_match::BinaryOp_match< LHS_t, RHS_t, Opcode, Commutable >
 
struct  retdec::bin2llvmir::st_match::not_match< LHS_t >
 
struct  retdec::bin2llvmir::st_match::neg_match< LHS_t >
 
struct  retdec::bin2llvmir::st_match::CmpClass_match< LHS_t, RHS_t, Class, PredicateTy, Commutable >
 
struct  retdec::bin2llvmir::st_match::CmpClass_pred_match< LHS_t, RHS_t, Class, PredicateTy, Commutable >
 
struct  retdec::bin2llvmir::st_match::LoadClass_match< Op_t >
 
struct  retdec::bin2llvmir::st_match::bind_ty< Class >
 
struct  retdec::bin2llvmir::st_match::class_match< Class >
 
struct  retdec::bin2llvmir::st_match::apint_match
 
struct  retdec::bin2llvmir::st_match::apfloat_match
 
struct  retdec::bin2llvmir::st_match::constantint_match< Val >
 
struct  retdec::bin2llvmir::st_match::match_zero
 
struct  retdec::bin2llvmir::st_match::match_not_zero
 
struct  retdec::bin2llvmir::st_match::match_neg_zero
 
struct  retdec::bin2llvmir::st_match::match_any_zero
 
struct  retdec::bin2llvmir::st_match::match_one
 
struct  retdec::bin2llvmir::st_match::specificval_ty
 
struct  retdec::bin2llvmir::st_match::bind_const_intval_ty
 
struct  retdec::bin2llvmir::st_match::specific_intval
 Match a specified integer value. More...
 
struct  retdec::bin2llvmir::st_match::specific_fpval
 Match a specified floating point value. More...
 

Namespaces

 retdec
 
 retdec::bin2llvmir
 
 retdec::bin2llvmir::st_match
 

Functions

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