diff options
| author | Alasdair Armstrong | 2018-02-23 19:32:02 +0000 |
|---|---|---|
| committer | Alasdair Armstrong | 2018-02-23 20:03:21 +0000 |
| commit | e5996d307ca0a7a75431b194b3b04c2aa9008473 (patch) | |
| tree | 709751de402b0809f72970c6317337ee6862ac75 /lib | |
| parent | 60abec7cf41b95a5e7aeabd129444a1eb30ed9c1 (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.sail | 12 |
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) |
