mirror of
https://github.com/Z3Prover/z3
synced 2025-10-20 22:30:32 +00:00
integrate lookahead v1 into repair loop
this ports some functionality from lookahead solver for qfbv-sls into sls-smt.
This commit is contained in:
parent
c58171478f
commit
5eb71c3be6
9 changed files with 214 additions and 104 deletions
|
@ -451,25 +451,34 @@ public:
|
|||
case OP_BLSHR: {
|
||||
SASSERT(n_args == 2);
|
||||
m_mpz_manager.set(result, m_tracker.get_value(args[0]));
|
||||
mpz shift; m_mpz_manager.set(shift, m_tracker.get_value(args[1]));
|
||||
while (!m_mpz_manager.is_zero(shift)) {
|
||||
m_mpz_manager.machine_div(result, m_two, result);
|
||||
m_mpz_manager.dec(shift);
|
||||
auto const& shift = m_tracker.get_value(args[1]);
|
||||
if (m_mpz_manager.is_small(shift)) {
|
||||
int s = m_mpz_manager.get_int(shift);
|
||||
SASSERT(s >= 0);
|
||||
m_mpz_manager.machine_div2k(result, s);
|
||||
}
|
||||
m_mpz_manager.del(shift);
|
||||
else
|
||||
m_mpz_manager.set(result, m_zero);
|
||||
break;
|
||||
}
|
||||
case OP_BSHL: {
|
||||
SASSERT(n_args == 2);
|
||||
m_mpz_manager.set(result, m_tracker.get_value(args[0]));
|
||||
mpz shift; m_mpz_manager.set(shift, m_tracker.get_value(args[1]));
|
||||
while (!m_mpz_manager.is_zero(shift)) {
|
||||
m_mpz_manager.mul(result, m_two, result);
|
||||
m_mpz_manager.dec(shift);
|
||||
m_mpz_manager.set(result, m_tracker.get_value(args[0]));
|
||||
auto const& shift = m_tracker.get_value(args[1]);
|
||||
if (m_mpz_manager.is_small(shift)) {
|
||||
int s = m_mpz_manager.get_int(shift);
|
||||
SASSERT(s >= 0);
|
||||
int sz = m_bv_util.get_bv_size(n);
|
||||
if (s >= sz)
|
||||
m_mpz_manager.set(result, m_zero);
|
||||
else {
|
||||
m_mpz_manager.mul2k(result, s);
|
||||
const mpz& p = m_powers(sz);
|
||||
m_mpz_manager.rem(result, p, result);
|
||||
}
|
||||
}
|
||||
const mpz & p = m_powers(m_bv_util.get_bv_size(n));
|
||||
m_mpz_manager.rem(result, p, result);
|
||||
m_mpz_manager.del(shift);
|
||||
else
|
||||
m_mpz_manager.set(result, m_zero);
|
||||
break;
|
||||
}
|
||||
case OP_SIGN_EXT: {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue