diff options
| author | Jon French | 2018-10-16 14:52:01 +0100 |
|---|---|---|
| committer | Jon French | 2018-10-16 14:52:01 +0100 |
| commit | 57c4a243b8cfb06dc7644f9c317ddc270cbbf0d3 (patch) | |
| tree | 52f4617ad4c795abddc80bd6fb84ead026828f2d /src/value.ml | |
| parent | e7ca37271e187f36527a85bba31c60e0854bc8b7 (diff) | |
Re-implement space-related mapping functions in Sail rather than backends
Uses new primop 'string_take' which is much easier to implement in e.g. C
Diffstat (limited to 'src/value.ml')
| -rw-r--r-- | src/value.ml | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/value.ml b/src/value.ml index 6c9990a1..157c16fc 100644 --- a/src/value.ml +++ b/src/value.ml @@ -219,6 +219,10 @@ let value_string_drop = function | [v1; v2] -> V_string (Sail_lib.string_drop (coerce_string v1, coerce_int v2)) | _ -> failwith "value string_drop" +let value_string_take = function + | [v1; v2] -> V_string (Sail_lib.string_take (coerce_string v1, coerce_int v2)) + | _ -> failwith "value string_take" + let value_string_length = function | [v] -> V_int (coerce_string v |> Sail_lib.string_length) | _ -> failwith "value string_length" @@ -549,6 +553,7 @@ let primops = ("eq_string", value_eq_string); ("string_startswith", value_string_startswith); ("string_drop", value_string_drop); + ("string_take", value_string_take); ("string_length", value_string_length); ("eq_bit", value_eq_bit); ("eq_anything", value_eq_anything); |
