Go to the documentation of this file.
10 #ifndef CPROVER_SOLVERS_FLATTENING_BV_UTILS_H
11 #define CPROVER_SOLVERS_FLATTENING_BV_UTILS_H
92 divider(op0, op1, res, rem, rep);
99 divider(op0, op1, res, rem, rep);
122 #ifdef COMPACT_EQUAL_CONST
123 typedef std::set<bvt> equal_const_registeredt;
124 equal_const_registeredt equal_const_registered;
125 void equal_const_register(
const bvt &var);
127 typedef std::pair<bvt, bvt> var_constant_pairt;
128 typedef std::map<var_constant_pairt, literalt> equal_const_cachet;
129 equal_const_cachet equal_const_cache;
140 return op[op.size()-1];
152 tmp[tmp.size()-1]=!tmp[tmp.size()-1];
207 static bvt extract(
const bvt &a, std::size_t first, std::size_t last);
239 const bvt &op0,
const bvt &op1);
242 const bvt &op0,
const bvt &op1);
249 #endif // CPROVER_SOLVERS_FLATTENING_BV_UTILS_H
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
bvt cond_negate_no_overflow(const bvt &bv, const literalt cond)
static bvt zero_extension(const bvt &bv, std::size_t new_size)
static bvt extract_lsb(const bvt &a, std::size_t n)
void cond_implies_equal(literalt cond, const bvt &a, const bvt &b)
literalt carry(literalt a, literalt b, literalt c)
literalt full_adder(const literalt a, const literalt b, const literalt carry_in, literalt &carry_out)
literalt is_not_zero(const bvt &op)
literalt carry_out(const bvt &op0, const bvt &op1, literalt carry_in)
std::vector< literalt > bvt
bvt negate_no_overflow(const bvt &op)
void adder_no_overflow(bvt &sum, const bvt &op, bool subtract, representationt rep)
bvt signed_multiplier(const bvt &op0, const bvt &op1)
static bvt zeros(std::size_t new_size)
void set_equal(const bvt &a, const bvt &b)
void signed_divider(const bvt &op0, const bvt &op1, bvt &res, bvt &rem)
static bvt sign_extension(const bvt &bv, std::size_t new_size)
virtual literalt lor(literalt a, literalt b)=0
bvt incrementer(const bvt &op, literalt carry_in)
static bvt inverted(const bvt &op)
bvt absolute_value(const bvt &op)
bvt unsigned_multiplier(const bvt &op0, const bvt &op1)
virtual literalt land(literalt a, literalt b)=0
bvt select(literalt s, const bvt &a, const bvt &b)
If s is true, selects a otherwise selects b.
static bvt shift(const bvt &op, const shiftt shift, std::size_t distance)
literalt unsigned_less_than(const bvt &bv0, const bvt &bv1)
void unsigned_divider(const bvt &op0, const bvt &op1, bvt &res, bvt &rem)
literalt is_int_min(const bvt &op)
bvt add(const bvt &op0, const bvt &op1)
bvt cond_negate(const bvt &bv, const literalt cond)
literalt overflow_sub(const bvt &op0, const bvt &op1, representationt rep)
literalt const_literal(bool value)
literalt overflow_add(const bvt &op0, const bvt &op1, representationt rep)
bvt signed_multiplier_no_overflow(const bvt &op0, const bvt &op1)
bvt unsigned_multiplier_no_overflow(const bvt &op0, const bvt &op1)
static bvt concatenate(const bvt &a, const bvt &b)
literalt lt_or_le(bool or_equal, const bvt &bv0, const bvt &bv1, representationt rep)
bvt add_sub(const bvt &op0, const bvt &op1, bool subtract)
bvt wallace_tree(const std::vector< bvt > &pps)
bvt remainder(const bvt &op0, const bvt &op1, representationt rep)
bvt multiplier_no_overflow(const bvt &op0, const bvt &op1, representationt rep)
static bvt build_constant(const mp_integer &i, std::size_t width)
literalt rel(const bvt &bv0, irep_idt id, const bvt &bv1, representationt rep)
bvt negate(const bvt &op)
literalt is_all_ones(const bvt &op)
literalt overflow_negate(const bvt &op)
static literalt sign_bit(const bvt &op)
static bvt extension(const bvt &bv, std::size_t new_size, representationt rep)
bvt divider(const bvt &op0, const bvt &op1, representationt rep)
static bvt extract(const bvt &a, std::size_t first, std::size_t last)
literalt signed_less_than(const bvt &bv0, const bvt &bv1)
bvt multiplier(const bvt &op0, const bvt &op1, representationt rep)
static bvt extract_msb(const bvt &a, std::size_t n)
static bvt verilog_bv_normal_bits(const bvt &)
void adder(bvt &sum, const bvt &op, literalt carry_in, literalt &carry_out)
bvt add_sub_no_overflow(const bvt &op0, const bvt &op1, bool subtract, representationt rep)
literalt equal(const bvt &op0, const bvt &op1)
Bit-blasting ID_equal and use in other encodings.
literalt is_zero(const bvt &op)
bvt saturating_add_sub(const bvt &op0, const bvt &op1, bool subtract, representationt rep)
literalt verilog_bv_has_x_or_z(const bvt &)
literalt is_one(const bvt &op)
bvt sub(const bvt &op0, const bvt &op1)
static bool is_constant(const bvt &bv)