diff options
author | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-06-25 23:25:29 +0300 |
---|---|---|
committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2024-06-25 23:25:29 +0300 |
commit | 01052811be08444458576dda994d15f8823560ea (patch) | |
tree | c52f2d72ef0ef703e755fcf05ee5d3a02f050acc /deps/lightening/tests/z_branch.c | |
parent | 449ca1e570aa421992bbe98c6928def1ba8896fd (diff) | |
download | posthaste-01052811be08444458576dda994d15f8823560ea.tar.gz posthaste-01052811be08444458576dda994d15f8823560ea.zip |
initial rewrite to use ejit
+ Doesn't actually link yet due to missing stuff from ejit, will have to
add them (tomorrow?)
Diffstat (limited to 'deps/lightening/tests/z_branch.c')
-rw-r--r-- | deps/lightening/tests/z_branch.c | 584 |
1 files changed, 0 insertions, 584 deletions
diff --git a/deps/lightening/tests/z_branch.c b/deps/lightening/tests/z_branch.c deleted file mode 100644 index 30f0ea5..0000000 --- a/deps/lightening/tests/z_branch.c +++ /dev/null @@ -1,584 +0,0 @@ -#include "test.h" - -#if __WORDSIZE == 64 -# define I7f 0x7fffffffffffffff -# define I80 0x8000000000000000 -# define I81 0x8000000000000001 -# define Iff 0xffffffffffffffff -#else -# define I7f 0x7fffffff -# define I80 0x80000000 -# define I81 0x80000001 -# define Iff 0xffffffff -#endif - -#define NaN (0.0 / 0.0) - -#if defined(DEBUG) -#define dump_args(comp, r0, r1)\ - jit_calli_1(_jit, puts,\ - jit_operand_imm(JIT_OPERAND_ABI_POINTER,\ - (jit_imm_t)#comp " " #r0 " " #r1)); -#else -#define dump_args(comp, r0, r1) -#endif - -#define BOP(N, Ls, Rs, Lu, Ru, R0, R1) \ -{ \ - dump_args(N##r, Ls, Rs); \ - jit_movi(_jit, R0, Ls); \ - jit_movi(_jit, R1, Rs); \ - jit_reloc_t r = jit_b##N##r(_jit, R0, R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i, Ls, Rs); \ - jit_movi(_jit, R0, Ls); \ - jit_reloc_t r = jit_b##N##i(_jit, R0, Rs); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##r_u, Lu, Ru); \ - jit_movi(_jit, R0, Lu); \ - jit_movi(_jit, R1, Ru); \ - jit_reloc_t r = jit_b##N##r_u(_jit, R0, R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i_u, Lu, Ru); \ - jit_movi(_jit, R0, Lu); \ - jit_reloc_t r = jit_b##N##i_u(_jit, R0, Ru); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} - -#define EB(N, L, R, R0, R1) \ -{ \ - dump_args(N##r, L, R); \ - jit_movi(_jit, R0, L); \ - jit_movi(_jit, R1, R); \ - jit_reloc_t r = jit_b##N##r(_jit, R0, R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i, L, R); \ - jit_movi(_jit, R0, L); \ - jit_reloc_t r = jit_b##N##i(_jit, R0, R); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ - -#define XEB(N, L, R, R0, R1) \ -{ \ - dump_args(N##r, L, R); \ - jit_movi(_jit, R0, L); \ - jit_movi(_jit, R1, R); \ - jit_reloc_t r = jit_b##N##r(_jit, R0, R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i, L, R); \ - jit_movi(_jit, R0, L); \ - jit_reloc_t r = jit_b##N##i(_jit, R0, R); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} - -#define XBOP(N, Ls, Rs, Lu, Ru, R0, R1) \ -{ \ - dump_args(N##r, Ls, Rs); \ - jit_movi(_jit, R0, Ls); \ - jit_movi(_jit, R1, Rs); \ - jit_reloc_t r = jit_b##N##r(_jit, R0, R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i, Ls, Rs); \ - jit_movi(_jit, R0, Ls); \ - jit_reloc_t r = jit_b##N##i(_jit, R0, Rs); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##r_u, Lu, Ru); \ - jit_movi(_jit, R0, Lu); \ - jit_movi(_jit, R1, Ru); \ - jit_reloc_t r = jit_b##N##r_u(_jit, R0, R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i_u, Lu, Ru); \ - jit_movi(_jit, R0, Lu); \ - jit_reloc_t r = jit_b##N##i_u(_jit, R0, Ru); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} - -#define BOPI(N, Ls, Rs, Lu, Ru) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_V1) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_V2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_R0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_R1) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_R2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_V0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_V2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_R0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_R1) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_R2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_V0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_V1) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_R0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_R1) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_R2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_V0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_V1) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_V2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_R1) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_R2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_V0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_V1) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_V2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_R0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_R2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_V0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_V1) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_V2) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_R0) \ - BOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_R1) - -#define EBI(N, L, R) \ - EB(N, L, R, JIT_V0, JIT_V1) \ - EB(N, L, R, JIT_V0, JIT_V2) \ - EB(N, L, R, JIT_V0, JIT_R0) \ - EB(N, L, R, JIT_V0, JIT_R1) \ - EB(N, L, R, JIT_V0, JIT_R2) \ - EB(N, L, R, JIT_V1, JIT_V0) \ - EB(N, L, R, JIT_V1, JIT_V2) \ - EB(N, L, R, JIT_V1, JIT_R0) \ - EB(N, L, R, JIT_V1, JIT_R1) \ - EB(N, L, R, JIT_V1, JIT_R2) \ - EB(N, L, R, JIT_V2, JIT_V0) \ - EB(N, L, R, JIT_V2, JIT_V1) \ - EB(N, L, R, JIT_V2, JIT_R0) \ - EB(N, L, R, JIT_V2, JIT_R1) \ - EB(N, L, R, JIT_V2, JIT_R2) \ - EB(N, L, R, JIT_R0, JIT_V0) \ - EB(N, L, R, JIT_R0, JIT_V1) \ - EB(N, L, R, JIT_R0, JIT_V2) \ - EB(N, L, R, JIT_R0, JIT_R1) \ - EB(N, L, R, JIT_R0, JIT_R2) \ - EB(N, L, R, JIT_R1, JIT_V0) \ - EB(N, L, R, JIT_R1, JIT_V1) \ - EB(N, L, R, JIT_R1, JIT_V2) \ - EB(N, L, R, JIT_R1, JIT_R0) \ - EB(N, L, R, JIT_R1, JIT_R2) \ - EB(N, L, R, JIT_R2, JIT_V0) \ - EB(N, L, R, JIT_R2, JIT_V1) \ - EB(N, L, R, JIT_R2, JIT_V2) \ - EB(N, L, R, JIT_R2, JIT_R0) \ - EB(N, L, R, JIT_R2, JIT_R1) - - -#define XEBI(N, L, R) \ - XEB(N, L, R, JIT_V0, JIT_V1) \ - XEB(N, L, R, JIT_V0, JIT_V2) \ - XEB(N, L, R, JIT_V0, JIT_R0) \ - XEB(N, L, R, JIT_V0, JIT_R1) \ - XEB(N, L, R, JIT_V0, JIT_R2) \ - XEB(N, L, R, JIT_V1, JIT_V0) \ - XEB(N, L, R, JIT_V1, JIT_V2) \ - XEB(N, L, R, JIT_V1, JIT_R0) \ - XEB(N, L, R, JIT_V1, JIT_R1) \ - XEB(N, L, R, JIT_V1, JIT_R2) \ - XEB(N, L, R, JIT_V2, JIT_V0) \ - XEB(N, L, R, JIT_V2, JIT_V1) \ - XEB(N, L, R, JIT_V2, JIT_R0) \ - XEB(N, L, R, JIT_V2, JIT_R1) \ - XEB(N, L, R, JIT_V2, JIT_R2) \ - XEB(N, L, R, JIT_R0, JIT_V0) \ - XEB(N, L, R, JIT_R0, JIT_V1) \ - XEB(N, L, R, JIT_R0, JIT_V2) \ - XEB(N, L, R, JIT_R0, JIT_R1) \ - XEB(N, L, R, JIT_R0, JIT_R2) \ - XEB(N, L, R, JIT_R1, JIT_V0) \ - XEB(N, L, R, JIT_R1, JIT_V1) \ - XEB(N, L, R, JIT_R1, JIT_V2) \ - XEB(N, L, R, JIT_R1, JIT_R0) \ - XEB(N, L, R, JIT_R1, JIT_R2) \ - XEB(N, L, R, JIT_R2, JIT_V0) \ - XEB(N, L, R, JIT_R2, JIT_V1) \ - XEB(N, L, R, JIT_R2, JIT_V2) \ - XEB(N, L, R, JIT_R2, JIT_R0) \ - XEB(N, L, R, JIT_R2, JIT_R1) - -#define XBOPI(N, Ls, Rs, Lu, Ru) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_V1) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_V2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_R0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_R1) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V0, JIT_R2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_V0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_V2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_R0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_R1) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V1, JIT_R2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_V0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_V1) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_R0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_R1) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_V2, JIT_R2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_V0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_V1) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_V2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_R1) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R0, JIT_R2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_V0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_V1) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_V2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_R0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R1, JIT_R2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_V0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_V1) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_V2) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_R0) \ - XBOP(N, Ls, Rs, Lu, Ru, JIT_R2, JIT_R1) - -#define TBOPF(N, T, L, R) \ -{ \ - dump_args(N##r##_##T, L, R); \ - jit_movi_##T(_jit, JIT_F0, L); \ - jit_movi_##T(_jit, JIT_F1, R); \ - jit_reloc_t r = \ - jit_b##N##r##_##T(_jit, JIT_F0, JIT_F1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i##_##T, L, R); \ - jit_movi_##T(_jit, JIT_F0, L); \ - jit_movi_##T(_jit, JIT_F1, R); \ - jit_reloc_t r = \ - jit_b##N##r##_##T(_jit, JIT_F0, JIT_F1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##r##_##T, L, NaN); \ - jit_movi_##T(_jit, JIT_F0, L); \ - jit_movi_##T(_jit, JIT_F1, NaN); \ - jit_reloc_t err = \ - jit_b##N##r##_##T(_jit, JIT_F0, JIT_F1); \ - jit_reloc_t ok = jit_jmp(_jit); \ - jit_patch_here(_jit, err); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, ok); \ -} \ -{ \ - dump_args(N##i##_##T, L, NaN); \ - jit_movi_##T(_jit, JIT_F0, L); \ - jit_movi_##T(_jit, JIT_F1, NaN); \ - jit_reloc_t err = \ - jit_b##N##r##_##T(_jit, JIT_F0, JIT_F1); \ - jit_reloc_t ok = jit_jmp(_jit); \ - jit_patch_here(_jit, err); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, ok); \ -} - -#define BOPF(N, L, R) \ - TBOPF(N, f, L, R) \ - TBOPF(N, d, L, R) - -#define TUBOPF(N, T, L, R) \ -{ \ - dump_args(N##r##_##T, L, R); \ - jit_movi_##T(_jit, JIT_F0, L); \ - jit_movi_##T(_jit, JIT_F1, R); \ - jit_reloc_t r = \ - jit_b##N##r##_##T(_jit, JIT_F0, JIT_F1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i##_##T, L, R); \ - jit_movi_##T(_jit, JIT_F0, L); \ - jit_movi_##T(_jit, JIT_F1, R); \ - jit_reloc_t r = \ - jit_b##N##r##_##T(_jit, JIT_F0, JIT_F1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##r##_##T, L, NaN); \ - jit_movi_##T(_jit, JIT_F0, L); \ - jit_movi_##T(_jit, JIT_F1, NaN); \ - jit_reloc_t r = \ - jit_b##N##r##_##T(_jit, JIT_F0, JIT_F1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i##_##T, L, NaN); \ - jit_movi_##T(_jit, JIT_F0, L); \ - jit_movi_##T(_jit, JIT_F1, NaN); \ - jit_reloc_t r = \ - jit_b##N##r##_##T(_jit, JIT_F0, JIT_F1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} - -#define UBOPF(N, L, R) \ - TUBOPF(N, f, L, R) \ - TUBOPF(N, d, L, R) - -#define ARGB(N, L, R) \ -{ \ - dump_args(N##r, L, R); \ - jit_movi(_jit, JIT_R0, L); \ - jit_movi(_jit, JIT_R1, R); \ - jit_reloc_t r = \ - jit_b##N##r(_jit, JIT_R0, JIT_R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i, L, R); \ - jit_movi(_jit, JIT_R0, L); \ - jit_reloc_t r = jit_b##N##i(_jit, JIT_R0, R); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##r_u, R, L); \ - jit_movi(_jit, JIT_R0, R); \ - jit_movi(_jit, JIT_R1, L); \ - jit_reloc_t r = \ - jit_b##N##r_u(_jit, JIT_R0, JIT_R1);\ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i_u, R, L); \ - jit_movi(_jit, JIT_R0, R); \ - jit_reloc_t r = jit_b##N##i_u(_jit, JIT_R0, L); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} - -#define ARGBS() \ - ARGB(lt, -1, 1) \ - ARGB(le, -1, -1) \ - ARGB(ge, -1, -1) \ - ARGB(gt, 1, -1) \ - -#define OVFGB(N, L, R, U, D) \ -{ \ - dump_args(N##r, L, ); \ - jit_movi(_jit, JIT_R0, L); \ - jit_movi(_jit, JIT_R1, 1); \ - jit_reloc_t r = \ - jit_b##N##r(_jit, JIT_R0, JIT_R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##r_u, R, ); \ - jit_movi(_jit, JIT_R0, R); \ - jit_movi(_jit, JIT_R1, 1); \ - jit_reloc_t r = \ - jit_b##N##r_u(_jit, JIT_R0, JIT_R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i, U, ); \ - jit_movi(_jit, JIT_R0, U); \ - jit_reloc_t r = \ - jit_b##N##i(_jit, JIT_R0, 1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i_u, D, ); \ - jit_movi(_jit, JIT_R0, D); \ - jit_reloc_t r = \ - jit_b##N##i_u(_jit, JIT_R0, 1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} - -#define OVFGBS() \ - OVFGB(oadd, I7f, Iff, I7f, Iff) \ - OVFGB(xadd, I80, I7f, I80, I7f) \ - OVFGB(osub, I80, 0x0, I80, 0x0) \ - OVFGB(xsub, I81, I80, I81, I80) - -#define MGB(N, L, R) \ -{ \ - dump_args(N##r, L, R); \ - jit_movi(_jit, JIT_R0, L); \ - jit_movi(_jit, JIT_R1, R); \ - jit_reloc_t r = \ - jit_b##N##r(_jit, JIT_R0, JIT_R1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i, L, R); \ - jit_movi(_jit, JIT_R0, L); \ - jit_reloc_t r = jit_b##N##i(_jit, JIT_R0, R); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} - -#define MBGS() \ - MGB(ms, 1, 3) \ - MGB(mc, 1, 2) \ - MGB(ne, -3, 3) \ - MGB(eq, 3, 3) - -#define ARFGB(N, L, R) \ -{ \ - dump_args(N##r_f, L, R); \ - jit_movi_f(_jit, JIT_F0, L); \ - jit_movi_f(_jit, JIT_F1, R); \ - jit_reloc_t r = \ - jit_b##N##r_f(_jit, JIT_F0, JIT_F1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} \ -{ \ - dump_args(N##i_f, L, R); \ - jit_movi_f(_jit, JIT_F0, L); \ - jit_movi_f(_jit, JIT_F1, R); \ - jit_reloc_t r = \ - jit_b##N##r_f(_jit, JIT_F0, JIT_F1); \ - jit_calli_0(_jit, abort); \ - jit_patch_here(_jit, r); \ -} - -#define ARFGBS() \ - ARFGB(lt, 1, 2) \ - ARFGB(le, -1, -1) \ - ARFGB(ge, -3, -3) \ - ARFGB(gt, 2, 1) \ - ARFGB(eq, -2, -2) \ - ARFGB(ne, 0, 2) - -static size_t -run_test(jit_state_t *_jit, uint8_t *arena_base, size_t arena_size) -{ - void (*function)(); - jit_begin(_jit, arena_base, arena_size); - size_t frame = jit_enter_jit_abi(_jit, 3, 0, 0); - - ARGBS(); - MBGS(); - OVFGBS(); - ARFGBS(); - - BOPI(lt, -1, 1, 1, -1) - BOPI(le, -1, -1, 1, 1) - EBI(eq, 32, 32) - BOPI(ge, -2, -2, 2, 2) - BOPI(gt, 2, -2, -2, 2) - EBI(ne, 3, -3) - XEBI(ms, 1, 3) - XEBI(mc, 1, 2) - XBOPI(oadd, I7f, 1, Iff, 1) - XBOPI(xadd, I80, 1, I7f, 1) - XBOPI(osub, I80, 1, 0, 1) - XBOPI(xsub, I81, 1, I80, 1) - BOPF(lt, 1, 2) - BOPF(le, 2, 2) - BOPF(eq, 3, 3) - BOPF(ge, 3, 3) - BOPF(gt, 4, 3) - UBOPF(ne, 4, 3) - UBOPF(unlt, 1, 2) - UBOPF(unle, 2, 2) - UBOPF(uneq, 3, 3) - UBOPF(unge, 3, 3) - UBOPF(ungt, 4, 3) - BOPF(ltgt, 4, 3) - - { - dump_args(ordr, 5, 5); - jit_movi_f(_jit, JIT_F0, 5); - jit_movi_f(_jit, JIT_F1, 5); - jit_reloc_t r = jit_bordr_f(_jit, JIT_F0, JIT_F1); - jit_calli_0(_jit, abort); - jit_patch_here(_jit, r); - } - { - dump_args(ordr, 5, 1); - jit_movi_f(_jit, JIT_F0, 5); - jit_movi_f(_jit, JIT_F1, 1); - jit_reloc_t r = jit_bordr_f(_jit, JIT_F0, JIT_F1); - jit_calli_0(_jit, abort); - jit_patch_here(_jit, r); - } - { - dump_args(ordr, 5, NaN); - jit_movi_f(_jit, JIT_F0, 5); - jit_movi_f(_jit, JIT_F1, NaN); - jit_reloc_t err = jit_bordr_f(_jit, JIT_F0, JIT_F1); - jit_reloc_t ok = jit_jmp(_jit); - jit_patch_here(_jit, err); - jit_calli_0(_jit, abort); - jit_patch_here(_jit, ok); - } - { - dump_args(unordr, 5, 5); - jit_movi_f(_jit, JIT_F0, 5); - jit_movi_f(_jit, JIT_F1, 5); - jit_reloc_t err = jit_bunordr_f(_jit, JIT_F0, JIT_F1); - jit_reloc_t ok = jit_jmp(_jit); - jit_patch_here(_jit, err); - jit_calli_0(_jit, abort); - jit_patch_here(_jit, ok); - } - { - dump_args(unordr, 5, 1); - jit_movi_f(_jit, JIT_F0, 5); - jit_movi_f(_jit, JIT_F1, 1); - jit_reloc_t err = jit_bunordr_f(_jit, JIT_F0, JIT_F1); - jit_reloc_t ok = jit_jmp(_jit); - jit_patch_here(_jit, err); - jit_calli_0(_jit, abort); - jit_patch_here(_jit, ok); - } - { - dump_args(unordr, 5, NaN); - jit_movi_f(_jit, JIT_F0, 5); - jit_movi_f(_jit, JIT_F1, NaN); - jit_reloc_t r = jit_bunordr_f(_jit, JIT_F0, JIT_F1); - jit_calli_0(_jit, abort); - jit_patch_here(_jit, r); - } - - jit_leave_jit_abi(_jit, 3, 0, frame); - jit_ret(_jit); - - size_t size; - function = jit_end(_jit, &size); - - if (function) - (*function)(); - else - return size; - - return 0; -} - -int main(int argc, char *argv[]) -{ - return main_compiler(argc, argv, run_test); -} |