summaryrefslogtreecommitdiff
path: root/lib/sail.h
diff options
context:
space:
mode:
authorAlasdair Armstrong2018-06-21 16:06:21 +0100
committerAlasdair Armstrong2018-06-21 16:06:21 +0100
commit3658789d204eb100e901a2adb67b6bf8a30157bf (patch)
tree65eb0255c01214cc044ef88f3e15c8b6641901ec /lib/sail.h
parent5489108f054fb51aa190e1fda847d8ab59ee915b (diff)
Fix MIPS wrt changes to C runtime
This plus changes to bitfield internals is enough to run some MIPS tests at 1Mhz.
Diffstat (limited to 'lib/sail.h')
-rw-r--r--lib/sail.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/sail.h b/lib/sail.h
index 2a143605..e3e21c92 100644
--- a/lib/sail.h
+++ b/lib/sail.h
@@ -9,6 +9,8 @@
#include<gmp.h>
#endif
+#include<time.h>
+
/*
* Called by the RTS to initialise and clear any library state.
*/
@@ -44,6 +46,8 @@ typedef int unit;
unit UNDEFINED(unit)(const unit);
bool eq_unit(const unit, const unit);
+unit skip(const unit);
+
/* ***** Sail booleans ***** */
/*
@@ -203,8 +207,13 @@ void or_bits(sail_bits *rop, const sail_bits op1, const sail_bits op2);
void xor_bits(sail_bits *rop, const sail_bits op1, const sail_bits op2);
void not_bits(sail_bits *rop, const sail_bits op);
+void mults_vec(sail_bits *rop, const sail_bits op1, const sail_bits op2);
+void mult_vec(sail_bits *rop, const sail_bits op1, const sail_bits op2);
+
void zeros(sail_bits *rop, const sail_int op);
+
void zero_extend(sail_bits *rop, const sail_bits op, const sail_int len);
+void sign_extend(sail_bits *rop, const sail_bits op, const sail_int len);
void length_sail_bits(sail_int *rop, const sail_bits op);
@@ -250,6 +259,13 @@ void set_slice(sail_bits *rop,
const sail_int start_mpz,
const sail_bits slice);
+
+void shift_bits_left(sail_bits *rop, const sail_bits op1, const sail_bits op2);
+void shift_bits_right(sail_bits *rop, const sail_bits op1, const sail_bits op2);
+void shift_bits_right_arith(sail_bits *rop, const sail_bits op1, const sail_bits op2);
+
+void reverse_endianness(sail_bits*, sail_bits);
+
/* ***** Sail reals ***** */
typedef mpf_t real;
@@ -310,3 +326,7 @@ unit print_int(const sail_string str, const sail_int op);
unit prerr_int(const sail_string str, const sail_int op);
unit sail_putchar(const sail_int op);
+
+/* ***** Misc ***** */
+
+void get_time_ns(sail_int*, const unit);