summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlasdair Armstrong2018-04-04 15:03:45 +0100
committerAlasdair Armstrong2018-04-05 18:40:36 +0100
commit3604e9e94b766147b482c4c653c4d09bb4ee7a7c (patch)
tree75ea0e29a1f16d96140d5e100292923df5a8fa2e /src
parent252460bc33fc26d8ef8aa905592fd4029d97d419 (diff)
Add generic prelude library that pulls in various basic sail
definitions from sail/lib.
Diffstat (limited to 'src')
-rw-r--r--src/gen_lib/sail_values.lem4
-rw-r--r--src/process_file.ml7
2 files changed, 11 insertions, 0 deletions
diff --git a/src/gen_lib/sail_values.lem b/src/gen_lib/sail_values.lem
index a89456b9..2fe69211 100644
--- a/src/gen_lib/sail_values.lem
+++ b/src/gen_lib/sail_values.lem
@@ -276,6 +276,8 @@ let ext_list pad len xs =
if longer < 0 then drop (nat_of_int (abs (longer))) xs
else pad_list pad xs longer
+let vector_truncate bs len = ext_list B0 len bs
+
let extz_bools len bs = ext_list false len bs
let exts_bools len bs =
match bs with
@@ -341,6 +343,8 @@ let exts_bits len bits =
| _ -> ext_list B0 len bits
end
+let zero_extend bits len = extz_bits len bits
+
let rec add_one_bit_ignore_overflow_aux bits = match bits with
| [] -> []
| B0 :: bits -> B1 :: bits
diff --git a/src/process_file.ml b/src/process_file.ml
index 3f24f4c3..88220841 100644
--- a/src/process_file.ml
+++ b/src/process_file.ml
@@ -162,6 +162,13 @@ let rec preprocess = function
| Parse_ast.DEF_pragma (p, arg, _) :: defs ->
(Util.warn ("Bad pragma $" ^ p ^ " " ^ arg); preprocess defs)
+ | (Parse_ast.DEF_default (Parse_ast.DT_aux (Parse_ast.DT_order (_, Parse_ast.ATyp_aux (atyp, _)), _)) as def) :: defs ->
+ begin match atyp with
+ | Parse_ast.ATyp_inc -> symbols := StringSet.add "_DEFAULT_INC" !symbols; def :: preprocess defs
+ | Parse_ast.ATyp_dec -> symbols := StringSet.add "_DEFAULT_DEC" !symbols; def :: preprocess defs
+ | _ -> def :: preprocess defs
+ end
+
| def :: defs -> def :: preprocess defs
let preprocess_ast (Parse_ast.Defs defs) = Parse_ast.Defs (preprocess defs)