summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--riscv/Makefile6
-rw-r--r--riscv/riscv_prelude.h19
2 files changed, 22 insertions, 3 deletions
diff --git a/riscv/Makefile b/riscv/Makefile
index e5e21709..20ff8160 100644
--- a/riscv/Makefile
+++ b/riscv/Makefile
@@ -32,10 +32,10 @@ coverage: _sbuild/coverage.native
mkdir bisect && mv bisect*.out bisect/
mkdir coverage && bisect-ppx-report -html coverage/ -I _sbuild/ bisect/bisect*.out
-riscv.c: $(SAIL_SRCS) main.sail Makefile
- $(SAIL) -O -memo_z3 -c $(SAIL_SRCS) main.sail 1> $@
+riscv.c: $(SAIL_SRCS) main.sail Makefile riscv_prelude.h
+ $(SAIL) -O -memo_z3 -c -c_include "riscv_prelude.h" $(SAIL_SRCS) main.sail 1> $@
-riscv_c: riscv.c
+riscv_c: riscv.c Makefile
gcc -O2 riscv.c ../lib/*.c -lgmp -lz -I ../lib -o riscv_c
latex: $(SAIL_SRCS) Makefile
diff --git a/riscv/riscv_prelude.h b/riscv/riscv_prelude.h
new file mode 100644
index 00000000..94f02b83
--- /dev/null
+++ b/riscv/riscv_prelude.h
@@ -0,0 +1,19 @@
+#include "sail.h"
+#include "rts.h"
+
+void string_append(sail_string *dst, sail_string s1, sail_string s2);
+bool string_startswith(sail_string s, sail_string prefix);
+void string_length(sail_int *len, sail_string s);
+void string_drop(sail_string *dst, sail_string s, sail_int len);
+unit print_string(sail_string prefix, sail_string msg);
+
+void add_vec(sail_bits *dst, sail_bits s1, sail_bits s2);
+void add_vec_int(sail_bits *dst, sail_bits src, sail_int i);
+
+void sub_vec(sail_bits *dst, sail_bits s1, sail_bits s2);
+void sub_vec_int(sail_bits *dst, sail_bits src, sail_int i);
+
+void not_vec(sail_bits *dst, sail_bits src);
+void xor_vec(sail_bits *dst, sail_bits s1, sail_bits s2);
+
+