void TritonToZ3Ast::operator()(triton::ast::BvudivNode& e) { Z3Result op1 = this->eval(*e.getChilds()[0]); Z3Result op2 = this->eval(*e.getChilds()[1]); z3::expr newexpr = to_expr(this->result.getContext(), Z3_mk_bvudiv(this->result.getContext(), op1.getExpr(), op2.getExpr())); this->result.setExpr(newexpr); }
z3::expr operator()(const z3::expr& v1, const z3::expr& v2) { z3::context& ctxt = v1.ctx(); z3::expr zero(ctxt.bv_val(0, v1.get_sort().bv_size())); z3::expr guard(v2 == zero); z3::expr ans(ctxt, Z3_mk_bvudiv(ctxt, v1, v2)); return z3::expr(ctxt, Z3_mk_ite(ctxt, guard, zero, ans)); }