diff options
Diffstat (limited to 'tests/addx.c')
-rw-r--r-- | tests/addx.c | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/tests/addx.c b/tests/addx.c deleted file mode 100644 index eed95ba..0000000 --- a/tests/addx.c +++ /dev/null @@ -1,79 +0,0 @@ -/* still not entirely sure about semantics, should 32bit systems report carry on - * 32bit or 64bit internal register sizes? */ -#warning "carry operations unimplemented but TODO" -int main(){ -} - -/* would look something like this */ -#if 0 -#include <ejit/ejit.h> -#include <assert.h> -#include "do_jit.h" - -int main() -{ - struct ejit_operand operands[2] = { - EJIT_OPERAND_GPR(0, EJIT_TYPE(long)), - EJIT_OPERAND_GPR(1, EJIT_TYPE(long)) - }; - struct ejit_func *f = ejit_create_func(EJIT_TYPE(long), 2, operands); - - ejit_movi(j, EJIT_GPR(2), EJIT_GPR(0)); - ejit_addcr(j, EJIT_GPR(0), EJIT_GPR(0), EJIT_GPR(1)); - ejit_addxi(j, EJIT_GPR(2), EJIT_GPR(2), 0); - ejit_retr(j, EJIT_GPR(2)); - - ejit_select_compile_func(f, 3, 0, EJIT_USE64(long), do_jit); - - jit_word_t (*f)(jit_word_t, jit_word_t) = ret; - - assert(ejit_run_func_2(f, EJIT_ARG(0, long), EJIT_ARG(0, long)) == 0); - -#if EJIT_WORDSIZE == 32 - /* carry */ - assert(ejit_run_func_2(f, - EJIT_ARG(0xffffffff, long), - EJIT_ARG(0xffffffff, long)) == 1); - /* overflow */ - assert(ejit_run_func_2(f, - EJIT_ARG(0x7fffffff long), - EJIT_ARG(1, long)) == 0); - - /* overflow */ - assert(ejit_run_func_2(f, - EJIT_ARG(0x7fffffff, long), - EJIT_ARG(0x7fffffff, long)) == 0); - - /* carry */ - assert(ejit_run_func_2(f, - EJIT_ARG(0x7fffffff, long), - EJIT_ARG(0x80000000, long)) == 0); - - /* carry+overflow */ - assert(ejit_run_func_2(f, - EJIT_ARG(0x80000000, long), - EJIT_ARG(0x80000000, long)) == 1); -#else - /* nothing */ - assert(f(0xffffffff, 0xffffffff) == 0); - /* nothing */ - assert(f(0x7fffffff, 1) == 0); - /* nothing */ - assert(f(0x7fffffff, 0x7fffffff) == 0); - /* nothing */ - assert(f(0x7fffffff, 0x80000000) == 0); - /* nothing */ - assert(f(0x80000000, 0x80000000) == 0); - /* carry */ - assert(f(0xffffffffffffffff, 0xffffffffffffffff) == 1); - /* overflow */ - assert(f(0x7fffffffffffffff, 1) == 0); - /* overflow */ - assert(f(0x7fffffffffffffff, 0x7fffffffffffffff) == 0); - /* overflow */ - assert(f(0x7fffffffffffffff, 0x8000000000000000) == 0); - /* carry+overflow */ - assert(f(0x8000000000000000, 0x8000000000000000) == 1); -#endif -} -#endif |