summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKathy Gray2016-02-05 13:13:18 +0000
committerKathy Gray2016-02-05 13:13:42 +0000
commite148fa2ae5686c13d319d960c798cc542066be8c (patch)
treef7b1c931b4aa72a6bd501b7584d27d9229a0c3ee /src
parenta9c9ebaf06ea86af4f8540ff27b6b645138fb150 (diff)
change signed mod behaviour for numbers to match that of vectors
Diffstat (limited to 'src')
-rw-r--r--src/lem_interp/interp_lib.lem1
-rw-r--r--src/type_internal.ml4
2 files changed, 3 insertions, 2 deletions
diff --git a/src/lem_interp/interp_lib.lem b/src/lem_interp/interp_lib.lem
index d494ab12..c16b6c3d 100644
--- a/src/lem_interp/interp_lib.lem
+++ b/src/lem_interp/interp_lib.lem
@@ -686,6 +686,7 @@ let library_functions direction = [
("bitwise_rightshift", shift_op_vec ">>");
("bitwise_rotate", shift_op_vec "<<<");
("modulo", arith_op_no0 (mod));
+ ("mod_signed", arith_op_no0 hardwaer_mod);
("mod_vec", arith_op_vec_no0 hardware_mod "mod" Unsigned 1);
("mod_vec_range", arith_op_vec_range_no0 hardware_mod "mod" Unsigned 1);
("mod_signed_vec", arith_op_vec_no0 hardware_mod "mod" Signed 1);
diff --git a/src/type_internal.ml b/src/type_internal.ml
index 7ef085b9..81a8e681 100644
--- a/src/type_internal.ml
+++ b/src/type_internal.ml
@@ -1967,12 +1967,12 @@ let initial_typ_env =
Overload(
Base(((mk_typ_params ["a";"b";"c"]),
(mk_pure_fun (mk_tup [{t=Tvar "a"};{t=Tvar "b"}]) {t=Tvar "c"})),
- (External (Some "modulo")),[],pure_e,pure_e,nob),
+ (External (Some "mod_signed")),[],pure_e,pure_e,nob),
true,
[Base(((mk_nat_params["n";"o";]),
(mk_pure_fun (mk_tup [mk_atom (mk_nv "n") ; mk_atom (mk_nv "o")])
(mk_range n_zero (mk_sub (mk_nv "o") n_one)))),
- (External (Some "modulo")),
+ (External (Some "mod_signed")),
[GtEq(Specc(Parse_ast.Int("modulo",None)),Require,(mk_nv "o"),n_one)],pure_e,pure_e,nob);
Base(((mk_nat_params["n";"m";"o"])@(mk_ord_params["ord"]),
(mk_pure_fun (mk_tup [mk_vector bit_t (Ovar "ord") (mk_nv "n") (mk_nv "m");