// complementing the result bit.
ASTNode BitBlaster::BBBVLE(const ASTVec& left,
const ASTVec& right,
- bool is_signed)
+ bool is_signed,
+ bool is_bvlt)
{
ASTVec::const_reverse_iterator lit = left.rbegin();
ASTVec::const_reverse_iterator litend = left.rend();
prev_eq_bit = this_eq_bit;
}
- bit_comparisons.push_back(prev_eq_bit);
+ if(!is_bvlt)
+ {
+ bit_comparisons.push_back(prev_eq_bit);
+ }
ASTNode output =
_bm->CreateSimpForm(OR, bit_comparisons);
}
case BVLT:
{
- return _bm->CreateSimpNot(BBBVLE(right, left, false));
+ return BBBVLE(left, right, false, true);
break;
}
case BVSLE:
ASTNode Sum(const ASTNode& xi, const ASTNode& yi, const ASTNode& cin);
// Internal bit blasting routines.
- ASTNode BBBVLE(const ASTVec& x, const ASTVec& y, bool is_signed);
+ ASTNode BBBVLE(const ASTVec& x,
+ const ASTVec& y, bool is_signed, bool is_bvlt = false);
// Return bit-blasted form for BVLE, BVGE, BVGT, SBLE, etc.
ASTNode BBcompare(const ASTNode& form);