summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlasdair Armstrong2018-02-23 19:32:02 +0000
committerAlasdair Armstrong2018-02-23 20:03:21 +0000
commite5996d307ca0a7a75431b194b3b04c2aa9008473 (patch)
tree709751de402b0809f72970c6317337ee6862ac75 /lib
parent60abec7cf41b95a5e7aeabd129444a1eb30ed9c1 (diff)
Fix some bugs in C compilation
Fixed an issue with pattern matching on enums Fixed an issue whereby fix_early_returns would cause memory leaks Added optimizations for some of the builtins used in the decode function. Optimizations are turned on with the -O flag.
Diffstat (limited to 'lib')
-rw-r--r--lib/vector_dec.sail12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/vector_dec.sail b/lib/vector_dec.sail
index 130f4d63..7c9c4546 100644
--- a/lib/vector_dec.sail
+++ b/lib/vector_dec.sail
@@ -7,7 +7,11 @@ type bits ('n : Int) = vector('n, dec, bit)
val "eq_bit" : (bit, bit) -> bool
-val "eq_bits" : forall 'n. (vector('n, dec, bit), vector('n, dec, bit)) -> bool
+val eq_bits = {
+ ocaml: "eq_list",
+ lem: "eq_vec",
+ c: "eq_bits"
+} : forall 'n. (vector('n, dec, bit), vector('n, dec, bit)) -> bool
overload operator == = {eq_bit, eq_bits}
@@ -29,7 +33,11 @@ val "sign_extend" : forall 'n 'm, 'm >= 'n. (bits('n), atom('m)) -> bits('m)
val "zero_extend" : forall 'n 'm, 'm >= 'n. (bits('n), atom('m)) -> bits('m)
-val "truncate" : forall 'm 'n, 'm <= 'n. (vector('n, dec, bit), atom('m)) -> vector('m, dec, bit)
+val truncate = {
+ ocaml: "vector_truncate",
+ lem: "vector_truncate",
+ c: "truncate"
+} : forall 'm 'n, 'm <= 'n. (vector('n, dec, bit), atom('m)) -> vector('m, dec, bit)
val mask : forall 'len 'v, 'v >= 0. (atom('len), vector('v, dec, bit)) -> vector('len, dec, bit)