From ac972e1dba0bc88cb3dbfea9a0a1d4b931c96a3d Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 14:37:35 +0200 Subject: [PATCH 01/18] Inline some internal definitions into backend-specific files --- lightening/aarch64.c | 8 +++++- lightening/alpha.c | 6 +++- lightening/arm.c | 12 +++++++- lightening/hppa.c | 6 +++- lightening/ia64.c | 6 +++- lightening/lightening.c | 63 ----------------------------------------- lightening/mips.c | 8 +++++- lightening/ppc.c | 8 +++++- lightening/s390.c | 6 +++- lightening/sparc.c | 22 ++++++++++++++ 10 files changed, 74 insertions(+), 71 deletions(-) diff --git a/lightening/aarch64.c b/lightening/aarch64.c index 332c4c0c6..65efb74c3 100644 --- a/lightening/aarch64.c +++ b/lightening/aarch64.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2018 Free Software Foundation, Inc. + * Copyright (C) 2013-2019 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -17,6 +17,12 @@ * Paulo Cesar Pereira de Andrade */ +# define JIT_RA0 _R0 +# define JIT_FA0 _V0 +# define JIT_SP _SP +# define JIT_RET _R0 +# define JIT_FRET _V0 + #define jit_arg_reg_p(i) ((i) >= 0 && (i) < 8) #define jit_arg_f_reg_p(i) ((i) >= 0 && (i) < 8) diff --git a/lightening/alpha.c b/lightening/alpha.c index 1f1e40634..71e7f8413 100644 --- a/lightening/alpha.c +++ b/lightening/alpha.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014-2018 Free Software Foundation, Inc. + * Copyright (C) 2014-2019 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -17,6 +17,10 @@ * Paulo Cesar Pereira de Andrade */ +# define JIT_SP _SP +# define JIT_RET _V0 +# define JIT_FRET _F0 + #define jit_arg_reg_p(i) ((i) >= 0 && (i) < 6) #define jit_arg_f_reg_p(i) ((i) >= 0 && (i) < 6) #if __BYTE_ORDER == __LITTLE_ENDIAN diff --git a/lightening/arm.c b/lightening/arm.c index ef4a3e2e7..0df47814e 100644 --- a/lightening/arm.c +++ b/lightening/arm.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2018 Free Software Foundation, Inc. + * Copyright (C) 2012-2019 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -21,6 +21,16 @@ # include #endif +# define JIT_RA0 _R0 +# define JIT_FA0 _D0 +# define JIT_SP _R13 +# define JIT_RET _R0 +# if defined(__ARM_PCS_VFP) +# define JIT_FRET _D0 +# else +# define JIT_FRET _R0 +# endif + #define jit_arg_reg_p(i) ((i) >= 0 && (i) < 4) #define jit_arg_f_reg_p(i) ((i) >= 0 && (i) < 16) #define jit_arg_d_reg_p(i) ((i) >= 0 && (i) < 15) diff --git a/lightening/hppa.c b/lightening/hppa.c index 38c75e0ca..d6c56cb44 100644 --- a/lightening/hppa.c +++ b/lightening/hppa.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2018 Free Software Foundation, Inc. + * Copyright (C) 2013-2019 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -17,6 +17,10 @@ * Paulo Cesar Pereira de Andrade */ +# define JIT_SP _R30 +# define JIT_RET _R28 +# define JIT_FRET _F4 + #define jit_arg_reg_p(i) (i >= 0 && i < 4) #define PROTO 1 diff --git a/lightening/ia64.c b/lightening/ia64.c index 185d41cbf..9c025116c 100644 --- a/lightening/ia64.c +++ b/lightening/ia64.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2018 Free Software Foundation, Inc. + * Copyright (C) 2013-2019 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -17,6 +17,10 @@ * Paulo Cesar Pereira de Andrade */ +# define JIT_SP _R12 +# define JIT_RET _R8 +# define JIT_FRET _F8 + #define jit_arg_reg_p(i) ((i) >= 0 && (i) < 8) #if __BYTE_ORDER == __LITTLE_ENDIAN # define C_DISP 0 diff --git a/lightening/lightening.c b/lightening/lightening.c index faba86bdb..4d7888cea 100644 --- a/lightening/lightening.c +++ b/lightening/lightening.c @@ -37,69 +37,6 @@ #define _NOREG 0xffff -#if defined(__i386__) || defined(__x86_64__) -# define JIT_RET _RAX -# if __X32 -# define JIT_FRET _ST0 -# else -# if __CYGWIN__ -# define JIT_RA0 _RCX -# else -# define JIT_RA0 _RDI -# endif -# define JIT_FA0 _XMM0 -# define JIT_FRET _XMM0 -# endif -#elif defined(__mips__) -# define JIT_RA0 _A0 -# define JIT_FA0 _F12 -# define JIT_SP _SP -# define JIT_RET _V0 -# define JIT_FRET _F0 -#elif defined(__arm__) -# define JIT_RA0 _R0 -# define JIT_FA0 _D0 -# define JIT_SP _R13 -# define JIT_RET _R0 -# if defined(__ARM_PCS_VFP) -# define JIT_FRET _D0 -# else -# define JIT_FRET _R0 -# endif -#elif defined(__ppc__) || defined(__powerpc__) -# define JIT_RA0 _R3 -# define JIT_FA0 _F1 -# define JIT_SP _R1 -# define JIT_RET _R3 -# define JIT_FRET _F1 -#elif defined(__sparc__) -# define JIT_SP _SP -# define JIT_RET _I0 -# define JIT_FRET _F0 -#elif defined(__ia64__) -# define JIT_SP _R12 -# define JIT_RET _R8 -# define JIT_FRET _F8 -#elif defined(__hppa__) -# define JIT_SP _R30 -# define JIT_RET _R28 -# define JIT_FRET _F4 -#elif defined(__aarch64__) -# define JIT_RA0 _R0 -# define JIT_FA0 _V0 -# define JIT_SP _SP -# define JIT_RET _R0 -# define JIT_FRET _V0 -#elif defined(__s390__) || defined(__s390x__) -# define JIT_SP _R15 -# define JIT_RET _R2 -# define JIT_FRET _F0 -#elif defined(__alpha__) -# define JIT_SP _SP -# define JIT_RET _V0 -# define JIT_FRET _F0 -#endif - union jit_pc { uint8_t *uc; diff --git a/lightening/mips.c b/lightening/mips.c index 70b2d94ea..3b2370f29 100644 --- a/lightening/mips.c +++ b/lightening/mips.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2018 Free Software Foundation, Inc. + * Copyright (C) 2012-2019 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -21,6 +21,12 @@ # include #endif +# define JIT_RA0 _A0 +# define JIT_FA0 _F12 +# define JIT_SP _SP +# define JIT_RET _V0 +# define JIT_FRET _F0 + #if NEW_ABI # define NUM_WORD_ARGS 8 # define STACK_SLOT 8 diff --git a/lightening/ppc.c b/lightening/ppc.c index a6502cbac..1819acdf6 100644 --- a/lightening/ppc.c +++ b/lightening/ppc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2018 Free Software Foundation, Inc. + * Copyright (C) 2012-2019 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -17,6 +17,12 @@ * Paulo Cesar Pereira de Andrade */ +# define JIT_RA0 _R3 +# define JIT_FA0 _F1 +# define JIT_SP _R1 +# define JIT_RET _R3 +# define JIT_FRET _F1 + #define jit_arg_reg_p(i) ((i) >= 0 && (i) < 8) #define jit_arg_f_reg_p(i) ((i) >= 0 && (i) < 13) #if __BYTE_ORDER == __LITTLE_ENDIAN diff --git a/lightening/s390.c b/lightening/s390.c index 0dc109a9f..41e0de42f 100644 --- a/lightening/s390.c +++ b/lightening/s390.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013-2018 Free Software Foundation, Inc. + * Copyright (C) 2013-2019 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -17,6 +17,10 @@ * Paulo Cesar Pereira de Andrade */ +# define JIT_SP _R15 +# define JIT_RET _R2 +# define JIT_FRET _F0 + #if __WORDSIZE == 32 # define NUM_FLOAT_REG_ARGS 2 #else diff --git a/lightening/sparc.c b/lightening/sparc.c index 10aac8528..415f21335 100644 --- a/lightening/sparc.c +++ b/lightening/sparc.c @@ -1,3 +1,25 @@ +/* + * Copyright (C) 2013-2019 Free Software Foundation, Inc. + * + * This file is part of GNU lightning. + * + * GNU lightning is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU lightning is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + * License for more details. + * + * Authors: + * Paulo Cesar Pereira de Andrade + */ + +# define JIT_SP _SP +# define JIT_RET _I0 +# define JIT_FRET _F0 /* * Copyright (C) 2013-2018 Free Software Foundation, Inc. * From 89fd69fc00873f4ef4408fc829fcc659491f5b7f Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 14:38:29 +0200 Subject: [PATCH 02/18] Account for saved return address when locating args Also, fix alignment to be in bytes rather than bits. Oops! --- lightening/lightening.c | 20 +++++++++++++++++--- lightening/x86.c | 6 +++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/lightening/lightening.c b/lightening/lightening.c index 4d7888cea..365bdb64e 100644 --- a/lightening/lightening.c +++ b/lightening/lightening.c @@ -68,12 +68,26 @@ struct jit_state # define UNLIKELY(exprn) exprn #endif +enum stack_state +{ + BEFORE_CALL, + AFTER_CALL +}; + static jit_bool_t jit_get_cpu(void); static jit_bool_t jit_init(jit_state_t *); static void jit_flush(void *fptr, void *tptr); static void jit_try_shorten(jit_state_t *_jit, jit_reloc_t reloc, jit_pointer_t addr); +struct abi_arg_iterator; + +static void reset_abi_arg_iterator(struct abi_arg_iterator *iter, size_t argc, + const jit_operand_t *args, + enum stack_state state); +static void next_abi_arg(struct abi_arg_iterator *iter, + jit_operand_t *arg); + jit_bool_t init_jit(void) { @@ -830,7 +844,7 @@ jit_align_stack(jit_state_t *_jit, size_t expand) size_t new_size = _jit->frame_size + expand; // Align stack to double-word boundaries. This isn't really a // principle but it does work for Aarch32, AArch64 and x86-64. - size_t alignment = __WORDSIZE * 2; + size_t alignment = __WORDSIZE / 8 * 2; size_t aligned_size = (new_size + alignment - 1) & ~(alignment - 1); size_t diff = aligned_size - _jit->frame_size; if (diff) @@ -855,7 +869,7 @@ prepare_call_args(jit_state_t *_jit, size_t argc, jit_operand_t args[]) struct abi_arg_iterator iter; // Compute shuffle destinations and space for spilled arguments. - reset_abi_arg_iterator(&iter, argc, args); + reset_abi_arg_iterator(&iter, argc, args, BEFORE_CALL); for (size_t i = 0; i < argc; i++) next_abi_arg(&iter, &dst[i]); @@ -908,7 +922,7 @@ jit_locate_args(jit_state_t *_jit, size_t argc, jit_operand_t args[]) { struct abi_arg_iterator iter; - reset_abi_arg_iterator(&iter, argc, args); + reset_abi_arg_iterator(&iter, argc, args, AFTER_CALL); for (size_t i = 0; i < argc; i++) next_abi_arg(&iter, &args[i]); } diff --git a/lightening/x86.c b/lightening/x86.c index 4031bb1ca..79f98249d 100644 --- a/lightening/x86.c +++ b/lightening/x86.c @@ -315,11 +315,15 @@ round_size_up_to_words(size_t bytes) static void reset_abi_arg_iterator(struct abi_arg_iterator *iter, size_t argc, - const jit_operand_t *args) + const jit_operand_t *args, enum stack_state state) { memset(iter, 0, sizeof *iter); iter->argc = argc; iter->args = args; + if (state == AFTER_CALL) + iter->stack_size = __WORDSIZE / 8; // Saved return address. + else + ASSERT(state == BEFORE_CALL); } static void From bab1f40b5e68270f363f84ed8791064cd6044436 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 14:44:09 +0200 Subject: [PATCH 03/18] Fix lightening to compile on 32-bit x86 --- lightening/lightening.c | 16 +- lightening/x86-cpu.c | 18 +- lightening/x86-sse.c | 90 ++- lightening/x86-x87.c | 1344 --------------------------------------- lightening/x86.c | 4 +- 5 files changed, 96 insertions(+), 1376 deletions(-) delete mode 100644 lightening/x86-x87.c diff --git a/lightening/lightening.c b/lightening/lightening.c index 365bdb64e..3b71654ff 100644 --- a/lightening/lightening.c +++ b/lightening/lightening.c @@ -525,21 +525,23 @@ abi_mem_to_gpr(jit_state_t *_jit, enum jit_operand_abi abi, case JIT_OPERAND_ABI_INT16: jit_ldxi_s(_jit, dst, base, offset); break; +#if __WORDSIZE == 32 case JIT_OPERAND_ABI_UINT32: - jit_ldxi_ui(_jit, dst, base, offset); - break; + case JIT_OPERAND_ABI_POINTER: +#endif case JIT_OPERAND_ABI_INT32: jit_ldxi_i(_jit, dst, base, offset); break; - case JIT_OPERAND_ABI_UINT64: - jit_ldxi_l(_jit, dst, base, offset); +#if __WORDSIZE == 64 + case JIT_OPERAND_ABI_UINT32: + jit_ldxi_ui(_jit, dst, base, offset); break; + case JIT_OPERAND_ABI_UINT64: + case JIT_OPERAND_ABI_POINTER: case JIT_OPERAND_ABI_INT64: jit_ldxi_l(_jit, dst, base, offset); break; - case JIT_OPERAND_ABI_POINTER: - jit_ldxi_l(_jit, dst, base, offset); - break; +#endif default: abort(); } diff --git a/lightening/x86-cpu.c b/lightening/x86-cpu.c index aa9d68a68..7144dff6c 100644 --- a/lightening/x86-cpu.c +++ b/lightening/x86-cpu.c @@ -1024,7 +1024,7 @@ ffsw(jit_word_t i) return ffs(i); int bit = ffs((int)i); if (bit == 0) { - bit = ffs((int)((unsigned long)i >> 32)); + bit = ffs((int)((uint64_t)i >> 32)); if (bit) bit += 32; } @@ -2664,34 +2664,34 @@ reti(jit_state_t *_jit, jit_word_t i0) static void retval_c(jit_state_t *_jit, int32_t r0) { - extr_c(_jit, r0, jit_gpr_regno(JIT_RET)); + extr_c(_jit, r0, _RAX_REGNO); } static void retval_uc(jit_state_t *_jit, int32_t r0) { - extr_uc(_jit, r0, jit_gpr_regno(JIT_RET)); + extr_uc(_jit, r0, _RAX_REGNO); } static void retval_s(jit_state_t *_jit, int32_t r0) { - extr_s(_jit, r0, jit_gpr_regno(JIT_RET)); + extr_s(_jit, r0, _RAX_REGNO); } static void retval_us(jit_state_t *_jit, int32_t r0) { - extr_us(_jit, r0, jit_gpr_regno(JIT_RET)); + extr_us(_jit, r0, _RAX_REGNO); } static void retval_i(jit_state_t *_jit, int32_t r0) { #if __X32 || __X64_32 - movr(_jit, r0, jit_gpr_regno(JIT_RET)); + movr(_jit, r0, _RAX_REGNO); #else - extr_i(_jit, r0, jit_gpr_regno(JIT_RET)); + extr_i(_jit, r0, _RAX_REGNO); #endif } @@ -2699,12 +2699,12 @@ retval_i(jit_state_t *_jit, int32_t r0) static void retval_ui(jit_state_t *_jit, int32_t r0) { - extr_ui(_jit, r0, jit_gpr_regno(JIT_RET)); + extr_ui(_jit, r0, _RAX_REGNO); } static void retval_l(jit_state_t *_jit, int32_t r0) { - movr(_jit, r0, jit_gpr_regno(JIT_RET)); + movr(_jit, r0, _RAX_REGNO); } #endif diff --git a/lightening/x86-sse.c b/lightening/x86-sse.c index bc6c060ff..c304919d0 100644 --- a/lightening/x86-sse.c +++ b/lightening/x86-sse.c @@ -398,49 +398,111 @@ movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t i0) if (data.d == 0.0 && !(data.ii[1] & 0x80000000)) xorpdr(_jit, r0, r0); else { - jit_gpr_t reg = get_temp_gpr(_jit); + jit_gpr_t ireg = get_temp_gpr(_jit); #if __X64 && !__X64_32 - movi(_jit, jit_gpr_regno(reg), data.w); - movdqxr(_jit, r0, jit_gpr_regno(reg)); + movi(_jit, jit_gpr_regno(ireg), data.w); + movdqxr(_jit, r0, jit_gpr_regno(ireg)); unget_temp_gpr(_jit); #else - movi(_jit, jit_gpr_regno(reg), data.ii[0]); - stxi_i(CVT_OFFSET, _RBP_REGNO, jit_gpr_regno(reg)); - movi(_jit, jit_gpr_regno(reg), data.ii[1]); - stxi_i(CVT_OFFSET + 4, _RBP_REGNO, jit_gpr_regno(reg)); + jit_fpr_t freg = get_temp_xpr(_jit); + movi(_jit, jit_gpr_regno(ireg), data.ii[1]); + movdlxr(_jit, jit_fpr_regno(freg), jit_gpr_regno(ireg)); + pslq(_jit, jit_fpr_regno(freg), 32); + movi(_jit, jit_gpr_regno(ireg), data.ii[0]); + movdlxr(_jit, r0, jit_gpr_regno(ireg)); + xorpdr(_jit, r0, jit_fpr_regno(freg)); + unget_temp_xpr(_jit); unget_temp_gpr(_jit); - ldxi_d(_jit, r0, _RBP_REGNO, CVT_OFFSET); #endif } } +#if __X32 +static void +x87rx(jit_state_t *_jit, int32_t code, int32_t md, + int32_t rb, int32_t ri, int32_t ms) +{ + rex(_jit, 0, 1, rb, ri, _NOREG); + ic(_jit, 0xd8 | (code >> 3)); + rx(_jit, (code & 7), md, rb, ri, ms); +} + +static void +fldsm(jit_state_t *_jit, int32_t md, int32_t rb, int32_t ri, int32_t ms) +{ + return x87rx(_jit, 010, md, rb, ri, ms); +} + +static void +fstsm(jit_state_t *_jit, int32_t md, int32_t rb, int32_t ri, int32_t ms) +{ + return x87rx(_jit, 012, md, rb, ri, ms); +} + +static void +fldlm(jit_state_t *_jit, int32_t md, int32_t rb, int32_t ri, int32_t ms) +{ + return x87rx(_jit, 050, md, rb, ri, ms); +} + +static void +fstlm(jit_state_t *_jit, int32_t md, int32_t rb, int32_t ri, int32_t ms) +{ + return x87rx(_jit, 052, md, rb, ri, ms); +} +#endif + static void retval_f(jit_state_t *_jit, int32_t r0) { -#if __X64 - movr_f(_jit, r0, jit_fpr_regno(JIT_FRET)); +#if __X32 + subi(_jit, _RSP_REGNO, _RSP_REGNO, 4); + fstsm(_jit, 0, _RSP_REGNO, _NOREG, _SCL1); + ldr_f(_jit, r0, _RSP_REGNO); + addi(_jit, _RSP_REGNO, _RSP_REGNO, 4); +#else + movr_f(_jit, r0, _XMM0_REGNO); #endif } static void retval_d(jit_state_t *_jit, int32_t r0) { -#if __X64 - movr_d(_jit, r0, jit_fpr_regno(JIT_FRET)); +#if __X32 + subi(_jit, _RSP_REGNO, _RSP_REGNO, 8); + fstlm(_jit, 0, _RSP_REGNO, _NOREG, _SCL1); + ldr_d(_jit, r0, _RSP_REGNO); + addi(_jit, _RSP_REGNO, _RSP_REGNO, 8); +#else + movr_d(_jit, r0, _XMM0_REGNO); #endif } static void retr_f(jit_state_t *_jit, int32_t u) { - movr_f(_jit, jit_fpr_regno(JIT_FRET), u); +#if __X32 + subi(_jit, _RSP_REGNO, _RSP_REGNO, 4); + str_f(_jit, _RSP_REGNO, u); + fldsm(_jit, 0, _RSP_REGNO, _NOREG, _SCL1); + addi(_jit, _RSP_REGNO, _RSP_REGNO, 4); +#else + movr_f(_jit, _XMM0_REGNO, u); +#endif ret(_jit); } static void retr_d(jit_state_t *_jit, int32_t u) { - movr_d(_jit, jit_fpr_regno(JIT_FRET), u); +#if __X32 + subi(_jit, _RSP_REGNO, _RSP_REGNO, 8); + str_d(_jit, _RSP_REGNO, u); + fldlm(_jit, 0, _RSP_REGNO, _NOREG, _SCL1); + addi(_jit, _RSP_REGNO, _RSP_REGNO, 8); +#else + movr_d(_jit, _XMM0_REGNO, u); +#endif ret(_jit); } diff --git a/lightening/x86-x87.c b/lightening/x86-x87.c deleted file mode 100644 index e6f8be5f4..000000000 --- a/lightening/x86-x87.c +++ /dev/null @@ -1,1344 +0,0 @@ -/* - * Copyright (C) 2012-2017 Free Software Foundation, Inc. - * - * This file is part of GNU lightning. - * - * GNU lightning is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU lightning is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public - * License for more details. - * - * Authors: - * Paulo Cesar Pereira de Andrade - */ - -#if PROTO -# if __X32 -# define x87_address_p(i0) 1 -# else -# if __X64_32 -# define x87_address_p(i0) ((jit_word_t)(i0) >= 0) -# else -# define x87_address_p(i0) can_sign_extend_int_p(i0) -# endif -# endif -# define _ST0_REGNO 0 -# define _ST1_REGNO 1 -# define _ST2_REGNO 2 -# define _ST3_REGNO 3 -# define _ST4_REGNO 4 -# define _ST5_REGNO 5 -# define _ST6_REGNO 6 -# define x87rx(code, md, rb, ri, ms) _x87rx(_jit, code, md, rb, ri, ms) -# define fldcwm(md, rb, ri, ms) x87rx(015, md, rb, ri, ms) -# define fstcwm(md, rb, ri, ms) _fstcwm(_jit, md, rb, ri, ms) -static void -_fstcwm(jit_state_t*, int32_t, int32_t, int32_t, int32_t); -# define fldsm(md, rb, ri, ms) x87rx(010, md, rb, ri, ms) -# define fstsm(md, rb, ri, ms) x87rx(012, md, rb, ri, ms) -# define fldlm(md, rb, ri, ms) x87rx(050, md, rb, ri, ms) -# define fstlm(md, rb, ri, ms) x87rx(052, md, rb, ri, ms) -# define fisttplm(md, rb, ri, ms) x87rx(031, md, rb, ri, ms) -# define fistlm(md, rb, ri, ms) x87rx(032, md, rb, ri, ms) -# define fisttpqm(md, rb, ri, ms) x87rx(071, md, rb, ri, ms) -# define fildlm(md, rb, ri, ms) x87rx(030, md, rb,ri, ms) -# define fildqm(md, rb, ri, ms) x87rx(075, md, rb,ri, ms) -static void -_x87rx(jit_state_t*, int32_t, int32_t, - int32_t, int32_t, int32_t); -# define x87ri(cc,r0) _x87ri(_jit,cc,r0) -# define fchs_() x87ri(014, 0) -# define fabs_() x87ri(014, 1) -# define fld1() x87ri(015, 0) -# define fldl2t() x87ri(015, 1) -# define fldl2e() x87ri(015, 2) -# define fldpi() x87ri(015, 3) -# define fldlg2() x87ri(015, 4) -# define fldln2() x87ri(015, 5) -# define fldz() x87ri(015, 6) -# define fsqrt_() x87ri(017, 2) -# define fldr(r0) x87ri(010, r0) -# define fxchr(r0) x87ri(011, r0) -# define fstr(r0) x87ri(052, r0) -# define fstpr(r0) x87ri(053, r0) -# define fucomir(r0) x87ri(035, r0) -# define fucomipr(r0) x87ri(075, r0) -static void _x87ri(jit_state_t*, int32_t, int32_t); -# define faddr(r0, r1) x87rri(000, r0, r1) -# define fmulr(r0, r1) x87rri(001, r0, r1) -# define fsubr(r0, r1) x87rri(004, r0, r1) -# define fsubrr(r0, r1) x87rri(005, r0, r1) -# define fdivr(r0, r1) x87rri(006, r0, r1) -# define fdivrr(r0, r1) x87rri(007, r0, r1) -# define x87rri(cc, r0, r1) _x87rri(_jit, cc, r0, r1) -static void _x87rri(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_addr_f(r0, r1, r2) _x87_addr_d(_jit, r0, r1, r2) -# define x87_addi_f(r0, r1, i0) _x87_addi_f(_jit, r0, r1, i0) -static void _x87_addi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_addr_d(r0, r1, r2) _x87_addr_d(_jit, r0, r1, r2) -static void _x87_addr_d(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_addi_d(r0, r1, i0) _x87_addi_d(_jit, r0, r1, i0) -static void _x87_addi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_subr_f(r0, r1, r2) _x87_subr_d(_jit, r0, r1, r2) -# define x87_subi_f(r0, r1, i0) _x87_subi_f(_jit, r0, r1, i0) -static void _x87_subi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_subr_d(r0, r1, r2) _x87_subr_d(_jit, r0, r1, r2) -static void _x87_subr_d(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_subi_d(r0, r1, i0) _x87_subi_d(_jit, r0, r1, i0) -static void _x87_subi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_rsbr_f(r0, r1, r2) x87_subr_f(r0, r2, r1) -# define x87_rsbi_f(r0, r1, i0) _x87_rsbi_f(_jit, r0, r1, i0) -static void _x87_rsbi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_rsbr_d(r0, r1, r2) x87_subr_d(r0, r2, r1) -# define x87_rsbi_d(r0, r1, i0) _x87_rsbi_d(_jit, r0, r1, i0) -static void _x87_rsbi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_mulr_f(r0, r1, r2) _x87_mulr_d(_jit, r0, r1, r2) -# define x87_muli_f(r0, r1, i0) _x87_muli_f(_jit, r0, r1, i0) -static void _x87_muli_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_mulr_d(r0, r1, r2) _x87_mulr_d(_jit, r0, r1, r2) -static void _x87_mulr_d(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_muli_d(r0, r1, i0) _x87_muli_d(_jit, r0, r1, i0) -static void _x87_muli_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_divr_f(r0, r1, r2) _x87_divr_d(_jit, r0, r1, r2) -# define x87_divi_f(r0, r1, i0) _x87_divi_f(_jit, r0, r1, i0) -static void _x87_divi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_divr_d(r0, r1, r2) _x87_divr_d(_jit, r0, r1, r2) -static void _x87_divr_d(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_divi_d(r0, r1, i0) _x87_divi_d(_jit, r0, r1, i0) -static void _x87_divi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_absr_f(r0, r1) _x87_absr_d(_jit, r0, r1) -# define x87_absr_d(r0, r1) _x87_absr_d(_jit, r0, r1) -static void _x87_absr_d(jit_state_t*, int32_t, int32_t); -# define x87_negr_f(r0, r1) _x87_negr_d(_jit, r0, r1) -# define x87_negr_d(r0, r1) _x87_negr_d(_jit, r0, r1) -static void _x87_negr_d(jit_state_t*, int32_t, int32_t); -# define x87_sqrtr_f(r0, r1) _x87_sqrtr_d(_jit, r0, r1) -# define x87_sqrtr_d(r0, r1) _x87_sqrtr_d(_jit, r0, r1) -static void _x87_sqrtr_d(jit_state_t*, int32_t, int32_t); -# define x87_truncr_f_i(r0, r1) _x87_truncr_d_i(_jit, r0, r1) -# define x87_truncr_d_i(r0, r1) _x87_truncr_d_i(_jit, r0, r1) -static void _x87_truncr_d_i(jit_state_t*, int32_t, int32_t); -# if __X64 -# define x87_truncr_f_l(r0, r1) _x87_truncr_d_l(_jit, r0, r1) -# define x87_truncr_d_l(r0, r1) _x87_truncr_d_l(_jit, r0, r1) -static void _x87_truncr_d_l(jit_state_t*, int32_t, int32_t); -# endif -# define x87_extr_f(r0, r1) _x87_extr_d(_jit, r0, r1) -# define x87_extr_d(r0, r1) _x87_extr_d(_jit, r0, r1) -# define x87_extr_f_d(r0, r1) x87_movr_d(r0, r1) -# define x87_extr_d_f(r0, r1) x87_movr_d(r0, r1) -static void _x87_extr_d(jit_state_t*, int32_t, int32_t); -# define x87cmp(code, r0, r1, r2) _x87cmp(_jit, code, r0, r1, r2) -static void -_x87cmp(jit_state_t*, int32_t, int32_t, int32_t, int32_t); -# define x87cmp2(code, r0, r1, r2) _x87cmp2(_jit, code, r0, r1, r2) -static void -_x87cmp2(jit_state_t*, int32_t, int32_t, int32_t, int32_t); -# define x87jcc(code, i0, r0, r1) _x87jcc(_jit, code, i0, r0, r1) -static jit_word_t -_x87jcc(jit_state_t*, int32_t, jit_word_t, int32_t, int32_t); -# define x87jcc2(code, i0, r0, r1) _x87jcc2(_jit, code, i0, r0, r1) -static jit_word_t -_x87jcc2(jit_state_t*, int32_t, jit_word_t, int32_t, int32_t); -#define x87_movi_f(r0,i0) _x87_movi_f(_jit,r0,i0) -static void _x87_movi_f(jit_state_t*, int32_t, jit_float32_t*); -# define x87_ldr_f(r0, r1) _x87_ldr_f(_jit, r0, r1) -static void _x87_ldr_f(jit_state_t*, int32_t, int32_t); -# define x87_ldi_f(r0, i0) _x87_ldi_f(_jit, r0, i0) -static void _x87_ldi_f(jit_state_t*, int32_t, jit_word_t); -# define x87_ldxr_f(r0, r1, r2) _x87_ldxr_f(_jit, r0, r1, r2) -static void _x87_ldxr_f(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_ldxi_f(r0, r1, i0) _x87_ldxi_f(_jit, r0, r1, i0) -static void _x87_ldxi_f(jit_state_t*, int32_t, int32_t, jit_word_t); -# define x87_str_f(r0, r1) _x87_str_f(_jit, r0, r1) -static void _x87_str_f(jit_state_t*,int32_t,int32_t); -# define x87_sti_f(i0, r0) _x87_sti_f(_jit, i0, r0) -static void _x87_sti_f(jit_state_t*,jit_word_t, int32_t); -# define x87_stxr_f(r0, r1, r2) _x87_stxr_f(_jit, r0, r1, r2) -static void _x87_stxr_f(jit_state_t*,int32_t,int32_t,int32_t); -# define x87_stxi_f(i0, r0, r1) _x87_stxi_f(_jit, i0, r0, r1) -static void _x87_stxi_f(jit_state_t*,jit_word_t,int32_t,int32_t); -# define x87_ltr_f(r0, r1, r2) x87cmp(X86_CC_A, r0, r2, r1) -# define x87_lti_f(r0, r1, i0) _x87_lti_f(_jit, r0, r1, i0) -static void _x87_lti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_ler_f(r0, r1, r2) x87cmp(X86_CC_AE, r0, r2, r1) -# define x87_lei_f(r0, r1, i0) _x87_lei_f(_jit, r0, r1, i0) -static void _x87_lei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_eqr_f(r0, r1, r2) x87_eqr_d(r0, r2, r1) -# define x87_eqi_f(r0, r1, i0) _x87_eqi_f(_jit, r0, r1, i0) -static void _x87_eqi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_ger_f(r0, r1, r2) x87cmp(X86_CC_AE, r0, r1, r2) -# define x87_gei_f(r0, r1, i0) _x87_gei_f(_jit, r0, r1, i0) -static void _x87_gei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_gtr_f(r0, r1, r2) x87cmp(X86_CC_A, r0, r1, r2) -# define x87_gti_f(r0, r1, i0) _x87_gti_f(_jit, r0, r1, i0) -static void _x87_gti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_ner_f(r0, r1, r2) x87_ner_d(r0, r2, r1) -# define x87_nei_f(r0, r1, i0) _x87_nei_f(_jit, r0, r1, i0) -static void _x87_nei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_unltr_f(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r1, r2) -# define x87_unlti_f(r0, r1, i0) _x87_unlti_f(_jit, r0, r1, i0) -static void _x87_unlti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_unler_f(r0, r1, r2) x87cmp(X86_CC_NA, r0, r1, r2) -# define x87_unlei_f(r0, r1, i0) _x87_unlei_f(_jit, r0, r1, i0) -static void _x87_unlei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_uneqr_f(r0, r1, r2) x87cmp2(X86_CC_E, r0, r1, r2) -# define x87_uneqi_f(r0, r1, i0) _x87_uneqi_f(_jit, r0, r1, i0) -static void _x87_uneqi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_unger_f(r0, r1, r2) x87cmp(X86_CC_NA, r0, r2, r1) -# define x87_ungei_f(r0, r1, i0) _x87_ungei_f(_jit, r0, r1, i0) -static void _x87_ungei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_ungtr_f(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r2, r1) -# define x87_ungti_f(r0, r1, i0) _x87_ungti_f(_jit, r0, r1, i0) -static void _x87_ungti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_ltgtr_f(r0, r1, r2) x87_ltgtr_d(r0, r1, r2) -# define x87_ltgti_f(r0, r1, i0) _x87_ltgti_f(_jit, r0, r1, i0) -static void _x87_ltgti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_ordr_f(r0, r1, r2) x87cmp2(X86_CC_NP, r0, r2, r1) -# define x87_ordi_f(r0, r1, i0) _x87_ordi_f(_jit, r0, r1, i0) -static void _x87_ordi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_unordr_f(r0, r1, r2) x87cmp2(X86_CC_P, r0, r2, r1) -# define x87_unordi_f(r0, r1, i0) _x87_unordi_f(_jit, r0, r1, i0) -static void _x87_unordi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*); -# define x87_ltr_d(r0, r1, r2) x87cmp(X86_CC_A, r0, r2, r1) -# define x87_lti_d(r0, r1, i0) _x87_lti_d(_jit, r0, r1, i0) -static void _x87_lti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_ler_d(r0, r1, r2) x87cmp(X86_CC_AE, r0, r2, r1) -# define x87_lei_d(r0, r1, i0) _x87_lei_d(_jit, r0, r1, i0) -static void _x87_lei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_eqr_d(r0, r1, r2) _x87_eqr_d(_jit, r0, r2, r1) -static void _x87_eqr_d(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_eqi_d(r0, r1, i0) _x87_eqi_d(_jit, r0, r1, i0) -static void _x87_eqi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_ger_d(r0, r1, r2) x87cmp(X86_CC_AE, r0, r1, r2) -# define x87_gei_d(r0, r1, i0) _x87_gei_d(_jit, r0, r1, i0) -static void _x87_gei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_gtr_d(r0, r1, r2) x87cmp(X86_CC_A, r0, r1, r2) -# define x87_gti_d(r0, r1, i0) _x87_gti_d(_jit, r0, r1, i0) -static void _x87_gti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_ner_d(r0, r1, r2) _x87_ner_d(_jit, r0, r2, r1) -static void _x87_ner_d(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_nei_d(r0, r1, i0) _x87_nei_d(_jit, r0, r1, i0) -static void _x87_nei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_unltr_d(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r1, r2) -# define x87_unlti_d(r0, r1, i0) _x87_unlti_d(_jit, r0, r1, i0) -static void _x87_unlti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_unler_d(r0, r1, r2) x87cmp(X86_CC_NA, r0, r1, r2) -# define x87_unlei_d(r0, r1, i0) _x87_unlei_d(_jit, r0, r1, i0) -static void _x87_unlei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_uneqr_d(r0, r1, r2) x87cmp2(X86_CC_E, r0, r1, r2) -# define x87_uneqi_d(r0, r1, i0) _x87_uneqi_d(_jit, r0, r1, i0) -static void _x87_uneqi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_unger_d(r0, r1, r2) x87cmp(X86_CC_NA, r0, r2, r1) -# define x87_ungei_d(r0, r1, i0) _x87_ungei_d(_jit, r0, r1, i0) -static void _x87_ungei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_ungtr_d(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r2, r1) -# define x87_ungti_d(r0, r1, i0) _x87_ungti_d(_jit, r0, r1, i0) -static void _x87_ungti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_ltgtr_d(r0, r1, r2) _x87_ltgtr_d(_jit, r0, r1, r2) -static void _x87_ltgtr_d(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_ltgti_d(r0, r1, i0) _x87_ltgti_d(_jit, r0, r1, i0) -static void _x87_ltgti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_ordr_d(r0, r1, r2) x87cmp2(X86_CC_NP, r0, r2, r1) -# define x87_ordi_d(r0, r1, i0) _x87_ordi_d(_jit, r0, r1, i0) -static void _x87_ordi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -# define x87_unordr_d(r0, r1, r2) x87cmp2(X86_CC_P, r0, r2, r1) -# define x87_unordi_d(r0, r1, i0) _x87_unordi_d(_jit, r0, r1, i0) -static void _x87_unordi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*); -#define x87_movr_f(r0,r1) _x87_movr_d(_jit,r0,r1) -#define x87_movr_d(r0,r1) _x87_movr_d(_jit,r0,r1) -static void _x87_movr_d(jit_state_t*, int32_t, int32_t); -#define x87_movi_d(r0,i0) _x87_movi_d(_jit,r0,i0) -static void _x87_movi_d(jit_state_t*, int32_t, jit_float64_t*); -# define x87_ldr_d(r0, r1) _x87_ldr_d(_jit, r0, r1) -static void _x87_ldr_d(jit_state_t*, int32_t, int32_t); -# define x87_ldi_d(r0, i0) _x87_ldi_d(_jit, r0, i0) -static void _x87_ldi_d(jit_state_t*, int32_t, jit_word_t); -# define x87_ldxr_d(r0, r1, r2) _x87_ldxr_d(_jit, r0, r1, r2) -static void _x87_ldxr_d(jit_state_t*, int32_t, int32_t, int32_t); -# define x87_ldxi_d(r0, r1, i0) _x87_ldxi_d(_jit, r0, r1, i0) -static void _x87_ldxi_d(jit_state_t*, int32_t, int32_t, jit_word_t); -# define x87_str_d(r0, r1) _x87_str_d(_jit, r0, r1) -static void _x87_str_d(jit_state_t*,int32_t,int32_t); -# define x87_sti_d(i0, r0) _x87_sti_d(_jit, i0, r0) -static void _x87_sti_d(jit_state_t*,jit_word_t,int32_t); -# define x87_stxr_d(r0, r1, r2) _x87_stxr_d(_jit, r0, r1, r2) -static void _x87_stxr_d(jit_state_t*,int32_t,int32_t,int32_t); -# define x87_stxi_d(i0, r0, r1) _x87_stxi_d(_jit, i0, r0, r1) -static void _x87_stxi_d(jit_state_t*,jit_word_t,int32_t,int32_t); -# define x87_bltr_f(i0, r0, r1) x87jcc(X86_CC_A, i0, r1, r0) -# define x87_blti_f(i0, r0, i1) _x87_blti_f(_jit, i0, r0, i1) -static jit_word_t -_x87_blti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bler_f(i0, r0, r1) x87jcc(X86_CC_AE, i0, r1, r0) -# define x87_blei_f(i0, r0, i1) _x87_blei_f(_jit, i0, r0, i1) -static jit_word_t -_x87_blei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_beqr_f(i0, r0, r1) _x87_beqr_d(_jit, i0, r0, r1) -# define x87_beqi_f(i0, r0, i1) _x87_beqi_f(_jit, i0, r0, i1) -static jit_word_t -_x87_beqi_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bger_f(i0, r0, r1) x87jcc(X86_CC_AE, i0, r0, r1) -# define x87_bgei_f(i0, r0, i1) _x87_bgei_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bgei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bgtr_f(i0, r0, r1) x87jcc(X86_CC_A, i0, r0, r1) -# define x87_bgti_f(i0, r0, i1) _x87_bgti_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bgti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bner_f(i0, r0, r1) _x87_bner_d(_jit, i0, r0, r1) -# define x87_bnei_f(i0, r0, i1) _x87_bnei_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bnei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bunltr_f(i0, r0, r1) x87jcc(X86_CC_NAE, i0, r0, r1) -# define x87_bunlti_f(i0, r0, i1) _x87_bunlti_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bunlti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bunler_f(i0, r0, r1) x87jcc(X86_CC_NA, i0, r0, r1) -# define x87_bunlei_f(i0, r0, i1) _x87_bunlei_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bunlei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_buneqr_f(i0, r0, r1) x87jcc2(X86_CC_E, i0, r0, r1) -# define x87_buneqi_f(i0, r0, i1) _x87_buneqi_f(_jit, i0, r0, i1) -static jit_word_t -_x87_buneqi_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bunger_f(i0, r0, r1) x87jcc(X86_CC_NA, i0, r1, r0) -# define x87_bungei_f(i0, r0, i1) _x87_bungei_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bungei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bungtr_f(i0, r0, r1) x87jcc(X86_CC_NAE, i0, r1, r0) -# define x87_bungti_f(i0, r0, i1) _x87_bungti_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bungti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bltgtr_f(i0, r0, r1) x87jcc2(X86_CC_NE, i0, r0, r1) -# define x87_bltgti_f(i0, r0, i1) _x87_bltgti_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bltgti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bordr_f(i0, r0, r1) x87jcc2(X86_CC_NP, i0, r0, r1) -# define x87_bordi_f(i0, r0, i1) _x87_bordi_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bordi_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bunordr_f(i0, r0, r1) x87jcc2(X86_CC_P, i0, r0, r1) -# define x87_bunordi_f(i0, r0, i1) _x87_bunordi_f(_jit, i0, r0, i1) -static jit_word_t -_x87_bunordi_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*); -# define x87_bltr_d(i0, r0, r1) x87jcc(X86_CC_A, i0, r1, r0) -# define x87_blti_d(i0, r0, i1) _x87_blti_d(_jit, i0, r0, i1) -static jit_word_t -_x87_blti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bler_d(i0, r0, r1) x87jcc(X86_CC_AE, i0, r1, r0) -# define x87_blei_d(i0, r0, i1) _x87_blei_d(_jit, i0, r0, i1) -static jit_word_t -_x87_blei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_beqr_d(i0, r0, r1) _x87_beqr_d(_jit, i0, r0, r1) -static jit_word_t -_x87_beqr_d(jit_state_t*, jit_word_t, int32_t, int32_t); -# define x87_beqi_d(i0, r0, i1) _x87_beqi_d(_jit, i0, r0, i1) -static jit_word_t -_x87_beqi_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bger_d(i0, r0, r1) x87jcc(X86_CC_AE, i0, r0, r1) -# define x87_bgei_d(i0, r0, i1) _x87_bgei_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bgei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bgtr_d(i0, r0, r1) x87jcc(X86_CC_A, i0, r0, r1) -# define x87_bgti_d(i0, r0, i1) _x87_bgti_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bgti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bner_d(i0, r0, r1) _x87_bner_d(_jit, i0, r0, r1) -static jit_word_t -_x87_bner_d(jit_state_t*, jit_word_t, int32_t, int32_t); -# define x87_bnei_d(i0, r0, i1) _x87_bnei_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bnei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bunltr_d(i0, r0, r1) x87jcc(X86_CC_NAE, i0, r0, r1) -# define x87_bunlti_d(i0, r0, i1) _x87_bunlti_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bunlti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bunler_d(i0, r0, r1) x87jcc(X86_CC_NA, i0, r0, r1) -# define x87_bunlei_d(i0, r0, i1) _x87_bunlei_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bunlei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_buneqr_d(i0, r0, r1) x87jcc2(X86_CC_E, i0, r0, r1) -# define x87_buneqi_d(i0, r0, i1) _x87_buneqi_d(_jit, i0, r0, i1) -static jit_word_t -_x87_buneqi_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bunger_d(i0, r0, r1) x87jcc(X86_CC_NA, i0, r1, r0) -# define x87_bungei_d(i0, r0, i1) _x87_bungei_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bungei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bungtr_d(i0, r0, r1) x87jcc(X86_CC_NAE, i0, r1, r0) -# define x87_bungti_d(i0, r0, i1) _x87_bungti_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bungti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bltgtr_d(i0, r0, r1) x87jcc2(X86_CC_NE, i0, r0, r1) -# define x87_bltgti_d(i0, r0, i1) _x87_bltgti_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bltgti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bordr_d(i0, r0, r1) x87jcc2(X86_CC_NP, i0, r0, r1) -# define x87_bordi_d(i0, r0, i1) _x87_bordi_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bordi_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -# define x87_bunordr_d(i0, r0, r1) x87jcc2(X86_CC_P, i0, r0, r1) -# define x87_bunordi_d(i0, r0, i1) _x87_bunordi_d(_jit, i0, r0, i1) -static jit_word_t -_x87_bunordi_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*); -#endif - -#if CODE -# define fpr_opi(name, type, size) \ -static void \ -_x87_##name##i_##type(jit_state_t *_jit, \ - int32_t r0, int32_t r1, \ - jit_float##size##_t *i0) \ -{ \ - int32_t reg = jit_get_reg(jit_class_fpr); \ - assert(jit_x87_reg_p(reg)); \ - x87_movi_##type(rn(reg), i0); \ - x87_##name##r_##type(r0, r1, rn(reg)); \ - jit_unget_reg(reg); \ -} -# define fpr_bopi(name, type, size) \ -static jit_word_t \ -_x87_b##name##i_##type(jit_state_t *_jit, \ - jit_word_t i0, int32_t r0, \ - jit_float##size##_t *i1) \ -{ \ - jit_word_t word; \ - int32_t reg = jit_get_reg(jit_class_fpr| \ - jit_class_nospill); \ - assert(jit_x87_reg_p(reg)); \ - x87_movi_##type(rn(reg), i1); \ - word = x87_b##name##r_##type(i0, r0, rn(reg)); \ - jit_unget_reg(reg); \ - return (word); \ -} -# define fopi(name) fpr_opi(name, f, 32) -# define fbopi(name) fpr_bopi(name, f, 32) -# define dopi(name) fpr_opi(name, d, 64) -# define dbopi(name) fpr_bopi(name, d, 64) - -static void -_fstcwm(jit_state_t *_jit, int32_t md, - int32_t rb, int32_t ri, int32_t ms) -{ - ic(0x9b); - rex(0, 1, rb, ri, _NOREG); - x87rx(017, md, rb, ri, ms); -} - -static void -_x87rx(jit_state_t *_jit, int32_t code, int32_t md, - int32_t rb, int32_t ri, int32_t ms) -{ - rex(0, 1, rb, ri, _NOREG); - ic(0xd8 | (code >> 3)); - rx((code & 7), md, rb, ri, ms); -} - -static void -_x87ri(jit_state_t *_jit, int32_t code, int32_t r0) -{ - ic(0xd8 | (code >> 3)); - mrm(0x03, (code & 7), r0); -} - -static void -_x87rri(jit_state_t *_jit, int32_t code, int32_t r0, int32_t r1) -{ - if (r1 == _ST0_REGNO) - x87ri(code | 040, r0); - else { - assert(r0 == _ST0_REGNO); - x87ri(code, r1); - } -} - -fopi(add) -fopi(sub) -fopi(rsb) -fopi(mul) -fopi(div) - -static void -_x87_addr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ - if (r0 == r1) { - if (r2 == _ST0_REGNO) - faddr(r0, _ST0_REGNO); - else if (r0 == _ST0_REGNO) - faddr(_ST0_REGNO, r2); - else { - fxchr(r0); - faddr(_ST0_REGNO, r0 == r2 ? _ST0_REGNO : r2); - fxchr(r0); - } - } - else if (r0 == r2) { - if (r1 == _ST0_REGNO) - faddr(r0, _ST0_REGNO); - else if (r0 == _ST0_REGNO) - faddr(_ST0_REGNO, r1); - else { - fxchr(r0); - faddr(_ST0_REGNO, r1); - fxchr(r0); - } - } - else { - fldr(r1); - faddr(_ST0_REGNO, r2 + 1); - fstpr(r0 + 1); - } -} - -dopi(add) - -static void -_x87_subr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ - if (r0 == r1) { - if (r2 == _ST0_REGNO) - fsubrr(r0, _ST0_REGNO); - else if (r0 == _ST0_REGNO) - fsubr(_ST0_REGNO, r2); - else { - fxchr(r0); - fsubr(_ST0_REGNO, r0 == r2 ? _ST0_REGNO : r2); - fxchr(r0); - } - } - else if (r0 == r2) { - if (r1 == _ST0_REGNO) - fsubr(r0, _ST0_REGNO); - else if (r0 == _ST0_REGNO) - fsubrr(_ST0_REGNO, r1); - else { - fxchr(r0); - fsubrr(_ST0_REGNO, r1); - fxchr(r0); - } - } - else { - fldr(r1); - fsubr(_ST0_REGNO, r2 + 1); - fstpr(r0 + 1); - } -} - -dopi(sub) - -dopi(rsb) - -static void -_x87_mulr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ - if (r0 == r1) { - if (r2 == _ST0_REGNO) - fmulr(r0, _ST0_REGNO); - else if (r0 == _ST0_REGNO) - fmulr(_ST0_REGNO, r2); - else { - fxchr(r0); - fmulr(_ST0_REGNO, r0 == r2 ? _ST0_REGNO : r2); - fxchr(r0); - } - } - else if (r0 == r2) { - if (r1 == _ST0_REGNO) - fmulr(r0, _ST0_REGNO); - else if (r0 == _ST0_REGNO) - fmulr(_ST0_REGNO, r1); - else { - fxchr(r0); - fmulr(_ST0_REGNO, r1); - fxchr(r0); - } - } - else { - fldr(r1); - fmulr(_ST0_REGNO, r2 + 1); - fstpr(r0 + 1); - } -} - -dopi(mul) - -static void -_x87_divr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ - if (r0 == r1) { - if (r2 == _ST0_REGNO) - fdivrr(r0, _ST0_REGNO); - else if (r0 == _ST0_REGNO) - fdivr(_ST0_REGNO, r2); - else { - fxchr(r0); - fdivr(_ST0_REGNO, r0 == r2 ? _ST0_REGNO : r2); - fxchr(r0); - } - } - else if (r0 == r2) { - if (r1 == _ST0_REGNO) - fdivr(r0, _ST0_REGNO); - else if (r0 == _ST0_REGNO) - fsubrr(_ST0_REGNO, r1); - else { - fxchr(r0); - fdivrr(_ST0_REGNO, r1); - fxchr(r0); - } - } - else { - fldr(r1); - fdivr(_ST0_REGNO, r2 + 1); - fstpr(r0 + 1); - } -} - -dopi(div) - -static void -_x87_absr_d(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - if (r0 == r1) { - if (r1 == _ST0_REGNO) - fabs_(); - else { - fxchr(r0); - fabs_(); - fxchr(r0); - } - } - else { - fldr(r1); - fabs_(); - fstpr(r0 + 1); - } -} - -static void -_x87_negr_d(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - if (r0 == r1) { - if (r1 == _ST0_REGNO) - fchs_(); - else { - fxchr(r0); - fchs_(); - fxchr(r0); - } - } - else { - fldr(r1); - fchs_(); - fstpr(r0 + 1); - } -} - -static void -_x87_sqrtr_d(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - if (r0 == r1) { - if (r1 == _ST0_REGNO) - fsqrt_(); - else { - fxchr(r0); - fsqrt_(); - fxchr(r0); - } - } - else { - fldr(r1); - fsqrt_(); - fstpr(r0 + 1); - } -} - -static void -_x87_truncr_d_i(jit_state_t *_jit, int32_t r0, int32_t r1) -{ -#if defined(sun) - /* for the sake of passing test cases in x87 mode, otherwise only sse - * is supported */ - fstcwm(-4, _RBP_REGNO, _NOREG, _SCL1); - ldxi_s(r0, _RBP_REGNO, -4); - extr_uc(r0, r0); -# define FPCW_CHOP 0xc00 - ori(r0, r0, FPCW_CHOP); - stxi_s(-8, _RBP_REGNO, r0); - fldcwm(-8, _RBP_REGNO, _NOREG, _SCL1); - if (r1 == _ST0_REGNO) - fistlm(CVT_OFFSET, _RBP_REGNO, _NOREG, _SCL1); - else { - fxchr(r1); - fistlm(CVT_OFFSET, _RBP_REGNO, _NOREG, _SCL1); - fxchr(r1); - } - fldcwm(-4, _RBP_REGNO, _NOREG, _SCL1); - ldxi(r0, _RBP_REGNO, CVT_OFFSET); -#else - fldr(r1); - fisttplm(CVT_OFFSET, _RBP_REGNO, _NOREG, _SCL1); - ldxi_i(r0, _RBP_REGNO, CVT_OFFSET); -#endif -} - -# if __X64 -static void -_x87_truncr_d_l(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - fldr(r1); - fisttpqm(CVT_OFFSET, _RBP_REGNO, _NOREG, _SCL1); - ldxi(r0, _RBP_REGNO, CVT_OFFSET); -} -# endif - -static void -_x87_extr_d(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - stxi(CVT_OFFSET, _RBP_REGNO, r1); -# if __X32 - fildlm(CVT_OFFSET, _RBP_REGNO, _NOREG, _SCL1); -# else - fildqm(CVT_OFFSET, _RBP_REGNO, _NOREG, _SCL1); -# endif - fstpr(r0 + 1); -} - -static void -_x87cmp(jit_state_t *_jit, int32_t code, - int32_t r0, int32_t r1, int32_t r2) -{ - jit_bool_t rc; - int32_t reg; - if ((rc = reg8_p(r0))) - reg = r0; - else { - reg = _RAX_REGNO; - movr(r0, reg); - } - ixorr(reg, reg); - if (r1 == _ST0_REGNO) - fucomir(r2); - else { - fldr(r1); - fucomipr(r2 + 1); - } - cc(code, reg); - if (!rc) - xchgr(r0, reg); -} - -static void -_x87cmp2(jit_state_t *_jit, int32_t code, - int32_t r0, int32_t r1, int32_t r2) -{ - jit_bool_t rc; - int32_t reg; - int32_t f1, f2; - if (r2 == _ST0_REGNO) f1 = r2, f2 = r1; - else f1 = r1, f2 = r2; - if ((rc = reg8_p(r0))) - reg = r0; - else { - reg = _RAX_REGNO; - movr(r0, reg); - } - ixorr(reg, reg); - if (f1 == _ST0_REGNO) - fucomir(f2); - else { - fldr(f1); - fucomipr(f2 + 1); - } - cc(code, reg); - if (!rc) - xchgr(r0, reg); -} - -static jit_word_t -_x87jcc(jit_state_t *_jit, int32_t code, - jit_word_t i0, int32_t r0, int32_t r1) -{ - if (r0 == _ST0_REGNO) - fucomir(r1); - else { - fldr(r0); - fucomipr(r1 + 1); - } - jcc(code, i0); - return (_jit->pc.w); -} - -static jit_word_t -_x87jcc2(jit_state_t *_jit, int32_t code, - jit_word_t i0, int32_t r0, int32_t r1) -{ - int32_t f0, f1; - if (r1 == _ST0_REGNO) f0 = r1, f1 = r0; - else f0 = r0, f1 = r1; - if (f0 == _ST0_REGNO) - fucomir(f1); - else { - fldr(f0); - fucomipr(f1 + 1); - } - jcc(code, i0); - return (_jit->pc.w); -} - -fopi(lt) -fopi(le) -fopi(eq) -fopi(ge) -fopi(gt) -fopi(ne) -fopi(unlt) -fopi(unle) -fopi(uneq) -fopi(unge) -fopi(ungt) -fopi(ltgt) -fopi(ord) -fopi(unord) -fbopi(lt) -fbopi(le) -fbopi(eq) -fbopi(ge) -fbopi(gt) -fbopi(ne) -fbopi(unlt) -fbopi(unle) -fbopi(uneq) -fbopi(unge) -fbopi(ungt) -fbopi(ltgt) -fbopi(ord) -fbopi(unord) - -static void -_x87_movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t *i0) -{ - union { - int32_t i; - jit_float32_t f; - } data; - int32_t reg; - - data.f = *i0; - if (data.f == 0.0 && !(data.i & 0x80000000)) - fldz(); - else if (data.f == 1.0) - fld1(); - else if (data.f == 3.3219280948873623478703195458468f) - fldl2t(); - else if (data.f == 1.4426950408889634073599246886656f) - fldl2e(); - else if (data.f == 3.1415926535897932384626421096161f) - fldpi(); - else if (data.f == 0.3010299956639811952137387498515f) - fldlg2(); - else if (data.f == 0.6931471805599453094172323683399f) - fldln2(); - else { - if (_jitc->no_data) { - reg = jit_get_reg(jit_class_gpr); - movi(rn(reg), data.i); - stxi_i(CVT_OFFSET, _RBP_REGNO, rn(reg)); - jit_unget_reg(reg); - x87_ldxi_f(r0, _RBP_REGNO, CVT_OFFSET); - } - else - x87_ldi_f(r0, (jit_word_t)i0); - return; - } - fstpr(r0 + 1); -} - -static void -_x87_ldr_f(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - fldsm(0, r1, _NOREG, _SCL1); - fstpr(r0 + 1); -} - -static void -_x87_ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0) -{ - int32_t reg; - if (x87_address_p(i0)) { - fldsm(i0, _NOREG, _NOREG, _SCL1); - fstpr(r0 + 1); - } - else { - reg = jit_get_reg(jit_class_gpr); - movi(rn(reg), i0); - x87_ldr_f(r0, rn(reg)); - jit_unget_reg(reg); - } -} - -static void -_x87_ldxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ -#if __X64_32 - int32_t reg; - reg = jit_get_reg(jit_class_gpr); - addr(rn(reg), r1, r2); - x87_ldr_f(r0, rn(reg)); - jit_unget_reg(reg); -#else - fldsm(0, r1, r2, _SCL1); - fstpr(r0 + 1); -#endif -} - -static void -_x87_ldxi_f(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) -{ - int32_t reg; - if (can_sign_extend_int_p(i0)) { - fldsm(i0, r1, _NOREG, _SCL1); - fstpr(r0 + 1); - } - else { - reg = jit_get_reg(jit_class_gpr); -#if __X64_32 - addi(rn(reg), r1, i0); - x87_ldr_f(r0, rn(reg)); -#else - movi(rn(reg), i0); - x87_ldxr_f(r0, r1, rn(reg)); -#endif - jit_unget_reg(reg); - } -} - -static void -_x87_str_f(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - if (r1 == _ST0_REGNO) - fstsm(0, r0, _NOREG, _SCL1); - else { - fxchr(r1); - fstsm(0, r0, _NOREG, _SCL1); - fxchr(r1); - } -} - -static void -_x87_sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0) -{ - int32_t reg; - if (!x87_address_p(i0)) { - reg = jit_get_reg(jit_class_gpr); - movi(rn(reg), i0); - x87_str_f(rn(reg), r0); - jit_unget_reg(reg); - } - else if (r0 == _ST0_REGNO) - fstsm(i0, _NOREG, _NOREG, _SCL1); - else { - fxchr(r0); - fstsm(i0, _NOREG, _NOREG, _SCL1); - fxchr(r0); - } -} - -static void -_x87_stxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ -#if __X64_32 - int32_t reg; - reg = jit_get_reg(jit_class_gpr); - addr(rn(reg), r0, r1); - x87_str_f(rn(reg), r2); - jit_unget_reg(reg); -#else - if (r2 == _ST0_REGNO) - fstsm(0, r0, r1, _SCL1); - else { - fxchr(r2); - fstsm(0, r0, r1, _SCL1); - fxchr(r2); - } -#endif -} - -static void -_x87_stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1) -{ - int32_t reg; - if (!can_sign_extend_int_p(i0)) { - reg = jit_get_reg(jit_class_gpr); -#if __X64_32 - addi(rn(reg), r0, i0); - x87_str_f(rn(reg), r1); -#else - movi(rn(reg), i0); - x87_stxr_f(rn(reg), r0, r1); -#endif - jit_unget_reg(reg); - } - else if (r1 == _ST0_REGNO) - fstsm(i0, r0, _NOREG, _SCL1); - else { - fxchr(r1); - fstsm(i0, r0, _NOREG, _SCL1); - fxchr(r1); - } -} - -static void -_x87_movr_d(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - if (r0 != r1) { - if (r1 == _ST0) - fstr(r0); - else if (r0 == _ST0) { - fxchr(r1); - fstr(r1); - } - else { - fldr(r1); - fstpr(r0 + 1); - } - } -} - -static void -_x87_movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t *i0) -{ - union { - int32_t ii[2]; - jit_word_t w; - jit_float64_t d; - } data; - int32_t reg; - - data.d = *i0; - if (data.d == 0.0 && !(data.ii[1] & 0x80000000)) - fldz(); - else if (data.d == 1.0) - fld1(); - else if (data.d == 3.3219280948873623478703195458468) - fldl2t(); - else if (data.d == 1.4426950408889634073599246886656) - fldl2e(); - else if (data.d == 3.1415926535897932384626421096161) - fldpi(); - else if (data.d == 0.3010299956639811952137387498515) - fldlg2(); - else if (data.d == 0.6931471805599453094172323683399) - fldln2(); - else { - if (_jitc->no_data) { - reg = jit_get_reg(jit_class_gpr); -#if __X32 || __X64_32 - movi(rn(reg), data.ii[0]); - stxi_i(CVT_OFFSET, _RBP_REGNO, rn(reg)); - movi(rn(reg), data.ii[1]); - stxi_i(CVT_OFFSET + 4, _RBP_REGNO, rn(reg)); -#else - movi(rn(reg), data.w); - stxi_l(CVT_OFFSET, _RBP_REGNO, rn(reg)); -#endif - jit_unget_reg(reg); - x87_ldxi_d(r0, _RBP_REGNO, CVT_OFFSET); - } - else - x87_ldi_d(r0, (jit_word_t)i0); - return; - } - fstpr(r0 + 1); -} - -dopi(lt) -dopi(le) - -static void -_x87_eqr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ - jit_bool_t rc; - jit_word_t jp_code; - int32_t reg, f1, f2; - if (r2 == _ST0_REGNO) f1 = r2, f2 = r1; - else f1 = r1, f2 = r2; - if ((rc = reg8_p(r0))) - reg = r0; - else { - reg = _RAX_REGNO; - movr(r0, reg); - } - ixorr(reg, reg); - if (f1 == _ST0_REGNO) - fucomir(f2); - else { - fldr(f1); - fucomipr(f2 + 1); - } - jpes(0); - jp_code = _jit->pc.w; - cc(X86_CC_E, reg); - patch_rel_char(jp_code, _jit->pc.w); - if (!rc) - xchgr(r0, reg); -} - -dopi(eq) -dopi(ge) -dopi(gt) - -static void -_x87_ner_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ - jit_bool_t rc; - jit_word_t jp_code; - int32_t reg, f1, f2; - if (r2 == _ST0_REGNO) f1 = r2, f2 = r1; - else f1 = r1, f2 = r2; - if ((rc = reg8_p(r0))) - reg = r0; - else { - reg = _RAX_REGNO; - movr(r0, reg); - } - imovi(reg, 1); - if (f1 == _ST0_REGNO) - fucomir(f2); - else { - fldr(f1); - fucomipr(f2 + 1); - } - jpes(0); - jp_code = _jit->pc.w; - cc(X86_CC_NE, reg); - patch_rel_char(jp_code, _jit->pc.w); - if (!rc) - xchgr(r0, reg); -} - -dopi(ne) -dopi(unlt) -dopi(unle) -dopi(uneq) -dopi(unge) -dopi(ungt) - -static void -_x87_ltgtr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ - if (r1 == r2) - movi(r0, 1); - else - x87cmp2(X86_CC_NE, r0, r1, r2); -} - -dopi(ltgt) -dopi(ord) -dopi(unord) - -static void -_x87_ldr_d(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - fldlm(0, r1, _NOREG, _SCL1); - fstpr(r0 + 1); -} - -static void -_x87_ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0) -{ - int32_t reg; - if (x87_address_p(i0)) { - fldlm(i0, _NOREG, _NOREG, _SCL1); - fstpr(r0 + 1); - } - else { - reg = jit_get_reg(jit_class_gpr); - movi(rn(reg), i0); - x87_ldr_d(r0, rn(reg)); - jit_unget_reg(reg); - } -} - -static void -_x87_ldxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ -#if __X64_32 - int32_t reg; - reg = jit_get_reg(jit_class_gpr); - addr(rn(reg), r1, r2); - x87_ldr_d(r0, rn(reg)); - jit_unget_reg(reg); -#else - fldlm(0, r1, r2, _SCL1); - fstpr(r0 + 1); -#endif -} - -static void -_x87_ldxi_d(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) -{ - int32_t reg; - if (can_sign_extend_int_p(i0)) { - fldlm(i0, r1, _NOREG, _SCL1); - fstpr(r0 + 1); - } - else { - reg = jit_get_reg(jit_class_gpr); -#if __X64_32 - addi(rn(reg), r1, i0); - x87_ldr_d(r0, rn(reg)); -#else - movi(rn(reg), i0); - x87_ldxr_d(r0, r1, rn(reg)); -#endif - jit_unget_reg(reg); - } -} - -static void -_x87_str_d(jit_state_t *_jit, int32_t r0, int32_t r1) -{ - if (r1 == _ST0_REGNO) - fstlm(0, r0, _NOREG, _SCL1); - else { - fxchr(r1); - fstlm(0, r0, _NOREG, _SCL1); - fxchr(r1); - } -} - -static void -_x87_sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0) -{ - int32_t reg; - if (!x87_address_p(i0)) { - reg = jit_get_reg(jit_class_gpr); - movi(rn(reg), i0); - x87_str_d(rn(reg), r0); - jit_unget_reg(reg); - } - else if (r0 == _ST0_REGNO) - fstlm(i0, _NOREG, _NOREG, _SCL1); - else { - fxchr(r0); - fstlm(i0, _NOREG, _NOREG, _SCL1); - fxchr(r0); - } -} - -static void -_x87_stxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) -{ -#if __X64_32 - int32_t reg; - reg = jit_get_reg(jit_class_gpr); - addr(rn(reg), r0, r1); - x87_str_d(rn(reg), r2); - jit_unget_reg(reg); -#else - if (r2 == _ST0_REGNO) - fstlm(0, r0, r1, _SCL1); - else { - fxchr(r2); - fstlm(0, r0, r1, _SCL1); - fxchr(r2); - } -#endif -} - -static void -_x87_stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1) -{ - int32_t reg; - if (!can_sign_extend_int_p(i0)) { - reg = jit_get_reg(jit_class_gpr); -#if __X64_32 - addi(rn(reg), r0, i0); - x87_str_d(rn(reg), r1); -#else - movi(rn(reg), i0); - x87_stxr_d(rn(reg), r0, r1); -#endif - jit_unget_reg(reg); - } - else if (r1 == _ST0_REGNO) - fstlm(i0, r0, _NOREG, _SCL1); - else { - fxchr(r1); - fstlm(i0, r0, _NOREG, _SCL1); - fxchr(r1); - } -} - -dbopi(lt) -dbopi(le) - -static jit_word_t -_x87_beqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1) -{ - int32_t f0, f1; - jit_word_t jp_code; - if (r1 == _ST0_REGNO) f0 = r1, f1 = r0; - else f0 = r0, f1 = r1; - if (f0 == _ST0_REGNO) - fucomir(f1); - else { - fldr(f0); - fucomipr(f1 + 1); - } - jpes(0); - jp_code = _jit->pc.w; - jcc(X86_CC_E, i0); - patch_rel_char(jp_code, _jit->pc.w); - return (_jit->pc.w); -} -dbopi(eq) -dbopi(ge) -dbopi(gt) - -static jit_word_t -_x87_bner_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1) -{ - int32_t f0, f1; - jit_word_t jp_code; - jit_word_t jz_code; - if (r1 == _ST0_REGNO) f0 = r1, f1 = r0; - else f0 = r0, f1 = r1; - if (f0 == _ST0_REGNO) - fucomir(f1); - else { - fldr(f0); - fucomipr(f1 + 1); - } - jpes(0); - jp_code = _jit->pc.w; - jzs(0); - jz_code = _jit->pc.w; - patch_rel_char(jp_code, _jit->pc.w); - jmpi(i0); - patch_rel_char(jz_code, _jit->pc.w); - return (_jit->pc.w); -} -dbopi(ne) -dbopi(unlt) -dbopi(unle) -dbopi(uneq) -dbopi(unge) -dbopi(ungt) -dbopi(ltgt) -dbopi(ord) -dbopi(unord) -# undef fopi -# undef fbopi -# undef dopi -# undef dbopi -# undef fpr_bopi -# undef fpr_opi -#endif diff --git a/lightening/x86.c b/lightening/x86.c index 79f98249d..6e26f9e70 100644 --- a/lightening/x86.c +++ b/lightening/x86.c @@ -159,7 +159,7 @@ jit_get_cpu(void) /* i386 or i486 without cpuid */ if ((ac & (1 << 21)) == 0) /* probably without x87 as well */ - return false; + return 0; #endif /* query %eax = 1 function */ @@ -192,8 +192,8 @@ jit_get_cpu(void) jit_cpu.avx = ecx.bits.avx; /* query %eax = 0x80000001 function */ - __asm__ volatile ( #if __X64 + __asm__ volatile ( # if __X64_32 "xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" # else From e9d1567f7ff18f9386d726654b357e93c6e0cfc4 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 15:00:29 +0200 Subject: [PATCH 04/18] Use jit_word_t for register-sized values instead of intmax_t --- lightening.h | 4 ++-- lightening/lightening.c | 2 +- tests/Makefile | 2 +- tests/addi.c | 2 +- tests/addr.c | 4 ++-- tests/addx.c | 6 +++--- tests/andi.c | 4 ++-- tests/andr.c | 6 +++--- tests/beqi.c | 4 ++-- tests/beqr.c | 6 +++--- tests/beqr_d.c | 2 +- tests/beqr_f.c | 2 +- tests/bgei.c | 4 ++-- tests/bgei_u.c | 4 ++-- tests/bger.c | 6 +++--- tests/bger_d.c | 2 +- tests/bger_f.c | 2 +- tests/bger_u.c | 6 +++--- tests/bgti.c | 4 ++-- tests/bgti_u.c | 4 ++-- tests/bgtr.c | 6 +++--- tests/bgtr_d.c | 2 +- tests/bgtr_f.c | 2 +- tests/bgtr_u.c | 6 +++--- tests/blei.c | 4 ++-- tests/blei_u.c | 4 ++-- tests/bler.c | 6 +++--- tests/bler_d.c | 2 +- tests/bler_f.c | 2 +- tests/bler_u.c | 6 +++--- tests/bltgtr_d.c | 2 +- tests/bltgtr_f.c | 2 +- tests/blti.c | 4 ++-- tests/blti_u.c | 4 ++-- tests/bltr.c | 6 +++--- tests/bltr_d.c | 2 +- tests/bltr_f.c | 2 +- tests/bltr_u.c | 6 +++--- tests/bmci.c | 4 ++-- tests/bmcr.c | 6 +++--- tests/bmsi.c | 4 ++-- tests/bmsr.c | 6 +++--- tests/bnei.c | 4 ++-- tests/bner.c | 6 +++--- tests/bner_d.c | 2 +- tests/bner_f.c | 2 +- tests/boaddi.c | 6 +++--- tests/boaddi_u.c | 6 +++--- tests/boaddr.c | 8 ++++---- tests/boaddr_u.c | 8 ++++---- tests/bordr_d.c | 2 +- tests/bordr_f.c | 2 +- tests/bosubi.c | 6 +++--- tests/bosubi_u.c | 6 +++--- tests/bosubr.c | 8 ++++---- tests/bosubr_u.c | 8 ++++---- tests/bswapr_ui.c | 4 ++-- tests/bswapr_ul.c | 4 ++-- tests/bswapr_us.c | 4 ++-- tests/buneqr_d.c | 2 +- tests/buneqr_f.c | 2 +- tests/bunger_d.c | 2 +- tests/bunger_f.c | 2 +- tests/bungtr_d.c | 2 +- tests/bungtr_f.c | 2 +- tests/bunler_d.c | 2 +- tests/bunler_f.c | 2 +- tests/bunltr_d.c | 2 +- tests/bunltr_f.c | 2 +- tests/bunordr_d.c | 2 +- tests/bunordr_f.c | 2 +- tests/bxaddi.c | 6 +++--- tests/bxaddi_u.c | 6 +++--- tests/bxaddr.c | 8 ++++---- tests/bxaddr_u.c | 8 ++++---- tests/bxsubi.c | 6 +++--- tests/bxsubi_u.c | 6 +++--- tests/bxsubr.c | 8 ++++---- tests/bxsubr_u.c | 8 ++++---- tests/comr.c | 4 ++-- tests/divr.c | 6 +++--- tests/divr_u.c | 6 +++--- tests/extr_c.c | 4 ++-- tests/extr_d.c | 4 ++-- tests/extr_f.c | 4 ++-- tests/extr_i.c | 4 ++-- tests/extr_s.c | 4 ++-- tests/extr_uc.c | 4 ++-- tests/extr_ui.c | 4 ++-- tests/extr_us.c | 4 ++-- tests/ldi_c.c | 2 +- tests/ldi_i.c | 2 +- tests/ldi_l.c | 2 +- tests/ldi_s.c | 2 +- tests/ldi_uc.c | 2 +- tests/ldi_ui.c | 2 +- tests/ldi_us.c | 2 +- tests/ldr_c.c | 2 +- tests/ldr_i.c | 2 +- tests/ldr_l.c | 2 +- tests/ldr_s.c | 2 +- tests/ldr_uc.c | 2 +- tests/ldr_ui.c | 2 +- tests/ldr_us.c | 2 +- tests/ldxi_c.c | 4 ++-- tests/ldxi_d.c | 4 ++-- tests/ldxi_f.c | 4 ++-- tests/ldxi_i.c | 2 +- tests/ldxi_l.c | 4 ++-- tests/ldxi_s.c | 4 ++-- tests/ldxi_uc.c | 4 ++-- tests/ldxi_ui.c | 4 ++-- tests/ldxi_us.c | 4 ++-- tests/ldxr_c.c | 4 ++-- tests/ldxr_d.c | 4 ++-- tests/ldxr_f.c | 4 ++-- tests/ldxr_i.c | 4 ++-- tests/ldxr_l.c | 4 ++-- tests/ldxr_s.c | 4 ++-- tests/ldxr_uc.c | 4 ++-- tests/ldxr_ui.c | 4 ++-- tests/ldxr_us.c | 4 ++-- tests/lshi.c | 4 ++-- tests/lshr.c | 6 +++--- tests/mulr.c | 6 +++--- tests/negr.c | 4 ++-- tests/nop.c | 2 +- tests/ori.c | 4 ++-- tests/orr.c | 6 +++--- tests/pushpop.c | 4 ++-- tests/qdivr.c | 8 ++++---- tests/qdivr_u.c | 9 ++++----- tests/qmulr.c | 8 ++++---- tests/qmulr_u.c | 8 ++++---- tests/remr.c | 6 +++--- tests/remr_u.c | 6 +++--- tests/rshi.c | 4 ++-- tests/rshi_u.c | 4 ++-- tests/rshr.c | 6 +++--- tests/rshr_u.c | 6 +++--- tests/stxi_c.c | 4 ++-- tests/stxi_d.c | 4 ++-- tests/stxi_f.c | 4 ++-- tests/stxi_i.c | 4 ++-- tests/stxi_l.c | 4 ++-- tests/stxi_s.c | 4 ++-- tests/stxr_c.c | 4 ++-- tests/stxr_d.c | 4 ++-- tests/stxr_f.c | 4 ++-- tests/stxr_i.c | 4 ++-- tests/stxr_l.c | 4 ++-- tests/stxr_s.c | 4 ++-- tests/subr.c | 4 ++-- tests/subx.c | 6 +++--- tests/xori.c | 4 ++-- tests/xorr.c | 6 +++--- 156 files changed, 322 insertions(+), 323 deletions(-) diff --git a/lightening.h b/lightening.h index 437ba1872..db327fc45 100644 --- a/lightening.h +++ b/lightening.h @@ -124,8 +124,8 @@ enum jit_operand_abi JIT_OPERAND_ABI_POINTER, JIT_OPERAND_ABI_FLOAT, JIT_OPERAND_ABI_DOUBLE, - JIT_OPERAND_ABI_INTMAX = CHOOSE_32_64(JIT_OPERAND_ABI_INT32, - JIT_OPERAND_ABI_INT64) + JIT_OPERAND_ABI_WORD = CHOOSE_32_64(JIT_OPERAND_ABI_INT32, + JIT_OPERAND_ABI_INT64) }; enum jit_operand_kind diff --git a/lightening/lightening.c b/lightening/lightening.c index 3b71654ff..de945e02f 100644 --- a/lightening/lightening.c +++ b/lightening/lightening.c @@ -565,7 +565,7 @@ abi_mem_to_fpr(jit_state_t *_jit, enum jit_operand_abi abi, static void abi_imm_to_mem(jit_state_t *_jit, enum jit_operand_abi abi, jit_gpr_t base, - ptrdiff_t offset, intmax_t imm) + ptrdiff_t offset, jit_imm_t imm) { ASSERT(!is_fpr_arg(abi)); diff --git a/tests/Makefile b/tests/Makefile index f068308c7..4ba054afd 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -27,7 +27,7 @@ test-native-%: %.c lightening-native.o test.h test-ia32-%: CC = $(CC_IA32) test-ia32-%: %.c lightening-ia32.o test.h - $(CC) -m32 $(CFLAGS) $(CPPFLAGS) -I.. -o $@ lightening-ia32.o $< + $(CC) $(CFLAGS) $(CPPFLAGS) -I.. -o $@ lightening-ia32.o $< clean: rm -f $(foreach TARGET,$(TARGETS),$(addprefix test-$(TARGET)-,$(TESTS))) diff --git a/tests/addi.c b/tests/addi.c index f0e632c94..85d4d8e9b 100644 --- a/tests/addi.c +++ b/tests/addi.c @@ -4,7 +4,7 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_addi(j, JIT_R0, JIT_R0, 69); jit_retr(j, JIT_R0); diff --git a/tests/addr.c b/tests/addr.c index 8894cc5dc..a54f75661 100644 --- a/tests/addr.c +++ b/tests/addr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_addr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); diff --git a/tests/addx.c b/tests/addx.c index 6013e52c1..875e09f42 100644 --- a/tests/addx.c +++ b/tests/addx.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_movi(j, JIT_R2, 0); jit_addcr(j, JIT_R0, JIT_R0, JIT_R1); @@ -15,7 +15,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0, 0) == 0); diff --git a/tests/andi.c b/tests/andi.c index a1d3203c9..2f84d767e 100644 --- a/tests/andi.c +++ b/tests/andi.c @@ -4,7 +4,7 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_andi(j, JIT_R0, JIT_R0, 1); jit_retr(j, JIT_R0); @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t) = ret; + jit_word_t (*f)(jit_word_t) = ret; ASSERT(f(0x7fffffff) == 1); ASSERT(f(0x80000000) == 0); diff --git a/tests/andr.c b/tests/andr.c index 62cc61e8a..2e09527b8 100644 --- a/tests/andr.c +++ b/tests/andr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_andr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0x7fffffff, 1) == 1); ASSERT(f(1, 0x7fffffff) == 1); diff --git a/tests/beqi.c b/tests/beqi.c index 994147306..857d927a5 100644 --- a/tests/beqi.c +++ b/tests/beqi.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_beqi(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 1); ASSERT(f(1) == 0); diff --git a/tests/beqr.c b/tests/beqr.c index 2bdeb24a9..e8bacd017 100644 --- a/tests/beqr.c +++ b/tests/beqr.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_beqr(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/beqr_d.c b/tests/beqr_d.c index 628e80ce3..1b7f88b25 100644 --- a/tests/beqr_d.c +++ b/tests/beqr_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/beqr_f.c b/tests/beqr_f.c index dca60fa98..85b464f8f 100644 --- a/tests/beqr_f.c +++ b/tests/beqr_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/bgei.c b/tests/bgei.c index 7a847e699..939e1a02f 100644 --- a/tests/bgei.c +++ b/tests/bgei.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bgei(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 1); ASSERT(f(1) == 1); diff --git a/tests/bgei_u.c b/tests/bgei_u.c index 6847613c5..b5253e931 100644 --- a/tests/bgei_u.c +++ b/tests/bgei_u.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bgei_u(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 1); ASSERT(f(1) == 1); diff --git a/tests/bger.c b/tests/bger.c index 68df65bdf..d59e4f456 100644 --- a/tests/bger.c +++ b/tests/bger.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bger(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/bger_d.c b/tests/bger_d.c index ab1190ea7..281803dc6 100644 --- a/tests/bger_d.c +++ b/tests/bger_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/bger_f.c b/tests/bger_f.c index 07cf7f075..d9c556c23 100644 --- a/tests/bger_f.c +++ b/tests/bger_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/bger_u.c b/tests/bger_u.c index 806953c60..13c6a1dc4 100644 --- a/tests/bger_u.c +++ b/tests/bger_u.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bger_u(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/bgti.c b/tests/bgti.c index e6e6c05db..36df65930 100644 --- a/tests/bgti.c +++ b/tests/bgti.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bgti(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/bgti_u.c b/tests/bgti_u.c index f604fed36..c5be4e3f3 100644 --- a/tests/bgti_u.c +++ b/tests/bgti_u.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bgti_u(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/bgtr.c b/tests/bgtr.c index de31bf876..222816a26 100644 --- a/tests/bgtr.c +++ b/tests/bgtr.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bgtr(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 0); diff --git a/tests/bgtr_d.c b/tests/bgtr_d.c index 1cc8dd5eb..f2892ab83 100644 --- a/tests/bgtr_d.c +++ b/tests/bgtr_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 0); diff --git a/tests/bgtr_f.c b/tests/bgtr_f.c index 37d65f2b8..4ac08a344 100644 --- a/tests/bgtr_f.c +++ b/tests/bgtr_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 0); diff --git a/tests/bgtr_u.c b/tests/bgtr_u.c index 31202c455..23ade0931 100644 --- a/tests/bgtr_u.c +++ b/tests/bgtr_u.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bgtr_u(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 0); diff --git a/tests/blei.c b/tests/blei.c index c9317eab8..4303cae13 100644 --- a/tests/blei.c +++ b/tests/blei.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_blei(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 1); ASSERT(f(1) == 0); diff --git a/tests/blei_u.c b/tests/blei_u.c index 614ddf0be..23c02729d 100644 --- a/tests/blei_u.c +++ b/tests/blei_u.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_blei_u(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 1); ASSERT(f(1) == 0); diff --git a/tests/bler.c b/tests/bler.c index ba580b032..0d3f160d9 100644 --- a/tests/bler.c +++ b/tests/bler.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bler(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 1); diff --git a/tests/bler_d.c b/tests/bler_d.c index f11b92356..7d5253160 100644 --- a/tests/bler_d.c +++ b/tests/bler_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 1); diff --git a/tests/bler_f.c b/tests/bler_f.c index 9c0a7f710..5d57bc11d 100644 --- a/tests/bler_f.c +++ b/tests/bler_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 1); diff --git a/tests/bler_u.c b/tests/bler_u.c index 036bb6420..a4caf5b31 100644 --- a/tests/bler_u.c +++ b/tests/bler_u.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bler_u(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 1); diff --git a/tests/bltgtr_d.c b/tests/bltgtr_d.c index 6d433e47b..21fa5467e 100644 --- a/tests/bltgtr_d.c +++ b/tests/bltgtr_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/bltgtr_f.c b/tests/bltgtr_f.c index 711e51647..872fbb3c3 100644 --- a/tests/bltgtr_f.c +++ b/tests/bltgtr_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/blti.c b/tests/blti.c index a16ac0220..a011f5a6c 100644 --- a/tests/blti.c +++ b/tests/blti.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_blti(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 0); diff --git a/tests/blti_u.c b/tests/blti_u.c index 1a93f1d1e..b4afe71f5 100644 --- a/tests/blti_u.c +++ b/tests/blti_u.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_blti_u(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 0); diff --git a/tests/bltr.c b/tests/bltr.c index 7802fa82e..d9d252007 100644 --- a/tests/bltr.c +++ b/tests/bltr.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bltr(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/bltr_d.c b/tests/bltr_d.c index 11930eee2..a1b60a314 100644 --- a/tests/bltr_d.c +++ b/tests/bltr_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/bltr_f.c b/tests/bltr_f.c index 4bb3ac48a..adbafec37 100644 --- a/tests/bltr_f.c +++ b/tests/bltr_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/bltr_u.c b/tests/bltr_u.c index c73949f6a..4ec33c26b 100644 --- a/tests/bltr_u.c +++ b/tests/bltr_u.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bltr_u(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/bmci.c b/tests/bmci.c index 8846c9462..55cd4a33a 100644 --- a/tests/bmci.c +++ b/tests/bmci.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bmci(j, JIT_R0, 1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 1); ASSERT(f(1) == 0); diff --git a/tests/bmcr.c b/tests/bmcr.c index ba8b246c0..00dad50d2 100644 --- a/tests/bmcr.c +++ b/tests/bmcr.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bmcr(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 1); diff --git a/tests/bmsi.c b/tests/bmsi.c index 538575f8b..a51616427 100644 --- a/tests/bmsi.c +++ b/tests/bmsi.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bmsi(j, JIT_R0, 1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/bmsr.c b/tests/bmsr.c index 3ac320ff9..79a9d235f 100644 --- a/tests/bmsr.c +++ b/tests/bmsr.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bmsr(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 0); diff --git a/tests/bnei.c b/tests/bnei.c index f1ac741c8..3b064820b 100644 --- a/tests/bnei.c +++ b/tests/bnei.c @@ -4,14 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bnei(j, JIT_R0, 0); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/bner.c b/tests/bner.c index 1f8f05dbe..2e1321682 100644 --- a/tests/bner.c +++ b/tests/bner.c @@ -4,15 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bner(j, JIT_R0, JIT_R1); jit_reti(j, 0); jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/bner_d.c b/tests/bner_d.c index afe1a363f..3f29d460b 100644 --- a/tests/bner_d.c +++ b/tests/bner_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/bner_f.c b/tests/bner_f.c index bc5782439..e43ddf9e8 100644 --- a/tests/bner_f.c +++ b/tests/bner_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/boaddi.c b/tests/boaddi.c index 3ee3bef28..6dcc4ea5e 100644 --- a/tests/boaddi.c +++ b/tests/boaddi.c @@ -1,12 +1,12 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_boaddi(j, JIT_R0, 1); jit_retr(j, JIT_R0); @@ -14,7 +14,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_movi(j, JIT_R0, overflowed); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(-1) == 0); ASSERT(f(0) == 1); diff --git a/tests/boaddi_u.c b/tests/boaddi_u.c index c55c1f80b..364c71c96 100644 --- a/tests/boaddi_u.c +++ b/tests/boaddi_u.c @@ -1,12 +1,12 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_boaddi_u(j, JIT_R0, 1); jit_retr(j, JIT_R0); @@ -14,7 +14,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_movi(j, JIT_R0, overflowed); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(-1) == overflowed); ASSERT(f(0) == 1); diff --git a/tests/boaddr.c b/tests/boaddr.c index 4c86c320d..c07417c20 100644 --- a/tests/boaddr.c +++ b/tests/boaddr.c @@ -1,13 +1,13 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_boaddr(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -15,7 +15,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_movi(j, JIT_R0, overflowed); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(1, 1) == 2); diff --git a/tests/boaddr_u.c b/tests/boaddr_u.c index 9c610f54b..4835857b7 100644 --- a/tests/boaddr_u.c +++ b/tests/boaddr_u.c @@ -1,13 +1,13 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_boaddr_u(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -15,7 +15,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_movi(j, JIT_R0, overflowed); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(1, 1) == 2); diff --git a/tests/bordr_d.c b/tests/bordr_d.c index 6e220d931..9a611db0a 100644 --- a/tests/bordr_d.c +++ b/tests/bordr_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 1); diff --git a/tests/bordr_f.c b/tests/bordr_f.c index 29bf8d4af..fcfac6e86 100644 --- a/tests/bordr_f.c +++ b/tests/bordr_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 1); diff --git a/tests/bosubi.c b/tests/bosubi.c index ccf358175..41e624517 100644 --- a/tests/bosubi.c +++ b/tests/bosubi.c @@ -1,12 +1,12 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bosubi(j, JIT_R0, 1); jit_retr(j, JIT_R0); @@ -14,7 +14,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_movi(j, JIT_R0, overflowed); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(-1) == -2); ASSERT(f(0) == -1); diff --git a/tests/bosubi_u.c b/tests/bosubi_u.c index 4b36b9086..b494a7d92 100644 --- a/tests/bosubi_u.c +++ b/tests/bosubi_u.c @@ -1,12 +1,12 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bosubi_u(j, JIT_R0, 1); jit_retr(j, JIT_R0); @@ -14,7 +14,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_movi(j, JIT_R0, overflowed); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(-1) == -2); ASSERT(f(0) == overflowed); diff --git a/tests/bosubr.c b/tests/bosubr.c index f77d9bac9..17da71f83 100644 --- a/tests/bosubr.c +++ b/tests/bosubr.c @@ -1,13 +1,13 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bosubr(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -15,7 +15,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_movi(j, JIT_R0, overflowed); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == -1); diff --git a/tests/bosubr_u.c b/tests/bosubr_u.c index 2e9562c4e..a3d8ae355 100644 --- a/tests/bosubr_u.c +++ b/tests/bosubr_u.c @@ -1,13 +1,13 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bosubr_u(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -15,7 +15,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_movi(j, JIT_R0, overflowed); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(1, 1) == 0); diff --git a/tests/bswapr_ui.c b/tests/bswapr_ui.c index 2046d7f21..653eb2d42 100644 --- a/tests/bswapr_ui.c +++ b/tests/bswapr_ui.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_bswapr_ui(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(0x12345678) == 0x78563412); diff --git a/tests/bswapr_ul.c b/tests/bswapr_ul.c index 1b712dbe9..106a94cef 100644 --- a/tests/bswapr_ul.c +++ b/tests/bswapr_ul.c @@ -5,12 +5,12 @@ 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_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_bswapr_ul(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(0x12345678) == 0x7856341200000000); diff --git a/tests/bswapr_us.c b/tests/bswapr_us.c index 44302bc02..fd0d439f6 100644 --- a/tests/bswapr_us.c +++ b/tests/bswapr_us.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_bswapr_us(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(0x12345678) == 0x7856); diff --git a/tests/buneqr_d.c b/tests/buneqr_d.c index b24bb2b89..eead53ef3 100644 --- a/tests/buneqr_d.c +++ b/tests/buneqr_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/buneqr_f.c b/tests/buneqr_f.c index 2c88bf043..b64874209 100644 --- a/tests/buneqr_f.c +++ b/tests/buneqr_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/bunger_d.c b/tests/bunger_d.c index 21f851ff6..e949c9719 100644 --- a/tests/bunger_d.c +++ b/tests/bunger_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/bunger_f.c b/tests/bunger_f.c index 3ea27d408..4fc598393 100644 --- a/tests/bunger_f.c +++ b/tests/bunger_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 0); diff --git a/tests/bungtr_d.c b/tests/bungtr_d.c index 1af89877d..f00c1ea3d 100644 --- a/tests/bungtr_d.c +++ b/tests/bungtr_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 0); diff --git a/tests/bungtr_f.c b/tests/bungtr_f.c index f60337766..722779c0f 100644 --- a/tests/bungtr_f.c +++ b/tests/bungtr_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 0); diff --git a/tests/bunler_d.c b/tests/bunler_d.c index d16a0dc97..d3cec1842 100644 --- a/tests/bunler_d.c +++ b/tests/bunler_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 1); diff --git a/tests/bunler_f.c b/tests/bunler_f.c index 56680bab4..fa3b0ef99 100644 --- a/tests/bunler_f.c +++ b/tests/bunler_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 1); ASSERT(f(0, 1) == 1); diff --git a/tests/bunltr_d.c b/tests/bunltr_d.c index 30b157698..e6adf6d6c 100644 --- a/tests/bunltr_d.c +++ b/tests/bunltr_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/bunltr_f.c b/tests/bunltr_f.c index 97c89a08c..4d6048eae 100644 --- a/tests/bunltr_f.c +++ b/tests/bunltr_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 1); diff --git a/tests/bunordr_d.c b/tests/bunordr_d.c index 3c124f964..f9d074b06 100644 --- a/tests/bunordr_d.c +++ b/tests/bunordr_d.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(double, double) = jit_end(j, NULL); + jit_word_t (*f)(double, double) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 0); diff --git a/tests/bunordr_f.c b/tests/bunordr_f.c index a1bd0a41c..5dffc6920 100644 --- a/tests/bunordr_f.c +++ b/tests/bunordr_f.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_patch_here(j, r); jit_reti(j, 1); - intmax_t (*f)(float, float) = jit_end(j, NULL); + jit_word_t (*f)(float, float) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == 0); diff --git a/tests/bxaddi.c b/tests/bxaddi.c index 43894a294..30ea9430b 100644 --- a/tests/bxaddi.c +++ b/tests/bxaddi.c @@ -1,19 +1,19 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bxaddi(j, JIT_R0, 1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(-1) == 0); ASSERT(f(0) == 1); diff --git a/tests/bxaddi_u.c b/tests/bxaddi_u.c index c67d40d1d..702f135a3 100644 --- a/tests/bxaddi_u.c +++ b/tests/bxaddi_u.c @@ -1,19 +1,19 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bxaddi_u(j, JIT_R0, 1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(-1) == overflowed); ASSERT(f(0) == 1); diff --git a/tests/bxaddr.c b/tests/bxaddr.c index 85af51d49..84b3639f0 100644 --- a/tests/bxaddr.c +++ b/tests/bxaddr.c @@ -1,20 +1,20 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bxaddr(j, JIT_R0, JIT_R1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(1, 1) == 2); diff --git a/tests/bxaddr_u.c b/tests/bxaddr_u.c index 517b03fa1..e30ca2aa9 100644 --- a/tests/bxaddr_u.c +++ b/tests/bxaddr_u.c @@ -1,20 +1,20 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bxaddr_u(j, JIT_R0, JIT_R1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(1, 1) == 2); diff --git a/tests/bxsubi.c b/tests/bxsubi.c index f6b66f8eb..23174d7a1 100644 --- a/tests/bxsubi.c +++ b/tests/bxsubi.c @@ -1,19 +1,19 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bxsubi(j, JIT_R0, 1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(-1) == -2); ASSERT(f(0) == -1); diff --git a/tests/bxsubi_u.c b/tests/bxsubi_u.c index 95a78df67..9c50858ef 100644 --- a/tests/bxsubi_u.c +++ b/tests/bxsubi_u.c @@ -1,19 +1,19 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bxsubi_u(j, JIT_R0, 1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(-1) == -2); ASSERT(f(0) == overflowed); diff --git a/tests/bxsubr.c b/tests/bxsubr.c index 9f9b79cad..5ac2a7007 100644 --- a/tests/bxsubr.c +++ b/tests/bxsubr.c @@ -1,20 +1,20 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bxsubr(j, JIT_R0, JIT_R1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(0, 1) == -1); diff --git a/tests/bxsubr_u.c b/tests/bxsubr_u.c index 0d505b0cf..6ac20dbbf 100644 --- a/tests/bxsubr_u.c +++ b/tests/bxsubr_u.c @@ -1,20 +1,20 @@ #include "test.h" -static const intmax_t overflowed = 0xcabba9e5; +static const jit_word_t overflowed = 0xcabba9e5; static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bxsubr_u(j, JIT_R0, JIT_R1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); ASSERT(f(0, 0) == 0); ASSERT(f(1, 1) == 0); diff --git a/tests/comr.c b/tests/comr.c index 4b0151a5d..bbdc287a1 100644 --- a/tests/comr.c +++ b/tests/comr.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_comr(j, JIT_R0, JIT_R0); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); #if __WORDSIZE == 32 ASSERT(f(0) == 0xffffffff); diff --git a/tests/divr.c b/tests/divr.c index 4ca4904ef..b83382c4f 100644 --- a/tests/divr.c +++ b/tests/divr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_divr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0x7fffffff, 1) == 0x7fffffff); ASSERT(f(1, 0x7fffffff) == 0); diff --git a/tests/divr_u.c b/tests/divr_u.c index c51bbc786..37ea02260 100644 --- a/tests/divr_u.c +++ b/tests/divr_u.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_divr_u(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0x7fffffff, 1) == 0x7fffffff); ASSERT(f(1, 0x7fffffff) == 0); diff --git a/tests/extr_c.c b/tests/extr_c.c index 834777d69..06ea12a08 100644 --- a/tests/extr_c.c +++ b/tests/extr_c.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_c(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/extr_d.c b/tests/extr_d.c index 40d20e6d1..14c327258 100644 --- a/tests/extr_d.c +++ b/tests/extr_d.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_extr_d(j, JIT_F0, JIT_R0); jit_retr_d(j, JIT_F0); - double (*f)(intmax_t) = jit_end(j, NULL); + double (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 0.0); ASSERT(f(1) == 1.0); diff --git a/tests/extr_f.c b/tests/extr_f.c index e84458c16..75d74a25d 100644 --- a/tests/extr_f.c +++ b/tests/extr_f.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_extr_f(j, JIT_F0, JIT_R0); jit_retr_f(j, JIT_F0); - float (*f)(intmax_t) = jit_end(j, NULL); + float (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 0.0f); ASSERT(f(1) == 1.0f); diff --git a/tests/extr_i.c b/tests/extr_i.c index 1a80b5e38..6f7a9bb3f 100644 --- a/tests/extr_i.c +++ b/tests/extr_i.c @@ -5,12 +5,12 @@ 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_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_i(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/extr_s.c b/tests/extr_s.c index e4d1f1eb1..a111937e6 100644 --- a/tests/extr_s.c +++ b/tests/extr_s.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_s(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/extr_uc.c b/tests/extr_uc.c index d9890c788..4ebae5413 100644 --- a/tests/extr_uc.c +++ b/tests/extr_uc.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_uc(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/extr_ui.c b/tests/extr_ui.c index 6aa6024bb..70d7f3bb0 100644 --- a/tests/extr_ui.c +++ b/tests/extr_ui.c @@ -5,12 +5,12 @@ 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_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_ui(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/extr_us.c b/tests/extr_us.c index c10567b4f..7ea001fc2 100644 --- a/tests/extr_us.c +++ b/tests/extr_us.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_us(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0); ASSERT(f(1) == 1); diff --git a/tests/ldi_c.c b/tests/ldi_c.c index e08231596..a825ab85c 100644 --- a/tests/ldi_c.c +++ b/tests/ldi_c.c @@ -10,7 +10,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldi_c(j, JIT_R0, &data[0]); jit_retr(j, JIT_R0); - uintmax_t (*f)(void) = jit_end(j, NULL); + jit_uword_t (*f)(void) = jit_end(j, NULL); ASSERT(f() == -1); } diff --git a/tests/ldi_i.c b/tests/ldi_i.c index 7270cbcf0..6bb7a5997 100644 --- a/tests/ldi_i.c +++ b/tests/ldi_i.c @@ -10,7 +10,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldi_i(j, JIT_R0, &data); jit_retr(j, JIT_R0); - uintmax_t (*f)(void) = jit_end(j, NULL); + jit_uword_t (*f)(void) = jit_end(j, NULL); ASSERT(f() == -1); } diff --git a/tests/ldi_l.c b/tests/ldi_l.c index 299987049..f18ba202e 100644 --- a/tests/ldi_l.c +++ b/tests/ldi_l.c @@ -11,7 +11,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldi_l(j, JIT_R0, &data); jit_retr(j, JIT_R0); - uintmax_t (*f)(void) = jit_end(j, NULL); + jit_uword_t (*f)(void) = jit_end(j, NULL); ASSERT(f() == -1); #endif diff --git a/tests/ldi_s.c b/tests/ldi_s.c index 5713370fa..b7d2ff213 100644 --- a/tests/ldi_s.c +++ b/tests/ldi_s.c @@ -10,7 +10,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldi_s(j, JIT_R0, &data); jit_retr(j, JIT_R0); - uintmax_t (*f)(void) = jit_end(j, NULL); + jit_uword_t (*f)(void) = jit_end(j, NULL); ASSERT(f() == -1); } diff --git a/tests/ldi_uc.c b/tests/ldi_uc.c index a99af0eda..68b082c2e 100644 --- a/tests/ldi_uc.c +++ b/tests/ldi_uc.c @@ -10,7 +10,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldi_uc(j, JIT_R0, data); jit_retr(j, JIT_R0); - uintmax_t (*f)(void) = jit_end(j, NULL); + jit_uword_t (*f)(void) = jit_end(j, NULL); ASSERT(f() == 0xff); } diff --git a/tests/ldi_ui.c b/tests/ldi_ui.c index c0458a7cb..2f7dc5fc1 100644 --- a/tests/ldi_ui.c +++ b/tests/ldi_ui.c @@ -11,7 +11,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldi_ui(j, JIT_R0, data); jit_retr(j, JIT_R0); - uintmax_t (*f)(void) = jit_end(j, NULL); + jit_uword_t (*f)(void) = jit_end(j, NULL); ASSERT(f() == data[0]); #endif diff --git a/tests/ldi_us.c b/tests/ldi_us.c index 3c9ca5122..adaf1ee3c 100644 --- a/tests/ldi_us.c +++ b/tests/ldi_us.c @@ -10,7 +10,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldi_us(j, JIT_R0, data); jit_retr(j, JIT_R0); - uintmax_t (*f)(void) = jit_end(j, NULL); + jit_uword_t (*f)(void) = jit_end(j, NULL); ASSERT(f() == data[0]); } diff --git a/tests/ldr_c.c b/tests/ldr_c.c index 0d50d4d59..ac851dbdd 100644 --- a/tests/ldr_c.c +++ b/tests/ldr_c.c @@ -11,7 +11,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldr_c(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*) = jit_end(j, NULL); + jit_uword_t (*f)(void*) = jit_end(j, NULL); ASSERT(f(&data[0]) == -1); ASSERT(f(&data[1]) == 0); diff --git a/tests/ldr_i.c b/tests/ldr_i.c index ed8784a40..5f6de9912 100644 --- a/tests/ldr_i.c +++ b/tests/ldr_i.c @@ -11,7 +11,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldr_i(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*) = jit_end(j, NULL); + jit_uword_t (*f)(void*) = jit_end(j, NULL); ASSERT(f(&data[0]) == -1); ASSERT(f(&data[1]) == 0); diff --git a/tests/ldr_l.c b/tests/ldr_l.c index d71f3e47e..76b6d7f57 100644 --- a/tests/ldr_l.c +++ b/tests/ldr_l.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldr_l(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*) = jit_end(j, NULL); + jit_uword_t (*f)(void*) = jit_end(j, NULL); ASSERT(f(&data[0]) == -1); ASSERT(f(&data[1]) == 0); diff --git a/tests/ldr_s.c b/tests/ldr_s.c index af83dc7e6..61daa721b 100644 --- a/tests/ldr_s.c +++ b/tests/ldr_s.c @@ -11,7 +11,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldr_s(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*) = jit_end(j, NULL); + jit_uword_t (*f)(void*) = jit_end(j, NULL); ASSERT(f(&data[0]) == -1); ASSERT(f(&data[1]) == 0); diff --git a/tests/ldr_uc.c b/tests/ldr_uc.c index 54a207531..049630bf4 100644 --- a/tests/ldr_uc.c +++ b/tests/ldr_uc.c @@ -11,7 +11,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldr_uc(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*) = jit_end(j, NULL); + jit_uword_t (*f)(void*) = jit_end(j, NULL); ASSERT(f(&data[0]) == 0xff); ASSERT(f(&data[1]) == 0); diff --git a/tests/ldr_ui.c b/tests/ldr_ui.c index 1867812b4..4d29a74c8 100644 --- a/tests/ldr_ui.c +++ b/tests/ldr_ui.c @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldr_ui(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*) = jit_end(j, NULL); + jit_uword_t (*f)(void*) = jit_end(j, NULL); ASSERT(f(&data[0]) == data[0]); ASSERT(f(&data[1]) == data[1]); diff --git a/tests/ldr_us.c b/tests/ldr_us.c index 5387882a6..464108008 100644 --- a/tests/ldr_us.c +++ b/tests/ldr_us.c @@ -11,7 +11,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldr_us(j, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*) = jit_end(j, NULL); + jit_uword_t (*f)(void*) = jit_end(j, NULL); ASSERT(f(&data[0]) == data[0]); ASSERT(f(&data[1]) == data[1]); diff --git a/tests/ldxi_c.c b/tests/ldxi_c.c index 58d1de9d4..82242af43 100644 --- a/tests/ldxi_c.c +++ b/tests/ldxi_c.c @@ -6,12 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_c(j, JIT_R0, JIT_R0, (uintptr_t)&data); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == -1); ASSERT(f(1) == 0); diff --git a/tests/ldxi_d.c b/tests/ldxi_d.c index c74992069..db5af67bc 100644 --- a/tests/ldxi_d.c +++ b/tests/ldxi_d.c @@ -6,12 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_d(j, JIT_F0, JIT_R0, (uintptr_t)data); jit_retr_d(j, JIT_F0); - double (*f)(uintmax_t) = jit_end(j, NULL); + double (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == data[0]); ASSERT(f(8) == data[1]); diff --git a/tests/ldxi_f.c b/tests/ldxi_f.c index 33206debb..0e91f74b9 100644 --- a/tests/ldxi_f.c +++ b/tests/ldxi_f.c @@ -6,12 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_f(j, JIT_F0, JIT_R0, (uintptr_t)data); jit_retr_f(j, JIT_F0); - float (*f)(uintmax_t) = jit_end(j, NULL); + float (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == data[0]); ASSERT(f(4) == data[1]); diff --git a/tests/ldxi_i.c b/tests/ldxi_i.c index f51bb5cfd..d6d2def08 100644 --- a/tests/ldxi_i.c +++ b/tests/ldxi_i.c @@ -11,7 +11,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_ldxi_i(j, JIT_R0, JIT_R0, (uintptr_t)data); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == -1); ASSERT(f(4) == 0); diff --git a/tests/ldxi_l.c b/tests/ldxi_l.c index 9bdc6559c..a90653cb7 100644 --- a/tests/ldxi_l.c +++ b/tests/ldxi_l.c @@ -7,12 +7,12 @@ 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_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_l(j, JIT_R0, JIT_R0, (uintptr_t)data); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == -1); ASSERT(f(8) == 0); diff --git a/tests/ldxi_s.c b/tests/ldxi_s.c index 4c75cc2b1..698bcdba2 100644 --- a/tests/ldxi_s.c +++ b/tests/ldxi_s.c @@ -6,12 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_s(j, JIT_R0, JIT_R0, (uintptr_t)data); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == -1); ASSERT(f(2) == 0); diff --git a/tests/ldxi_uc.c b/tests/ldxi_uc.c index ebe91b46a..35ddf2454 100644 --- a/tests/ldxi_uc.c +++ b/tests/ldxi_uc.c @@ -6,12 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_uc(j, JIT_R0, JIT_R0, (uintptr_t)data); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == 0xff); ASSERT(f(1) == 0); diff --git a/tests/ldxi_ui.c b/tests/ldxi_ui.c index ad1599f65..d6693feec 100644 --- a/tests/ldxi_ui.c +++ b/tests/ldxi_ui.c @@ -7,12 +7,12 @@ 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_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_ui(j, JIT_R0, JIT_R0, (uintptr_t)data); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == data[0]); ASSERT(f(4) == data[1]); diff --git a/tests/ldxi_us.c b/tests/ldxi_us.c index a50e4edc1..edc71906b 100644 --- a/tests/ldxi_us.c +++ b/tests/ldxi_us.c @@ -6,12 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_us(j, JIT_R0, JIT_R0, (uintptr_t)data); jit_retr(j, JIT_R0); - uintmax_t (*f)(uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); ASSERT(f(0) == data[0]); ASSERT(f(2) == data[1]); diff --git a/tests/ldxr_c.c b/tests/ldxr_c.c index dd3df16ff..c770e7eab 100644 --- a/tests/ldxr_c.c +++ b/tests/ldxr_c.c @@ -7,12 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_c(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); ASSERT(f(data, 0) == -1); ASSERT(f(data, 1) == 0); diff --git a/tests/ldxr_d.c b/tests/ldxr_d.c index 28543b7c6..7267245ea 100644 --- a/tests/ldxr_d.c +++ b/tests/ldxr_d.c @@ -7,12 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_d(j, JIT_F0, JIT_R0, JIT_R1); jit_retr_d(j, JIT_F0); - double (*f)(void*, uintmax_t) = jit_end(j, NULL); + double (*f)(void*, jit_uword_t) = jit_end(j, NULL); ASSERT(f(data, 0) == data[0]); ASSERT(f(data, 8) == data[1]); diff --git a/tests/ldxr_f.c b/tests/ldxr_f.c index a87f15acd..88aabc67f 100644 --- a/tests/ldxr_f.c +++ b/tests/ldxr_f.c @@ -7,12 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_f(j, JIT_F0, JIT_R0, JIT_R1); jit_retr_f(j, JIT_F0); - float (*f)(void*, uintmax_t) = jit_end(j, NULL); + float (*f)(void*, jit_uword_t) = jit_end(j, NULL); ASSERT(f(data, 0) == data[0]); ASSERT(f(data, 4) == data[1]); diff --git a/tests/ldxr_i.c b/tests/ldxr_i.c index 65ed0395b..774c682d1 100644 --- a/tests/ldxr_i.c +++ b/tests/ldxr_i.c @@ -7,12 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_i(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); ASSERT(f(data, 0) == -1); ASSERT(f(data, 4) == 0); diff --git a/tests/ldxr_l.c b/tests/ldxr_l.c index d8afce547..14786aadd 100644 --- a/tests/ldxr_l.c +++ b/tests/ldxr_l.c @@ -8,12 +8,12 @@ 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_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_l(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); ASSERT(f(data, 0) == -1); ASSERT(f(data, 8) == 0); diff --git a/tests/ldxr_s.c b/tests/ldxr_s.c index 7f0724c27..ca93140ab 100644 --- a/tests/ldxr_s.c +++ b/tests/ldxr_s.c @@ -7,12 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_s(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); ASSERT(f(data, 0) == -1); ASSERT(f(data, 2) == 0); diff --git a/tests/ldxr_uc.c b/tests/ldxr_uc.c index d6dcaf979..70bcf13a9 100644 --- a/tests/ldxr_uc.c +++ b/tests/ldxr_uc.c @@ -7,12 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_uc(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); ASSERT(f(data, 0) == 0xff); ASSERT(f(data, 1) == 0); diff --git a/tests/ldxr_ui.c b/tests/ldxr_ui.c index 4e2d773be..773fccda1 100644 --- a/tests/ldxr_ui.c +++ b/tests/ldxr_ui.c @@ -8,12 +8,12 @@ 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_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_ui(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); ASSERT(f(data, 0) == data[0]); ASSERT(f(data, 4) == data[1]); diff --git a/tests/ldxr_us.c b/tests/ldxr_us.c index 78d38f5ef..32ce9233e 100644 --- a/tests/ldxr_us.c +++ b/tests/ldxr_us.c @@ -7,12 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_us(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); - uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL); + jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); ASSERT(f(data, 0) == data[0]); ASSERT(f(data, 2) == data[1]); diff --git a/tests/lshi.c b/tests/lshi.c index 183aed9ff..8c25e40b0 100644 --- a/tests/lshi.c +++ b/tests/lshi.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_lshi(j, JIT_R0, JIT_R0, 31); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); #if __WORDSIZE == 32 ASSERT(f(-0x7f) == 0x80000000); diff --git a/tests/lshr.c b/tests/lshr.c index 5f3d5b96e..3861adb46 100644 --- a/tests/lshr.c +++ b/tests/lshr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_lshr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0x7f, 1) == 0xfe); ASSERT(f(0x7fff, 2) == 0x1fffc); diff --git a/tests/mulr.c b/tests/mulr.c index 943b31e01..7f39d3d6d 100644 --- a/tests/mulr.c +++ b/tests/mulr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_mulr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0x7fffffff, 1) == 0x7fffffff); ASSERT(f(1, 0x7fffffff) == 0x7fffffff); diff --git a/tests/negr.c b/tests/negr.c index 974d3f0e9..cf9c84d69 100644 --- a/tests/negr.c +++ b/tests/negr.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_negr(j, JIT_R0, JIT_R0); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(0) == 0); #if __WORDSIZE == 32 diff --git a/tests/nop.c b/tests/nop.c index 16c5c8a7e..e2975c5d2 100644 --- a/tests/nop.c +++ b/tests/nop.c @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) ASSERT(end - start == total); jit_reti(j, 42); - intmax_t (*f)(void) = jit_end(j, NULL); + jit_word_t (*f)(void) = jit_end(j, NULL); ASSERT(f() == 42); } diff --git a/tests/ori.c b/tests/ori.c index ad555769d..25a528e23 100644 --- a/tests/ori.c +++ b/tests/ori.c @@ -4,7 +4,7 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ori(j, JIT_R0, JIT_R0, 1); jit_retr(j, JIT_R0); @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t) = ret; + jit_word_t (*f)(jit_word_t) = ret; ASSERT(f(0x7fffffff) == 0x7fffffff); ASSERT(f(0x80000000) == 0x80000001); diff --git a/tests/orr.c b/tests/orr.c index 10b7c3d17..c7bf31375 100644 --- a/tests/orr.c +++ b/tests/orr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_orr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0x7fffffff, 1) == 0x7fffffff); ASSERT(f(1, 0x7fffffff) == 0x7fffffff); diff --git a/tests/pushpop.c b/tests/pushpop.c index d2a4ab7bb..de010c812 100644 --- a/tests/pushpop.c +++ b/tests/pushpop.c @@ -8,7 +8,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); for (int i=0; i<6; i++) jit_pushr(j, gpr[i]); @@ -28,7 +28,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); ASSERT(f(42) == 42); } diff --git a/tests/qdivr.c b/tests/qdivr.c index b4dd8f637..9e1b8da04 100644 --- a/tests/qdivr.c +++ b/tests/qdivr.c @@ -25,8 +25,8 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_operand_t args[] = { jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_V0) }; + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_V0) }; jit_load_args(j, 4, args); jit_qdivr(j, JIT_V1, JIT_V2, JIT_R2, JIT_V0); @@ -42,11 +42,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - void (*f)(intmax_t*, intmax_t*, intmax_t, intmax_t) = ret; + void (*f)(jit_word_t*, jit_word_t*, jit_word_t, jit_word_t) = ret; #define QDIV(a, b, c, d) \ do { \ - intmax_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \ + jit_word_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \ } while (0) QDIV(10, 3, 3, 1); diff --git a/tests/qdivr_u.c b/tests/qdivr_u.c index 30849bd54..276219971 100644 --- a/tests/qdivr_u.c +++ b/tests/qdivr_u.c @@ -26,8 +26,8 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_operand_t args[] = { jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_V0) }; + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_V0) }; jit_load_args(j, 4, args); jit_qdivr_u(j, JIT_V1, JIT_V2, JIT_R2, JIT_V0); @@ -43,11 +43,10 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - void (*f)(intmax_t*, intmax_t*, intmax_t, intmax_t) = ret; - + void (*f)(jit_word_t*, jit_word_t*, jit_word_t, jit_word_t) = ret; #define QDIV(a, b, c, d) \ do { \ - intmax_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \ + jit_word_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \ } while (0) QDIV(-1, -2, 1, 1); diff --git a/tests/qmulr.c b/tests/qmulr.c index 9d0b2324e..eed0d58fd 100644 --- a/tests/qmulr.c +++ b/tests/qmulr.c @@ -26,8 +26,8 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_operand_t args[] = { jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_V0) }; + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_V0) }; jit_load_args(j, 4, args); jit_qmulr(j, JIT_V1, JIT_V2, JIT_R2, JIT_V0); @@ -43,11 +43,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - void (*f)(intmax_t*, intmax_t*, intmax_t, intmax_t) = ret; + void (*f)(jit_word_t*, jit_word_t*, jit_word_t, jit_word_t) = ret; #define QMUL(a, b, c, d) \ do { \ - intmax_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \ + jit_word_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \ } while (0) QMUL(-2, -1, 2, 0); diff --git a/tests/qmulr_u.c b/tests/qmulr_u.c index 741ea8175..ff3c92655 100644 --- a/tests/qmulr_u.c +++ b/tests/qmulr_u.c @@ -26,8 +26,8 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_operand_t args[] = { jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_V0) }; + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_V0) }; jit_load_args(j, 4, args); jit_qmulr_u(j, JIT_V1, JIT_V2, JIT_R2, JIT_V0); @@ -43,11 +43,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - void (*f)(intmax_t*, intmax_t*, intmax_t, intmax_t) = ret; + void (*f)(jit_word_t*, jit_word_t*, jit_word_t, jit_word_t) = ret; #define UQMUL(a, b, c, d) \ do { \ - intmax_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \ + jit_word_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \ } while (0) #if __WORDSIZE == 32 diff --git a/tests/remr.c b/tests/remr.c index 3c61384b6..74c85e14e 100644 --- a/tests/remr.c +++ b/tests/remr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_remr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0x7fffffff, 1) == 0); ASSERT(f(1, 0x7fffffff) == 1); diff --git a/tests/remr_u.c b/tests/remr_u.c index 01113dbef..10a59522a 100644 --- a/tests/remr_u.c +++ b/tests/remr_u.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_remr_u(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0x7fffffff, 1) == 0); ASSERT(f(1, 0x7fffffff) == 1); diff --git a/tests/rshi.c b/tests/rshi.c index 1f1ed6d94..ba20db6a6 100644 --- a/tests/rshi.c +++ b/tests/rshi.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_rshi(j, JIT_R0, JIT_R0, 31); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); #if __WORDSIZE == 32 ASSERT(f(0x80000000) == -1); diff --git a/tests/rshi_u.c b/tests/rshi_u.c index e78a205b8..c0e3d7193 100644 --- a/tests/rshi_u.c +++ b/tests/rshi_u.c @@ -4,12 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_rshi_u(j, JIT_R0, JIT_R0, 31); jit_retr(j, JIT_R0); - intmax_t (*f)(intmax_t) = jit_end(j, NULL); + jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); #if __WORDSIZE == 32 ASSERT(f(0x80000000) == 1); diff --git a/tests/rshr.c b/tests/rshr.c index 1a32bfd03..c168b9513 100644 --- a/tests/rshr.c +++ b/tests/rshr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_rshr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0xfe, 1) == 0x7f); ASSERT(f(0x1fffc, 2) == 0x7fff); diff --git a/tests/rshr_u.c b/tests/rshr_u.c index 644e71728..0ff9c2878 100644 --- a/tests/rshr_u.c +++ b/tests/rshr_u.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_rshr_u(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0xfe, 1) == 0x7f); ASSERT(f(0x1fffc, 2) == 0x7fff); diff --git a/tests/stxi_c.c b/tests/stxi_c.c index c38e5292e..78982044f 100644 --- a/tests/stxi_c.c +++ b/tests/stxi_c.c @@ -6,13 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT8, JIT_R1)); jit_stxi_c(j, (uintptr_t)data, JIT_R2, JIT_R1); jit_ret(j); - void (*f)(intmax_t, int8_t) = jit_end(j, NULL); + void (*f)(jit_word_t, int8_t) = jit_end(j, NULL); ASSERT(data[0] == 0x12); ASSERT(data[1] == 0x00); diff --git a/tests/stxi_d.c b/tests/stxi_d.c index cf68704cc..a63c335d8 100644 --- a/tests/stxi_d.c +++ b/tests/stxi_d.c @@ -6,13 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_stxi_d(j, (uintptr_t)data, JIT_R2, JIT_F0); jit_ret(j); - void (*f)(intmax_t, double) = jit_end(j, NULL); + void (*f)(jit_word_t, double) = jit_end(j, NULL); ASSERT(data[0] == -1.0); ASSERT(data[1] == 0.0); diff --git a/tests/stxi_f.c b/tests/stxi_f.c index cec7fba69..5a93679ff 100644 --- a/tests/stxi_f.c +++ b/tests/stxi_f.c @@ -6,13 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_stxi_f(j, (uintptr_t)data, JIT_R2, JIT_F0); jit_ret(j); - void (*f)(intmax_t, float) = jit_end(j, NULL); + void (*f)(jit_word_t, float) = jit_end(j, NULL); ASSERT(data[0] == -1.0f); ASSERT(data[1] == 0.0f); diff --git a/tests/stxi_i.c b/tests/stxi_i.c index d0aef1116..e320c9201 100644 --- a/tests/stxi_i.c +++ b/tests/stxi_i.c @@ -6,13 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT32, JIT_R1)); jit_stxi_i(j, (uintptr_t)data, JIT_R2, JIT_R1); jit_ret(j); - void (*f)(intmax_t, int32_t) = jit_end(j, NULL); + void (*f)(jit_word_t, int32_t) = jit_end(j, NULL); ASSERT(data[0] == 0x12121212); ASSERT(data[1] == 0x00); diff --git a/tests/stxi_l.c b/tests/stxi_l.c index f731ee49b..b5f5d8c5b 100644 --- a/tests/stxi_l.c +++ b/tests/stxi_l.c @@ -7,13 +7,13 @@ 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_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT64, JIT_R1)); jit_stxi_l(j, (uintptr_t)data, JIT_R2, JIT_R1); jit_ret(j); - void (*f)(intmax_t, int64_t) = jit_end(j, NULL); + void (*f)(jit_word_t, int64_t) = jit_end(j, NULL); ASSERT(data[0] == 0x1212121212121212); ASSERT(data[1] == 0x00); diff --git a/tests/stxi_s.c b/tests/stxi_s.c index 4deb826e6..7bc8fa2cc 100644 --- a/tests/stxi_s.c +++ b/tests/stxi_s.c @@ -6,13 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT16, JIT_R1)); jit_stxi_s(j, (uintptr_t)data, JIT_R2, JIT_R1); jit_ret(j); - void (*f)(intmax_t, int16_t) = jit_end(j, NULL); + void (*f)(jit_word_t, int16_t) = jit_end(j, NULL); ASSERT(data[0] == 0x1212); ASSERT(data[1] == 0); diff --git a/tests/stxr_c.c b/tests/stxr_c.c index bcebb3530..c88d8cd6f 100644 --- a/tests/stxr_c.c +++ b/tests/stxr_c.c @@ -7,13 +7,13 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_3(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT8, JIT_R1)); jit_stxr_c(j, JIT_R0, JIT_R2, JIT_R1); jit_ret(j); - void (*f)(void*, intmax_t, int8_t) = jit_end(j, NULL); + void (*f)(void*, jit_word_t, int8_t) = jit_end(j, NULL); ASSERT(data[0] == 0x12); ASSERT(data[1] == 0x00); diff --git a/tests/stxr_d.c b/tests/stxr_d.c index ba4988a8d..f3fb9334d 100644 --- a/tests/stxr_d.c +++ b/tests/stxr_d.c @@ -7,13 +7,13 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_3(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_stxr_d(j, JIT_R0, JIT_R2, JIT_F0); jit_ret(j); - void (*f)(void*, intmax_t, double) = jit_end(j, NULL); + void (*f)(void*, jit_word_t, double) = jit_end(j, NULL); ASSERT(data[0] == -1.0); ASSERT(data[1] == 0.0); diff --git a/tests/stxr_f.c b/tests/stxr_f.c index 30c1e92de..43aeaa9bd 100644 --- a/tests/stxr_f.c +++ b/tests/stxr_f.c @@ -7,13 +7,13 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_3(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_stxr_f(j, JIT_R0, JIT_R2, JIT_F0); jit_ret(j); - void (*f)(void*, intmax_t, float) = jit_end(j, NULL); + void (*f)(void*, jit_word_t, float) = jit_end(j, NULL); ASSERT(data[0] == -1.0f); ASSERT(data[1] == 0.0f); diff --git a/tests/stxr_i.c b/tests/stxr_i.c index 247cab215..376354fca 100644 --- a/tests/stxr_i.c +++ b/tests/stxr_i.c @@ -7,13 +7,13 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_3(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT32, JIT_R1)); jit_stxr_i(j, JIT_R0, JIT_R2, JIT_R1); jit_ret(j); - void (*f)(void*, intmax_t, int32_t) = jit_end(j, NULL); + void (*f)(void*, jit_word_t, int32_t) = jit_end(j, NULL); ASSERT(data[0] == 0x12121212); ASSERT(data[1] == 0x00); diff --git a/tests/stxr_l.c b/tests/stxr_l.c index e680238c5..bc0ab9641 100644 --- a/tests/stxr_l.c +++ b/tests/stxr_l.c @@ -8,13 +8,13 @@ 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_load_args_3(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT64, JIT_R1)); jit_stxr_l(j, JIT_R0, JIT_R2, JIT_R1); jit_ret(j); - void (*f)(void*, intmax_t, int64_t) = jit_end(j, NULL); + void (*f)(void*, jit_word_t, int64_t) = jit_end(j, NULL); ASSERT(data[0] == 0x1212121212121212); ASSERT(data[1] == 0x00); diff --git a/tests/stxr_s.c b/tests/stxr_s.c index 02d848382..2cee20194 100644 --- a/tests/stxr_s.c +++ b/tests/stxr_s.c @@ -7,13 +7,13 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); jit_load_args_3(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R2), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT16, JIT_R1)); jit_stxr_s(j, JIT_R0, JIT_R2, JIT_R1); jit_ret(j); - void (*f)(void*, intmax_t, int16_t) = jit_end(j, NULL); + void (*f)(void*, jit_word_t, int16_t) = jit_end(j, NULL); ASSERT(data[0] == 0x1212); ASSERT(data[1] == 0); diff --git a/tests/subr.c b/tests/subr.c index 0ed2e320b..92b528fee 100644 --- a/tests/subr.c +++ b/tests/subr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_subr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); diff --git a/tests/subx.c b/tests/subx.c index 91f1f9565..cd1bb5b9c 100644 --- a/tests/subx.c +++ b/tests/subx.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_movi(j, JIT_R2, 0); jit_subcr(j, JIT_R0, JIT_R0, JIT_R1); @@ -15,7 +15,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0, 0) == 0); diff --git a/tests/xori.c b/tests/xori.c index 5884025d6..1071a4cd9 100644 --- a/tests/xori.c +++ b/tests/xori.c @@ -4,7 +4,7 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0)); + jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_xori(j, JIT_R0, JIT_R0, 1); jit_retr(j, JIT_R0); @@ -12,7 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t) = ret; + jit_word_t (*f)(jit_word_t) = ret; ASSERT(f(0x7fffffff) == 0x7ffffffe); ASSERT(f(0x80000000) == 0x80000001); diff --git a/tests/xorr.c b/tests/xorr.c index c24946638..a37a57004 100644 --- a/tests/xorr.c +++ b/tests/xorr.c @@ -4,8 +4,8 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R0), - jit_operand_gpr (JIT_OPERAND_ABI_INTMAX, JIT_R1)); + jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), + jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_xorr(j, JIT_R0, JIT_R0, JIT_R1); jit_retr(j, JIT_R0); @@ -13,7 +13,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) size_t size = 0; void* ret = jit_end(j, &size); - intmax_t (*f)(intmax_t, intmax_t) = ret; + jit_word_t (*f)(jit_word_t, jit_word_t) = ret; ASSERT(f(0x7fffffff, 1) == 0x7ffffffe); ASSERT(f(1, 0x7fffffff) == 0x7ffffffe); From b1163145915e652c4b82b66b1e921c811a90c46a Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 15:56:08 +0200 Subject: [PATCH 05/18] Fix compile warnings for 32-bit tests --- tests/boaddr_u.c | 2 +- tests/bxaddr_u.c | 2 +- tests/ldi_l.c | 4 ++-- tests/ldi_ui.c | 4 ++-- tests/ldr_l.c | 4 ++-- tests/ldr_ui.c | 4 ++-- tests/ldxi_l.c | 4 ++-- tests/ldxi_ui.c | 4 ++-- tests/ldxr_l.c | 4 ++-- tests/ldxr_ui.c | 4 ++-- tests/sti_l.c | 4 ++-- tests/str_l.c | 4 ++-- tests/stxi_l.c | 4 ++-- tests/stxr_l.c | 4 ++-- 14 files changed, 26 insertions(+), 26 deletions(-) diff --git a/tests/boaddr_u.c b/tests/boaddr_u.c index 4835857b7..b186a90ce 100644 --- a/tests/boaddr_u.c +++ b/tests/boaddr_u.c @@ -24,7 +24,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) ASSERT(f(0xffffffff, 0xffffffff) == overflowed); ASSERT(f(0x7fffffff, 0) == 0x7fffffff); ASSERT(f(0x7fffffff, 1) == 0x80000000); - ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffff + 0x7fffffff); + ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffffu + 0x7fffffffu); ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff); ASSERT(f(0x80000000, 0x80000000) == overflowed); #else diff --git a/tests/bxaddr_u.c b/tests/bxaddr_u.c index e30ca2aa9..b20ddd029 100644 --- a/tests/bxaddr_u.c +++ b/tests/bxaddr_u.c @@ -23,7 +23,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) ASSERT(f(0xffffffff, 0xffffffff) == overflowed); ASSERT(f(0x7fffffff, 0) == 0x7fffffff); ASSERT(f(0x7fffffff, 1) == 0x80000000); - ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffff + 0x7fffffff); + ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffffu + 0x7fffffffu); ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff); ASSERT(f(0x80000000, 0x80000000) == overflowed); #else diff --git a/tests/ldi_l.c b/tests/ldi_l.c index f18ba202e..1cb5efd38 100644 --- a/tests/ldi_l.c +++ b/tests/ldi_l.c @@ -1,11 +1,11 @@ #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 + static uint64_t data = 0xffffffffffffffff; + jit_begin(j, arena_base, arena_size); jit_ldi_l(j, JIT_R0, &data); diff --git a/tests/ldi_ui.c b/tests/ldi_ui.c index 2f7dc5fc1..47fe2784d 100644 --- a/tests/ldi_ui.c +++ b/tests/ldi_ui.c @@ -1,11 +1,11 @@ #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 + static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 }; + jit_begin(j, arena_base, arena_size); jit_ldi_ui(j, JIT_R0, data); diff --git a/tests/ldr_l.c b/tests/ldr_l.c index 76b6d7f57..6a3d0fc5a 100644 --- a/tests/ldr_l.c +++ b/tests/ldr_l.c @@ -1,11 +1,11 @@ #include "test.h" -static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 }; - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 + static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 }; + jit_begin(j, arena_base, arena_size); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); diff --git a/tests/ldr_ui.c b/tests/ldr_ui.c index 4d29a74c8..85a462c40 100644 --- a/tests/ldr_ui.c +++ b/tests/ldr_ui.c @@ -1,11 +1,11 @@ #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 + static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 }; + jit_begin(j, arena_base, arena_size); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); diff --git a/tests/ldxi_l.c b/tests/ldxi_l.c index a90653cb7..6383166c2 100644 --- a/tests/ldxi_l.c +++ b/tests/ldxi_l.c @@ -1,11 +1,11 @@ #include "test.h" -static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 }; - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 + static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 }; + jit_begin(j, arena_base, arena_size); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); diff --git a/tests/ldxi_ui.c b/tests/ldxi_ui.c index d6693feec..00a47598c 100644 --- a/tests/ldxi_ui.c +++ b/tests/ldxi_ui.c @@ -1,11 +1,11 @@ #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 + static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 }; + jit_begin(j, arena_base, arena_size); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); diff --git a/tests/ldxr_l.c b/tests/ldxr_l.c index 14786aadd..d143ede93 100644 --- a/tests/ldxr_l.c +++ b/tests/ldxr_l.c @@ -1,11 +1,11 @@ #include "test.h" -static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 }; - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 + static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 }; + jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); diff --git a/tests/ldxr_ui.c b/tests/ldxr_ui.c index 773fccda1..0c821ee06 100644 --- a/tests/ldxr_ui.c +++ b/tests/ldxr_ui.c @@ -1,11 +1,11 @@ #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 + static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 }; + jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); diff --git a/tests/sti_l.c b/tests/sti_l.c index 5bd4ed19f..939a3e8e3 100644 --- a/tests/sti_l.c +++ b/tests/sti_l.c @@ -1,11 +1,11 @@ #include "test.h" -static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 + static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; + jit_begin(j, arena_base, arena_size); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INT64, JIT_R1)); diff --git a/tests/str_l.c b/tests/str_l.c index 0b4755c24..ff91a18f1 100644 --- a/tests/str_l.c +++ b/tests/str_l.c @@ -1,11 +1,11 @@ #include "test.h" -static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 + static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; + jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_INT64, JIT_R1)); diff --git a/tests/stxi_l.c b/tests/stxi_l.c index b5f5d8c5b..af62d7de0 100644 --- a/tests/stxi_l.c +++ b/tests/stxi_l.c @@ -1,11 +1,11 @@ #include "test.h" -static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 + static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; + jit_begin(j, arena_base, arena_size); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT64, JIT_R1)); diff --git a/tests/stxr_l.c b/tests/stxr_l.c index bc0ab9641..43c08d5d9 100644 --- a/tests/stxr_l.c +++ b/tests/stxr_l.c @@ -1,11 +1,11 @@ #include "test.h" -static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 + static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; + jit_begin(j, arena_base, arena_size); jit_load_args_3(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), From 19da79c8c1f38c09d1901cc3608b094b498c657c Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 15:57:25 +0200 Subject: [PATCH 06/18] Fix 32-bit movi_d * lightening/x86-sse.c (movi_d): Fix combining of low and high double halves. --- lightening/x86-sse.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lightening/x86-sse.c b/lightening/x86-sse.c index c304919d0..34a39e895 100644 --- a/lightening/x86-sse.c +++ b/lightening/x86-sse.c @@ -316,6 +316,11 @@ xorpdr(jit_state_t *_jit, int32_t r0, int32_t r1) ssexr(_jit, 0x66, X86_SSE_XOR, r0, r1); } static void +orpdr(jit_state_t *_jit, int32_t r0, int32_t r1) +{ + ssexr(_jit, 0x66, X86_SSE_OR, r0, r1); +} +static void pcmpeqlr(jit_state_t *_jit, int32_t r0, int32_t r1) { ssexr(_jit, 0x66, X86_SSE_EQD, r0, r1); @@ -410,7 +415,7 @@ movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t i0) pslq(_jit, jit_fpr_regno(freg), 32); movi(_jit, jit_gpr_regno(ireg), data.ii[0]); movdlxr(_jit, r0, jit_gpr_regno(ireg)); - xorpdr(_jit, r0, jit_fpr_regno(freg)); + orpdr(_jit, r0, jit_fpr_regno(freg)); unget_temp_xpr(_jit); unget_temp_gpr(_jit); #endif From fe34e3cdf11c4def57467395854ef79ee2c4e6c1 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 16:09:06 +0200 Subject: [PATCH 07/18] Make jit_cpu private --- lightening/x86.c | 76 +++++++++++++++++++++++++----------------------- lightening/x86.h | 49 ------------------------------- 2 files changed, 39 insertions(+), 86 deletions(-) diff --git a/lightening/x86.c b/lightening/x86.c index 6e26f9e70..3adfd721c 100644 --- a/lightening/x86.c +++ b/lightening/x86.c @@ -17,44 +17,46 @@ * Paulo Cesar Pereira de Andrade */ -/* - * Types - */ -#if __X32 || __CYGWIN__ -typedef jit_pointer_t jit_va_list_t; -#else -typedef struct jit_va_list { - int32_t gpoff; - int32_t fpoff; - jit_pointer_t over; - jit_pointer_t save; - /* Declared explicitly as int64 for the x32 abi */ - int64_t rdi; - int64_t rsi; - int64_t rdx; - int64_t rcx; - int64_t r8; - int64_t r9; - jit_float64_t xmm0; - jit_float64_t _up0; - jit_float64_t xmm1; - jit_float64_t _up1; - jit_float64_t xmm2; - jit_float64_t _up2; - jit_float64_t xmm3; - jit_float64_t _up3; - jit_float64_t xmm4; - jit_float64_t _up4; - jit_float64_t xmm5; - jit_float64_t _up5; - jit_float64_t xmm6; - jit_float64_t _up6; - jit_float64_t xmm7; - jit_float64_t _up7; -} jit_va_list_t; -#endif +typedef struct { + /* x87 present */ + uint32_t fpu : 1; + /* cmpxchg8b instruction */ + uint32_t cmpxchg8b : 1; + /* cmov and fcmov branchless conditional mov */ + uint32_t cmov : 1; + /* mmx registers/instructions available */ + uint32_t mmx : 1; + /* sse registers/instructions available */ + uint32_t sse : 1; + /* sse2 registers/instructions available */ + uint32_t sse2 : 1; + /* sse3 instructions available */ + uint32_t sse3 : 1; + /* pcmulqdq instruction */ + uint32_t pclmulqdq : 1; + /* ssse3 suplemental sse3 instructions available */ + uint32_t ssse3 : 1; + /* fused multiply/add using ymm state */ + uint32_t fma : 1; + /* cmpxchg16b instruction */ + uint32_t cmpxchg16b : 1; + /* sse4.1 instructions available */ + uint32_t sse4_1 : 1; + /* sse4.2 instructions available */ + uint32_t sse4_2 : 1; + /* movbe instruction available */ + uint32_t movbe : 1; + /* popcnt instruction available */ + uint32_t popcnt : 1; + /* aes instructions available */ + uint32_t aes : 1; + /* avx instructions available */ + uint32_t avx : 1; + /* lahf/sahf available in 64 bits mode */ + uint32_t lahf : 1; +} jit_cpu_t; -jit_cpu_t jit_cpu; +static jit_cpu_t jit_cpu; #include "x86-cpu.c" #include "x86-sse.c" diff --git a/lightening/x86.h b/lightening/x86.h index de47df8a9..804af869a 100644 --- a/lightening/x86.h +++ b/lightening/x86.h @@ -20,14 +20,9 @@ #ifndef _jit_x86_h #define _jit_x86_h -#define JIT_HASH_CONSTS 1 -#define JIT_NUM_OPERANDS 2 - /* * Types */ -#define jit_sse2_p() jit_cpu.sse2 -#define jit_x87_reg_p(reg) ((reg) >= _ST0 && (reg) <= _ST6) #if __WORDSIZE == 32 # if defined(__x86_64__) # define __X64 1 @@ -210,48 +205,4 @@ jit_fpr_is_callee_save (jit_fpr_t reg) # define JIT_FTMP _XMM15 #endif -typedef struct { - /* x87 present */ - uint32_t fpu : 1; - /* cmpxchg8b instruction */ - uint32_t cmpxchg8b : 1; - /* cmov and fcmov branchless conditional mov */ - uint32_t cmov : 1; - /* mmx registers/instructions available */ - uint32_t mmx : 1; - /* sse registers/instructions available */ - uint32_t sse : 1; - /* sse2 registers/instructions available */ - uint32_t sse2 : 1; - /* sse3 instructions available */ - uint32_t sse3 : 1; - /* pcmulqdq instruction */ - uint32_t pclmulqdq : 1; - /* ssse3 suplemental sse3 instructions available */ - uint32_t ssse3 : 1; - /* fused multiply/add using ymm state */ - uint32_t fma : 1; - /* cmpxchg16b instruction */ - uint32_t cmpxchg16b : 1; - /* sse4.1 instructions available */ - uint32_t sse4_1 : 1; - /* sse4.2 instructions available */ - uint32_t sse4_2 : 1; - /* movbe instruction available */ - uint32_t movbe : 1; - /* popcnt instruction available */ - uint32_t popcnt : 1; - /* aes instructions available */ - uint32_t aes : 1; - /* avx instructions available */ - uint32_t avx : 1; - /* lahf/sahf available in 64 bits mode */ - uint32_t lahf : 1; -} jit_cpu_t; - -/* - * Initialization - */ -JIT_API jit_cpu_t jit_cpu; - #endif /* _jit_x86_h */ From 24950994ef6f0e642d67e99d304a0b5c90232d05 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 16:13:29 +0200 Subject: [PATCH 08/18] Simplify 64/32 concerns in x86-cpu.c * lightening/x86-cpu.c (il): Take a uint64_t. It's only called this way. (imovi): Remove some x64_32 conditions; they seem bogus. --- lightening/x86-cpu.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/lightening/x86-cpu.c b/lightening/x86-cpu.c index 7144dff6c..b32c8502c 100644 --- a/lightening/x86-cpu.c +++ b/lightening/x86-cpu.c @@ -161,9 +161,9 @@ ii(jit_state_t *_jit, uint32_t i) } static inline void -il(jit_state_t *_jit, unsigned long l) +iw(jit_state_t *_jit, jit_word_t l) { -#if __X64 && !__X64_32 +#if __X64 emit_u64(_jit, l); #else ii(_jit, l); @@ -410,19 +410,15 @@ static void imovi(jit_state_t *_jit, int32_t r0, jit_word_t i0) { #if __X64 -# if !__X64_32 if (fits_uint32_p(i0)) { -# endif rex(_jit, 0, 0, _NOREG, _NOREG, r0); ic(_jit, 0xb8 | r7(r0)); ii(_jit, i0); -# if !__X64_32 } else { rex(_jit, 0, 1, _NOREG, _NOREG, r0); ic(_jit, 0xb8 | r7(r0)); - il(_jit, i0); + iw(_jit, i0); } -# endif #else ic(_jit, 0xb8 | r7(r0)); ii(_jit, i0); From 9906cd5f84e3ccab6aba9a91cebe2035918f5672 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 16:37:24 +0200 Subject: [PATCH 09/18] Remove most __X64_32 code The x32 ABI (i.e., amd64 with 32-bit pointers) is mostly a C language question. From a JIT perspective it mostly looks just like amd64. We can fix any differences in a followup, but x32 is also a pretty dead ABI, so I feel OK with this. --- lightening/x86-cpu.c | 83 +++++++------------------------------------- lightening/x86-sse.c | 68 ++++-------------------------------- 2 files changed, 19 insertions(+), 132 deletions(-) diff --git a/lightening/x86-cpu.c b/lightening/x86-cpu.c index b32c8502c..537e33184 100644 --- a/lightening/x86-cpu.c +++ b/lightening/x86-cpu.c @@ -20,7 +20,7 @@ /* avoid using it due to partial stalls */ #define USE_INC_DEC 0 -#if __X32 || __X64_32 +#if __X32 # define WIDE 0 # define IF_WIDE(wide, narrow) narrow #else @@ -46,7 +46,7 @@ #define _R15_REGNO 15 #define r7(reg) ((reg) & 7) #define r8(reg) ((reg) & 15) -#if __X32 || __CYGWIN__ || __X64_32 +#if __X32 # define reg8_p(rn) ((rn) >= _RAX_REGNO && (rn) <= _RBX_REGNO) #else # define reg8_p(rn) 1 @@ -160,15 +160,13 @@ ii(jit_state_t *_jit, uint32_t i) emit_u32(_jit, i); } -static inline void -iw(jit_state_t *_jit, jit_word_t l) -{ #if __X64 +static inline void +il(jit_state_t *_jit, uint64_t l) +{ emit_u64(_jit, l); -#else - ii(_jit, l); -#endif } +#endif static void rex(jit_state_t *_jit, int32_t l, int32_t w, @@ -417,7 +415,7 @@ imovi(jit_state_t *_jit, int32_t r0, jit_word_t i0) } else { rex(_jit, 0, 1, _NOREG, _NOREG, r0); ic(_jit, 0xb8 | r7(r0)); - iw(_jit, i0); + il(_jit, i0); } #else ic(_jit, 0xb8 | r7(r0)); @@ -1490,7 +1488,7 @@ extr_us(jit_state_t *_jit, int32_t r0, int32_t r1) return movsr_u(_jit, r0, r1); } -#if __X64 && !__X64_32 +#if __X64 static void extr_i(jit_state_t *_jit, int32_t r0, int32_t r1) { @@ -1523,7 +1521,7 @@ bswapr_ui(jit_state_t *_jit, int32_t r0, int32_t r1) ic(_jit, 0xc8 | r7(r0)); } -#if __X64 && !__X64_32 +#if __X64 static void bswapr_ul(jit_state_t *_jit, int32_t r0, int32_t r1) { @@ -1634,7 +1632,6 @@ ldi_us(jit_state_t *_jit, int32_t r0, jit_word_t i0) } } -#if __X32 || !__X64_32 static void ldr_i(jit_state_t *_jit, int32_t r0, int32_t r1) { @@ -1665,7 +1662,6 @@ ldi_i(jit_state_t *_jit, int32_t r0, jit_word_t i0) unget_temp_gpr(_jit); } } -#endif #if __X64 static void @@ -1691,7 +1687,6 @@ ldi_ui(jit_state_t *_jit, int32_t r0, jit_word_t i0) } } -# if !__X64_32 static void ldr_l(jit_state_t *_jit, int32_t r0, int32_t r1) { @@ -1714,21 +1709,15 @@ ldi_l(jit_state_t *_jit, int32_t r0, jit_word_t i0) unget_temp_gpr(_jit); } } -# endif #endif static void ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - addr(_jit, r0, r1, r2); - ldr_c(r0, r0); -#else rex(_jit, 0, WIDE, r0, r1, r2); ic(_jit, 0x0f); ic(_jit, 0xbe); rx(_jit, r0, 0, r2, r1, _SCL1); -#endif } static void @@ -1750,15 +1739,10 @@ ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) static void ldxr_uc(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - addr(_jit, r0, r1, r2); - ldr_uc(_jit, r0, r0); -#else rex(_jit, 0, WIDE, r0, r1, r2); ic(_jit, 0x0f); ic(_jit, 0xb6); rx(_jit, r0, 0, r2, r1, _SCL1); -#endif } static void @@ -1780,15 +1764,10 @@ ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) static void ldxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - addr(_jit, r0, r1, r2); - ldr_s(_jit, r0, r0); -#else rex(_jit, 0, WIDE, r0, r1, r2); ic(_jit, 0x0f); ic(_jit, 0xbf); rx(_jit, r0, 0, r2, r1, _SCL1); -#endif } static void @@ -1810,15 +1789,10 @@ ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) static void ldxr_us(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - addr(_jit, r0, r1, r2); - ldr_us(_jit, r0, r0); -#else rex(_jit, 0, WIDE, r0, r1, r2); ic(_jit, 0x0f); ic(_jit, 0xb7); rx(_jit, r0, 0, r2, r1, _SCL1); -#endif } static void @@ -1837,7 +1811,6 @@ ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) } } -#if __X64 || !__X64_32 static void ldxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { @@ -1868,21 +1841,14 @@ ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) unget_temp_gpr(_jit); } } -#endif #if __X64 static void ldxr_ui(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - addr(_jit, r0, r1, r2); - /* to avoid confusion with macro renames */ - _ldr_ui(_jit, r0, r0); -#else rex(_jit, 0, 0, r0, r1, r2); ic(_jit, 0x8b); rx(_jit, r0, 0, r2, r1, _SCL1); -#endif } static void @@ -1900,7 +1866,6 @@ ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) } } -# if !__X64_32 static void ldxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { @@ -1923,7 +1888,6 @@ ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) unget_temp_gpr(_jit); } } -# endif #endif static void @@ -2015,7 +1979,7 @@ sti_i(jit_state_t *_jit, jit_word_t i0, int32_t r0) } } -#if __X64 && !__X64_32 +#if __X64 static void str_l(jit_state_t *_jit, int32_t r0, int32_t r1) { @@ -2043,12 +2007,6 @@ sti_l(jit_state_t *_jit, jit_word_t i0, int32_t r0) static void stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - jit_gpr_t reg = get_temp_gpr(_jit); - addr(_jit, jit_gpr_regno(reg), r0, r1); - str_c(_jit, jit_gpr_regno(reg), r2); - unget_temp_gpr(_jit); -#else if (reg8_p(r2)) { rex(_jit, 0, 0, r2, r1, r0); ic(_jit, 0x88); @@ -2061,7 +2019,6 @@ stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) rx(_jit, jit_gpr_regno(reg), 0, r0, r1, _SCL1); unget_temp_gpr(_jit); } -#endif } static void @@ -2091,17 +2048,10 @@ stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1) static void stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - jit_gpr_t reg = get_temp_gpr(_jit); - addr(_jit, jit_gpr_regno(reg), r0, r1); - str_s(_jit, jit_gpr_regno(reg), r2); - unget_temp_gpr(_jit); -#else ic(_jit, 0x66); rex(_jit, 0, 0, r2, r1, r0); ic(_jit, 0x89); rx(_jit, r2, 0, r0, r1, _SCL1); -#endif } static void @@ -2123,16 +2073,9 @@ stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1) static void stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - jit_gpr_t reg = get_temp_gpr(_jit); - addr(_jit, jit_gpr_regno(reg), r0, r1); - str_i(jit_gpr_regno(reg), r2); - unget_temp_gpr(_jit); -#else rex(_jit, 0, 0, r2, r1, r0); ic(_jit, 0x89); rx(_jit, r2, 0, r0, r1, _SCL1); -#endif } static void @@ -2150,7 +2093,7 @@ stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1) } } -#if __X64 && !__X64_32 +#if __X64 static void stxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { @@ -2684,14 +2627,14 @@ retval_us(jit_state_t *_jit, int32_t r0) static void retval_i(jit_state_t *_jit, int32_t r0) { -#if __X32 || __X64_32 +#if __X32 movr(_jit, r0, _RAX_REGNO); #else extr_i(_jit, r0, _RAX_REGNO); #endif } -#if __X64 && !__X64_32 +#if __X64 static void retval_ui(jit_state_t *_jit, int32_t r0) { diff --git a/lightening/x86-sse.c b/lightening/x86-sse.c index 34a39e895..3aca97fd1 100644 --- a/lightening/x86-sse.c +++ b/lightening/x86-sse.c @@ -101,7 +101,7 @@ ssexi(jit_state_t *_jit, int32_t c, int32_t r0, static void sselxr(jit_state_t *_jit, int32_t p, int32_t c, int32_t r0, int32_t r1) { - if (__X64 && !__X64_32) { + if (__X64) { ic(_jit, p); rex(_jit, 0, 1, r0, 0, r1); ic(_jit, 0x0f); @@ -404,7 +404,7 @@ movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t i0) xorpdr(_jit, r0, r0); else { jit_gpr_t ireg = get_temp_gpr(_jit); -#if __X64 && !__X64_32 +#if __X64 movi(_jit, jit_gpr_regno(ireg), data.w); movdqxr(_jit, r0, jit_gpr_regno(ireg)); unget_temp_gpr(_jit); @@ -705,18 +705,10 @@ negr_d(jit_state_t *_jit, int32_t r0, int32_t r1) unget_temp_gpr(_jit); } -#if __X32 -# define sse_address_p(i0) 1 -#elif __X64_32 -# define sse_address_p(i0) ((jit_word_t)(i0) >= 0) -# else -# define sse_address_p(i0) can_sign_extend_int_p(i0) -#endif - static void ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0) { - if (sse_address_p(i0)) + if (can_sign_extend_int_p(i0)) movssmr(_jit, i0, _NOREG, _NOREG, _SCL1, r0); else { jit_gpr_t reg = get_temp_gpr(_jit); @@ -729,14 +721,7 @@ ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0) static void ldxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - jit_gpr_t reg = get_temp_gpr(_jit); - addr(_jit, jit_gpr_regno(reg), r1, r2); - ldr_f(_jit, r0, jit_gpr_regno(reg)); - unget_temp_gpr(_jit); -#else movssmr(_jit, 0, r1, r2, _SCL1, r0); -#endif } static void @@ -746,13 +731,8 @@ ldxi_f(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) movssmr(_jit, i0, r1, _NOREG, _SCL1, r0); else { jit_gpr_t reg = get_temp_gpr(_jit); -#if __X64_32 - addi(jit_gpr_regno(reg), r1, i0); - ldr_f(_jit, r0, jit_gpr_regno(reg)); -#else movi(_jit, jit_gpr_regno(reg), i0); ldxr_f(_jit, r0, r1, jit_gpr_regno(reg)); -#endif unget_temp_gpr(_jit); } } @@ -760,7 +740,7 @@ ldxi_f(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) static void sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0) { - if (sse_address_p(i0)) + if (can_sign_extend_int_p(i0)) movssrm(_jit, r0, i0, _NOREG, _NOREG, _SCL1); else { jit_gpr_t reg = get_temp_gpr(_jit); @@ -773,14 +753,7 @@ sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0) static void stxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - jit_gpr_t reg = get_temp_gpr(_jit); - addr(_jit, jit_gpr_regno(reg), r0, r1); - str_f(_jit, jit_gpr_regno(reg), r2); - unget_temp_gpr(_jit); -#else movssrm(_jit, r2, 0, r0, r1, _SCL1); -#endif } static void @@ -790,13 +763,8 @@ stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1) movssrm(_jit, r1, i0, r0, _NOREG, _SCL1); else { jit_gpr_t reg = get_temp_gpr(_jit); -#if __X64_32 - addi(jit_gpr_regno(reg), r0, i0); - str_f(_jit, jit_gpr_regno(reg), r1); -#else movi(_jit, jit_gpr_regno(reg), i0); stxr_f(_jit, jit_gpr_regno(reg), r0, r1); -#endif unget_temp_gpr(_jit); } } @@ -910,7 +878,7 @@ bunordr_f(jit_state_t *_jit, int32_t r0, int32_t r1) static void ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0) { - if (sse_address_p(i0)) + if (can_sign_extend_int_p(i0)) movsdmr(_jit, i0, _NOREG, _NOREG, _SCL1, r0); else { jit_gpr_t reg = get_temp_gpr(_jit); @@ -923,14 +891,7 @@ ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0) static void ldxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - jit_gpr_t reg = get_temp_gpr(_jit); - addr(_jit, jit_gpr_regno(reg), r1, r2); - ldr_d(_jit, r0, jit_gpr_regno(reg)); - unget_temp_gpr(_jit); -#else movsdmr(_jit, 0, r1, r2, _SCL1, r0); -#endif } static void @@ -940,13 +901,8 @@ ldxi_d(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) movsdmr(_jit, i0, r1, _NOREG, _SCL1, r0); else { jit_gpr_t reg = get_temp_gpr(_jit); -#if __X64_32 - addi(jit_gpr_regno(reg), r1, i0); - ldr_d(_jit, r0, jit_gpr_regno(reg)); -#else movi(_jit, jit_gpr_regno(reg), i0); ldxr_d(_jit, r0, r1, jit_gpr_regno(reg)); -#endif unget_temp_gpr(_jit); } } @@ -954,7 +910,7 @@ ldxi_d(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0) static void sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0) { - if (sse_address_p(i0)) + if (can_sign_extend_int_p(i0)) movsdrm(_jit, r0, i0, _NOREG, _NOREG, _SCL1); else { jit_gpr_t reg = get_temp_gpr(_jit); @@ -967,14 +923,7 @@ sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0) static void stxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2) { -#if __X64_32 - jit_gpr_t reg = get_temp_gpr(_jit); - addr(_jit, jit_gpr_regno(reg), r0, r1); - str_d(_jit, jit_gpr_regno(reg), r2); - unget_temp_gpr(_jit); -#else movsdrm(_jit, r2, 0, r0, r1, _SCL1); -#endif } static void @@ -984,13 +933,8 @@ stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1) movsdrm(_jit, r1, i0, r0, _NOREG, _SCL1); else { jit_gpr_t reg = get_temp_gpr(_jit); -#if __X64_32 - addi(jit_gpr_regno(reg), r0, i0); - str_d(_jit, jit_gpr_regno(reg), r1); -#else movi(_jit, jit_gpr_regno(reg), i0); stxr_d(_jit, jit_gpr_regno(reg), r0, r1); -#endif unget_temp_gpr(_jit); } } From 42bc762d2614996d8e23a50cc26e4a4ac29d787f Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 17:26:03 +0200 Subject: [PATCH 10/18] Add facility to enter and leave JIT ABI This allows us to save and restore callee-save temporaries, i.e. RBP on 32-bit x86. Otherwise it's a disaster shuffling stack arguments using temporaries. --- lightening.h | 5 +++ lightening/lightening.c | 98 +++++++++++++++++++++++++++++++++++++++++ lightening/x86-cpu.c | 6 +-- lightening/x86.h | 1 + tests/qdivr.c | 22 +-------- tests/qdivr_u.c | 22 +-------- tests/qmulr.c | 22 +-------- tests/qmulr_u.c | 22 +-------- 8 files changed, 113 insertions(+), 85 deletions(-) diff --git a/lightening.h b/lightening.h index db327fc45..40db318bb 100644 --- a/lightening.h +++ b/lightening.h @@ -228,6 +228,11 @@ JIT_API void jit_move_operands (jit_state_t *_jit, jit_operand_t *dst, JIT_API size_t jit_align_stack (jit_state_t *_jit, size_t expand); JIT_API void jit_shrink_stack (jit_state_t *_jit, size_t diff); +JIT_API size_t jit_enter_jit_abi (jit_state_t *_jit, + size_t v, size_t vf, size_t frame_size); +JIT_API void jit_leave_jit_abi (jit_state_t *_jit, + size_t v, size_t vf, size_t frame_size); + /* Note that all functions that take jit_operand_t args[] use the args as scratch space while shuffling values into position. */ JIT_API void jit_calli(jit_state_t *, jit_pointer_t f, diff --git a/lightening/lightening.c b/lightening/lightening.c index de945e02f..74ecf99cd 100644 --- a/lightening/lightening.c +++ b/lightening/lightening.c @@ -863,6 +863,104 @@ jit_shrink_stack(jit_state_t *_jit, size_t diff) _jit->frame_size -= diff; } +static const jit_gpr_t V[] = { +#ifdef JIT_VTMP + JIT_VTMP , +#endif + JIT_V0, JIT_V1, JIT_V2 +#ifdef JIT_V3 + , JIT_V3 +#endif +#ifdef JIT_V4 + , JIT_V4 +#endif +#ifdef JIT_V5 + , JIT_V5 +#endif +#ifdef JIT_V6 + , JIT_V6 +#endif +#ifdef JIT_V7 + , JIT_V7 +#endif + }; + +static const jit_fpr_t VF[] = { +#ifdef JIT_VFTMP + JIT_VFTMP , +#endif +#ifdef JIT_VF0 + JIT_VF0 +#endif +#ifdef JIT_VF1 + , JIT_VF1 +#endif +#ifdef JIT_VF2 + , JIT_VF2 +#endif +#ifdef JIT_VF3 + , JIT_VF3 +#endif +#ifdef JIT_VF4 + , JIT_VF4 +#endif +#ifdef JIT_VF5 + , JIT_VF5 +#endif +#ifdef JIT_VF6 + , JIT_VF6 +#endif +#ifdef JIT_VF7 + , JIT_VF7 +#endif +}; + +static const size_t v_count = sizeof(V) / sizeof(V[0]); +static const size_t vf_count = sizeof(VF) / sizeof(VF[0]); + +size_t +jit_enter_jit_abi(jit_state_t *_jit, size_t v, size_t vf, size_t frame_size) +{ +#ifdef JIT_VTMP + v++; +#endif +#ifdef JIT_VFTMP + vf++; +#endif + + ASSERT(v <= v_count); + ASSERT(vf <= vf_count); + + /* Save values of callee-save registers. */ + for (size_t i = 0; i < v; i++) + jit_pushr (_jit, V[i]); + for (size_t i = 0; i < vf; i++) + jit_pushr_d (_jit, VF[i]); + + return jit_align_stack(_jit, frame_size); +} + +void +jit_leave_jit_abi(jit_state_t *_jit, size_t v, size_t vf, size_t frame_size) +{ +#ifdef JIT_VTMP + v++; +#endif +#ifdef JIT_VFTMP + vf++; +#endif + + jit_shrink_stack(_jit, frame_size); + + /* Restore callee-save registers. */ + for (size_t i = 0; i < vf; i++) + jit_popr_d (_jit, VF[vf_count - i - 1]); + + for (size_t i = 0; i < v; i++) + jit_popr (_jit, V[v_count - i - 1]); +} + + // Precondition: stack is already aligned. static size_t prepare_call_args(jit_state_t *_jit, size_t argc, jit_operand_t args[]) diff --git a/lightening/x86-cpu.c b/lightening/x86-cpu.c index 537e33184..6d56b114b 100644 --- a/lightening/x86-cpu.c +++ b/lightening/x86-cpu.c @@ -273,8 +273,7 @@ get_temp_gpr(jit_state_t *_jit) #ifdef JIT_RTMP return JIT_RTMP; #else - pushr(_jit, _RBP_REGNO); - return _RBP; + return JIT_VTMP; #endif } @@ -283,9 +282,6 @@ unget_temp_gpr(jit_state_t *_jit) { ASSERT(_jit->temp_gpr_saved); _jit->temp_gpr_saved = 0; -#ifndef JIT_RTMP - popr(_jit, _RBP_REGNO); -#endif } static void diff --git a/lightening/x86.h b/lightening/x86.h index 804af869a..db5072273 100644 --- a/lightening/x86.h +++ b/lightening/x86.h @@ -133,6 +133,7 @@ jit_fpr_is_callee_save (jit_fpr_t reg) # define JIT_V0 _RBX # define JIT_V1 _RSI # define JIT_V2 _RDI +# define JIT_VTMP _RBP # define JIT_F0 _XMM0 # define JIT_F1 _XMM1 # define JIT_F2 _XMM2 diff --git a/tests/qdivr.c b/tests/qdivr.c index 9e1b8da04..665053c56 100644 --- a/tests/qdivr.c +++ b/tests/qdivr.c @@ -1,26 +1,10 @@ #include "test.h" -static void -maybe_save(jit_state_t *j, jit_gpr_t reg) -{ - if (jit_gpr_is_callee_save (reg)) - jit_pushr(j, reg); -} - -static void -maybe_restore(jit_state_t *j, jit_gpr_t reg) -{ - if (jit_gpr_is_callee_save (reg)) - jit_popr(j, reg); -} - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - maybe_save(j, JIT_V0); - maybe_save(j, JIT_V1); - maybe_save(j, JIT_V2); + size_t align = jit_enter_jit_abi(j, 3, 0, 0); jit_operand_t args[] = { jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), @@ -33,9 +17,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_str(j, JIT_R0, JIT_V1); jit_str(j, JIT_R1, JIT_V2); - maybe_restore(j, JIT_V2); - maybe_restore(j, JIT_V1); - maybe_restore(j, JIT_V0); + jit_leave_jit_abi(j, 3, 0, align); jit_ret(j); diff --git a/tests/qdivr_u.c b/tests/qdivr_u.c index 276219971..e2601933c 100644 --- a/tests/qdivr_u.c +++ b/tests/qdivr_u.c @@ -1,27 +1,11 @@ #include "test.h" -static void -maybe_save(jit_state_t *j, jit_gpr_t reg) -{ - if (jit_gpr_is_callee_save (reg)) - jit_pushr(j, reg); -} - -static void -maybe_restore(jit_state_t *j, jit_gpr_t reg) -{ - if (jit_gpr_is_callee_save (reg)) - jit_popr(j, reg); -} - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - maybe_save(j, JIT_V0); - maybe_save(j, JIT_V1); - maybe_save(j, JIT_V2); + size_t align = jit_enter_jit_abi(j, 3, 0, 0); jit_operand_t args[] = { jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), @@ -34,9 +18,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_str(j, JIT_R0, JIT_V1); jit_str(j, JIT_R1, JIT_V2); - maybe_restore(j, JIT_V2); - maybe_restore(j, JIT_V1); - maybe_restore(j, JIT_V0); + jit_leave_jit_abi(j, 3, 0, align); jit_ret(j); diff --git a/tests/qmulr.c b/tests/qmulr.c index eed0d58fd..1645f5a9f 100644 --- a/tests/qmulr.c +++ b/tests/qmulr.c @@ -1,27 +1,11 @@ #include "test.h" -static void -maybe_save(jit_state_t *j, jit_gpr_t reg) -{ - if (jit_gpr_is_callee_save (reg)) - jit_pushr(j, reg); -} - -static void -maybe_restore(jit_state_t *j, jit_gpr_t reg) -{ - if (jit_gpr_is_callee_save (reg)) - jit_popr(j, reg); -} - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - maybe_save(j, JIT_V0); - maybe_save(j, JIT_V1); - maybe_save(j, JIT_V2); + size_t align = jit_enter_jit_abi(j, 3, 0, 0); jit_operand_t args[] = { jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), @@ -34,9 +18,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_str(j, JIT_R0, JIT_V1); jit_str(j, JIT_R1, JIT_V2); - maybe_restore(j, JIT_V2); - maybe_restore(j, JIT_V1); - maybe_restore(j, JIT_V0); + jit_leave_jit_abi(j, 3, 0, align); jit_ret(j); diff --git a/tests/qmulr_u.c b/tests/qmulr_u.c index ff3c92655..bb1d50d17 100644 --- a/tests/qmulr_u.c +++ b/tests/qmulr_u.c @@ -1,27 +1,11 @@ #include "test.h" -static void -maybe_save(jit_state_t *j, jit_gpr_t reg) -{ - if (jit_gpr_is_callee_save (reg)) - jit_pushr(j, reg); -} - -static void -maybe_restore(jit_state_t *j, jit_gpr_t reg) -{ - if (jit_gpr_is_callee_save (reg)) - jit_popr(j, reg); -} - static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - maybe_save(j, JIT_V0); - maybe_save(j, JIT_V1); - maybe_save(j, JIT_V2); + size_t align = jit_enter_jit_abi(j, 3, 0, 0); jit_operand_t args[] = { jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), @@ -34,9 +18,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_str(j, JIT_R0, JIT_V1); jit_str(j, JIT_R1, JIT_V2); - maybe_restore(j, JIT_V2); - maybe_restore(j, JIT_V1); - maybe_restore(j, JIT_V0); + jit_leave_jit_abi(j, 3, 0, align); jit_ret(j); From e0cf51e482db6f2361a87ee85108523a930f0612 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 26 Apr 2019 17:41:43 +0200 Subject: [PATCH 11/18] Small bug fixes for ia32 --- lightening/lightening.c | 1 + lightening/x86-cpu.c | 4 ++-- tests/call_10.c | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lightening/lightening.c b/lightening/lightening.c index 74ecf99cd..75460cde4 100644 --- a/lightening/lightening.c +++ b/lightening/lightening.c @@ -1023,6 +1023,7 @@ jit_locate_args(jit_state_t *_jit, size_t argc, jit_operand_t args[]) struct abi_arg_iterator iter; reset_abi_arg_iterator(&iter, argc, args, AFTER_CALL); + iter.stack_size += _jit->frame_size; for (size_t i = 0; i < argc; i++) next_abi_arg(&iter, &args[i]); } diff --git a/lightening/x86-cpu.c b/lightening/x86-cpu.c index 6d56b114b..fab06c7f4 100644 --- a/lightening/x86-cpu.c +++ b/lightening/x86-cpu.c @@ -252,7 +252,7 @@ rx(jit_state_t *_jit, int32_t rd, int32_t md, static void pushr(jit_state_t *_jit, int32_t r0) { - _jit->frame_size += __WORDSIZE; + _jit->frame_size += __WORDSIZE / 8; rex(_jit, 0, WIDE, 0, 0, r0); ic(_jit, 0x50 | r7(r0)); } @@ -260,7 +260,7 @@ pushr(jit_state_t *_jit, int32_t r0) static void popr(jit_state_t *_jit, int32_t r0) { - _jit->frame_size -= __WORDSIZE; + _jit->frame_size -= __WORDSIZE / 8; rex(_jit, 0, WIDE, 0, 0, r0); ic(_jit, 0x58 | r7(r0)); } diff --git a/tests/call_10.c b/tests/call_10.c index 9c3c94358..d99bcb886 100644 --- a/tests/call_10.c +++ b/tests/call_10.c @@ -19,6 +19,7 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0)); jit_operand_t args[10] = { @@ -34,6 +35,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_operand_mem(JIT_OPERAND_ABI_INT32, JIT_R0, 9 * sizeof(int32_t)) }; jit_calli(j, f, 10, args); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); size_t size = 0; From d617315fdb5c3ebbc771932a6fe2fcb3e72806fc Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 27 Apr 2019 22:27:39 +0200 Subject: [PATCH 12/18] Fix jit_leave_jit_abi to pop correct registers Also relax stack alignment on 32-bit x86 --- lightening/lightening.c | 6 +++--- lightening/x86.c | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lightening/lightening.c b/lightening/lightening.c index 75460cde4..d18aa835f 100644 --- a/lightening/lightening.c +++ b/lightening/lightening.c @@ -846,7 +846,7 @@ jit_align_stack(jit_state_t *_jit, size_t expand) size_t new_size = _jit->frame_size + expand; // Align stack to double-word boundaries. This isn't really a // principle but it does work for Aarch32, AArch64 and x86-64. - size_t alignment = __WORDSIZE / 8 * 2; + size_t alignment = jit_stack_alignment (); size_t aligned_size = (new_size + alignment - 1) & ~(alignment - 1); size_t diff = aligned_size - _jit->frame_size; if (diff) @@ -954,10 +954,10 @@ jit_leave_jit_abi(jit_state_t *_jit, size_t v, size_t vf, size_t frame_size) /* Restore callee-save registers. */ for (size_t i = 0; i < vf; i++) - jit_popr_d (_jit, VF[vf_count - i - 1]); + jit_popr_d (_jit, VF[vf - i - 1]); for (size_t i = 0; i < v; i++) - jit_popr (_jit, V[v_count - i - 1]); + jit_popr (_jit, V[v - i - 1]); } diff --git a/lightening/x86.c b/lightening/x86.c index 3adfd721c..c14133c97 100644 --- a/lightening/x86.c +++ b/lightening/x86.c @@ -356,6 +356,16 @@ jit_flush(void *fptr, void *tptr) { } +static inline size_t +jit_stack_alignment(void) +{ +#if __X64 + return 16; +#else + return 4; +#endif +} + static void jit_try_shorten(jit_state_t *_jit, jit_reloc_t reloc, jit_pointer_t addr) { From 81ba8830a21c0e381f1f1e51e7f244dea676a169 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 27 Apr 2019 22:36:06 +0200 Subject: [PATCH 13/18] Fix ABI of arg to extr_d_f test --- tests/extr_d_f.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/extr_d_f.c b/tests/extr_d_f.c index 83f7a86f0..eeeb860c0 100644 --- a/tests/extr_d_f.c +++ b/tests/extr_d_f.c @@ -4,7 +4,7 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); - jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); + jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_extr_d_f(j, JIT_F0, JIT_F0); jit_retr_f(j, JIT_F0); From d11864f09883b1624a17b3f444378c38515b231f Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 27 Apr 2019 22:54:38 +0200 Subject: [PATCH 14/18] Add {enter,leave}_jit_abi calls in tests This saves and restores RBP on x86-32. --- tests/absr_d.c | 2 ++ tests/absr_f.c | 2 ++ tests/addi.c | 2 ++ tests/addr.c | 2 ++ tests/addr_d.c | 2 ++ tests/addr_f.c | 2 ++ tests/addx.c | 2 ++ tests/andi.c | 2 ++ tests/andr.c | 2 ++ tests/beqi.c | 3 +++ tests/beqr.c | 3 +++ tests/beqr_d.c | 3 +++ tests/beqr_f.c | 3 +++ tests/bgei.c | 3 +++ tests/bgei_u.c | 3 +++ tests/bger.c | 3 +++ tests/bger_d.c | 3 +++ tests/bger_f.c | 3 +++ tests/bger_u.c | 3 +++ tests/bgti.c | 3 +++ tests/bgti_u.c | 3 +++ tests/bgtr.c | 3 +++ tests/bgtr_d.c | 3 +++ tests/bgtr_f.c | 3 +++ tests/bgtr_u.c | 3 +++ tests/blei.c | 3 +++ tests/blei_u.c | 3 +++ tests/bler.c | 3 +++ tests/bler_d.c | 3 +++ tests/bler_f.c | 3 +++ tests/bler_u.c | 3 +++ tests/bltgtr_d.c | 3 +++ tests/bltgtr_f.c | 3 +++ tests/blti.c | 3 +++ tests/blti_u.c | 3 +++ tests/bltr.c | 3 +++ tests/bltr_d.c | 3 +++ tests/bltr_f.c | 3 +++ tests/bltr_u.c | 3 +++ tests/bmci.c | 3 +++ tests/bmcr.c | 3 +++ tests/bmsi.c | 3 +++ tests/bmsr.c | 3 +++ tests/bnei.c | 3 +++ tests/bner.c | 3 +++ tests/bner_d.c | 3 +++ tests/bner_f.c | 3 +++ tests/boaddi.c | 3 +++ tests/boaddi_u.c | 3 +++ tests/boaddr.c | 3 +++ tests/boaddr_u.c | 3 +++ tests/bordr_d.c | 3 +++ tests/bordr_f.c | 3 +++ tests/bosubi.c | 3 +++ tests/bosubi_u.c | 3 +++ tests/bosubr.c | 3 +++ tests/bosubr_u.c | 3 +++ tests/bswapr_ui.c | 2 ++ tests/bswapr_ul.c | 2 ++ tests/bswapr_us.c | 2 ++ tests/buneqr_d.c | 3 +++ tests/buneqr_f.c | 3 +++ tests/bunger_d.c | 3 +++ tests/bunger_f.c | 3 +++ tests/bungtr_d.c | 3 +++ tests/bungtr_f.c | 3 +++ tests/bunler_d.c | 3 +++ tests/bunler_f.c | 3 +++ tests/bunltr_d.c | 3 +++ tests/bunltr_f.c | 3 +++ tests/bunordr_d.c | 3 +++ tests/bunordr_f.c | 3 +++ tests/bxaddi.c | 2 ++ tests/bxaddi_u.c | 2 ++ tests/bxaddr.c | 2 ++ tests/bxaddr_u.c | 2 ++ tests/bxsubi.c | 2 ++ tests/bxsubi_u.c | 2 ++ tests/bxsubr.c | 2 ++ tests/bxsubr_u.c | 2 ++ tests/comr.c | 2 ++ tests/divr.c | 2 ++ tests/divr_d.c | 2 ++ tests/divr_f.c | 2 ++ tests/divr_u.c | 2 ++ tests/extr_c.c | 2 ++ tests/extr_d.c | 2 ++ tests/extr_d_f.c | 2 ++ tests/extr_f.c | 2 ++ tests/extr_f_d.c | 2 ++ tests/extr_i.c | 2 ++ tests/extr_s.c | 2 ++ tests/extr_uc.c | 2 ++ tests/extr_ui.c | 2 ++ tests/extr_us.c | 2 ++ tests/ldi_c.c | 2 ++ tests/ldi_d.c | 2 ++ tests/ldi_f.c | 2 ++ tests/ldi_i.c | 2 ++ tests/ldi_l.c | 2 ++ tests/ldi_s.c | 2 ++ tests/ldi_uc.c | 2 ++ tests/ldi_ui.c | 2 ++ tests/ldi_us.c | 2 ++ tests/ldr_c.c | 2 ++ tests/ldr_d.c | 2 ++ tests/ldr_f.c | 2 ++ tests/ldr_i.c | 2 ++ tests/ldr_l.c | 2 ++ tests/ldr_s.c | 2 ++ tests/ldr_uc.c | 2 ++ tests/ldr_ui.c | 2 ++ tests/ldr_us.c | 2 ++ tests/ldxi_c.c | 2 ++ tests/ldxi_d.c | 2 ++ tests/ldxi_f.c | 2 ++ tests/ldxi_i.c | 2 ++ tests/ldxi_l.c | 2 ++ tests/ldxi_s.c | 2 ++ tests/ldxi_uc.c | 2 ++ tests/ldxi_ui.c | 2 ++ tests/ldxi_us.c | 2 ++ tests/ldxr_c.c | 2 ++ tests/ldxr_d.c | 2 ++ tests/ldxr_f.c | 2 ++ tests/ldxr_i.c | 2 ++ tests/ldxr_l.c | 2 ++ tests/ldxr_s.c | 2 ++ tests/ldxr_uc.c | 2 ++ tests/ldxr_ui.c | 2 ++ tests/ldxr_us.c | 2 ++ tests/lshi.c | 2 ++ tests/lshr.c | 2 ++ tests/mov_addr.c | 2 ++ tests/movi_d.c | 2 ++ tests/movi_f.c | 2 ++ tests/mulr.c | 2 ++ tests/mulr_d.c | 2 ++ tests/mulr_f.c | 2 ++ tests/negr.c | 2 ++ tests/negr_d.c | 2 ++ tests/negr_f.c | 2 ++ tests/nop.c | 2 ++ tests/ori.c | 2 ++ tests/orr.c | 2 ++ tests/pushpop.c | 12 ++++-------- tests/remr.c | 2 ++ tests/remr_u.c | 2 ++ tests/rshi.c | 2 ++ tests/rshi_u.c | 2 ++ tests/rshr.c | 2 ++ tests/rshr_u.c | 2 ++ tests/sqrtr_d.c | 2 ++ tests/sqrtr_f.c | 2 ++ tests/sti_c.c | 2 ++ tests/sti_d.c | 2 ++ tests/sti_f.c | 2 ++ tests/sti_i.c | 2 ++ tests/sti_l.c | 2 ++ tests/sti_s.c | 2 ++ tests/str_c.c | 2 ++ tests/str_d.c | 2 ++ tests/str_f.c | 2 ++ tests/str_i.c | 2 ++ tests/str_l.c | 2 ++ tests/str_s.c | 2 ++ tests/stxi_c.c | 2 ++ tests/stxi_d.c | 2 ++ tests/stxi_f.c | 2 ++ tests/stxi_i.c | 2 ++ tests/stxi_l.c | 2 ++ tests/stxi_s.c | 2 ++ tests/stxr_c.c | 2 ++ tests/stxr_d.c | 2 ++ tests/stxr_f.c | 2 ++ tests/stxr_i.c | 2 ++ tests/stxr_l.c | 2 ++ tests/stxr_s.c | 2 ++ tests/subr.c | 2 ++ tests/subr_d.c | 2 ++ tests/subr_f.c | 2 ++ tests/subx.c | 2 ++ tests/truncr_d_i.c | 2 ++ tests/truncr_d_l.c | 2 ++ tests/truncr_f_i.c | 2 ++ tests/truncr_f_l.c | 2 ++ tests/xori.c | 2 ++ tests/xorr.c | 2 ++ 188 files changed, 438 insertions(+), 8 deletions(-) diff --git a/tests/absr_d.c b/tests/absr_d.c index 93b10b673..00b8fa460 100644 --- a/tests/absr_d.c +++ b/tests/absr_d.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_absr_d(j, JIT_F0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(double) = jit_end(j, NULL); diff --git a/tests/absr_f.c b/tests/absr_f.c index 64463bf89..e019b5ff3 100644 --- a/tests/absr_f.c +++ b/tests/absr_f.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_absr_f(j, JIT_F0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(float) = jit_end(j, NULL); diff --git a/tests/addi.c b/tests/addi.c index 85d4d8e9b..756d07061 100644 --- a/tests/addi.c +++ b/tests/addi.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_addi(j, JIT_R0, JIT_R0, 69); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/addr.c b/tests/addr.c index a54f75661..6ee76e291 100644 --- a/tests/addr.c +++ b/tests/addr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_addr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/addr_d.c b/tests/addr_d.c index 8c7be6298..11216202e 100644 --- a/tests/addr_d.c +++ b/tests/addr_d.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_addr_d(j, JIT_F0, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); size_t size = 0; diff --git a/tests/addr_f.c b/tests/addr_f.c index 1ed1f36b4..4317dfe3a 100644 --- a/tests/addr_f.c +++ b/tests/addr_f.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_addr_f(j, JIT_F0, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); size_t size = 0; diff --git a/tests/addx.c b/tests/addx.c index 875e09f42..417cd1a26 100644 --- a/tests/addx.c +++ b/tests/addx.c @@ -4,12 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_movi(j, JIT_R2, 0); jit_addcr(j, JIT_R0, JIT_R0, JIT_R1); jit_addxi(j, JIT_R2, JIT_R2, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R2); size_t size = 0; diff --git a/tests/andi.c b/tests/andi.c index 2f84d767e..c6f39d7aa 100644 --- a/tests/andi.c +++ b/tests/andi.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_andi(j, JIT_R0, JIT_R0, 1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/andr.c b/tests/andr.c index 2e09527b8..1114ef98f 100644 --- a/tests/andr.c +++ b/tests/andr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_andr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/beqi.c b/tests/beqi.c index 857d927a5..2fb2454c0 100644 --- a/tests/beqi.c +++ b/tests/beqi.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_beqi(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/beqr.c b/tests/beqr.c index e8bacd017..d1d80b266 100644 --- a/tests/beqr.c +++ b/tests/beqr.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_beqr(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/beqr_d.c b/tests/beqr_d.c index 1b7f88b25..a84b6a76a 100644 --- a/tests/beqr_d.c +++ b/tests/beqr_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_beqr_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/beqr_f.c b/tests/beqr_f.c index 85b464f8f..7b5cc2708 100644 --- a/tests/beqr_f.c +++ b/tests/beqr_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_beqr_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bgei.c b/tests/bgei.c index 939e1a02f..b9a830b5d 100644 --- a/tests/bgei.c +++ b/tests/bgei.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bgei(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bgei_u.c b/tests/bgei_u.c index b5253e931..894c275e1 100644 --- a/tests/bgei_u.c +++ b/tests/bgei_u.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bgei_u(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bger.c b/tests/bger.c index d59e4f456..daab88c39 100644 --- a/tests/bger.c +++ b/tests/bger.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bger(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bger_d.c b/tests/bger_d.c index 281803dc6..712b118ea 100644 --- a/tests/bger_d.c +++ b/tests/bger_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bger_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bger_f.c b/tests/bger_f.c index d9c556c23..b9d547861 100644 --- a/tests/bger_f.c +++ b/tests/bger_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bger_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bger_u.c b/tests/bger_u.c index 13c6a1dc4..5c07f442d 100644 --- a/tests/bger_u.c +++ b/tests/bger_u.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bger_u(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bgti.c b/tests/bgti.c index 36df65930..4bfd36e1f 100644 --- a/tests/bgti.c +++ b/tests/bgti.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bgti(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bgti_u.c b/tests/bgti_u.c index c5be4e3f3..b4da14e01 100644 --- a/tests/bgti_u.c +++ b/tests/bgti_u.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bgti_u(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bgtr.c b/tests/bgtr.c index 222816a26..dbf5fdd50 100644 --- a/tests/bgtr.c +++ b/tests/bgtr.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bgtr(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bgtr_d.c b/tests/bgtr_d.c index f2892ab83..d3c24362a 100644 --- a/tests/bgtr_d.c +++ b/tests/bgtr_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bgtr_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bgtr_f.c b/tests/bgtr_f.c index 4ac08a344..91cb8c046 100644 --- a/tests/bgtr_f.c +++ b/tests/bgtr_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bgtr_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bgtr_u.c b/tests/bgtr_u.c index 23ade0931..2ed4d8eda 100644 --- a/tests/bgtr_u.c +++ b/tests/bgtr_u.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bgtr_u(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/blei.c b/tests/blei.c index 4303cae13..cb9eacb9c 100644 --- a/tests/blei.c +++ b/tests/blei.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_blei(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/blei_u.c b/tests/blei_u.c index 23c02729d..efe0523c5 100644 --- a/tests/blei_u.c +++ b/tests/blei_u.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_blei_u(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bler.c b/tests/bler.c index 0d3f160d9..57371fb18 100644 --- a/tests/bler.c +++ b/tests/bler.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bler(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bler_d.c b/tests/bler_d.c index 7d5253160..507dac506 100644 --- a/tests/bler_d.c +++ b/tests/bler_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bler_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bler_f.c b/tests/bler_f.c index 5d57bc11d..191b6492c 100644 --- a/tests/bler_f.c +++ b/tests/bler_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bler_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bler_u.c b/tests/bler_u.c index a4caf5b31..4269fee10 100644 --- a/tests/bler_u.c +++ b/tests/bler_u.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bler_u(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bltgtr_d.c b/tests/bltgtr_d.c index 21fa5467e..3d8835dbd 100644 --- a/tests/bltgtr_d.c +++ b/tests/bltgtr_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bltgtr_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bltgtr_f.c b/tests/bltgtr_f.c index 872fbb3c3..fbdbc3b30 100644 --- a/tests/bltgtr_f.c +++ b/tests/bltgtr_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bltgtr_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/blti.c b/tests/blti.c index a011f5a6c..fcdeb15b4 100644 --- a/tests/blti.c +++ b/tests/blti.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_blti(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/blti_u.c b/tests/blti_u.c index b4afe71f5..e90f1938e 100644 --- a/tests/blti_u.c +++ b/tests/blti_u.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_blti_u(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bltr.c b/tests/bltr.c index d9d252007..901f6c4b4 100644 --- a/tests/bltr.c +++ b/tests/bltr.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bltr(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bltr_d.c b/tests/bltr_d.c index a1b60a314..2d6260931 100644 --- a/tests/bltr_d.c +++ b/tests/bltr_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bltr_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bltr_f.c b/tests/bltr_f.c index adbafec37..eebd3da0c 100644 --- a/tests/bltr_f.c +++ b/tests/bltr_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bltr_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bltr_u.c b/tests/bltr_u.c index 4ec33c26b..9df16fc1d 100644 --- a/tests/bltr_u.c +++ b/tests/bltr_u.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bltr_u(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bmci.c b/tests/bmci.c index 55cd4a33a..608d6667b 100644 --- a/tests/bmci.c +++ b/tests/bmci.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bmci(j, JIT_R0, 1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bmcr.c b/tests/bmcr.c index 00dad50d2..df7e04641 100644 --- a/tests/bmcr.c +++ b/tests/bmcr.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bmcr(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bmsi.c b/tests/bmsi.c index a51616427..82c2ba7ea 100644 --- a/tests/bmsi.c +++ b/tests/bmsi.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bmsi(j, JIT_R0, 1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bmsr.c b/tests/bmsr.c index 79a9d235f..8caa7e0e7 100644 --- a/tests/bmsr.c +++ b/tests/bmsr.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bmsr(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bnei.c b/tests/bnei.c index 3b064820b..73e38a7db 100644 --- a/tests/bnei.c +++ b/tests/bnei.c @@ -4,11 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bnei(j, JIT_R0, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bner.c b/tests/bner.c index 2e1321682..e6515865e 100644 --- a/tests/bner.c +++ b/tests/bner.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bner(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bner_d.c b/tests/bner_d.c index 3f29d460b..079fda466 100644 --- a/tests/bner_d.c +++ b/tests/bner_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bner_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bner_f.c b/tests/bner_f.c index e43ddf9e8..011df67b2 100644 --- a/tests/bner_f.c +++ b/tests/bner_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bner_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/boaddi.c b/tests/boaddi.c index 6dcc4ea5e..1e47297c4 100644 --- a/tests/boaddi.c +++ b/tests/boaddi.c @@ -6,12 +6,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_boaddi(j, JIT_R0, 1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_patch_here(j, r); jit_movi(j, JIT_R0, overflowed); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/boaddi_u.c b/tests/boaddi_u.c index 364c71c96..21c71dfb9 100644 --- a/tests/boaddi_u.c +++ b/tests/boaddi_u.c @@ -6,12 +6,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_boaddi_u(j, JIT_R0, 1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_patch_here(j, r); jit_movi(j, JIT_R0, overflowed); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/boaddr.c b/tests/boaddr.c index c07417c20..8bab91ef1 100644 --- a/tests/boaddr.c +++ b/tests/boaddr.c @@ -6,13 +6,16 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_boaddr(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_patch_here(j, r); jit_movi(j, JIT_R0, overflowed); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/boaddr_u.c b/tests/boaddr_u.c index b186a90ce..f4bacde65 100644 --- a/tests/boaddr_u.c +++ b/tests/boaddr_u.c @@ -6,13 +6,16 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_boaddr_u(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_patch_here(j, r); jit_movi(j, JIT_R0, overflowed); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bordr_d.c b/tests/bordr_d.c index 9a611db0a..9227f2223 100644 --- a/tests/bordr_d.c +++ b/tests/bordr_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bordr_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bordr_f.c b/tests/bordr_f.c index fcfac6e86..25808e51f 100644 --- a/tests/bordr_f.c +++ b/tests/bordr_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bordr_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bosubi.c b/tests/bosubi.c index 41e624517..f10d90a75 100644 --- a/tests/bosubi.c +++ b/tests/bosubi.c @@ -6,12 +6,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bosubi(j, JIT_R0, 1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_patch_here(j, r); jit_movi(j, JIT_R0, overflowed); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bosubi_u.c b/tests/bosubi_u.c index b494a7d92..50af6ad56 100644 --- a/tests/bosubi_u.c +++ b/tests/bosubi_u.c @@ -6,12 +6,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bosubi_u(j, JIT_R0, 1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_patch_here(j, r); jit_movi(j, JIT_R0, overflowed); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bosubr.c b/tests/bosubr.c index 17da71f83..cf68ad625 100644 --- a/tests/bosubr.c +++ b/tests/bosubr.c @@ -6,13 +6,16 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bosubr(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_patch_here(j, r); jit_movi(j, JIT_R0, overflowed); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bosubr_u.c b/tests/bosubr_u.c index a3d8ae355..b5e6b39a0 100644 --- a/tests/bosubr_u.c +++ b/tests/bosubr_u.c @@ -6,13 +6,16 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bosubr_u(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_patch_here(j, r); jit_movi(j, JIT_R0, overflowed); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bswapr_ui.c b/tests/bswapr_ui.c index 653eb2d42..c1eb9fdc0 100644 --- a/tests/bswapr_ui.c +++ b/tests/bswapr_ui.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_bswapr_ui(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/bswapr_ul.c b/tests/bswapr_ul.c index 106a94cef..a3a11b31e 100644 --- a/tests/bswapr_ul.c +++ b/tests/bswapr_ul.c @@ -5,9 +5,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_bswapr_ul(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/bswapr_us.c b/tests/bswapr_us.c index fd0d439f6..0ff777e9e 100644 --- a/tests/bswapr_us.c +++ b/tests/bswapr_us.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_bswapr_us(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/buneqr_d.c b/tests/buneqr_d.c index eead53ef3..1d08e325e 100644 --- a/tests/buneqr_d.c +++ b/tests/buneqr_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_buneqr_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/buneqr_f.c b/tests/buneqr_f.c index b64874209..49d9062ee 100644 --- a/tests/buneqr_f.c +++ b/tests/buneqr_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_buneqr_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bunger_d.c b/tests/bunger_d.c index e949c9719..57888af01 100644 --- a/tests/bunger_d.c +++ b/tests/bunger_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bunger_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bunger_f.c b/tests/bunger_f.c index 4fc598393..f3103dc9a 100644 --- a/tests/bunger_f.c +++ b/tests/bunger_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bunger_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bungtr_d.c b/tests/bungtr_d.c index f00c1ea3d..649d61f30 100644 --- a/tests/bungtr_d.c +++ b/tests/bungtr_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bungtr_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bungtr_f.c b/tests/bungtr_f.c index 722779c0f..fea66dc60 100644 --- a/tests/bungtr_f.c +++ b/tests/bungtr_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bungtr_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bunler_d.c b/tests/bunler_d.c index d3cec1842..e59382c5e 100644 --- a/tests/bunler_d.c +++ b/tests/bunler_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bunler_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bunler_f.c b/tests/bunler_f.c index fa3b0ef99..fddce6b94 100644 --- a/tests/bunler_f.c +++ b/tests/bunler_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bunler_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bunltr_d.c b/tests/bunltr_d.c index e6adf6d6c..2ab00510b 100644 --- a/tests/bunltr_d.c +++ b/tests/bunltr_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bunltr_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bunltr_f.c b/tests/bunltr_f.c index 4d6048eae..ade228b7b 100644 --- a/tests/bunltr_f.c +++ b/tests/bunltr_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bunltr_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bunordr_d.c b/tests/bunordr_d.c index f9d074b06..6b04f0ee1 100644 --- a/tests/bunordr_d.c +++ b/tests/bunordr_d.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_reloc_t r = jit_bunordr_d(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(double, double) = jit_end(j, NULL); diff --git a/tests/bunordr_f.c b/tests/bunordr_f.c index 5dffc6920..ce4fc7bea 100644 --- a/tests/bunordr_f.c +++ b/tests/bunordr_f.c @@ -4,12 +4,15 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_reloc_t r = jit_bunordr_f(j, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 0); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 1); jit_word_t (*f)(float, float) = jit_end(j, NULL); diff --git a/tests/bxaddi.c b/tests/bxaddi.c index 30ea9430b..6e872dace 100644 --- a/tests/bxaddi.c +++ b/tests/bxaddi.c @@ -6,11 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bxaddi(j, JIT_R0, 1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bxaddi_u.c b/tests/bxaddi_u.c index 702f135a3..e71aeb79d 100644 --- a/tests/bxaddi_u.c +++ b/tests/bxaddi_u.c @@ -6,11 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bxaddi_u(j, JIT_R0, 1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bxaddr.c b/tests/bxaddr.c index 84b3639f0..c1f6f2393 100644 --- a/tests/bxaddr.c +++ b/tests/bxaddr.c @@ -6,12 +6,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bxaddr(j, JIT_R0, JIT_R1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bxaddr_u.c b/tests/bxaddr_u.c index b20ddd029..d674f8286 100644 --- a/tests/bxaddr_u.c +++ b/tests/bxaddr_u.c @@ -6,12 +6,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bxaddr_u(j, JIT_R0, JIT_R1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bxsubi.c b/tests/bxsubi.c index 23174d7a1..1b642c711 100644 --- a/tests/bxsubi.c +++ b/tests/bxsubi.c @@ -6,11 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bxsubi(j, JIT_R0, 1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bxsubi_u.c b/tests/bxsubi_u.c index 9c50858ef..1345bd2bf 100644 --- a/tests/bxsubi_u.c +++ b/tests/bxsubi_u.c @@ -6,11 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_reloc_t r = jit_bxsubi_u(j, JIT_R0, 1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/bxsubr.c b/tests/bxsubr.c index 5ac2a7007..d40d1821d 100644 --- a/tests/bxsubr.c +++ b/tests/bxsubr.c @@ -6,12 +6,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bxsubr(j, JIT_R0, JIT_R1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/bxsubr_u.c b/tests/bxsubr_u.c index 6ac20dbbf..54a8d2836 100644 --- a/tests/bxsubr_u.c +++ b/tests/bxsubr_u.c @@ -6,12 +6,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_reloc_t r = jit_bxsubr_u(j, JIT_R0, JIT_R1); jit_movi(j, JIT_R0, overflowed); jit_patch_here(j, r); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t, jit_word_t) = jit_end(j, NULL); diff --git a/tests/comr.c b/tests/comr.c index bbdc287a1..c2e7d1883 100644 --- a/tests/comr.c +++ b/tests/comr.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_comr(j, JIT_R0, JIT_R0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/divr.c b/tests/divr.c index b83382c4f..399d70de1 100644 --- a/tests/divr.c +++ b/tests/divr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_divr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/divr_d.c b/tests/divr_d.c index d678c7370..9d21cb591 100644 --- a/tests/divr_d.c +++ b/tests/divr_d.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_divr_d(j, JIT_F0, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); size_t size = 0; diff --git a/tests/divr_f.c b/tests/divr_f.c index 0dcf8a618..de519dc75 100644 --- a/tests/divr_f.c +++ b/tests/divr_f.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_divr_f(j, JIT_F0, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); size_t size = 0; diff --git a/tests/divr_u.c b/tests/divr_u.c index 37ea02260..b8305f781 100644 --- a/tests/divr_u.c +++ b/tests/divr_u.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_divr_u(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/extr_c.c b/tests/extr_c.c index 06ea12a08..043068d3f 100644 --- a/tests/extr_c.c +++ b/tests/extr_c.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_c(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/extr_d.c b/tests/extr_d.c index 14c327258..af0fe9145 100644 --- a/tests/extr_d.c +++ b/tests/extr_d.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_extr_d(j, JIT_F0, JIT_R0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/extr_d_f.c b/tests/extr_d_f.c index eeeb860c0..049eb5fb5 100644 --- a/tests/extr_d_f.c +++ b/tests/extr_d_f.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_extr_d_f(j, JIT_F0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(double) = jit_end(j, NULL); diff --git a/tests/extr_f.c b/tests/extr_f.c index 75d74a25d..b57830cae 100644 --- a/tests/extr_f.c +++ b/tests/extr_f.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_extr_f(j, JIT_F0, JIT_R0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/extr_f_d.c b/tests/extr_f_d.c index 8f14ea4ff..5fa500772 100644 --- a/tests/extr_f_d.c +++ b/tests/extr_f_d.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_extr_f_d(j, JIT_F0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(float) = jit_end(j, NULL); diff --git a/tests/extr_i.c b/tests/extr_i.c index 6f7a9bb3f..d26a576b5 100644 --- a/tests/extr_i.c +++ b/tests/extr_i.c @@ -5,9 +5,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_i(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/extr_s.c b/tests/extr_s.c index a111937e6..5b39af392 100644 --- a/tests/extr_s.c +++ b/tests/extr_s.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_s(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/extr_uc.c b/tests/extr_uc.c index 4ebae5413..a42e603a9 100644 --- a/tests/extr_uc.c +++ b/tests/extr_uc.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_uc(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/extr_ui.c b/tests/extr_ui.c index 70d7f3bb0..37964da16 100644 --- a/tests/extr_ui.c +++ b/tests/extr_ui.c @@ -5,9 +5,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_ui(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/extr_us.c b/tests/extr_us.c index 7ea001fc2..38a7c390a 100644 --- a/tests/extr_us.c +++ b/tests/extr_us.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_extr_us(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldi_c.c b/tests/ldi_c.c index a825ab85c..9d5de8226 100644 --- a/tests/ldi_c.c +++ b/tests/ldi_c.c @@ -6,8 +6,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_ldi_c(j, JIT_R0, &data[0]); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void) = jit_end(j, NULL); diff --git a/tests/ldi_d.c b/tests/ldi_d.c index 562e35d99..b72cdda61 100644 --- a/tests/ldi_d.c +++ b/tests/ldi_d.c @@ -6,8 +6,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_ldi_d(j, JIT_F0, &data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(void) = jit_end(j, NULL); diff --git a/tests/ldi_f.c b/tests/ldi_f.c index ff9abd006..13e5fd427 100644 --- a/tests/ldi_f.c +++ b/tests/ldi_f.c @@ -6,8 +6,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_ldi_f(j, JIT_F0, &data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(void) = jit_end(j, NULL); diff --git a/tests/ldi_i.c b/tests/ldi_i.c index 6bb7a5997..e38978802 100644 --- a/tests/ldi_i.c +++ b/tests/ldi_i.c @@ -6,8 +6,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_ldi_i(j, JIT_R0, &data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void) = jit_end(j, NULL); diff --git a/tests/ldi_l.c b/tests/ldi_l.c index 1cb5efd38..f3fa729cb 100644 --- a/tests/ldi_l.c +++ b/tests/ldi_l.c @@ -7,8 +7,10 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint64_t data = 0xffffffffffffffff; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_ldi_l(j, JIT_R0, &data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void) = jit_end(j, NULL); diff --git a/tests/ldi_s.c b/tests/ldi_s.c index b7d2ff213..d9d1c4725 100644 --- a/tests/ldi_s.c +++ b/tests/ldi_s.c @@ -6,8 +6,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_ldi_s(j, JIT_R0, &data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void) = jit_end(j, NULL); diff --git a/tests/ldi_uc.c b/tests/ldi_uc.c index 68b082c2e..12f18bf17 100644 --- a/tests/ldi_uc.c +++ b/tests/ldi_uc.c @@ -6,8 +6,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_ldi_uc(j, JIT_R0, data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void) = jit_end(j, NULL); diff --git a/tests/ldi_ui.c b/tests/ldi_ui.c index 47fe2784d..d233694c6 100644 --- a/tests/ldi_ui.c +++ b/tests/ldi_ui.c @@ -7,8 +7,10 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_ldi_ui(j, JIT_R0, data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void) = jit_end(j, NULL); diff --git a/tests/ldi_us.c b/tests/ldi_us.c index adaf1ee3c..70eb4a093 100644 --- a/tests/ldi_us.c +++ b/tests/ldi_us.c @@ -6,8 +6,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_ldi_us(j, JIT_R0, data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void) = jit_end(j, NULL); diff --git a/tests/ldr_c.c b/tests/ldr_c.c index ac851dbdd..07a59314b 100644 --- a/tests/ldr_c.c +++ b/tests/ldr_c.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); jit_ldr_c(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*) = jit_end(j, NULL); diff --git a/tests/ldr_d.c b/tests/ldr_d.c index 5f3073ada..37c75f096 100644 --- a/tests/ldr_d.c +++ b/tests/ldr_d.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); jit_ldr_d(j, JIT_F0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(void*) = jit_end(j, NULL); diff --git a/tests/ldr_f.c b/tests/ldr_f.c index c0776b6d3..bb6827848 100644 --- a/tests/ldr_f.c +++ b/tests/ldr_f.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); jit_ldr_f(j, JIT_F0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(void*) = jit_end(j, NULL); diff --git a/tests/ldr_i.c b/tests/ldr_i.c index 5f6de9912..3de9e5f2c 100644 --- a/tests/ldr_i.c +++ b/tests/ldr_i.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); jit_ldr_i(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*) = jit_end(j, NULL); diff --git a/tests/ldr_l.c b/tests/ldr_l.c index 6a3d0fc5a..15f00801e 100644 --- a/tests/ldr_l.c +++ b/tests/ldr_l.c @@ -7,9 +7,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); jit_ldr_l(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*) = jit_end(j, NULL); diff --git a/tests/ldr_s.c b/tests/ldr_s.c index 61daa721b..cf668d5b3 100644 --- a/tests/ldr_s.c +++ b/tests/ldr_s.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); jit_ldr_s(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*) = jit_end(j, NULL); diff --git a/tests/ldr_uc.c b/tests/ldr_uc.c index 049630bf4..a48f37056 100644 --- a/tests/ldr_uc.c +++ b/tests/ldr_uc.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); jit_ldr_uc(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*) = jit_end(j, NULL); diff --git a/tests/ldr_ui.c b/tests/ldr_ui.c index 85a462c40..7668778b5 100644 --- a/tests/ldr_ui.c +++ b/tests/ldr_ui.c @@ -7,9 +7,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); jit_ldr_ui(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*) = jit_end(j, NULL); diff --git a/tests/ldr_us.c b/tests/ldr_us.c index 464108008..bb9928bf0 100644 --- a/tests/ldr_us.c +++ b/tests/ldr_us.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R1)); jit_ldr_us(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*) = jit_end(j, NULL); diff --git a/tests/ldxi_c.c b/tests/ldxi_c.c index 82242af43..4271f9753 100644 --- a/tests/ldxi_c.c +++ b/tests/ldxi_c.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_c(j, JIT_R0, JIT_R0, (uintptr_t)&data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxi_d.c b/tests/ldxi_d.c index db5af67bc..6bcf632cc 100644 --- a/tests/ldxi_d.c +++ b/tests/ldxi_d.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_d(j, JIT_F0, JIT_R0, (uintptr_t)data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxi_f.c b/tests/ldxi_f.c index 0e91f74b9..9e65321d8 100644 --- a/tests/ldxi_f.c +++ b/tests/ldxi_f.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_f(j, JIT_F0, JIT_R0, (uintptr_t)data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxi_i.c b/tests/ldxi_i.c index d6d2def08..d1f7b5605 100644 --- a/tests/ldxi_i.c +++ b/tests/ldxi_i.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0)); jit_ldxi_i(j, JIT_R0, JIT_R0, (uintptr_t)data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxi_l.c b/tests/ldxi_l.c index 6383166c2..bb1a8b257 100644 --- a/tests/ldxi_l.c +++ b/tests/ldxi_l.c @@ -7,9 +7,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_l(j, JIT_R0, JIT_R0, (uintptr_t)data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxi_s.c b/tests/ldxi_s.c index 698bcdba2..c9376d0fb 100644 --- a/tests/ldxi_s.c +++ b/tests/ldxi_s.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_s(j, JIT_R0, JIT_R0, (uintptr_t)data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxi_uc.c b/tests/ldxi_uc.c index 35ddf2454..31d7b73d3 100644 --- a/tests/ldxi_uc.c +++ b/tests/ldxi_uc.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_uc(j, JIT_R0, JIT_R0, (uintptr_t)data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxi_ui.c b/tests/ldxi_ui.c index 00a47598c..4f7e304a6 100644 --- a/tests/ldxi_ui.c +++ b/tests/ldxi_ui.c @@ -7,9 +7,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_ui(j, JIT_R0, JIT_R0, (uintptr_t)data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxi_us.c b/tests/ldxi_us.c index edc71906b..81c984f1f 100644 --- a/tests/ldxi_us.c +++ b/tests/ldxi_us.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ldxi_us(j, JIT_R0, JIT_R0, (uintptr_t)data); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxr_c.c b/tests/ldxr_c.c index c770e7eab..366f5b2f3 100644 --- a/tests/ldxr_c.c +++ b/tests/ldxr_c.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_c(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxr_d.c b/tests/ldxr_d.c index 7267245ea..38a12fdd5 100644 --- a/tests/ldxr_d.c +++ b/tests/ldxr_d.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_d(j, JIT_F0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(void*, jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxr_f.c b/tests/ldxr_f.c index 88aabc67f..c48b11f8f 100644 --- a/tests/ldxr_f.c +++ b/tests/ldxr_f.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_f(j, JIT_F0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(void*, jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxr_i.c b/tests/ldxr_i.c index 774c682d1..e4149aade 100644 --- a/tests/ldxr_i.c +++ b/tests/ldxr_i.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_i(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxr_l.c b/tests/ldxr_l.c index d143ede93..ee9f156a7 100644 --- a/tests/ldxr_l.c +++ b/tests/ldxr_l.c @@ -7,10 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_l(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxr_s.c b/tests/ldxr_s.c index ca93140ab..fbb5c090c 100644 --- a/tests/ldxr_s.c +++ b/tests/ldxr_s.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_s(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxr_uc.c b/tests/ldxr_uc.c index 70bcf13a9..846c552c2 100644 --- a/tests/ldxr_uc.c +++ b/tests/ldxr_uc.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_uc(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxr_ui.c b/tests/ldxr_ui.c index 0c821ee06..cd774d355 100644 --- a/tests/ldxr_ui.c +++ b/tests/ldxr_ui.c @@ -7,10 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_ui(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); diff --git a/tests/ldxr_us.c b/tests/ldxr_us.c index 32ce9233e..b7e408bb9 100644 --- a/tests/ldxr_us.c +++ b/tests/ldxr_us.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_ldxr_us(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_uword_t (*f)(void*, jit_uword_t) = jit_end(j, NULL); diff --git a/tests/lshi.c b/tests/lshi.c index 8c25e40b0..e721af58b 100644 --- a/tests/lshi.c +++ b/tests/lshi.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_lshi(j, JIT_R0, JIT_R0, 31); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/lshr.c b/tests/lshr.c index 3861adb46..f81aa690a 100644 --- a/tests/lshr.c +++ b/tests/lshr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_lshr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/mov_addr.c b/tests/mov_addr.c index 0d7d9e071..b4a9aaae1 100644 --- a/tests/mov_addr.c +++ b/tests/mov_addr.c @@ -6,8 +6,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_patch_there(j, jit_mov_addr(j, JIT_R0), &thing); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); void* (*f)(void) = jit_end(j, NULL); diff --git a/tests/movi_d.c b/tests/movi_d.c index 58ec949fc..cb9e63d47 100644 --- a/tests/movi_d.c +++ b/tests/movi_d.c @@ -4,8 +4,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_movi_d(j, JIT_F0, 3.14159); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(void) = jit_end(j, NULL); diff --git a/tests/movi_f.c b/tests/movi_f.c index 0b92f9242..944f61589 100644 --- a/tests/movi_f.c +++ b/tests/movi_f.c @@ -4,8 +4,10 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_movi_f(j, JIT_F0, 3.14159f); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(void) = jit_end(j, NULL); diff --git a/tests/mulr.c b/tests/mulr.c index 7f39d3d6d..452e35dcb 100644 --- a/tests/mulr.c +++ b/tests/mulr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_mulr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/mulr_d.c b/tests/mulr_d.c index 460b14baf..945f1527d 100644 --- a/tests/mulr_d.c +++ b/tests/mulr_d.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_mulr_d(j, JIT_F0, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); size_t size = 0; diff --git a/tests/mulr_f.c b/tests/mulr_f.c index 6189be263..2d0dd4ffa 100644 --- a/tests/mulr_f.c +++ b/tests/mulr_f.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_mulr_f(j, JIT_F0, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); size_t size = 0; diff --git a/tests/negr.c b/tests/negr.c index cf9c84d69..18e27cbbb 100644 --- a/tests/negr.c +++ b/tests/negr.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_negr(j, JIT_R0, JIT_R0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/negr_d.c b/tests/negr_d.c index 566061c46..d0e168b8c 100644 --- a/tests/negr_d.c +++ b/tests/negr_d.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_negr_d(j, JIT_F0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(double) = jit_end(j, NULL); diff --git a/tests/negr_f.c b/tests/negr_f.c index 24b509f41..26110d560 100644 --- a/tests/negr_f.c +++ b/tests/negr_f.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_negr_f(j, JIT_F0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(float) = jit_end(j, NULL); diff --git a/tests/nop.c b/tests/nop.c index e2975c5d2..c029954d2 100644 --- a/tests/nop.c +++ b/tests/nop.c @@ -4,6 +4,7 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); size_t total = 0; char *start = jit_address(j); @@ -11,6 +12,7 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) jit_nop(j, i); char *end = jit_address(j); ASSERT(end - start == total); + jit_leave_jit_abi(j, 0, 0, align); jit_reti(j, 42); jit_word_t (*f)(void) = jit_end(j, NULL); diff --git a/tests/ori.c b/tests/ori.c index 25a528e23..631018527 100644 --- a/tests/ori.c +++ b/tests/ori.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_ori(j, JIT_R0, JIT_R0, 1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/orr.c b/tests/orr.c index c7bf31375..5a9087a3d 100644 --- a/tests/orr.c +++ b/tests/orr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_orr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/pushpop.c b/tests/pushpop.c index de010c812..cd2420bdd 100644 --- a/tests/pushpop.c +++ b/tests/pushpop.c @@ -7,13 +7,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) const jit_fpr_t fpr[] = { JIT_F0, JIT_F1, JIT_F2 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 3, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); - for (int i=0; i<6; i++) - jit_pushr(j, gpr[i]); - for (int i=0; i<3; i++) - jit_pushr_d(j, fpr[i]); + jit_pushr(j, JIT_R0); // Stomple registers. for (int i=0; i<6; i++) @@ -21,11 +19,9 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) for (int i=0; i<3; i++) jit_extr_d(j, fpr[i], gpr[i]); - for (int i=2; i>=0; i--) - jit_popr_d(j, fpr[i]); - for (int i=5; i>=0; i--) - jit_popr(j, gpr[i]); + jit_popr(j, JIT_R0); + jit_leave_jit_abi(j, 3, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/remr.c b/tests/remr.c index 74c85e14e..805d6fbf9 100644 --- a/tests/remr.c +++ b/tests/remr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_remr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/remr_u.c b/tests/remr_u.c index 10a59522a..a9a01789a 100644 --- a/tests/remr_u.c +++ b/tests/remr_u.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_remr_u(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/rshi.c b/tests/rshi.c index ba20db6a6..c536055dc 100644 --- a/tests/rshi.c +++ b/tests/rshi.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_rshi(j, JIT_R0, JIT_R0, 31); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/rshi_u.c b/tests/rshi_u.c index c0e3d7193..8f6dbd4e3 100644 --- a/tests/rshi_u.c +++ b/tests/rshi_u.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_rshi_u(j, JIT_R0, JIT_R0, 31); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); jit_word_t (*f)(jit_word_t) = jit_end(j, NULL); diff --git a/tests/rshr.c b/tests/rshr.c index c168b9513..b4b568907 100644 --- a/tests/rshr.c +++ b/tests/rshr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_rshr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/rshr_u.c b/tests/rshr_u.c index 0ff9c2878..64c59fddb 100644 --- a/tests/rshr_u.c +++ b/tests/rshr_u.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_rshr_u(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/sqrtr_d.c b/tests/sqrtr_d.c index 35e2230a7..873deb919 100644 --- a/tests/sqrtr_d.c +++ b/tests/sqrtr_d.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_sqrtr_d(j, JIT_F0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); double (*f)(double) = jit_end(j, NULL); diff --git a/tests/sqrtr_f.c b/tests/sqrtr_f.c index 0c3737337..66db83139 100644 --- a/tests/sqrtr_f.c +++ b/tests/sqrtr_f.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_sqrtr_f(j, JIT_F0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); float (*f)(float) = jit_end(j, NULL); diff --git a/tests/sti_c.c b/tests/sti_c.c index 61ae9b69d..ff6e6d563 100644 --- a/tests/sti_c.c +++ b/tests/sti_c.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INT8, JIT_R1)); jit_sti_c(j, &data[1], JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(int8_t) = jit_end(j, NULL); diff --git a/tests/sti_d.c b/tests/sti_d.c index c10b7b7dd..8a703e6b6 100644 --- a/tests/sti_d.c +++ b/tests/sti_d.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_sti_d(j, &data[1], JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(double) = jit_end(j, NULL); diff --git a/tests/sti_f.c b/tests/sti_f.c index 240152654..e0271925b 100644 --- a/tests/sti_f.c +++ b/tests/sti_f.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_sti_f(j, &data[1], JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(float) = jit_end(j, NULL); diff --git a/tests/sti_i.c b/tests/sti_i.c index c8bb72e73..4a233c657 100644 --- a/tests/sti_i.c +++ b/tests/sti_i.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INT32, JIT_R1)); jit_sti_i(j, &data[1], JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(int32_t) = jit_end(j, NULL); diff --git a/tests/sti_l.c b/tests/sti_l.c index 939a3e8e3..fce9180b2 100644 --- a/tests/sti_l.c +++ b/tests/sti_l.c @@ -7,9 +7,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INT64, JIT_R1)); jit_sti_l(j, &data[1], JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(int64_t) = jit_end(j, NULL); diff --git a/tests/sti_s.c b/tests/sti_s.c index 4d4b27212..daab0bda2 100644 --- a/tests/sti_s.c +++ b/tests/sti_s.c @@ -6,9 +6,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_INT16, JIT_R1)); jit_sti_s(j, &data[1], JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(int16_t) = jit_end(j, NULL); diff --git a/tests/str_c.c b/tests/str_c.c index f8d7d7543..b894b8281 100644 --- a/tests/str_c.c +++ b/tests/str_c.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_INT8, JIT_R1)); jit_str_c(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, int8_t) = jit_end(j, NULL); diff --git a/tests/str_d.c b/tests/str_d.c index 817fd64a2..2f992a66a 100644 --- a/tests/str_d.c +++ b/tests/str_d.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_str_d(j, JIT_R0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, double) = jit_end(j, NULL); diff --git a/tests/str_f.c b/tests/str_f.c index 22af0d580..fdad3c244 100644 --- a/tests/str_f.c +++ b/tests/str_f.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_str_f(j, JIT_R0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, float) = jit_end(j, NULL); diff --git a/tests/str_i.c b/tests/str_i.c index 3872ed771..968f0ce91 100644 --- a/tests/str_i.c +++ b/tests/str_i.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_INT32, JIT_R1)); jit_str_i(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, int32_t) = jit_end(j, NULL); diff --git a/tests/str_l.c b/tests/str_l.c index ff91a18f1..450885b39 100644 --- a/tests/str_l.c +++ b/tests/str_l.c @@ -7,10 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_INT64, JIT_R1)); jit_str_l(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, int64_t) = jit_end(j, NULL); diff --git a/tests/str_s.c b/tests/str_s.c index 0044d8286..3e228edc7 100644 --- a/tests/str_s.c +++ b/tests/str_s.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_INT16, JIT_R1)); jit_str_s(j, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, int16_t) = jit_end(j, NULL); diff --git a/tests/stxi_c.c b/tests/stxi_c.c index 78982044f..d76d814f5 100644 --- a/tests/stxi_c.c +++ b/tests/stxi_c.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT8, JIT_R1)); jit_stxi_c(j, (uintptr_t)data, JIT_R2, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(jit_word_t, int8_t) = jit_end(j, NULL); diff --git a/tests/stxi_d.c b/tests/stxi_d.c index a63c335d8..3933c5692 100644 --- a/tests/stxi_d.c +++ b/tests/stxi_d.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_stxi_d(j, (uintptr_t)data, JIT_R2, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(jit_word_t, double) = jit_end(j, NULL); diff --git a/tests/stxi_f.c b/tests/stxi_f.c index 5a93679ff..aea6756cc 100644 --- a/tests/stxi_f.c +++ b/tests/stxi_f.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_stxi_f(j, (uintptr_t)data, JIT_R2, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(jit_word_t, float) = jit_end(j, NULL); diff --git a/tests/stxi_i.c b/tests/stxi_i.c index e320c9201..79dab03c4 100644 --- a/tests/stxi_i.c +++ b/tests/stxi_i.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT32, JIT_R1)); jit_stxi_i(j, (uintptr_t)data, JIT_R2, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(jit_word_t, int32_t) = jit_end(j, NULL); diff --git a/tests/stxi_l.c b/tests/stxi_l.c index af62d7de0..8a6824136 100644 --- a/tests/stxi_l.c +++ b/tests/stxi_l.c @@ -7,10 +7,12 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT64, JIT_R1)); jit_stxi_l(j, (uintptr_t)data, JIT_R2, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(jit_word_t, int64_t) = jit_end(j, NULL); diff --git a/tests/stxi_s.c b/tests/stxi_s.c index 7bc8fa2cc..64bda5d6c 100644 --- a/tests/stxi_s.c +++ b/tests/stxi_s.c @@ -6,10 +6,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R2), jit_operand_gpr (JIT_OPERAND_ABI_INT16, JIT_R1)); jit_stxi_s(j, (uintptr_t)data, JIT_R2, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(jit_word_t, int16_t) = jit_end(j, NULL); diff --git a/tests/stxr_c.c b/tests/stxr_c.c index c88d8cd6f..887685542 100644 --- a/tests/stxr_c.c +++ b/tests/stxr_c.c @@ -6,11 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { 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_gpr (JIT_OPERAND_ABI_INT8, JIT_R1)); jit_stxr_c(j, JIT_R0, JIT_R2, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, jit_word_t, int8_t) = jit_end(j, NULL); diff --git a/tests/stxr_d.c b/tests/stxr_d.c index f3fb9334d..e87688aa1 100644 --- a/tests/stxr_d.c +++ b/tests/stxr_d.c @@ -6,11 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { 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)); jit_stxr_d(j, JIT_R0, JIT_R2, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, jit_word_t, double) = jit_end(j, NULL); diff --git a/tests/stxr_f.c b/tests/stxr_f.c index 43aeaa9bd..bf0c47625 100644 --- a/tests/stxr_f.c +++ b/tests/stxr_f.c @@ -6,11 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { 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_FLOAT, JIT_F0)); jit_stxr_f(j, JIT_R0, JIT_R2, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, jit_word_t, float) = jit_end(j, NULL); diff --git a/tests/stxr_i.c b/tests/stxr_i.c index 376354fca..82604627b 100644 --- a/tests/stxr_i.c +++ b/tests/stxr_i.c @@ -6,11 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { 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_gpr (JIT_OPERAND_ABI_INT32, JIT_R1)); jit_stxr_i(j, JIT_R0, JIT_R2, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, jit_word_t, int32_t) = jit_end(j, NULL); diff --git a/tests/stxr_l.c b/tests/stxr_l.c index 43c08d5d9..fa6bb1fbb 100644 --- a/tests/stxr_l.c +++ b/tests/stxr_l.c @@ -7,11 +7,13 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 }; 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_gpr (JIT_OPERAND_ABI_INT64, JIT_R1)); jit_stxr_l(j, JIT_R0, JIT_R2, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, jit_word_t, int64_t) = jit_end(j, NULL); diff --git a/tests/stxr_s.c b/tests/stxr_s.c index 2cee20194..a93ccd9e9 100644 --- a/tests/stxr_s.c +++ b/tests/stxr_s.c @@ -6,11 +6,13 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { 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_gpr (JIT_OPERAND_ABI_INT16, JIT_R1)); jit_stxr_s(j, JIT_R0, JIT_R2, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_ret(j); void (*f)(void*, jit_word_t, int16_t) = jit_end(j, NULL); diff --git a/tests/subr.c b/tests/subr.c index 92b528fee..57cf950c7 100644 --- a/tests/subr.c +++ b/tests/subr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_subr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/subr_d.c b/tests/subr_d.c index 71259a8e3..bc611c52e 100644 --- a/tests/subr_d.c +++ b/tests/subr_d.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F1)); jit_subr_d(j, JIT_F0, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_d(j, JIT_F0); size_t size = 0; diff --git a/tests/subr_f.c b/tests/subr_f.c index 410dc265d..a7befecfa 100644 --- a/tests/subr_f.c +++ b/tests/subr_f.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0), jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F1)); jit_subr_f(j, JIT_F0, JIT_F0, JIT_F1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr_f(j, JIT_F0); size_t size = 0; diff --git a/tests/subx.c b/tests/subx.c index cd1bb5b9c..b88bcbdb1 100644 --- a/tests/subx.c +++ b/tests/subx.c @@ -4,12 +4,14 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_movi(j, JIT_R2, 0); jit_subcr(j, JIT_R0, JIT_R0, JIT_R1); jit_subxi(j, JIT_R2, JIT_R2, 0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R2); size_t size = 0; diff --git a/tests/truncr_d_i.c b/tests/truncr_d_i.c index 12aaa917d..b21280f77 100644 --- a/tests/truncr_d_i.c +++ b/tests/truncr_d_i.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_truncr_d_i(j, JIT_R0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); int (*f)(double) = jit_end(j, NULL); diff --git a/tests/truncr_d_l.c b/tests/truncr_d_l.c index 1f5dc995e..189617afb 100644 --- a/tests/truncr_d_l.c +++ b/tests/truncr_d_l.c @@ -5,9 +5,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_DOUBLE, JIT_F0)); jit_truncr_d_l(j, JIT_R0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); int64_t (*f)(double) = jit_end(j, NULL); diff --git a/tests/truncr_f_i.c b/tests/truncr_f_i.c index 077d7bec8..3dbf63050 100644 --- a/tests/truncr_f_i.c +++ b/tests/truncr_f_i.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_truncr_f_i(j, JIT_R0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); int (*f)(float) = jit_end(j, NULL); diff --git a/tests/truncr_f_l.c b/tests/truncr_f_l.c index c5a86f89b..7369ae3ad 100644 --- a/tests/truncr_f_l.c +++ b/tests/truncr_f_l.c @@ -5,9 +5,11 @@ run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { #if __WORDSIZE > 32 jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_fpr (JIT_OPERAND_ABI_FLOAT, JIT_F0)); jit_truncr_f_l(j, JIT_R0, JIT_F0); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); int64_t (*f)(float) = jit_end(j, NULL); diff --git a/tests/xori.c b/tests/xori.c index 1071a4cd9..4bb2ad1d8 100644 --- a/tests/xori.c +++ b/tests/xori.c @@ -4,9 +4,11 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0)); jit_xori(j, JIT_R0, JIT_R0, 1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; diff --git a/tests/xorr.c b/tests/xorr.c index a37a57004..dd5a3905c 100644 --- a/tests/xorr.c +++ b/tests/xorr.c @@ -4,10 +4,12 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_2(j, jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R0), jit_operand_gpr (JIT_OPERAND_ABI_WORD, JIT_R1)); jit_xorr(j, JIT_R0, JIT_R0, JIT_R1); + jit_leave_jit_abi(j, 0, 0, align); jit_retr(j, JIT_R0); size_t size = 0; From d8bdefbd2f5c5f7a8fa66aa6219dc0d06c3e899a Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sat, 27 Apr 2019 23:11:13 +0200 Subject: [PATCH 15/18] Add test for JIT callee with many args --- tests/callee_9.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tests/callee_9.c diff --git a/tests/callee_9.c b/tests/callee_9.c new file mode 100644 index 000000000..b7f1a466c --- /dev/null +++ b/tests/callee_9.c @@ -0,0 +1,68 @@ +#include "test.h" + +struct args +{ + int8_t a; + int16_t b; + int32_t c; + jit_word_t d; + uint16_t e; + float f; + double g; + float h; +}; + +static void +run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) +{ + jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 3, 0, 0); + + jit_operand_t args[9] = { + jit_operand_gpr(JIT_OPERAND_ABI_POINTER, JIT_R0), + jit_operand_gpr(JIT_OPERAND_ABI_INT8, JIT_R1), + jit_operand_gpr(JIT_OPERAND_ABI_INT16, JIT_R2), + jit_operand_gpr(JIT_OPERAND_ABI_INT32, JIT_V0), + jit_operand_gpr(JIT_OPERAND_ABI_WORD, JIT_V1), + jit_operand_gpr(JIT_OPERAND_ABI_UINT16, JIT_V2), + jit_operand_fpr(JIT_OPERAND_ABI_FLOAT, JIT_F0), + jit_operand_fpr(JIT_OPERAND_ABI_DOUBLE, JIT_F1), + jit_operand_fpr(JIT_OPERAND_ABI_FLOAT, JIT_F2), + }; + jit_load_args(j, 9, args); + jit_stxi_c(j, offsetof(struct args, a), JIT_R0, JIT_R1); // a + jit_stxi_s(j, offsetof(struct args, b), JIT_R0, JIT_R2); // b + jit_stxi_i(j, offsetof(struct args, c), JIT_R0, JIT_V0); // c + jit_stxi(j, offsetof(struct args, d), JIT_R0, JIT_V1); // d + jit_stxi_s(j, offsetof(struct args, e), JIT_R0, JIT_V2); // e + jit_stxi_f(j, offsetof(struct args, f), JIT_R0, JIT_F0); // f + jit_stxi_d(j, offsetof(struct args, g), JIT_R0, JIT_F1); // g + jit_stxi_f(j, offsetof(struct args, h), JIT_R0, JIT_F2); // h + + jit_leave_jit_abi(j, 3, 0, align); + jit_retr(j, JIT_R0); + + size_t size = 0; + void* ret = jit_end(j, &size); + + struct args* (*f)(struct args*, int8_t, int16_t, int32_t, jit_word_t, + uint16_t, float, double, float) = ret; + + struct args in = { 0, 1, 2, 3, 4, 5, 6, 7 }; + struct args out; + ASSERT(f(&out, in.a, in.b, in.c, in.d, in.e, in.f, in.g, in.h) == &out); + ASSERT(in.a == out.a); + ASSERT(in.b == out.b); + ASSERT(in.c == out.c); + ASSERT(in.d == out.d); + ASSERT(in.e == out.e); + ASSERT(in.f == out.f); + ASSERT(in.g == out.g); + ASSERT(in.h == out.h); +} + +int +main (int argc, char *argv[]) +{ + return main_helper(argc, argv, run_test); +} From 59ead16eab1f661110aed866acf0d44b0f10a7e0 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 28 Apr 2019 10:47:52 +0200 Subject: [PATCH 16/18] Mark test files as precious to prevent them from being deleted by make --- tests/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/Makefile b/tests/Makefile index 4ba054afd..7b6bbd49d 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -29,6 +29,9 @@ test-ia32-%: CC = $(CC_IA32) test-ia32-%: %.c lightening-ia32.o test.h $(CC) $(CFLAGS) $(CPPFLAGS) -I.. -o $@ lightening-ia32.o $< +.PRECIOUS: $(foreach TARGET,$(TARGETS),$(addprefix test-$(TARGET)-,$(TESTS))) +.PRECIOUS: $(foreach TARGET,$(TARGETS),lightening-$(TARGET).o) + clean: rm -f $(foreach TARGET,$(TARGETS),$(addprefix test-$(TARGET)-,$(TESTS))) rm -f $(foreach TARGET,$(TARGETS),lightening-$(TARGET).o) From eae25f464adc5e07c3ab4811fb11f446970ebc30 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 28 Apr 2019 10:48:44 +0200 Subject: [PATCH 17/18] Add x86-32 tests to default test target --- .gitlab-ci.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 384befa31..891112e87 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,19 @@ # use the official gcc image, based on debian # can use verions as well, like gcc:5.2 # see https://hub.docker.com/_/gcc/ -image: gcc +image: debian -test: +before_script: + - dpkg --add-architecture i386 + - apt-get update -qq + - apt-get install -y libc6-dev:amd64 libc6-dev:i386 gcc gcc-multilib make + +x86-64: stage: test script: - - make -C tests check + - make -C tests test-native + +i686: + stage: test + script: + - make -C tests test-ia32 From 04cd8874de9713e53e9e0cfe5c0195bd356ebe8e Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 28 Apr 2019 12:36:16 +0200 Subject: [PATCH 18/18] Stack alignment takes saved return address into account --- lightening/lightening.c | 16 ++++++---------- lightening/x86.c | 12 +++++++----- tests/jmpr.c | 2 ++ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lightening/lightening.c b/lightening/lightening.c index d18aa835f..842667267 100644 --- a/lightening/lightening.c +++ b/lightening/lightening.c @@ -68,12 +68,6 @@ struct jit_state # define UNLIKELY(exprn) exprn #endif -enum stack_state -{ - BEFORE_CALL, - AFTER_CALL -}; - static jit_bool_t jit_get_cpu(void); static jit_bool_t jit_init(jit_state_t *); static void jit_flush(void *fptr, void *tptr); @@ -83,8 +77,7 @@ static void jit_try_shorten(jit_state_t *_jit, jit_reloc_t reloc, struct abi_arg_iterator; static void reset_abi_arg_iterator(struct abi_arg_iterator *iter, size_t argc, - const jit_operand_t *args, - enum stack_state state); + const jit_operand_t *args); static void next_abi_arg(struct abi_arg_iterator *iter, jit_operand_t *arg); @@ -931,6 +924,9 @@ jit_enter_jit_abi(jit_state_t *_jit, size_t v, size_t vf, size_t frame_size) ASSERT(v <= v_count); ASSERT(vf <= vf_count); + ASSERT(_jit->frame_size == 0); + _jit->frame_size = jit_initial_frame_size(); + /* Save values of callee-save registers. */ for (size_t i = 0; i < v; i++) jit_pushr (_jit, V[i]); @@ -969,7 +965,7 @@ prepare_call_args(jit_state_t *_jit, size_t argc, jit_operand_t args[]) struct abi_arg_iterator iter; // Compute shuffle destinations and space for spilled arguments. - reset_abi_arg_iterator(&iter, argc, args, BEFORE_CALL); + reset_abi_arg_iterator(&iter, argc, args); for (size_t i = 0; i < argc; i++) next_abi_arg(&iter, &dst[i]); @@ -1022,7 +1018,7 @@ jit_locate_args(jit_state_t *_jit, size_t argc, jit_operand_t args[]) { struct abi_arg_iterator iter; - reset_abi_arg_iterator(&iter, argc, args, AFTER_CALL); + reset_abi_arg_iterator(&iter, argc, args); iter.stack_size += _jit->frame_size; for (size_t i = 0; i < argc; i++) next_abi_arg(&iter, &args[i]); diff --git a/lightening/x86.c b/lightening/x86.c index c14133c97..bf48c18df 100644 --- a/lightening/x86.c +++ b/lightening/x86.c @@ -315,17 +315,19 @@ round_size_up_to_words(size_t bytes) return words * word_size; } +static size_t +jit_initial_frame_size (void) +{ + return __WORDSIZE / 8; // Saved return address is on stack. +} + static void reset_abi_arg_iterator(struct abi_arg_iterator *iter, size_t argc, - const jit_operand_t *args, enum stack_state state) + const jit_operand_t *args) { memset(iter, 0, sizeof *iter); iter->argc = argc; iter->args = args; - if (state == AFTER_CALL) - iter->stack_size = __WORDSIZE / 8; // Saved return address. - else - ASSERT(state == BEFORE_CALL); } static void diff --git a/tests/jmpr.c b/tests/jmpr.c index e81a02759..884089702 100644 --- a/tests/jmpr.c +++ b/tests/jmpr.c @@ -6,7 +6,9 @@ static void run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size) { jit_begin(j, arena_base, arena_size); + size_t align = jit_enter_jit_abi(j, 0, 0, 0); jit_load_args_1(j, jit_operand_gpr (JIT_OPERAND_ABI_POINTER, JIT_R0)); + jit_leave_jit_abi(j, 0, 0, align); jit_jmpr(j, JIT_R0);