From c6067dd8cba22ec0fc15e952998118b4a147abda Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 26 Mar 2019 11:16:17 +0100 Subject: [PATCH] Add ldi tests --- tests/ldi_c.c | 22 ++++++++++++++++++++++ tests/ldi_d.c | 22 ++++++++++++++++++++++ tests/ldi_f.c | 22 ++++++++++++++++++++++ tests/ldi_i.c | 22 ++++++++++++++++++++++ tests/ldi_l.c | 24 ++++++++++++++++++++++++ tests/ldi_s.c | 22 ++++++++++++++++++++++ tests/ldi_uc.c | 22 ++++++++++++++++++++++ tests/ldi_ui.c | 24 ++++++++++++++++++++++++ tests/ldi_us.c | 22 ++++++++++++++++++++++ 9 files changed, 202 insertions(+) create mode 100644 tests/ldi_c.c create mode 100644 tests/ldi_d.c create mode 100644 tests/ldi_f.c create mode 100644 tests/ldi_i.c create mode 100644 tests/ldi_l.c create mode 100644 tests/ldi_s.c create mode 100644 tests/ldi_uc.c create mode 100644 tests/ldi_ui.c create mode 100644 tests/ldi_us.c diff --git a/tests/ldi_c.c b/tests/ldi_c.c new file mode 100644 index 000000000..e08231596 --- /dev/null +++ b/tests/ldi_c.c @@ -0,0 +1,22 @@ +#include "test.h" + +static uint8_t data[] = { 0xff, 0x00, 0x42 }; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ + jit_begin(j, arena_base, arena_size); + + jit_ldi_c(j, JIT_R0, &data[0]); + jit_retr(j, JIT_R0); + + uintmax_t (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == -1); +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} diff --git a/tests/ldi_d.c b/tests/ldi_d.c new file mode 100644 index 000000000..562e35d99 --- /dev/null +++ b/tests/ldi_d.c @@ -0,0 +1,22 @@ +#include "test.h" + +static double data = -1.5; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ + jit_begin(j, arena_base, arena_size); + + jit_ldi_d(j, JIT_F0, &data); + jit_retr_d(j, JIT_F0); + + double (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == data); +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} diff --git a/tests/ldi_f.c b/tests/ldi_f.c new file mode 100644 index 000000000..ff9abd006 --- /dev/null +++ b/tests/ldi_f.c @@ -0,0 +1,22 @@ +#include "test.h" + +static float data = -1.5f; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ + jit_begin(j, arena_base, arena_size); + + jit_ldi_f(j, JIT_F0, &data); + jit_retr_f(j, JIT_F0); + + float (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == data); +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} diff --git a/tests/ldi_i.c b/tests/ldi_i.c new file mode 100644 index 000000000..7270cbcf0 --- /dev/null +++ b/tests/ldi_i.c @@ -0,0 +1,22 @@ +#include "test.h" + +static uint32_t data = 0xffffffff; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ + jit_begin(j, arena_base, arena_size); + + jit_ldi_i(j, JIT_R0, &data); + jit_retr(j, JIT_R0); + + uintmax_t (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == -1); +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} diff --git a/tests/ldi_l.c b/tests/ldi_l.c new file mode 100644 index 000000000..299987049 --- /dev/null +++ b/tests/ldi_l.c @@ -0,0 +1,24 @@ +#include "test.h" + +static uint64_t data = 0xffffffffffffffff; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ +#if __WORDSIZE > 32 + jit_begin(j, arena_base, arena_size); + + jit_ldi_l(j, JIT_R0, &data); + jit_retr(j, JIT_R0); + + uintmax_t (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == -1); +#endif +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} diff --git a/tests/ldi_s.c b/tests/ldi_s.c new file mode 100644 index 000000000..5713370fa --- /dev/null +++ b/tests/ldi_s.c @@ -0,0 +1,22 @@ +#include "test.h" + +static uint16_t data = 0xffff; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ + jit_begin(j, arena_base, arena_size); + + jit_ldi_s(j, JIT_R0, &data); + jit_retr(j, JIT_R0); + + uintmax_t (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == -1); +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} diff --git a/tests/ldi_uc.c b/tests/ldi_uc.c new file mode 100644 index 000000000..a99af0eda --- /dev/null +++ b/tests/ldi_uc.c @@ -0,0 +1,22 @@ +#include "test.h" + +static uint8_t data[] = { 0xff, 0x00, 0x42 }; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ + jit_begin(j, arena_base, arena_size); + + jit_ldi_uc(j, JIT_R0, data); + jit_retr(j, JIT_R0); + + uintmax_t (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == 0xff); +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} diff --git a/tests/ldi_ui.c b/tests/ldi_ui.c new file mode 100644 index 000000000..c0458a7cb --- /dev/null +++ b/tests/ldi_ui.c @@ -0,0 +1,24 @@ +#include "test.h" + +static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 }; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ +#if __WORDSIZE > 32 + jit_begin(j, arena_base, arena_size); + + jit_ldi_ui(j, JIT_R0, data); + jit_retr(j, JIT_R0); + + uintmax_t (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == data[0]); +#endif +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} diff --git a/tests/ldi_us.c b/tests/ldi_us.c new file mode 100644 index 000000000..3c9ca5122 --- /dev/null +++ b/tests/ldi_us.c @@ -0,0 +1,22 @@ +#include "test.h" + +static uint16_t data[] = { 0xffff, 0x0000, 0x4242 }; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ + jit_begin(j, arena_base, arena_size); + + jit_ldi_us(j, JIT_R0, data); + jit_retr(j, JIT_R0); + + uintmax_t (*f)(void) = jit_end(j, NULL); + + ASSERT(f() == data[0]); +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +}