diff options
Diffstat (limited to 'tests/stxr_d.c')
-rw-r--r-- | tests/stxr_d.c | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/tests/stxr_d.c b/tests/stxr_d.c index ee6e86a..fe21a2a 100644 --- a/tests/stxr_d.c +++ b/tests/stxr_d.c @@ -1,33 +1,35 @@ -#include "test.h" +#include <ejit/ejit.h> +#include <assert.h> +#include "do_jit.h" static double data[] = { -1.0, 0.0, 0.5 }; -static void -run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +int main() { - jit_begin(j, arena_base, arena_size); - size_t align = jit_enter_jit_abi(j, 0, 0, 0); - jit_load_args_3(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), - jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); + struct ejit_operand operands[3] = { + EJIT_OPERAND_GPR(0, EJIT_TYPE(void *)), + EJIT_OPERAND_GPR(1, EJIT_TYPE(int)), + EJIT_OPERAND_FPR(0, EJIT_TYPE(double)) + }; + struct ejit_func *f = ejit_create_func(EJIT_VOID, 3, operands); - jit_stxr_d(j, JIT_R0, JIT_R2, JIT_F0); - jit_leave_jit_abi(j, 0, 0, align); - jit_ret(j); + ejit_stxr_d(f, EJIT_FPR(0), EJIT_GPR(0), EJIT_GPR(1)); + ejit_ret(f); - void (*f)(void*, jit_word_t, double) = jit_end(j, NULL); + ejit_select_compile_func(f, 2, 1, EJIT_USE64(void *), do_jit); - ASSERT(data[0] == -1.0); - ASSERT(data[1] == 0.0); - ASSERT(data[2] == 0.5); - f(data, 8, 42.5); - ASSERT(data[0] == -1.0); - ASSERT(data[1] == 42.5); - ASSERT(data[2] == 0.5); -} + assert(data[0] == -1.0); + assert(data[1] == 0.0); + assert(data[2] == 0.5); + struct ejit_arg args[3] = { + EJIT_ARG(data, void *), + EJIT_ARG(sizeof(double), int), + EJIT_ARG(42.5, double) + }; + ejit_run_func(f, 3, args); + assert(data[0] == -1.0); + assert(data[1] == 42.5); + assert(data[2] == 0.5); -int -main (int argc, char *argv[]) -{ - return main_helper(argc, argv, run_test); + ejit_destroy_func(f); } |