Changing the handled operators in bv2int preprocessing pass (#4970)
authoryoni206 <yoni206@users.noreply.github.com>
Thu, 3 Sep 2020 20:28:48 +0000 (13:28 -0700)
committerGitHub <noreply@github.com>
Thu, 3 Sep 2020 20:28:48 +0000 (15:28 -0500)
commit31b3986ea297d54e828cd6c34e3689435ba63d7c
treeb989aace00e94611c8455d76d2dbdbb548b0a23f
parent58733b382a4a956c051d06e7318afa1deed612da
Changing the handled operators in bv2int preprocessing pass (#4970)

Some of the bit-vector operators are directly translated to integers, while others are eliminated before the translation.
This PR changes the set of operators that we eliminate (and as a consequence, also the set of operators that we handle directly):

The only bit-wise operator that is translated is bvand. The rest are now eliminated.
bvneg is now eliminated.
The various division operators are still eliminated, but using different rewrite rules.
zero-extend and sign-extend are now handled directly.
shifting is changed to favor ITEs over non-linear multiplication.
src/preprocessing/passes/bv_to_int.cpp
src/preprocessing/passes/bv_to_int.h
test/regress/regress2/bv_to_int_shifts.smt2