diff options
| author | Robert Norton | 2018-07-12 17:04:40 +0100 |
|---|---|---|
| committer | Robert Norton | 2018-07-12 17:05:19 +0100 |
| commit | 3c4a27d7041d71fb229970dacab013cf84669755 (patch) | |
| tree | 390447236c61e7de0d4f6bbaae9276635edc72d6 /lib | |
| parent | e6977ee8e2ba7a53d69f2fb3b715846a62a50454 (diff) | |
Add missing builtins needed for cheri128 C. Still doesn't build possibly due to code gen issue.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sail.c | 13 | ||||
| -rw-r--r-- | lib/sail.h | 3 |
2 files changed, 16 insertions, 0 deletions
@@ -781,6 +781,19 @@ void shift_bits_right_arith(sail_bits *rop, const sail_bits op1, const sail_bits } } +void shiftl(sail_bits *rop, const sail_bits op1, const sail_int op2) +{ + rop->len = op1.len; + mpz_mul_2exp(*rop->bits, *op1.bits, mpz_get_ui(op2)); + normalize_sail_bits(rop); +} + +void shiftr(sail_bits *rop, const sail_bits op1, const sail_int op2) +{ + rop->len = op1.len; + mpz_tdiv_q_2exp(*rop->bits, *op1.bits, mpz_get_ui(op2)); +} + void reverse_endianness(sail_bits *rop, const sail_bits op) { rop->len = op.len; @@ -273,6 +273,9 @@ 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 shiftl(sail_bits *rop, const sail_bits op1, const sail_int op2); +void shiftr(sail_bits *rop, const sail_bits op1, const sail_int op2); + void reverse_endianness(sail_bits*, sail_bits); /* ***** Sail reals ***** */ |
