diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sail.c | 22 | ||||
| -rw-r--r-- | lib/sail.h | 10 |
2 files changed, 26 insertions, 6 deletions
@@ -35,7 +35,7 @@ void cleanup_library(void) mpq_clear(sail_lib_tmp_real); } -bool eq_unit(const unit a, const unit b) +bool EQUAL(unit)(const unit a, const unit b) { return true; } @@ -63,7 +63,7 @@ bool not(const bool b) { return !b; } -bool eq_bool(const bool a, const bool b) { +bool EQUAL(bool)(const bool a, const bool b) { return a == b; } @@ -117,6 +117,11 @@ bool eq_string(const sail_string str1, const sail_string str2) return strcmp(str1, str2) == 0; } +bool EQUAL(sail_string)(const sail_string str1, const sail_string str2) +{ + return strcmp(str1, str2) == 0; +} + void undefined_string(sail_string *str, const unit u) {} void concat_str(sail_string *stro, const sail_string str1, const sail_string str2) @@ -198,6 +203,12 @@ bool eq_int(const sail_int op1, const sail_int op2) } inline +bool EQUAL(sail_int)(const sail_int op1, const sail_int op2) +{ + return !abs(mpz_cmp(op1, op2)); +} + +inline bool lt(const sail_int op1, const sail_int op2) { return mpz_cmp(op1, op2) < 0; @@ -533,6 +544,11 @@ bool eq_bits(const sail_bits op1, const sail_bits op2) return true; } +bool EQUAL(sail_bits)(const sail_bits op1, const sail_bits op2) +{ + return eq_bits(op1, op2); +} + bool neq_bits(const sail_bits op1, const sail_bits op2) { assert(op1.len == op2.len); @@ -928,7 +944,7 @@ void to_real(real *rop, const sail_int op) mpq_canonicalize(*rop); } -bool eq_real(const real op1, const real op2) +bool EQUAL(real)(const real op1, const real op2) { return mpq_cmp(op1, op2) == 0; } @@ -30,6 +30,7 @@ void cleanup_library(void); #define COPY(type) copy_ ## type #define KILL(type) kill_ ## type #define UNDEFINED(type) undefined_ ## type +#define EQUAL(type) eq_ ## type #define SAIL_BUILTIN_TYPE(type)\ void create_ ## type(type *);\ @@ -44,7 +45,7 @@ typedef int unit; #define UNIT 0 unit UNDEFINED(unit)(const unit); -bool eq_unit(const unit, const unit); +bool EQUAL(unit)(const unit, const unit); unit skip(const unit); @@ -55,7 +56,7 @@ unit skip(const unit); * short-circuiting evaluation. */ bool not(const bool); -bool eq_bool(const bool, const bool); +bool EQUAL(bool)(const bool, const bool); bool UNDEFINED(bool)(const unit); /* ***** Sail strings ***** */ @@ -73,6 +74,7 @@ void hex_str(sail_string *str, const mpz_t n); void undefined_string(sail_string *str, const unit u); bool eq_string(const sail_string, const sail_string); +bool EQUAL(sail_string)(const sail_string, const sail_string); void concat_str(sail_string *stro, const sail_string str1, const sail_string str2); @@ -114,6 +116,7 @@ typedef __int128 sail_int; * Comparison operators for integers */ bool eq_int(const sail_int, const sail_int); +bool EQUAL(sail_int)(const sail_int, const sail_int); bool lt(const sail_int, const sail_int); bool gt(const sail_int, const sail_int); @@ -218,6 +221,7 @@ 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); bool eq_bits(const sail_bits op1, const sail_bits op2); +bool EQUAL(sail_bits)(const sail_bits op1, const sail_bits op2); bool neq_bits(const sail_bits op1, const sail_bits op2); void vector_subrange_sail_bits(sail_bits *rop, @@ -292,7 +296,7 @@ void round_down(sail_int *rop, const real op); void to_real(real *rop, const sail_int op); -bool eq_real(const real op1, const real op2); +bool EQUAL(real)(const real op1, const real op2); bool lt_real(const real op1, const real op2); bool gt_real(const real op1, const real op2); |
