@@ -1756,9 +1756,10 @@ btorsim_bv_sra (const BtorSimBitVector *a, const BtorSimBitVector *b)
1756
1756
BtorSimBitVector *
1757
1757
btorsim_bv_rol (const BtorSimBitVector * a , const BtorSimBitVector * b ) {
1758
1758
BtorSimBitVector * width = btorsim_bv_uint64_to_bv (a -> width , a -> width );
1759
- BtorSimBitVector * rev = btorsim_bv_sub (width , b );
1759
+ BtorSimBitVector * rem = btorsim_bv_urem (b , width );
1760
+ BtorSimBitVector * rev = btorsim_bv_sub (width , rem );
1760
1761
1761
- BtorSimBitVector * sll_part = btorsim_bv_sll (a , b );
1762
+ BtorSimBitVector * sll_part = btorsim_bv_sll (a , rem );
1762
1763
BtorSimBitVector * srl_part = btorsim_bv_srl (a , rev );
1763
1764
BtorSimBitVector * res = btorsim_bv_or (sll_part , srl_part );
1764
1765
@@ -1772,9 +1773,10 @@ btorsim_bv_rol (const BtorSimBitVector *a, const BtorSimBitVector *b) {
1772
1773
BtorSimBitVector *
1773
1774
btorsim_bv_ror (const BtorSimBitVector * a , const BtorSimBitVector * b ) {
1774
1775
BtorSimBitVector * width = btorsim_bv_uint64_to_bv (a -> width , a -> width );
1775
- BtorSimBitVector * rev = btorsim_bv_sub (width , b );
1776
+ BtorSimBitVector * rem = btorsim_bv_urem (b , width );
1777
+ BtorSimBitVector * rev = btorsim_bv_sub (width , rem );
1776
1778
1777
- BtorSimBitVector * srl_part = btorsim_bv_srl (a , b );
1779
+ BtorSimBitVector * srl_part = btorsim_bv_srl (a , rem );
1778
1780
BtorSimBitVector * sll_part = btorsim_bv_sll (a , rev );
1779
1781
BtorSimBitVector * res = btorsim_bv_or (srl_part , sll_part );
1780
1782
0 commit comments