summaryrefslogtreecommitdiff
path: root/src/lem_interp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lem_interp')
-rw-r--r--src/lem_interp/interp_lib.lem9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/lem_interp/interp_lib.lem b/src/lem_interp/interp_lib.lem
index 8115f3d6..3589c84f 100644
--- a/src/lem_interp/interp_lib.lem
+++ b/src/lem_interp/interp_lib.lem
@@ -12,11 +12,16 @@ declare ocaml target_rep function quomod = `Big_int.quomod_big_int`
let hardware_mod a b =
let (q,r) = quomod a b in
- if q < 0 then r-b else r
+ if q < 0 then r-b
+ else
+ if a > b && a < 0
+ then a else r
let hardware_quot a b =
let (q,r) = quomod a b in
- if q < 0 then q+1 else q
+ if q < 0 then q+1
+ else if a > b && a < 0
+ then 0 else q
let ignore_sail x = V_lit (L_aux L_unit Unknown) ;;