1 #ifndef __AST_HPP_DEFINED__ 2 #define __AST_HPP_DEFINED__ 24 #include <boost/python.hpp> 25 #include <boost/shared_ptr.hpp> 122 py::object
value()
const;
202 static NodeRef*
choiceL(
const std::string& name,
const py::list& l);
223 const char* opName)
const;
static NodeRef * readSlice(const std::string &name, NodeRef *bv, int w)
NodeRef * _unOp(BoolOp::Op boolOp, BitvectorOp::Op bvOp, const char *opName) const
static NodeRef * rsdivInt(int l, NodeRef *r)
std::string getName() const
static NodeRef * ashr(NodeRef *l, NodeRef *r)
NodeRef * getItem(NodeRef *idx) const
NodeRef * rsubInt(int r) const
static NodeRef * load(NodeRef *mem, NodeRef *addr)
NodeRef * ugt(NodeRef &other) const
NodeRef * logicalAnd(NodeRef *other) const
NodeRef * ruremInt(int l)
NodeRef * ugeInt(int r) const
NodeRef * complement() const
static NodeRef * _triOp(BoolOp::Op boolOp, BitvectorOp::Op bvOp, MemOp::Op memOp, NodeRef &arg0, NodeRef &arg1, NodeRef &arg2)
NodeRef * logicalXor(NodeRef *other) const
NodeRef * add(NodeRef *other) const
NodeRef * mulInt(int r) const
static NodeRef * rsmodInt(int l, NodeRef *r)
NodeRef & operator=(const NodeRef &other)
NodeRef * ultInt(int r) const
static NodeRef * rrotate(NodeRef *obj, int par)
static NodeRef * sgtInt(NodeRef &l, int r)
static NodeRef * zero_extend(NodeRef *obj, int outWidth)
static NodeRef * sremInt(NodeRef *l, int r)
static NodeRef * _extractOp(const NodeRef *bv, int beg, int end)
static NodeRef * choiceL(const std::string &name, const py::list &l)
static NodeRef * writeSlice(const std::string &name, NodeRef *bv, NodeRef *wr)
NodeRef * logicalOrRInt(int l) const
static NodeRef * sgt(NodeRef &l, NodeRef &r)
static NodeRef * logicalXnor(NodeRef *l, NodeRef *r)
static NodeRef * ashrInt(NodeRef *l, int r)
NodeRef * eq(NodeRef &other) const
std::vector< nptr_t > nptr_vec_t
Definition: node.hpp:27
NodeRef * uleInt(int r) const
Op
Definition: bool.hpp:84
NodeRef * rlshrInt(int r) const
static NodeRef * simplify(NodeRef &assump, NodeRef &exp)
static NodeRef * extract(const NodeRef *obj, int hi, int lo)
static NodeRef * smod(NodeRef *l, NodeRef *r)
static NodeRef * choice3(const std::string &name, NodeRef *e1, NodeRef *e2, NodeRef *e3)
static NodeRef * sltInt(NodeRef &l, int r)
NodeRef * ult(NodeRef &other) const
static NodeRef * storeblock(NodeRef *mem, NodeRef *addr, NodeRef *data)
static NodeRef * appfunc0(NodeRef *fun)
static NodeRef * appfuncL(NodeRef *fun, const py::list &l)
static NodeRef * rashrInt(int l, NodeRef *r)
static NodeRef * _choice(const std::string &name, const nptr_vec_t &args)
NodeRef * slice(int hi, int lo) const
boost::shared_ptr< Node > nptr_t
Definition: node.hpp:24
NodeRef * logicalXorInt(int r) const
NodeRef * logicalAndInt(int r) const
nptr_t node
Definition: ast.hpp:31
static NodeRef * choice2(const std::string &name, NodeRef *e1, NodeRef *e2)
static NodeRef * sdivInt(NodeRef *l, int r)
static NodeRef * srem(NodeRef *l, NodeRef *r)
static NodeRef * sign_extend(NodeRef *obg, int outWidth)
static NodeRef * nonzero(NodeRef *obj)
NodeRef * shl(NodeRef *other) const
NodeRef * addInt(int r) const
NodeRef * raddInt(int r) const
static NodeRef * appfunc1(NodeRef *fun, NodeRef *arg)
static NodeRef * storeblockB(NodeRef *mem, NodeRef *addr, NodeRef *data)
NodeRef * subInt(int r) const
static NodeRef * loadblock(NodeRef *mem, NodeRef *addr, int chunks)
static NodeRef * sgeInt(NodeRef &l, int r)
NodeRef * sub(NodeRef *other) const
NodeRef * getItemInt(int idx) const
static NodeRef * store(NodeRef *mem, NodeRef *addr, NodeRef *data)
static NodeRef * appfunc2(NodeRef *fun, NodeRef *arg0, NodeRef *arg1)
NodeRef * logicalOrInt(int r) const
NodeRef * uge(NodeRef &other) const
Definition: abstraction.hpp:21
NodeRef * urem(NodeRef *r)
NodeRef * neq(NodeRef &other) const
NodeRef * mul(NodeRef *other) const
NodeRef * logicalXorRInt(int l) const
NodeRef * ule(NodeRef &other) const
static NodeRef * sle(NodeRef &l, NodeRef &r)
NodeRef * udivInt(int r) const
NodeRef * lshrInt(int r) const
static NodeRef * sleInt(NodeRef &l, int r)
NodeRef * logicalAndRInt(int r) const
static NodeRef * readChunk(const std::string &name, NodeRef *bv, int w)
static NodeRef * sdiv(NodeRef *l, NodeRef *r)
NodeRef * _binOp(BoolOp::Op boolOp, BitvectorOp::Op bvOp, const char *opName, NodeRef *other) const
NodeRef * rmulInt(int r) const
static NodeRef * lrotate(NodeRef *obj, int par)
static NodeRef * ite(NodeRef &cond, NodeRef &trueExp, NodeRef &falseExp)
NodeRef * rshlInt(int r) const
NodeRef * _cmpOp(BoolOp::Op op, NodeRef &other, bool bvtype) const
static NodeRef * writeChunk(const std::string &name, NodeRef *bv, NodeRef *wr)
NodeRef * ugtInt(int r) const
static NodeRef * _naryOp(BitvectorOp::Op bvOp, nptr_vec_t &args)
static NodeRef * inRange(const std::string &name, NodeRef *lo, NodeRef *hi)
static NodeRef * logicalNor(NodeRef *l, NodeRef *r)
static NodeRef * logicalNand(NodeRef *l, NodeRef *r)
static NodeRef * imply(NodeRef &p, NodeRef &q)
bool equal(NodeRef *other) const
Op
Definition: bitvec.hpp:89
NodeRef * _binOpR(BitvectorOp::Op op, int r) const
void setRefName(const std::string &refName)
static NodeRef * loadblockB(NodeRef *mem, NodeRef *addr, int chunks)
NodeRef * neqInt(int r) const
static NodeRef * choice6(const std::string &name, NodeRef *e1, NodeRef *e2, NodeRef *e3, NodeRef *e4, NodeRef *e5, NodeRef *e6)
NodeRef * shlInt(int r) const
static NodeRef * choice4(const std::string &name, NodeRef *e1, NodeRef *e2, NodeRef *e3, NodeRef *e4)
NodeRef * lshr(NodeRef *other) const
NodeRef * logicalOr(NodeRef *other) const
static NodeRef * concat(NodeRef *lo, NodeRef *hi)
NodeRef * rudivInt(int r) const
std::ostream & operator<<(std::ostream &out, const Node &that)
static NodeRef * concatList(const py::list &l)
NodeRef * eqInt(int r) const
static NodeRef * smodInt(NodeRef *l, int r)
static NodeRef * rsremInt(int l, NodeRef *r)
static NodeRef * slt(NodeRef &l, NodeRef &r)
static NodeRef * choice5(const std::string &name, NodeRef *e1, NodeRef *e2, NodeRef *e3, NodeRef *e4, NodeRef *e5)
static NodeRef * sge(NodeRef &l, NodeRef &r)
NodeRef * udiv(NodeRef *other) const