1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-22 19:44:10 +02:00

Replace jit_int32_t, etc with stdint types

This commit is contained in:
Andy Wingo 2018-10-30 13:48:57 +01:00
parent d567faf657
commit f3f71941ac
39 changed files with 6885 additions and 6885 deletions

View file

@ -60,7 +60,7 @@ main(int argc, char *argv[])
void (*code)(void); void (*code)(void);
jit_node_t *jmp, *pass; jit_node_t *jmp, *pass;
jit_node_t *jw, *jf, *jd; jit_node_t *jw, *jf, *jd;
jit_int32_t s1, s2, s3, s4, s5, s6, s7, s8, int32_t s1, s2, s3, s4, s5, s6, s7, s8,
s9, s10, s11, s12, s13, s14, s15, s16; s9, s10, s11, s12, s13, s14, s15, s16;
jit_node_t *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8, jit_node_t *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8,
*a9, *a10, *a11, *a12, *a13, *a14, *a15, *a16; *a9, *a10, *a11, *a12, *a13, *a14, *a15, *a16;

View file

@ -21,7 +21,7 @@
#define mmap_fd -1 #define mmap_fd -1
#endif #endif
jit_uint8_t *data; uint8_t *data;
jit_state_t *_jit; jit_state_t *_jit;
jit_word_t data_length; jit_word_t data_length;
jit_word_t note_length; jit_word_t note_length;

View file

@ -24,7 +24,7 @@
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
jit_uint8_t *ptr; uint8_t *ptr;
jit_state_t *_jit; jit_state_t *_jit;
jit_word_t length; jit_word_t length;
#if defined(__sgi) #if defined(__sgi)

File diff suppressed because it is too large Load diff

View file

@ -66,65 +66,65 @@
# define FDIVS(Rd,Rn,Rm) osvvv(A64_FDIV,0,Rd,Rn,Rm) # define FDIVS(Rd,Rn,Rm) osvvv(A64_FDIV,0,Rd,Rn,Rm)
# define FDIVD(Rd,Rn,Rm) osvvv(A64_FDIV,1,Rd,Rn,Rm) # define FDIVD(Rd,Rn,Rm) osvvv(A64_FDIV,1,Rd,Rn,Rm)
# define osvvv(Op,Sz,Rd,Rn,Rm) _osvvv(_jit,Op,Sz,Rd,Rn,Rm) # define osvvv(Op,Sz,Rd,Rn,Rm) _osvvv(_jit,Op,Sz,Rd,Rn,Rm)
static void _osvvv(jit_state_t*,jit_int32_t,jit_int32_t, static void _osvvv(jit_state_t*,int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define osvv_(Op,Sz,Rd,Rn) _osvv_(_jit,Op,Sz,Rd,Rn) # define osvv_(Op,Sz,Rd,Rn) _osvv_(_jit,Op,Sz,Rd,Rn)
static void _osvv_(jit_state_t*,jit_int32_t, static void _osvv_(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define os_vv(Op,Sz,Rn,Rm) _os_vv(_jit,Op,Sz,Rn,Rm) # define os_vv(Op,Sz,Rn,Rm) _os_vv(_jit,Op,Sz,Rn,Rm)
static void _os_vv(jit_state_t*,jit_int32_t, static void _os_vv(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define truncr_f_i(r0,r1) _truncr_f_i(_jit,r0,r1) # define truncr_f_i(r0,r1) _truncr_f_i(_jit,r0,r1)
static void _truncr_f_i(jit_state_t*,jit_int32_t,jit_int32_t); static void _truncr_f_i(jit_state_t*,int32_t,jit_int32_t);
# define truncr_f_l(r0,r1) FCVTSZ_XS(r0,r1) # define truncr_f_l(r0,r1) FCVTSZ_XS(r0,r1)
# define truncr_d_i(r0,r1) _truncr_d_i(_jit,r0,r1) # define truncr_d_i(r0,r1) _truncr_d_i(_jit,r0,r1)
static void _truncr_d_i(jit_state_t*,jit_int32_t,jit_int32_t); static void _truncr_d_i(jit_state_t*,int32_t,jit_int32_t);
# define truncr_d_l(r0,r1) FCVTSZ_XD(r0,r1) # define truncr_d_l(r0,r1) FCVTSZ_XD(r0,r1)
# define addr_f(r0,r1,r2) FADDS(r0,r1,r2) # define addr_f(r0,r1,r2) FADDS(r0,r1,r2)
# define addi_f(r0,r1,i0) _addi_f(_jit,r0,r1,i0) # define addi_f(r0,r1,i0) _addi_f(_jit,r0,r1,i0)
static void _addi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _addi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define subr_f(r0,r1,r2) FSUBS(r0,r1,r2) # define subr_f(r0,r1,r2) FSUBS(r0,r1,r2)
# define subi_f(r0,r1,i0) _subi_f(_jit,r0,r1,i0) # define subi_f(r0,r1,i0) _subi_f(_jit,r0,r1,i0)
static void _subi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _subi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define rsbr_f(r0, r1, r2) subr_f(r0, r2, r1) # define rsbr_f(r0, r1, r2) subr_f(r0, r2, r1)
# define rsbi_f(r0, r1, i0) _rsbi_f(_jit, r0, r1, i0) # define rsbi_f(r0, r1, i0) _rsbi_f(_jit, r0, r1, i0)
static void _rsbi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _rsbi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define mulr_f(r0,r1,r2) FMULS(r0,r1,r2) # define mulr_f(r0,r1,r2) FMULS(r0,r1,r2)
# define muli_f(r0,r1,i0) _muli_f(_jit,r0,r1,i0) # define muli_f(r0,r1,i0) _muli_f(_jit,r0,r1,i0)
static void _muli_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _muli_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define divr_f(r0,r1,r2) FDIVS(r0,r1,r2) # define divr_f(r0,r1,r2) FDIVS(r0,r1,r2)
# define divi_f(r0,r1,i0) _divi_f(_jit,r0,r1,i0) # define divi_f(r0,r1,i0) _divi_f(_jit,r0,r1,i0)
static void _divi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _divi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define absr_f(r0,r1) FABSS(r0,r1) # define absr_f(r0,r1) FABSS(r0,r1)
# define negr_f(r0,r1) FNEGS(r0,r1) # define negr_f(r0,r1) FNEGS(r0,r1)
# define sqrtr_f(r0,r1) FSQRTS(r0,r1) # define sqrtr_f(r0,r1) FSQRTS(r0,r1)
# define extr_f(r0,r1) SCVTFS(r0,r1) # define extr_f(r0,r1) SCVTFS(r0,r1)
# define ldr_f(r0,r1) _ldr_f(_jit,r0,r1) # define ldr_f(r0,r1) _ldr_f(_jit,r0,r1)
static void _ldr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _ldr_f(jit_state_t*,int32_t,jit_int32_t);
# define ldi_f(r0,i0) _ldi_f(_jit,r0,i0) # define ldi_f(r0,i0) _ldi_f(_jit,r0,i0)
static void _ldi_f(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_f(jit_state_t*,int32_t,jit_word_t);
# define ldxr_f(r0,r1,r2) _ldxr_f(_jit,r0,r1,r2) # define ldxr_f(r0,r1,r2) _ldxr_f(_jit,r0,r1,r2)
static void _ldxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0) # define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0)
static void _ldxi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_f(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
# define str_f(r0,r1) _str_f(_jit,r0,r1) # define str_f(r0,r1) _str_f(_jit,r0,r1)
static void _str_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _str_f(jit_state_t*,int32_t,jit_int32_t);
# define sti_f(i0,r0) _sti_f(_jit,i0,r0) # define sti_f(i0,r0) _sti_f(_jit,i0,r0)
static void _sti_f(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_f(jit_state_t*,jit_word_t,int32_t);
# define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2) # define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2)
static void _stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1) # define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1)
static void _stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define movr_f(r0,r1) _movr_f(_jit,r0,r1) # define movr_f(r0,r1) _movr_f(_jit,r0,r1)
static void _movr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _movr_f(jit_state_t*,int32_t,jit_int32_t);
# define movi_f(r0,i0) _movi_f(_jit,r0,i0) # define movi_f(r0,i0) _movi_f(_jit,r0,i0)
static void _movi_f(jit_state_t*,jit_int32_t,jit_float32_t); static void _movi_f(jit_state_t*,int32_t,jit_float32_t);
# define extr_d_f(r0,r1) FCVT_SD(r0,r1) # define extr_d_f(r0,r1) FCVT_SD(r0,r1)
# define fccr(cc,r0,r1,r2) _fccr(_jit,cc,r0,r1,r2) # define fccr(cc,r0,r1,r2) _fccr(_jit,cc,r0,r1,r2)
static void _fccr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); static void _fccr(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
# define fcci(cc,r0,r1,i0) _fcci(_jit,cc,r0,r1,i0) # define fcci(cc,r0,r1,i0) _fcci(_jit,cc,r0,r1,i0)
static void _fcci(jit_state_t*, static void _fcci(jit_state_t*,
jit_int32_t,jit_int32_t,jit_int32_t,jit_float32_t); int32_t,jit_int32_t,jit_int32_t,jit_float32_t);
# define ltr_f(r0,r1,r2) fccr(CC_MI,r0,r1,r2) # define ltr_f(r0,r1,r2) fccr(CC_MI,r0,r1,r2)
# define lti_f(r0,r1,i0) fcci(CC_MI,r0,r1,i0) # define lti_f(r0,r1,i0) fcci(CC_MI,r0,r1,i0)
# define ler_f(r0,r1,r2) fccr(CC_LS,r0,r1,r2) # define ler_f(r0,r1,r2) fccr(CC_LS,r0,r1,r2)
@ -142,27 +142,27 @@ static void _fcci(jit_state_t*,
# define unler_f(r0,r1,r2) fccr(CC_LE,r0,r1,r2) # define unler_f(r0,r1,r2) fccr(CC_LE,r0,r1,r2)
# define unlei_f(r0,r1,i0) fcci(CC_LE,r0,r1,i0) # define unlei_f(r0,r1,i0) fcci(CC_LE,r0,r1,i0)
# define uneqr_f(r0,r1,r2) _uneqr_f(_jit,r0,r1,r2) # define uneqr_f(r0,r1,r2) _uneqr_f(_jit,r0,r1,r2)
static void _uneqr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _uneqr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define uneqi_f(r0,r1,i0) _uneqi_f(_jit,r0,r1,i0) # define uneqi_f(r0,r1,i0) _uneqi_f(_jit,r0,r1,i0)
static void _uneqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _uneqi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define unger_f(r0,r1,r2) fccr(CC_PL,r0,r1,r2) # define unger_f(r0,r1,r2) fccr(CC_PL,r0,r1,r2)
# define ungei_f(r0,r1,i0) fcci(CC_PL,r0,r1,i0) # define ungei_f(r0,r1,i0) fcci(CC_PL,r0,r1,i0)
# define ungtr_f(r0,r1,r2) fccr(CC_HI,r0,r1,r2) # define ungtr_f(r0,r1,r2) fccr(CC_HI,r0,r1,r2)
# define ungti_f(r0,r1,i0) fcci(CC_HI,r0,r1,i0) # define ungti_f(r0,r1,i0) fcci(CC_HI,r0,r1,i0)
# define ltgtr_f(r0,r1,r2) _ltgtr_f(_jit,r0,r1,r2) # define ltgtr_f(r0,r1,r2) _ltgtr_f(_jit,r0,r1,r2)
static void _ltgtr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ltgtr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ltgti_f(r0,r1,i0) _ltgti_f(_jit,r0,r1,i0) # define ltgti_f(r0,r1,i0) _ltgti_f(_jit,r0,r1,i0)
static void _ltgti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _ltgti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define ordr_f(r0,r1,r2) fccr(CC_VC,r0,r1,r2) # define ordr_f(r0,r1,r2) fccr(CC_VC,r0,r1,r2)
# define ordi_f(r0,r1,i0) fcci(CC_VC,r0,r1,i0) # define ordi_f(r0,r1,i0) fcci(CC_VC,r0,r1,i0)
# define unordr_f(r0,r1,r2) fccr(CC_VS,r0,r1,r2) # define unordr_f(r0,r1,r2) fccr(CC_VS,r0,r1,r2)
# define unordi_f(r0,r1,i0) fcci(CC_VS,r0,r1,i0) # define unordi_f(r0,r1,i0) fcci(CC_VS,r0,r1,i0)
#define fbccr(cc,i0,r0,r1) _fbccr(_jit,cc,i0,r0,r1) #define fbccr(cc,i0,r0,r1) _fbccr(_jit,cc,i0,r0,r1)
static jit_word_t static jit_word_t
_fbccr(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t); _fbccr(jit_state_t*,int32_t,jit_word_t,jit_int32_t,jit_int32_t);
#define fbcci(cc,i0,r0,i1) _fbcci(_jit,cc,i0,r0,i1) #define fbcci(cc,i0,r0,i1) _fbcci(_jit,cc,i0,r0,i1)
static jit_word_t static jit_word_t
_fbcci(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_float32_t); _fbcci(jit_state_t*,int32_t,jit_word_t,jit_int32_t,jit_float32_t);
# define bltr_f(i0,r0,r1) fbccr(BCC_MI,i0,r0,r1) # define bltr_f(i0,r0,r1) fbccr(BCC_MI,i0,r0,r1)
# define blti_f(i0,r0,i1) fbcci(BCC_MI,i0,r0,i1) # define blti_f(i0,r0,i1) fbcci(BCC_MI,i0,r0,i1)
# define bler_f(i0,r0,r1) fbccr(BCC_LS,i0,r0,r1) # define bler_f(i0,r0,r1) fbccr(BCC_LS,i0,r0,r1)
@ -180,66 +180,66 @@ _fbcci(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_float32_t);
# define bunler_f(i0,r0,r1) fbccr(BCC_LE,i0,r0,r1) # define bunler_f(i0,r0,r1) fbccr(BCC_LE,i0,r0,r1)
# define bunlei_f(i0,r0,i1) fbcci(BCC_LE,i0,r0,i1) # define bunlei_f(i0,r0,i1) fbcci(BCC_LE,i0,r0,i1)
# define buneqr_f(i0,r0,r1) _buneqr_f(_jit,i0,r0,r1) # define buneqr_f(i0,r0,r1) _buneqr_f(_jit,i0,r0,r1)
static jit_word_t _buneqr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _buneqr_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define buneqi_f(i0,r0,i1) _buneqi_f(_jit,i0,r0,i1) # define buneqi_f(i0,r0,i1) _buneqi_f(_jit,i0,r0,i1)
static jit_word_t _buneqi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t); static jit_word_t _buneqi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define bunger_f(i0,r0,r1) fbccr(BCC_PL,i0,r0,r1) # define bunger_f(i0,r0,r1) fbccr(BCC_PL,i0,r0,r1)
# define bungei_f(i0,r0,i1) fbcci(BCC_PL,i0,r0,i1) # define bungei_f(i0,r0,i1) fbcci(BCC_PL,i0,r0,i1)
# define bungtr_f(i0,r0,r1) fbccr(BCC_HI,i0,r0,r1) # define bungtr_f(i0,r0,r1) fbccr(BCC_HI,i0,r0,r1)
# define bungti_f(i0,r0,i1) fbcci(BCC_HI,i0,r0,i1) # define bungti_f(i0,r0,i1) fbcci(BCC_HI,i0,r0,i1)
# define bltgtr_f(i0,r0,r1) _bltgtr_f(_jit,i0,r0,r1) # define bltgtr_f(i0,r0,r1) _bltgtr_f(_jit,i0,r0,r1)
static jit_word_t _bltgtr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bltgtr_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bltgti_f(i0,r0,i1) _bltgti_f(_jit,i0,r0,i1) # define bltgti_f(i0,r0,i1) _bltgti_f(_jit,i0,r0,i1)
static jit_word_t _bltgti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t); static jit_word_t _bltgti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define bordr_f(i0,r0,r1) fbccr(BCC_VC,i0,r0,r1) # define bordr_f(i0,r0,r1) fbccr(BCC_VC,i0,r0,r1)
# define bordi_f(i0,r0,i1) fbcci(BCC_VC,i0,r0,i1) # define bordi_f(i0,r0,i1) fbcci(BCC_VC,i0,r0,i1)
# define bunordr_f(i0,r0,r1) fbccr(BCC_VS,i0,r0,r1) # define bunordr_f(i0,r0,r1) fbccr(BCC_VS,i0,r0,r1)
# define bunordi_f(i0,r0,i1) fbcci(BCC_VS,i0,r0,i1) # define bunordi_f(i0,r0,i1) fbcci(BCC_VS,i0,r0,i1)
# define addr_d(r0,r1,r2) FADDD(r0,r1,r2) # define addr_d(r0,r1,r2) FADDD(r0,r1,r2)
# define addi_d(r0,r1,i0) _addi_d(_jit,r0,r1,i0) # define addi_d(r0,r1,i0) _addi_d(_jit,r0,r1,i0)
static void _addi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _addi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define subr_d(r0,r1,r2) FSUBD(r0,r1,r2) # define subr_d(r0,r1,r2) FSUBD(r0,r1,r2)
# define subi_d(r0,r1,i0) _subi_d(_jit,r0,r1,i0) # define subi_d(r0,r1,i0) _subi_d(_jit,r0,r1,i0)
static void _subi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _subi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define rsbr_d(r0, r1, r2) subr_d(r0, r2, r1) # define rsbr_d(r0, r1, r2) subr_d(r0, r2, r1)
# define rsbi_d(r0, r1, i0) _rsbi_d(_jit, r0, r1, i0) # define rsbi_d(r0, r1, i0) _rsbi_d(_jit, r0, r1, i0)
static void _rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _rsbi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define mulr_d(r0,r1,r2) FMULD(r0,r1,r2) # define mulr_d(r0,r1,r2) FMULD(r0,r1,r2)
# define muli_d(r0,r1,i0) _muli_d(_jit,r0,r1,i0) # define muli_d(r0,r1,i0) _muli_d(_jit,r0,r1,i0)
static void _muli_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _muli_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define divr_d(r0,r1,r2) FDIVD(r0,r1,r2) # define divr_d(r0,r1,r2) FDIVD(r0,r1,r2)
# define divi_d(r0,r1,i0) _divi_d(_jit,r0,r1,i0) # define divi_d(r0,r1,i0) _divi_d(_jit,r0,r1,i0)
static void _divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _divi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define absr_d(r0,r1) FABSD(r0,r1) # define absr_d(r0,r1) FABSD(r0,r1)
# define negr_d(r0,r1) FNEGD(r0,r1) # define negr_d(r0,r1) FNEGD(r0,r1)
# define sqrtr_d(r0,r1) FSQRTD(r0,r1) # define sqrtr_d(r0,r1) FSQRTD(r0,r1)
# define extr_d(r0,r1) SCVTFD(r0,r1) # define extr_d(r0,r1) SCVTFD(r0,r1)
# define ldr_d(r0,r1) _ldr_d(_jit,r0,r1) # define ldr_d(r0,r1) _ldr_d(_jit,r0,r1)
static void _ldr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _ldr_d(jit_state_t*,int32_t,jit_int32_t);
# define ldi_d(r0,i0) _ldi_d(_jit,r0,i0) # define ldi_d(r0,i0) _ldi_d(_jit,r0,i0)
static void _ldi_d(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_d(jit_state_t*,int32_t,jit_word_t);
# define ldxr_d(r0,r1,r2) _ldxr_d(_jit,r0,r1,r2) # define ldxr_d(r0,r1,r2) _ldxr_d(_jit,r0,r1,r2)
static void _ldxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0) # define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0)
static void _ldxi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_d(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
# define str_d(r0,r1) _str_d(_jit,r0,r1) # define str_d(r0,r1) _str_d(_jit,r0,r1)
static void _str_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _str_d(jit_state_t*,int32_t,jit_int32_t);
# define sti_d(i0,r0) _sti_d(_jit,i0,r0) # define sti_d(i0,r0) _sti_d(_jit,i0,r0)
static void _sti_d(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_d(jit_state_t*,jit_word_t,int32_t);
# define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2) # define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2)
static void _stxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1) # define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1)
static void _stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define movr_d(r0,r1) _movr_d(_jit,r0,r1) # define movr_d(r0,r1) _movr_d(_jit,r0,r1)
static void _movr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _movr_d(jit_state_t*,int32_t,jit_int32_t);
# define movi_d(r0,i0) _movi_d(_jit,r0,i0) # define movi_d(r0,i0) _movi_d(_jit,r0,i0)
static void _movi_d(jit_state_t*,jit_int32_t,jit_float64_t); static void _movi_d(jit_state_t*,int32_t,jit_float64_t);
# define extr_f_d(r0,r1) FCVT_DS(r0,r1) # define extr_f_d(r0,r1) FCVT_DS(r0,r1)
# define dccr(cc,r0,r1,r2) _dccr(_jit,cc,r0,r1,r2) # define dccr(cc,r0,r1,r2) _dccr(_jit,cc,r0,r1,r2)
static void _dccr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); static void _dccr(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
# define dcci(cc,r0,r1,i0) _dcci(_jit,cc,r0,r1,i0) # define dcci(cc,r0,r1,i0) _dcci(_jit,cc,r0,r1,i0)
static void _dcci(jit_state_t*, static void _dcci(jit_state_t*,
jit_int32_t,jit_int32_t,jit_int32_t,jit_float64_t); int32_t,jit_int32_t,jit_int32_t,jit_float64_t);
# define ltr_d(r0,r1,r2) dccr(CC_MI,r0,r1,r2) # define ltr_d(r0,r1,r2) dccr(CC_MI,r0,r1,r2)
# define lti_d(r0,r1,i0) dcci(CC_MI,r0,r1,i0) # define lti_d(r0,r1,i0) dcci(CC_MI,r0,r1,i0)
# define ler_d(r0,r1,r2) dccr(CC_LS,r0,r1,r2) # define ler_d(r0,r1,r2) dccr(CC_LS,r0,r1,r2)
@ -257,27 +257,27 @@ static void _dcci(jit_state_t*,
# define unler_d(r0,r1,r2) dccr(CC_LE,r0,r1,r2) # define unler_d(r0,r1,r2) dccr(CC_LE,r0,r1,r2)
# define unlei_d(r0,r1,i0) dcci(CC_LE,r0,r1,i0) # define unlei_d(r0,r1,i0) dcci(CC_LE,r0,r1,i0)
# define uneqr_d(r0,r1,r2) _uneqr_d(_jit,r0,r1,r2) # define uneqr_d(r0,r1,r2) _uneqr_d(_jit,r0,r1,r2)
static void _uneqr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _uneqr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define uneqi_d(r0,r1,i0) _uneqi_d(_jit,r0,r1,i0) # define uneqi_d(r0,r1,i0) _uneqi_d(_jit,r0,r1,i0)
static void _uneqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _uneqi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define unger_d(r0,r1,r2) dccr(CC_PL,r0,r1,r2) # define unger_d(r0,r1,r2) dccr(CC_PL,r0,r1,r2)
# define ungei_d(r0,r1,i0) dcci(CC_PL,r0,r1,i0) # define ungei_d(r0,r1,i0) dcci(CC_PL,r0,r1,i0)
# define ungtr_d(r0,r1,r2) dccr(CC_HI,r0,r1,r2) # define ungtr_d(r0,r1,r2) dccr(CC_HI,r0,r1,r2)
# define ungti_d(r0,r1,i0) dcci(CC_HI,r0,r1,i0) # define ungti_d(r0,r1,i0) dcci(CC_HI,r0,r1,i0)
# define ltgtr_d(r0,r1,r2) _ltgtr_d(_jit,r0,r1,r2) # define ltgtr_d(r0,r1,r2) _ltgtr_d(_jit,r0,r1,r2)
static void _ltgtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ltgtr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ltgti_d(r0,r1,i0) _ltgti_d(_jit,r0,r1,i0) # define ltgti_d(r0,r1,i0) _ltgti_d(_jit,r0,r1,i0)
static void _ltgti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _ltgti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define ordr_d(r0,r1,r2) dccr(CC_VC,r0,r1,r2) # define ordr_d(r0,r1,r2) dccr(CC_VC,r0,r1,r2)
# define ordi_d(r0,r1,i0) dcci(CC_VC,r0,r1,i0) # define ordi_d(r0,r1,i0) dcci(CC_VC,r0,r1,i0)
# define unordr_d(r0,r1,r2) dccr(CC_VS,r0,r1,r2) # define unordr_d(r0,r1,r2) dccr(CC_VS,r0,r1,r2)
# define unordi_d(r0,r1,i0) dcci(CC_VS,r0,r1,i0) # define unordi_d(r0,r1,i0) dcci(CC_VS,r0,r1,i0)
#define dbccr(cc,i0,r0,r1) _dbccr(_jit,cc,i0,r0,r1) #define dbccr(cc,i0,r0,r1) _dbccr(_jit,cc,i0,r0,r1)
static jit_word_t static jit_word_t
_dbccr(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t); _dbccr(jit_state_t*,int32_t,jit_word_t,jit_int32_t,jit_int32_t);
#define dbcci(cc,i0,r0,i1) _dbcci(_jit,cc,i0,r0,i1) #define dbcci(cc,i0,r0,i1) _dbcci(_jit,cc,i0,r0,i1)
static jit_word_t static jit_word_t
_dbcci(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_float64_t); _dbcci(jit_state_t*,int32_t,jit_word_t,jit_int32_t,jit_float64_t);
# define bltr_d(i0,r0,r1) dbccr(BCC_MI,i0,r0,r1) # define bltr_d(i0,r0,r1) dbccr(BCC_MI,i0,r0,r1)
# define blti_d(i0,r0,i1) dbcci(BCC_MI,i0,r0,i1) # define blti_d(i0,r0,i1) dbcci(BCC_MI,i0,r0,i1)
# define bler_d(i0,r0,r1) dbccr(BCC_LS,i0,r0,r1) # define bler_d(i0,r0,r1) dbccr(BCC_LS,i0,r0,r1)
@ -295,29 +295,29 @@ _dbcci(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_float64_t);
# define bunler_d(i0,r0,r1) dbccr(BCC_LE,i0,r0,r1) # define bunler_d(i0,r0,r1) dbccr(BCC_LE,i0,r0,r1)
# define bunlei_d(i0,r0,i1) dbcci(BCC_LE,i0,r0,i1) # define bunlei_d(i0,r0,i1) dbcci(BCC_LE,i0,r0,i1)
# define buneqr_d(i0,r0,r1) _buneqr_d(_jit,i0,r0,r1) # define buneqr_d(i0,r0,r1) _buneqr_d(_jit,i0,r0,r1)
static jit_word_t _buneqr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _buneqr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define buneqi_d(i0,r0,i1) _buneqi_d(_jit,i0,r0,i1) # define buneqi_d(i0,r0,i1) _buneqi_d(_jit,i0,r0,i1)
static jit_word_t _buneqi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t); static jit_word_t _buneqi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define bunger_d(i0,r0,r1) dbccr(BCC_PL,i0,r0,r1) # define bunger_d(i0,r0,r1) dbccr(BCC_PL,i0,r0,r1)
# define bungei_d(i0,r0,i1) dbcci(BCC_PL,i0,r0,i1) # define bungei_d(i0,r0,i1) dbcci(BCC_PL,i0,r0,i1)
# define bungtr_d(i0,r0,r1) dbccr(BCC_HI,i0,r0,r1) # define bungtr_d(i0,r0,r1) dbccr(BCC_HI,i0,r0,r1)
# define bungti_d(i0,r0,i1) dbcci(BCC_HI,i0,r0,i1) # define bungti_d(i0,r0,i1) dbcci(BCC_HI,i0,r0,i1)
# define bltgtr_d(i0,r0,r1) _bltgtr_d(_jit,i0,r0,r1) # define bltgtr_d(i0,r0,r1) _bltgtr_d(_jit,i0,r0,r1)
static jit_word_t _bltgtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bltgtr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bltgti_d(i0,r0,i1) _bltgti_d(_jit,i0,r0,i1) # define bltgti_d(i0,r0,i1) _bltgti_d(_jit,i0,r0,i1)
static jit_word_t _bltgti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t); static jit_word_t _bltgti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define bordr_d(i0,r0,r1) dbccr(BCC_VC,i0,r0,r1) # define bordr_d(i0,r0,r1) dbccr(BCC_VC,i0,r0,r1)
# define bordi_d(i0,r0,i1) dbcci(BCC_VC,i0,r0,i1) # define bordi_d(i0,r0,i1) dbcci(BCC_VC,i0,r0,i1)
# define bunordr_d(i0,r0,r1) dbccr(BCC_VS,i0,r0,r1) # define bunordr_d(i0,r0,r1) dbccr(BCC_VS,i0,r0,r1)
# define bunordi_d(i0,r0,i1) dbcci(BCC_VS,i0,r0,i1) # define bunordi_d(i0,r0,i1) dbcci(BCC_VS,i0,r0,i1)
# define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1) # define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1)
static void _vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _vaarg_d(jit_state_t*, int32_t, jit_int32_t);
#endif #endif
#if CODE #if CODE
static void static void
_osvvv(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Sz, _osvvv(jit_state_t *_jit, int32_t Op, jit_int32_t Sz,
jit_int32_t Rd, jit_int32_t Rn, jit_int32_t Rm) int32_t Rd, jit_int32_t Rn, jit_int32_t Rm)
{ {
instr_t i; instr_t i;
assert(!(Rd & ~0x1f)); assert(!(Rd & ~0x1f));
@ -334,8 +334,8 @@ _osvvv(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Sz,
} }
static void static void
_osvv_(jit_state_t *_jit, jit_int32_t Op, _osvv_(jit_state_t *_jit, int32_t Op,
jit_int32_t Sz, jit_int32_t Rd, jit_int32_t Rn) int32_t Sz, jit_int32_t Rd, jit_int32_t Rn)
{ {
instr_t i; instr_t i;
assert(!(Rd & ~0x1f)); assert(!(Rd & ~0x1f));
@ -350,8 +350,8 @@ _osvv_(jit_state_t *_jit, jit_int32_t Op,
} }
static void static void
_os_vv(jit_state_t *_jit, jit_int32_t Op, _os_vv(jit_state_t *_jit, int32_t Op,
jit_int32_t Sz, jit_int32_t Rn, jit_int32_t Rm) int32_t Sz, jit_int32_t Rn, jit_int32_t Rm)
{ {
instr_t i; instr_t i;
assert(!(Rn & ~0x1f)); assert(!(Rn & ~0x1f));
@ -368,9 +368,9 @@ _os_vv(jit_state_t *_jit, jit_int32_t Op,
#define fopi(name) \ #define fopi(name) \
static void \ static void \
_##name##i_f(jit_state_t *_jit, \ _##name##i_f(jit_state_t *_jit, \
jit_int32_t r0, jit_int32_t r1, jit_float32_t i0) \ int32_t r0, jit_int32_t r1, jit_float32_t i0) \
{ \ { \
jit_int32_t reg = jit_get_reg(jit_class_fpr); \ int32_t reg = jit_get_reg(jit_class_fpr); \
movi_f(rn(reg), i0); \ movi_f(rn(reg), i0); \
name##r_f(r0, r1, rn(reg)); \ name##r_f(r0, r1, rn(reg)); \
jit_unget_reg(reg); \ jit_unget_reg(reg); \
@ -378,9 +378,9 @@ _##name##i_f(jit_state_t *_jit, \
#define dopi(name) \ #define dopi(name) \
static void \ static void \
_##name##i_d(jit_state_t *_jit, \ _##name##i_d(jit_state_t *_jit, \
jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) \ int32_t r0, jit_int32_t r1, jit_float64_t i0) \
{ \ { \
jit_int32_t reg = jit_get_reg(jit_class_fpr); \ int32_t reg = jit_get_reg(jit_class_fpr); \
movi_d(rn(reg), i0); \ movi_d(rn(reg), i0); \
name##r_d(r0, r1, rn(reg)); \ name##r_d(r0, r1, rn(reg)); \
jit_unget_reg(reg); \ jit_unget_reg(reg); \
@ -388,10 +388,10 @@ _##name##i_d(jit_state_t *_jit, \
#define fbopi(name) \ #define fbopi(name) \
static jit_word_t \ static jit_word_t \
_b##name##i_f(jit_state_t *_jit, \ _b##name##i_f(jit_state_t *_jit, \
jit_word_t i0, jit_int32_t r0, jit_float32_t i1) \ jit_word_t i0, int32_t r0, jit_float32_t i1) \
{ \ { \
jit_word_t word; \ jit_word_t word; \
jit_int32_t reg = jit_get_reg(jit_class_fpr| \ int32_t reg = jit_get_reg(jit_class_fpr| \
jit_class_nospill); \ jit_class_nospill); \
movi_f(rn(reg), i1); \ movi_f(rn(reg), i1); \
word = b##name##r_f(i0, r0, rn(reg)); \ word = b##name##r_f(i0, r0, rn(reg)); \
@ -401,10 +401,10 @@ _b##name##i_f(jit_state_t *_jit, \
#define dbopi(name) \ #define dbopi(name) \
static jit_word_t \ static jit_word_t \
_b##name##i_d(jit_state_t *_jit, \ _b##name##i_d(jit_state_t *_jit, \
jit_word_t i0, jit_int32_t r0, jit_float64_t i1) \ jit_word_t i0, int32_t r0, jit_float64_t i1) \
{ \ { \
jit_word_t word; \ jit_word_t word; \
jit_int32_t reg = jit_get_reg(jit_class_fpr| \ int32_t reg = jit_get_reg(jit_class_fpr| \
jit_class_nospill); \ jit_class_nospill); \
movi_d(rn(reg), i1); \ movi_d(rn(reg), i1); \
word = b##name##r_d(i0, r0, rn(reg)); \ word = b##name##r_d(i0, r0, rn(reg)); \
@ -413,14 +413,14 @@ _b##name##i_d(jit_state_t *_jit, \
} }
static void static void
_truncr_f_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_f_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
FCVTSZ_WS(r0, r1); FCVTSZ_WS(r0, r1);
extr_i(r0, r0); extr_i(r0, r0);
} }
static void static void
_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_d_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
FCVTSZ_WD(r0, r1); FCVTSZ_WD(r0, r1);
extr_i(r0, r0); extr_i(r0, r0);
@ -433,9 +433,9 @@ fopi(mul)
fopi(div) fopi(div)
static void static void
_ldr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _ldr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldr_i(rn(reg), r1); ldr_i(rn(reg), r1);
FMOVSW(r0, rn(reg)); FMOVSW(r0, rn(reg));
@ -443,9 +443,9 @@ _ldr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldi_i(rn(reg), i0); ldi_i(rn(reg), i0);
FMOVSW(r0, rn(reg)); FMOVSW(r0, rn(reg));
@ -453,9 +453,9 @@ _ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ldxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldxr_i(rn(reg), r1, r2); ldxr_i(rn(reg), r1, r2);
FMOVSW(r0, rn(reg)); FMOVSW(r0, rn(reg));
@ -463,9 +463,9 @@ _ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldxi_i(rn(reg), r1, i0); ldxi_i(rn(reg), r1, i0);
FMOVSW(r0, rn(reg)); FMOVSW(r0, rn(reg));
@ -473,9 +473,9 @@ _ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_str_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _str_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
FMOVWS(rn(reg), r1); FMOVWS(rn(reg), r1);
str_i(r0, rn(reg)); str_i(r0, rn(reg));
@ -483,9 +483,9 @@ _str_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
FMOVWS(rn(reg), r0); FMOVWS(rn(reg), r0);
sti_i(i0, rn(reg)); sti_i(i0, rn(reg));
@ -493,9 +493,9 @@ _sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
FMOVWS(rn(reg), r2); FMOVWS(rn(reg), r2);
stxr_i(r0, r1, rn(reg)); stxr_i(r0, r1, rn(reg));
@ -503,9 +503,9 @@ _stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
FMOVWS(rn(reg), r1); FMOVWS(rn(reg), r1);
stxi_i(i0, r0, rn(reg)); stxi_i(i0, r0, rn(reg));
@ -513,20 +513,20 @@ _stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_movr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r0 != r1) if (r0 != r1)
FMOVS(r0, r1); FMOVS(r0, r1);
} }
static void static void
_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0) _movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t i0)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} u; } u;
jit_int32_t reg; int32_t reg;
u.f = i0; u.f = i0;
if (u.i == 0) if (u.i == 0)
FMOVSW(r0, WZR_REGNO); FMOVSW(r0, WZR_REGNO);
@ -540,18 +540,18 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
} }
static void static void
_fccr(jit_state_t *_jit, jit_int32_t cc, _fccr(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPES(r1, r2); FCMPES(r1, r2);
CSET(r0, cc); CSET(r0, cc);
} }
static void static void
_fcci(jit_state_t *_jit, jit_int32_t cc, _fcci(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_float32_t i0) int32_t r0, jit_int32_t r1, jit_float32_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
movi_f(rn(reg), i0); movi_f(rn(reg), i0);
fccr(cc, r0, r1, rn(reg)); fccr(cc, r0, r1, rn(reg));
@ -559,7 +559,7 @@ _fcci(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_uneqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _uneqr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t w; jit_word_t w;
FCMPES(r1, r2); FCMPES(r1, r2);
@ -572,7 +572,7 @@ _uneqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(uneq) fopi(uneq)
static void static void
_ltgtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ltgtr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t w; jit_word_t w;
FCMPES(r1, r2); FCMPES(r1, r2);
@ -585,8 +585,8 @@ _ltgtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(ltgt) fopi(ltgt)
static jit_word_t static jit_word_t
_fbccr(jit_state_t *_jit, jit_int32_t cc, _fbccr(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w, d; jit_word_t w, d;
FCMPES(r0, r1); FCMPES(r0, r1);
@ -597,11 +597,11 @@ _fbccr(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_fbcci(jit_state_t *_jit, jit_int32_t cc, _fbcci(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_float32_t i1) jit_word_t i0, int32_t r0, jit_float32_t i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill); reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi_f(rn(reg), i1); movi_f(rn(reg), i1);
w = fbccr(cc, i0, r0, rn(reg)); w = fbccr(cc, i0, r0, rn(reg));
@ -610,7 +610,7 @@ _fbcci(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_buneqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _buneqr_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t u, v, w; jit_word_t u, v, w;
FCMPES(r0, r1); FCMPES(r0, r1);
@ -627,7 +627,7 @@ _buneqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
fbopi(uneq) fbopi(uneq)
static jit_word_t static jit_word_t
_bltgtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bltgtr_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t u, v, w; jit_word_t u, v, w;
FCMPES(r0, r1); FCMPES(r0, r1);
@ -650,9 +650,9 @@ dopi(mul)
dopi(div) dopi(div)
static void static void
_ldr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _ldr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldr_l(rn(reg), r1); ldr_l(rn(reg), r1);
FMOVDX(r0, rn(reg)); FMOVDX(r0, rn(reg));
@ -660,9 +660,9 @@ _ldr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldi_l(rn(reg), i0); ldi_l(rn(reg), i0);
FMOVDX(r0, rn(reg)); FMOVDX(r0, rn(reg));
@ -670,9 +670,9 @@ _ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ldxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldxr_l(rn(reg), r1, r2); ldxr_l(rn(reg), r1, r2);
FMOVDX(r0, rn(reg)); FMOVDX(r0, rn(reg));
@ -680,9 +680,9 @@ _ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldxi_l(rn(reg), r1, i0); ldxi_l(rn(reg), r1, i0);
FMOVDX(r0, rn(reg)); FMOVDX(r0, rn(reg));
@ -690,9 +690,9 @@ _ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_str_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _str_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
FMOVXD(rn(reg), r1); FMOVXD(rn(reg), r1);
str_l(r0, rn(reg)); str_l(r0, rn(reg));
@ -700,9 +700,9 @@ _str_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
FMOVXD(rn(reg), r0); FMOVXD(rn(reg), r0);
sti_l(i0, rn(reg)); sti_l(i0, rn(reg));
@ -710,9 +710,9 @@ _sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
FMOVXD(rn(reg), r2); FMOVXD(rn(reg), r2);
stxr_l(r0, r1, rn(reg)); stxr_l(r0, r1, rn(reg));
@ -720,9 +720,9 @@ _stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
FMOVXD(rn(reg), r1); FMOVXD(rn(reg), r1);
stxi_l(i0, r0, rn(reg)); stxi_l(i0, r0, rn(reg));
@ -730,20 +730,20 @@ _stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r0 != r1) if (r0 != r1)
FMOVD(r0, r1); FMOVD(r0, r1);
} }
static void static void
_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0) _movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t i0)
{ {
union { union {
jit_int64_t l; int64_t l;
jit_float64_t d; jit_float64_t d;
} u; } u;
jit_int32_t reg; int32_t reg;
u.d = i0; u.d = i0;
if (u.l == 0) if (u.l == 0)
FMOVDX(r0, XZR_REGNO); FMOVDX(r0, XZR_REGNO);
@ -756,18 +756,18 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0)
} }
static void static void
_dccr(jit_state_t *_jit, jit_int32_t cc, _dccr(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPED(r1, r2); FCMPED(r1, r2);
CSET(r0, cc); CSET(r0, cc);
} }
static void static void
_dcci(jit_state_t *_jit, jit_int32_t cc, _dcci(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) int32_t r0, jit_int32_t r1, jit_float64_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
movi_d(rn(reg), i0); movi_d(rn(reg), i0);
dccr(cc, r0, r1, rn(reg)); dccr(cc, r0, r1, rn(reg));
@ -775,7 +775,7 @@ _dcci(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _uneqr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t w; jit_word_t w;
FCMPED(r1, r2); FCMPED(r1, r2);
@ -788,7 +788,7 @@ _uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(uneq) dopi(uneq)
static void static void
_ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ltgtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t w; jit_word_t w;
FCMPED(r1, r2); FCMPED(r1, r2);
@ -801,8 +801,8 @@ _ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(ltgt) dopi(ltgt)
static jit_word_t static jit_word_t
_dbccr(jit_state_t *_jit, jit_int32_t cc, _dbccr(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w, d; jit_word_t w, d;
FCMPED(r0, r1); FCMPED(r0, r1);
@ -813,11 +813,11 @@ _dbccr(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_dbcci(jit_state_t *_jit, jit_int32_t cc, _dbcci(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_float64_t i1) jit_word_t i0, int32_t r0, jit_float64_t i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill); reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi_d(rn(reg), i1); movi_d(rn(reg), i1);
w = dbccr(cc, i0, r0, rn(reg)); w = dbccr(cc, i0, r0, rn(reg));
@ -826,7 +826,7 @@ _dbcci(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_buneqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _buneqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t u, v, w; jit_word_t u, v, w;
FCMPED(r0, r1); FCMPED(r0, r1);
@ -843,7 +843,7 @@ _buneqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
dbopi(uneq) dbopi(uneq)
static jit_word_t static jit_word_t
_bltgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bltgtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t u, v, w; jit_word_t u, v, w;
FCMPED(r0, r1); FCMPED(r0, r1);
@ -860,11 +860,11 @@ _bltgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
dbopi(ltgt) dbopi(ltgt)
static void static void
_vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _vaarg_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_word_t ge_code; jit_word_t ge_code;
jit_word_t lt_code; jit_word_t lt_code;
jit_int32_t rg0, rg1; int32_t rg0, rg1;
assert(_jitc->function->self.call & jit_call_varargs); assert(_jitc->function->self.call & jit_call_varargs);

View file

@ -31,17 +31,17 @@ typedef struct jit_va_list {
jit_pointer_t stack; jit_pointer_t stack;
jit_pointer_t gptop; jit_pointer_t gptop;
jit_pointer_t fptop; jit_pointer_t fptop;
jit_int32_t gpoff; int32_t gpoff;
jit_int32_t fpoff; int32_t fpoff;
jit_int64_t x0; int64_t x0;
jit_int64_t x1; int64_t x1;
jit_int64_t x2; int64_t x2;
jit_int64_t x3; int64_t x3;
jit_int64_t x4; int64_t x4;
jit_int64_t x5; int64_t x5;
jit_int64_t x6; int64_t x6;
jit_int64_t x7; int64_t x7;
jit_qreg_t q0; jit_qreg_t q0;
jit_qreg_t q1; jit_qreg_t q1;
@ -155,7 +155,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -175,7 +175,7 @@ _jit_prolog(jit_state_t *_jit)
_jitc->function->self.aoff = 0; _jitc->function->self.aoff = 0;
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -194,8 +194,8 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
assert(_jitc->function); assert(_jitc->function);
switch (length) { switch (length) {
@ -213,13 +213,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t r0, r1; int32_t r0, r1;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
r0 = jit_get_reg(jit_class_gpr); r0 = jit_get_reg(jit_class_gpr);
@ -258,7 +258,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
if (JIT_RET != u) if (JIT_RET != u)
@ -278,7 +278,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
if (u != JIT_FRET) if (u != JIT_FRET)
@ -299,7 +299,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
if (u != JIT_FRET) if (u != JIT_FRET)
@ -372,7 +372,7 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
jit_pushargr(u); jit_pushargr(u);
@ -383,7 +383,7 @@ jit_node_t *
_jit_arg(jit_state_t *_jit) _jit_arg(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
assert(!(_jitc->function->self.call & jit_call_varargs)); assert(!(_jitc->function->self.call & jit_call_varargs));
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
@ -402,7 +402,7 @@ jit_node_t *
_jit_arg_f(jit_state_t *_jit) _jit_arg_f(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
assert(!(_jitc->function->self.call & jit_call_varargs)); assert(!(_jitc->function->self.call & jit_call_varargs));
if (jit_arg_f_reg_p(_jitc->function->self.argf)) if (jit_arg_f_reg_p(_jitc->function->self.argf))
@ -421,7 +421,7 @@ jit_node_t *
_jit_arg_d(jit_state_t *_jit) _jit_arg_d(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
assert(!(_jitc->function->self.call & jit_call_varargs)); assert(!(_jitc->function->self.call & jit_call_varargs));
if (jit_arg_f_reg_p(_jitc->function->self.argf)) if (jit_arg_f_reg_p(_jitc->function->self.argf))
@ -437,7 +437,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -449,7 +449,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -461,7 +461,7 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -473,7 +473,7 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -485,7 +485,7 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -497,7 +497,7 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_ui(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_ui, u, v); jit_inc_synth_wp(getarg_ui, u, v);
@ -509,7 +509,7 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_l(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_l, u, v); jit_inc_synth_wp(getarg_l, u, v);
@ -521,7 +521,7 @@ _jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
@ -535,7 +535,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -550,7 +550,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(getarg_f, u, v); jit_inc_synth_wp(getarg_f, u, v);
@ -562,7 +562,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -576,7 +576,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
if (jit_arg_f_reg_p(v->u.w)) if (jit_arg_f_reg_p(v->u.w))
@ -591,7 +591,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(getarg_d, u, v); jit_inc_synth_wp(getarg_d, u, v);
@ -603,7 +603,7 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
@ -617,7 +617,7 @@ _jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -632,7 +632,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
@ -651,7 +651,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi(jit_state_t *_jit, jit_word_t u) _jit_pushargi(jit_state_t *_jit, jit_word_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargi, u); jit_inc_synth_w(pushargi, u);
jit_link_prepare(); jit_link_prepare();
@ -670,7 +670,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_f, u); jit_inc_synth_w(pushargr_f, u);
@ -689,7 +689,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_f(pushargi_f, u); jit_inc_synth_f(pushargi_f, u);
jit_link_prepare(); jit_link_prepare();
@ -708,7 +708,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_d, u); jit_inc_synth_w(pushargr_d, u);
@ -727,7 +727,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_d(pushargi_d, u); jit_inc_synth_d(pushargi_d, u);
jit_link_prepare(); jit_link_prepare();
@ -746,9 +746,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
jit_int32_t spec; int32_t spec;
spec = jit_class(_rvs[regno].spec); spec = jit_class(_rvs[regno].spec);
if (spec & jit_class_arg) { if (spec & jit_class_arg) {
regno = JIT_RA0 - regno; regno = JIT_RA0 - regno;
@ -765,7 +765,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_node_t *node; jit_node_t *node;
assert(_jitc->function); assert(_jitc->function);
@ -800,7 +800,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_c, r0); jit_inc_synth_w(retval_c, r0);
jit_extr_c(r0, JIT_RET); jit_extr_c(r0, JIT_RET);
@ -808,7 +808,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_uc, r0); jit_inc_synth_w(retval_uc, r0);
jit_extr_uc(r0, JIT_RET); jit_extr_uc(r0, JIT_RET);
@ -816,7 +816,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_s, r0); jit_inc_synth_w(retval_s, r0);
jit_extr_s(r0, JIT_RET); jit_extr_s(r0, JIT_RET);
@ -824,7 +824,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_us, r0); jit_inc_synth_w(retval_us, r0);
jit_extr_us(r0, JIT_RET); jit_extr_us(r0, JIT_RET);
@ -832,7 +832,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
jit_extr_i(r0, JIT_RET); jit_extr_i(r0, JIT_RET);
@ -840,7 +840,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_ui(jit_state_t *_jit, jit_int32_t r0) _jit_retval_ui(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_ui, r0); jit_inc_synth_w(retval_ui, r0);
jit_extr_ui(r0, JIT_RET); jit_extr_ui(r0, JIT_RET);
@ -848,7 +848,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_l(jit_state_t *_jit, jit_int32_t r0) _jit_retval_l(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_l, r0); jit_inc_synth_w(retval_l, r0);
if (r0 != JIT_RET) if (r0 != JIT_RET)
@ -857,7 +857,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_f, r0); jit_inc_synth_w(retval_f, r0);
if (r0 != JIT_FRET) if (r0 != JIT_FRET)
@ -866,7 +866,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_d, r0); jit_inc_synth_w(retval_d, r0);
if (r0 != JIT_FRET) if (r0 != JIT_FRET)
@ -881,16 +881,16 @@ _emit_code(jit_state_t *_jit)
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_word_t value; jit_word_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_uint8_t *data; uint8_t *data;
jit_word_t word; jit_word_t word;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
#endif #endif
jit_int32_t const_offset; int32_t const_offset;
jit_int32_t patch_offset; int32_t patch_offset;
} undo; } undo;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
@ -1536,25 +1536,25 @@ jit_flush(void *fptr, void *tptr)
} }
void void
_emit_ldxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
ldxi(rn(r0), rn(r1), i0); ldxi(rn(r0), rn(r1), i0);
} }
void void
_emit_stxi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
stxi(i0, rn(r0), rn(r1)); stxi(i0, rn(r0), rn(r1));
} }
void void
_emit_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
ldxi_d(rn(r0), rn(r1), i0); ldxi_d(rn(r0), rn(r1), i0);
} }
void void
_emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
stxi_d(i0, rn(r0), rn(r1)); stxi_d(i0, rn(r0), rn(r1));
} }
@ -1562,7 +1562,7 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) if (node->code == jit_code_movi)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -25,9 +25,9 @@
# define I_DISP 0 # define I_DISP 0
# define F_DISP 0 # define F_DISP 0
#else #else
# define C_DISP 8 - sizeof(jit_int8_t) # define C_DISP 8 - sizeof(int8_t)
# define S_DISP 8 - sizeof(jit_int16_t) # define S_DISP 8 - sizeof(int16_t)
# define I_DISP 8 - sizeof(jit_int32_t) # define I_DISP 8 - sizeof(int32_t)
# define F_DISP 8 - sizeof(jit_float32_t) # define F_DISP 8 - sizeof(jit_float32_t)
#endif #endif
@ -155,7 +155,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -175,7 +175,7 @@ _jit_prolog(jit_state_t *_jit)
_jitc->function->self.aoff = -8; _jitc->function->self.aoff = -8;
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -194,8 +194,8 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
switch (length) { switch (length) {
@ -213,13 +213,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -246,7 +246,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
if (JIT_RET != u) if (JIT_RET != u)
@ -266,7 +266,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
if (u != JIT_FRET) if (u != JIT_FRET)
@ -287,7 +287,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
if (u != JIT_FRET) if (u != JIT_FRET)
@ -347,9 +347,9 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_int32_t reg; int32_t reg;
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
jit_ldxi(reg, u, offsetof(jit_va_list_t, base)); jit_ldxi(reg, u, offsetof(jit_va_list_t, base));
@ -364,7 +364,7 @@ jit_node_t *
_jit_arg(jit_state_t *_jit) _jit_arg(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -382,7 +382,7 @@ jit_node_t *
_jit_arg_f(jit_state_t *_jit) _jit_arg_f(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
if (jit_arg_f_reg_p(_jitc->function->self.argi)) if (jit_arg_f_reg_p(_jitc->function->self.argi))
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -400,7 +400,7 @@ jit_node_t *
_jit_arg_d(jit_state_t *_jit) _jit_arg_d(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
if (jit_arg_f_reg_p(_jitc->function->self.argi)) if (jit_arg_f_reg_p(_jitc->function->self.argi))
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -415,7 +415,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -427,7 +427,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -439,7 +439,7 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -451,7 +451,7 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -463,7 +463,7 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -475,7 +475,7 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_ui(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_ui, u, v); jit_inc_synth_wp(getarg_ui, u, v);
@ -487,7 +487,7 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_l(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_l, u, v); jit_inc_synth_wp(getarg_l, u, v);
@ -499,7 +499,7 @@ _jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
@ -513,7 +513,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -528,7 +528,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(getarg_f, u, v); jit_inc_synth_wp(getarg_f, u, v);
@ -540,7 +540,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -554,7 +554,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
if (jit_arg_f_reg_p(v->u.w)) if (jit_arg_f_reg_p(v->u.w))
@ -569,7 +569,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(getarg_d, u, v); jit_inc_synth_wp(getarg_d, u, v);
@ -581,7 +581,7 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
@ -595,7 +595,7 @@ _jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
if (jit_arg_f_reg_p(v->u.w)) if (jit_arg_f_reg_p(v->u.w))
@ -610,7 +610,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
@ -627,9 +627,9 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
} }
void void
_jit_pushargi(jit_state_t *_jit, jit_int64_t u) _jit_pushargi(jit_state_t *_jit, int64_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
jit_inc_synth_w(pushargi, u); jit_inc_synth_w(pushargi, u);
jit_link_prepare(); jit_link_prepare();
@ -648,7 +648,7 @@ _jit_pushargi(jit_state_t *_jit, jit_int64_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
jit_inc_synth_w(pushargr_f, u); jit_inc_synth_w(pushargr_f, u);
@ -667,7 +667,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
jit_inc_synth_f(pushargi_f, u); jit_inc_synth_f(pushargi_f, u);
jit_link_prepare(); jit_link_prepare();
@ -686,7 +686,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
jit_inc_synth_w(pushargr_d, u); jit_inc_synth_w(pushargr_d, u);
@ -705,7 +705,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
jit_inc_synth_d(pushargi_d, u); jit_inc_synth_d(pushargi_d, u);
jit_link_prepare(); jit_link_prepare();
@ -724,9 +724,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
jit_int32_t spec; int32_t spec;
spec = jit_class(_rvs[regno].spec); spec = jit_class(_rvs[regno].spec);
if (spec & jit_class_arg) { if (spec & jit_class_arg) {
@ -746,7 +746,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_node_t *call; jit_node_t *call;
assert(_jitc->function != NULL); assert(_jitc->function != NULL);
@ -777,7 +777,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_c, r0); jit_inc_synth_w(retval_c, r0);
jit_extr_c(r0, JIT_RET); jit_extr_c(r0, JIT_RET);
@ -785,7 +785,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_uc, r0); jit_inc_synth_w(retval_uc, r0);
jit_extr_uc(r0, JIT_RET); jit_extr_uc(r0, JIT_RET);
@ -793,7 +793,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_s, r0); jit_inc_synth_w(retval_s, r0);
jit_extr_s(r0, JIT_RET); jit_extr_s(r0, JIT_RET);
@ -801,7 +801,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_us, r0); jit_inc_synth_w(retval_us, r0);
jit_extr_us(r0, JIT_RET); jit_extr_us(r0, JIT_RET);
@ -809,7 +809,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
jit_extr_i(r0, JIT_RET); jit_extr_i(r0, JIT_RET);
@ -817,7 +817,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_ui(jit_state_t *_jit, jit_int32_t r0) _jit_retval_ui(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_ui, r0); jit_inc_synth_w(retval_ui, r0);
jit_extr_ui(r0, JIT_RET); jit_extr_ui(r0, JIT_RET);
@ -825,7 +825,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_l(jit_state_t *_jit, jit_int32_t r0) _jit_retval_l(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_l, r0); jit_inc_synth_w(retval_l, r0);
if (r0 != JIT_RET) if (r0 != JIT_RET)
@ -834,7 +834,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_f, r0); jit_inc_synth_w(retval_f, r0);
if (r0 != JIT_FRET) if (r0 != JIT_FRET)
@ -843,7 +843,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_d, r0); jit_inc_synth_w(retval_d, r0);
if (r0 != JIT_FRET) if (r0 != JIT_FRET)
@ -858,16 +858,16 @@ _emit_code(jit_state_t *_jit)
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_word_t value; jit_word_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_uint8_t *data; uint8_t *data;
jit_word_t word; jit_word_t word;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
#endif #endif
jit_int32_t const_offset; int32_t const_offset;
jit_int32_t patch_offset; int32_t patch_offset;
} undo; } undo;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
@ -1505,25 +1505,25 @@ jit_flush(void *fptr, void *tptr)
} }
void void
_emit_ldxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
ldxi(rn(r0), rn(r1), i0); ldxi(rn(r0), rn(r1), i0);
} }
void void
_emit_stxi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
stxi(i0, rn(r0), rn(r1)); stxi(i0, rn(r0), rn(r1));
} }
void void
_emit_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
ldxi_d(rn(r0), rn(r1), i0); ldxi_d(rn(r0), rn(r1), i0);
} }
void void
_emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
stxi_d(i0, rn(r0), rn(r1)); stxi_d(i0, rn(r0), rn(r1));
} }
@ -1531,7 +1531,7 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) if (node->code == jit_code_movi)

File diff suppressed because it is too large Load diff

View file

@ -50,98 +50,98 @@ extern int __aeabi_fcmpun(float, float);
extern int __aeabi_dcmpun(double, double); extern int __aeabi_dcmpun(double, double);
# define swf_ff(i0,r0,r1) _swf_ff(_jit,i0,r0,r1) # define swf_ff(i0,r0,r1) _swf_ff(_jit,i0,r0,r1)
static void static void
_swf_ff(jit_state_t*,float(*)(float),jit_int32_t,jit_int32_t) maybe_unused; _swf_ff(jit_state_t*,float(*)(float),int32_t,jit_int32_t) maybe_unused;
# define swf_dd(i0,r0,r1) _swf_dd(_jit,i0,r0,r1) # define swf_dd(i0,r0,r1) _swf_dd(_jit,i0,r0,r1)
static void static void
_swf_dd(jit_state_t*,double(*)(double),jit_int32_t,jit_int32_t) maybe_unused; _swf_dd(jit_state_t*,double(*)(double),int32_t,jit_int32_t) maybe_unused;
# define swf_fff(i0,r0,r1,r2) _swf_fff(_jit,i0,r0,r1,r2) # define swf_fff(i0,r0,r1,r2) _swf_fff(_jit,i0,r0,r1,r2)
static void _swf_fff(jit_state_t*,float(*)(float,float), static void _swf_fff(jit_state_t*,float(*)(float,float),
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define swf_ddd(i0,r0,r1,r2) _swf_ddd(_jit,i0,r0,r1,r2) # define swf_ddd(i0,r0,r1,r2) _swf_ddd(_jit,i0,r0,r1,r2)
static void _swf_ddd(jit_state_t*,double(*)(double,double), static void _swf_ddd(jit_state_t*,double(*)(double,double),
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define swf_fff_(i0,r0,r1,i1) _swf_fff_(_jit,i0,r0,r1,i1) # define swf_fff_(i0,r0,r1,i1) _swf_fff_(_jit,i0,r0,r1,i1)
static void _swf_fff_(jit_state_t*,float(*)(float,float), static void _swf_fff_(jit_state_t*,float(*)(float,float),
jit_int32_t,jit_int32_t,jit_float32_t); int32_t,jit_int32_t,jit_float32_t);
# define swf_ddd_(i0,r0,r1,i1) _swf_ddd_(_jit,i0,r0,r1,i1) # define swf_ddd_(i0,r0,r1,i1) _swf_ddd_(_jit,i0,r0,r1,i1)
static void _swf_ddd_(jit_state_t*,double(*)(double,double), static void _swf_ddd_(jit_state_t*,double(*)(double,double),
jit_int32_t,jit_int32_t,jit_float64_t); int32_t,jit_int32_t,jit_float64_t);
# define swf_iff(i0,r0,r1,r2) _swf_iff(_jit,i0,r0,r1,r2) # define swf_iff(i0,r0,r1,r2) _swf_iff(_jit,i0,r0,r1,r2)
static void _swf_iff(jit_state_t*,int(*)(float,float), static void _swf_iff(jit_state_t*,int(*)(float,float),
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define swf_idd(i0,r0,r1,r2) _swf_idd(_jit,i0,r0,r1,r2) # define swf_idd(i0,r0,r1,r2) _swf_idd(_jit,i0,r0,r1,r2)
static void _swf_idd(jit_state_t*,int(*)(double,double), static void _swf_idd(jit_state_t*,int(*)(double,double),
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define swf_iff_(i0,r0,r1,r2) _swf_iff_(_jit,i0,r0,r1,r2) # define swf_iff_(i0,r0,r1,r2) _swf_iff_(_jit,i0,r0,r1,r2)
static void _swf_iff_(jit_state_t*,int(*)(float,float), static void _swf_iff_(jit_state_t*,int(*)(float,float),
jit_int32_t,jit_int32_t,jit_float32_t); int32_t,jit_int32_t,jit_float32_t);
# define swf_idd_(i0,r0,r1,r2) _swf_idd_(_jit,i0,r0,r1,r2) # define swf_idd_(i0,r0,r1,r2) _swf_idd_(_jit,i0,r0,r1,r2)
static void _swf_idd_(jit_state_t*,int(*)(double,double), static void _swf_idd_(jit_state_t*,int(*)(double,double),
jit_int32_t,jit_int32_t,jit_float64_t); int32_t,jit_int32_t,jit_float64_t);
# define swf_iunff(i0,r0,r1,r2) _swf_iunff(_jit,i0,r0,r1,r2) # define swf_iunff(i0,r0,r1,r2) _swf_iunff(_jit,i0,r0,r1,r2)
static void _swf_iunff(jit_state_t*,int(*)(float,float), static void _swf_iunff(jit_state_t*,int(*)(float,float),
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define swf_iundd(i0,r0,r1,r2) _swf_iundd(_jit,i0,r0,r1,r2) # define swf_iundd(i0,r0,r1,r2) _swf_iundd(_jit,i0,r0,r1,r2)
static void _swf_iundd(jit_state_t*,int(*)(double,double), static void _swf_iundd(jit_state_t*,int(*)(double,double),
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define swf_iunff_(i0,r0,r1,i1) _swf_iunff_(_jit,i0,r0,r1,i1) # define swf_iunff_(i0,r0,r1,i1) _swf_iunff_(_jit,i0,r0,r1,i1)
static void _swf_iunff_(jit_state_t*,int(*)(float,float), static void _swf_iunff_(jit_state_t*,int(*)(float,float),
jit_int32_t,jit_int32_t,jit_float32_t); int32_t,jit_int32_t,jit_float32_t);
# define swf_iundd_(i0,r0,r1,i1) _swf_iundd_(_jit,i0,r0,r1,i1) # define swf_iundd_(i0,r0,r1,i1) _swf_iundd_(_jit,i0,r0,r1,i1)
static void _swf_iundd_(jit_state_t*,int(*)(double,double), static void _swf_iundd_(jit_state_t*,int(*)(double,double),
jit_int32_t,jit_int32_t,jit_float64_t); int32_t,jit_int32_t,jit_float64_t);
# define swf_bff(i0,cc,i1,r0,r1) _swf_bff(_jit,i0,cc,i1,r0,r1) # define swf_bff(i0,cc,i1,r0,r1) _swf_bff(_jit,i0,cc,i1,r0,r1)
static jit_word_t _swf_bff(jit_state_t*,int(*)(float,float),int, static jit_word_t _swf_bff(jit_state_t*,int(*)(float,float),int,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define swf_bdd(i0,cc,i1,r0,r1) _swf_bdd(_jit,i0,cc,i1,r0,r1) # define swf_bdd(i0,cc,i1,r0,r1) _swf_bdd(_jit,i0,cc,i1,r0,r1)
static jit_word_t _swf_bdd(jit_state_t*,int(*)(double,double),int, static jit_word_t _swf_bdd(jit_state_t*,int(*)(double,double),int,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define swf_bff_(i0,cc,i1,r0,i2) _swf_bff_(_jit,i0,cc,i1,r0,i2) # define swf_bff_(i0,cc,i1,r0,i2) _swf_bff_(_jit,i0,cc,i1,r0,i2)
static jit_word_t _swf_bff_(jit_state_t*,int(*)(float,float),int, static jit_word_t _swf_bff_(jit_state_t*,int(*)(float,float),int,
jit_word_t,jit_int32_t,jit_float32_t); jit_word_t,int32_t,jit_float32_t);
# define swf_bdd_(i0,cc,i1,r0,i2) _swf_bdd_(_jit,i0,cc,i1,r0,i2) # define swf_bdd_(i0,cc,i1,r0,i2) _swf_bdd_(_jit,i0,cc,i1,r0,i2)
static jit_word_t _swf_bdd_(jit_state_t*,int(*)(double,double),int, static jit_word_t _swf_bdd_(jit_state_t*,int(*)(double,double),int,
jit_word_t,jit_int32_t,jit_float64_t); jit_word_t,int32_t,jit_float64_t);
# define swf_bunff(eq,i0,r0,r1) _swf_bunff(_jit,eq,i0,r0,r1) # define swf_bunff(eq,i0,r0,r1) _swf_bunff(_jit,eq,i0,r0,r1)
static jit_word_t _swf_bunff(jit_state_t*,int, static jit_word_t _swf_bunff(jit_state_t*,int,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define swf_bundd(eq,i0,r0,r1) _swf_bundd(_jit,eq,i0,r0,r1) # define swf_bundd(eq,i0,r0,r1) _swf_bundd(_jit,eq,i0,r0,r1)
static jit_word_t _swf_bundd(jit_state_t*,int, static jit_word_t _swf_bundd(jit_state_t*,int,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define swf_bunff_(eq,i0,r0,i1) _swf_bunff_(_jit,eq,i0,r0,i1) # define swf_bunff_(eq,i0,r0,i1) _swf_bunff_(_jit,eq,i0,r0,i1)
static jit_word_t _swf_bunff_(jit_state_t*,int, static jit_word_t _swf_bunff_(jit_state_t*,int,
jit_word_t,jit_int32_t,jit_float32_t); jit_word_t,int32_t,jit_float32_t);
# define swf_bundd_(eq,i0,r0,i1) _swf_bundd_(_jit,eq,i0,r0,i1) # define swf_bundd_(eq,i0,r0,i1) _swf_bundd_(_jit,eq,i0,r0,i1)
static jit_word_t _swf_bundd_(jit_state_t*,int, static jit_word_t _swf_bundd_(jit_state_t*,int,
jit_word_t,jit_int32_t,jit_float64_t); jit_word_t,int32_t,jit_float64_t);
# define swf_extr_f(r0,r1) _swf_extr_f(_jit,r0,r1) # define swf_extr_f(r0,r1) _swf_extr_f(_jit,r0,r1)
static void _swf_extr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_extr_f(jit_state_t*,int32_t,jit_int32_t);
# define swf_extr_d(r0,r1) _swf_extr_d(_jit,r0,r1) # define swf_extr_d(r0,r1) _swf_extr_d(_jit,r0,r1)
static void _swf_extr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_extr_d(jit_state_t*,int32_t,jit_int32_t);
# define swf_extr_d_f(r0,r1) _swf_extr_d_f(_jit,r0,r1) # define swf_extr_d_f(r0,r1) _swf_extr_d_f(_jit,r0,r1)
static void _swf_extr_d_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_extr_d_f(jit_state_t*,int32_t,jit_int32_t);
# define swf_extr_f_d(r0,r1) _swf_extr_f_d(_jit,r0,r1) # define swf_extr_f_d(r0,r1) _swf_extr_f_d(_jit,r0,r1)
static void _swf_extr_f_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_extr_f_d(jit_state_t*,int32_t,jit_int32_t);
# define swf_truncr_f_i(r0,r1) _swf_truncr_f_i(_jit,r0,r1) # define swf_truncr_f_i(r0,r1) _swf_truncr_f_i(_jit,r0,r1)
static void _swf_truncr_f_i(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_truncr_f_i(jit_state_t*,int32_t,jit_int32_t);
# define swf_truncr_d_i(r0,r1) _swf_truncr_d_i(_jit,r0,r1) # define swf_truncr_d_i(r0,r1) _swf_truncr_d_i(_jit,r0,r1)
static void _swf_truncr_d_i(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_truncr_d_i(jit_state_t*,int32_t,jit_int32_t);
# define swf_movr_f(r0,r1) _swf_movr_f(_jit,r0,r1) # define swf_movr_f(r0,r1) _swf_movr_f(_jit,r0,r1)
static void _swf_movr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_movr_f(jit_state_t*,int32_t,jit_int32_t);
# define swf_movr_d(r0,r1) _swf_movr_d(_jit,r0,r1) # define swf_movr_d(r0,r1) _swf_movr_d(_jit,r0,r1)
static void _swf_movr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_movr_d(jit_state_t*,int32_t,jit_int32_t);
# define swf_movi_f(r0,i0) _swf_movi_f(_jit,r0,i0) # define swf_movi_f(r0,i0) _swf_movi_f(_jit,r0,i0)
static void _swf_movi_f(jit_state_t*,jit_int32_t,jit_float32_t); static void _swf_movi_f(jit_state_t*,int32_t,jit_float32_t);
# define swf_movi_d(r0,i0) _swf_movi_d(_jit,r0,i0) # define swf_movi_d(r0,i0) _swf_movi_d(_jit,r0,i0)
static void _swf_movi_d(jit_state_t*,jit_int32_t,jit_float64_t); static void _swf_movi_d(jit_state_t*,int32_t,jit_float64_t);
# define swf_absr_f(r0,r1) _swf_absr_f(_jit,r0,r1) # define swf_absr_f(r0,r1) _swf_absr_f(_jit,r0,r1)
static void _swf_absr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_absr_f(jit_state_t*,int32_t,jit_int32_t);
# define swf_absr_d(r0,r1) _swf_absr_d(_jit,r0,r1) # define swf_absr_d(r0,r1) _swf_absr_d(_jit,r0,r1)
static void _swf_absr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_absr_d(jit_state_t*,int32_t,jit_int32_t);
# define swf_negr_f(r0,r1) _swf_negr_f(_jit,r0,r1) # define swf_negr_f(r0,r1) _swf_negr_f(_jit,r0,r1)
static void _swf_negr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_negr_f(jit_state_t*,int32_t,jit_int32_t);
# define swf_negr_d(r0,r1) _swf_negr_d(_jit,r0,r1) # define swf_negr_d(r0,r1) _swf_negr_d(_jit,r0,r1)
static void _swf_negr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_negr_d(jit_state_t*,int32_t,jit_int32_t);
# define swf_sqrtr_f(r0,r1) swf_ff(sqrtf,r0,r1) # define swf_sqrtr_f(r0,r1) swf_ff(sqrtf,r0,r1)
# define swf_sqrtr_d(r0,r1) swf_dd(sqrt,r0,r1) # define swf_sqrtr_d(r0,r1) swf_dd(sqrt,r0,r1)
# define swf_addr_f(r0,r1,r2) swf_fff(__addsf3,r0,r1,r2) # define swf_addr_f(r0,r1,r2) swf_fff(__addsf3,r0,r1,r2)
@ -154,10 +154,10 @@ static void _swf_negr_d(jit_state_t*,jit_int32_t,jit_int32_t);
# define swf_subi_d(r0,r1,i0) swf_ddd_(__aeabi_dsub,r0,r1,i0) # define swf_subi_d(r0,r1,i0) swf_ddd_(__aeabi_dsub,r0,r1,i0)
# define swf_rsbr_f(r0, r1, r2) swf_subr_f(r0, r2, r1) # define swf_rsbr_f(r0, r1, r2) swf_subr_f(r0, r2, r1)
# define swf_rsbi_f(r0, r1, i0) _swf_rsbi_f(_jit, r0, r1, i0) # define swf_rsbi_f(r0, r1, i0) _swf_rsbi_f(_jit, r0, r1, i0)
static void _swf_rsbi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _swf_rsbi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define swf_rsbr_d(r0, r1, r2) swf_subr_d(r0, r2, r1) # define swf_rsbr_d(r0, r1, r2) swf_subr_d(r0, r2, r1)
# define swf_rsbi_d(r0, r1, i0) _swf_rsbi_d(_jit, r0, r1, i0) # define swf_rsbi_d(r0, r1, i0) _swf_rsbi_d(_jit, r0, r1, i0)
static void _swf_rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _swf_rsbi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define swf_mulr_f(r0,r1,r2) swf_fff(__aeabi_fmul,r0,r1,r2) # define swf_mulr_f(r0,r1,r2) swf_fff(__aeabi_fmul,r0,r1,r2)
# define swf_muli_f(r0,r1,i0) swf_fff_(__aeabi_fmul,r0,r1,i0) # define swf_muli_f(r0,r1,i0) swf_fff_(__aeabi_fmul,r0,r1,i0)
# define swf_mulr_d(r0,r1,r2) swf_ddd(__aeabi_dmul,r0,r1,r2) # define swf_mulr_d(r0,r1,r2) swf_ddd(__aeabi_dmul,r0,r1,r2)
@ -187,13 +187,13 @@ static void _swf_rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
# define swf_gtr_d(r0,r1,r2) swf_idd(__aeabi_dcmpgt,r0,r1,r2) # define swf_gtr_d(r0,r1,r2) swf_idd(__aeabi_dcmpgt,r0,r1,r2)
# define swf_gti_d(r0,r1,i0) swf_idd_(__aeabi_dcmpgt,r0,r1,i0) # define swf_gti_d(r0,r1,i0) swf_idd_(__aeabi_dcmpgt,r0,r1,i0)
# define swf_ner_f(r0,r1,r2) _swf_ner_f(_jit,r0,r1,r2) # define swf_ner_f(r0,r1,r2) _swf_ner_f(_jit,r0,r1,r2)
static void _swf_ner_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_ner_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_nei_f(r0,r1,i0) _swf_nei_f(_jit,r0,r1,i0) # define swf_nei_f(r0,r1,i0) _swf_nei_f(_jit,r0,r1,i0)
static void _swf_nei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _swf_nei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define swf_ner_d(r0,r1,r2) _swf_ner_d(_jit,r0,r1,r2) # define swf_ner_d(r0,r1,r2) _swf_ner_d(_jit,r0,r1,r2)
static void _swf_ner_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_ner_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_nei_d(r0,r1,i0) _swf_nei_d(_jit,r0,r1,i0) # define swf_nei_d(r0,r1,i0) _swf_nei_d(_jit,r0,r1,i0)
static void _swf_nei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _swf_nei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define swf_unltr_f(r0,r1,r2) swf_iunff(__aeabi_fcmplt,r0,r1,r2) # define swf_unltr_f(r0,r1,r2) swf_iunff(__aeabi_fcmplt,r0,r1,r2)
# define swf_unlti_f(r0,r1,i0) swf_iunff_(__aeabi_fcmplt,r0,r1,i0) # define swf_unlti_f(r0,r1,i0) swf_iunff_(__aeabi_fcmplt,r0,r1,i0)
# define swf_unltr_d(r0,r1,r2) swf_iundd(__aeabi_dcmplt,r0,r1,r2) # define swf_unltr_d(r0,r1,r2) swf_iundd(__aeabi_dcmplt,r0,r1,r2)
@ -215,21 +215,21 @@ static void _swf_nei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
# define swf_ungtr_d(r0,r1,r2) swf_iundd(__aeabi_dcmpgt,r0,r1,r2) # define swf_ungtr_d(r0,r1,r2) swf_iundd(__aeabi_dcmpgt,r0,r1,r2)
# define swf_ungti_d(r0,r1,i0) swf_iundd_(__aeabi_dcmpgt,r0,r1,i0) # define swf_ungti_d(r0,r1,i0) swf_iundd_(__aeabi_dcmpgt,r0,r1,i0)
# define swf_ltgtr_f(r0,r1,r2) _swf_ltgtr_f(_jit,r0,r1,r2) # define swf_ltgtr_f(r0,r1,r2) _swf_ltgtr_f(_jit,r0,r1,r2)
static void _swf_ltgtr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_ltgtr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_ltgti_f(r0,r1,i0) _swf_ltgti_f(_jit,r0,r1,i0) # define swf_ltgti_f(r0,r1,i0) _swf_ltgti_f(_jit,r0,r1,i0)
static void _swf_ltgti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _swf_ltgti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define swf_ltgtr_d(r0,r1,r2) _swf_ltgtr_d(_jit,r0,r1,r2) # define swf_ltgtr_d(r0,r1,r2) _swf_ltgtr_d(_jit,r0,r1,r2)
static void _swf_ltgtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_ltgtr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_ltgti_d(r0,r1,i0) _swf_ltgti_d(_jit,r0,r1,i0) # define swf_ltgti_d(r0,r1,i0) _swf_ltgti_d(_jit,r0,r1,i0)
static void _swf_ltgti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _swf_ltgti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define swf_ordr_f(r0,r1,r2) _swf_ordr_f(_jit,r0,r1,r2) # define swf_ordr_f(r0,r1,r2) _swf_ordr_f(_jit,r0,r1,r2)
static void _swf_ordr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_ordr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_ordi_f(r0,r1,i0) _swf_ordi_f(_jit,r0,r1,i0) # define swf_ordi_f(r0,r1,i0) _swf_ordi_f(_jit,r0,r1,i0)
static void _swf_ordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t); static void _swf_ordi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t);
# define swf_ordr_d(r0,r1,r2) _swf_ordr_d(_jit,r0,r1,r2) # define swf_ordr_d(r0,r1,r2) _swf_ordr_d(_jit,r0,r1,r2)
static void _swf_ordr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_ordr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_ordi_d(r0,r1,i0) _swf_ordi_d(_jit,r0,r1,i0) # define swf_ordi_d(r0,r1,i0) _swf_ordi_d(_jit,r0,r1,i0)
static void _swf_ordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t); static void _swf_ordi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t);
# define swf_unordr_f(r0,r1,r2) swf_iunff(__aeabi_fcmpun,r0,r1,r2) # define swf_unordr_f(r0,r1,r2) swf_iunff(__aeabi_fcmpun,r0,r1,r2)
# define swf_unordi_f(r0,r1,i0) swf_iunff_(__aeabi_fcmpun,r0,r1,i0) # define swf_unordi_f(r0,r1,i0) swf_iunff_(__aeabi_fcmpun,r0,r1,i0)
# define swf_unordr_d(r0,r1,r2) swf_iundd(__aeabi_dcmpun,r0,r1,r2) # define swf_unordr_d(r0,r1,r2) swf_iundd(__aeabi_dcmpun,r0,r1,r2)
@ -291,39 +291,39 @@ static void _swf_ordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
# define swf_bunordr_d(i0,r0,r1) swf_bdd(__aeabi_dcmpun,ARM_CC_NE,i0,r0,r1) # define swf_bunordr_d(i0,r0,r1) swf_bdd(__aeabi_dcmpun,ARM_CC_NE,i0,r0,r1)
# define swf_bunordi_d(i0,r0,i1) swf_bdd_(__aeabi_dcmpun,ARM_CC_NE,i0,r0,i1) # define swf_bunordi_d(i0,r0,i1) swf_bdd_(__aeabi_dcmpun,ARM_CC_NE,i0,r0,i1)
# define swf_ldr_f(r0,r1) _swf_ldr_f(_jit,r0,r1) # define swf_ldr_f(r0,r1) _swf_ldr_f(_jit,r0,r1)
static void _swf_ldr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_ldr_f(jit_state_t*,int32_t,jit_int32_t);
# define swf_ldr_d(r0,r1) _swf_ldr_d(_jit,r0,r1) # define swf_ldr_d(r0,r1) _swf_ldr_d(_jit,r0,r1)
static void _swf_ldr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_ldr_d(jit_state_t*,int32_t,jit_int32_t);
# define swf_ldi_f(r0,i0) _swf_ldi_f(_jit,r0,i0) # define swf_ldi_f(r0,i0) _swf_ldi_f(_jit,r0,i0)
static void _swf_ldi_f(jit_state_t*,jit_int32_t,jit_word_t); static void _swf_ldi_f(jit_state_t*,int32_t,jit_word_t);
# define swf_ldi_d(r0,i0) _swf_ldi_d(_jit,r0,i0) # define swf_ldi_d(r0,i0) _swf_ldi_d(_jit,r0,i0)
static void _swf_ldi_d(jit_state_t*,jit_int32_t,jit_word_t); static void _swf_ldi_d(jit_state_t*,int32_t,jit_word_t);
# define swf_ldxr_f(r0,r1,r2) _swf_ldxr_f(_jit,r0,r1,r2) # define swf_ldxr_f(r0,r1,r2) _swf_ldxr_f(_jit,r0,r1,r2)
static void _swf_ldxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_ldxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_ldxr_d(r0,r1,r2) _swf_ldxr_d(_jit,r0,r1,r2) # define swf_ldxr_d(r0,r1,r2) _swf_ldxr_d(_jit,r0,r1,r2)
static void _swf_ldxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_ldxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_ldxi_f(r0,r1,i0) _swf_ldxi_f(_jit,r0,r1,i0) # define swf_ldxi_f(r0,r1,i0) _swf_ldxi_f(_jit,r0,r1,i0)
static void _swf_ldxi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _swf_ldxi_f(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
# define swf_ldxi_d(r0,r1,i0) _swf_ldxi_d(_jit,r0,r1,i0) # define swf_ldxi_d(r0,r1,i0) _swf_ldxi_d(_jit,r0,r1,i0)
static void _swf_ldxi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _swf_ldxi_d(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
# define swf_str_f(r0,r1) _swf_str_f(_jit,r0,r1) # define swf_str_f(r0,r1) _swf_str_f(_jit,r0,r1)
static void _swf_str_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_str_f(jit_state_t*,int32_t,jit_int32_t);
# define swf_str_d(r0,r1) _swf_str_d(_jit,r0,r1) # define swf_str_d(r0,r1) _swf_str_d(_jit,r0,r1)
static void _swf_str_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _swf_str_d(jit_state_t*,int32_t,jit_int32_t);
# define swf_sti_f(r0,i0) _swf_sti_f(_jit,r0,i0) # define swf_sti_f(r0,i0) _swf_sti_f(_jit,r0,i0)
static void _swf_sti_f(jit_state_t*,jit_word_t,jit_int32_t); static void _swf_sti_f(jit_state_t*,jit_word_t,int32_t);
# define swf_sti_d(r0,i0) _swf_sti_d(_jit,r0,i0) # define swf_sti_d(r0,i0) _swf_sti_d(_jit,r0,i0)
static void _swf_sti_d(jit_state_t*,jit_word_t,jit_int32_t); static void _swf_sti_d(jit_state_t*,jit_word_t,int32_t);
# define swf_stxr_f(r0,r1,r2) _swf_stxr_f(_jit,r0,r1,r2) # define swf_stxr_f(r0,r1,r2) _swf_stxr_f(_jit,r0,r1,r2)
static void _swf_stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_stxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_stxr_d(r0,r1,r2) _swf_stxr_d(_jit,r0,r1,r2) # define swf_stxr_d(r0,r1,r2) _swf_stxr_d(_jit,r0,r1,r2)
static void _swf_stxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _swf_stxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define swf_stxi_f(r0,r1,i0) _swf_stxi_f(_jit,r0,r1,i0) # define swf_stxi_f(r0,r1,i0) _swf_stxi_f(_jit,r0,r1,i0)
static void _swf_stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _swf_stxi_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define swf_stxi_d(r0,r1,i0) _swf_stxi_d(_jit,r0,r1,i0) # define swf_stxi_d(r0,r1,i0) _swf_stxi_d(_jit,r0,r1,i0)
static void _swf_stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _swf_stxi_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define swf_vaarg_d(r0, r1) _swf_vaarg_d(_jit, r0, r1) # define swf_vaarg_d(r0, r1) _swf_vaarg_d(_jit, r0, r1)
static void _swf_vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _swf_vaarg_d(jit_state_t*, int32_t, jit_int32_t);
#endif #endif
#if CODE #if CODE
@ -358,7 +358,7 @@ static void _swf_vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t);
#define swf_call_with_get_reg(function, label) \ #define swf_call_with_get_reg(function, label) \
do { \ do { \
jit_word_t d; \ jit_word_t d; \
jit_int32_t reg; \ int32_t reg; \
if (!jit_exchange_p()) { \ if (!jit_exchange_p()) { \
if (jit_thumb_p()) \ if (jit_thumb_p()) \
d = (((jit_word_t)function - _jit->pc.w) >> 1) - 2; \ d = (((jit_word_t)function - _jit->pc.w) >> 1) - 2; \
@ -561,7 +561,7 @@ __aeabi_dcmpun(double u, double v)
static void static void
_swf_ff(jit_state_t *_jit, float(*i0)(float), _swf_ff(jit_state_t *_jit, float(*i0)(float),
jit_int32_t r0, jit_int32_t r1) int32_t r0, jit_int32_t r1)
{ {
jit_get_reg_args(); jit_get_reg_args();
if (jit_fpr_p(r1)) if (jit_fpr_p(r1))
@ -578,7 +578,7 @@ _swf_ff(jit_state_t *_jit, float(*i0)(float),
static void static void
_swf_dd(jit_state_t *_jit, double (*i0)(double), _swf_dd(jit_state_t *_jit, double (*i0)(double),
jit_int32_t r0, jit_int32_t r1) int32_t r0, jit_int32_t r1)
{ {
jit_get_reg_args(); jit_get_reg_args();
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
@ -611,7 +611,7 @@ _swf_dd(jit_state_t *_jit, double (*i0)(double),
static void static void
_swf_fff(jit_state_t *_jit, float (*i0)(float, float), _swf_fff(jit_state_t *_jit, float (*i0)(float, float),
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_get_reg_args(); jit_get_reg_args();
if (jit_fpr_p(r1)) if (jit_fpr_p(r1))
@ -632,7 +632,7 @@ _swf_fff(jit_state_t *_jit, float (*i0)(float, float),
static void static void
_swf_ddd(jit_state_t *_jit, double (*i0)(double, double), _swf_ddd(jit_state_t *_jit, double (*i0)(double, double),
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_get_reg_args(); jit_get_reg_args();
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
@ -677,10 +677,10 @@ _swf_ddd(jit_state_t *_jit, double (*i0)(double, double),
static void static void
_swf_fff_(jit_state_t *_jit, float (*i0)(float, float), _swf_fff_(jit_state_t *_jit, float (*i0)(float, float),
jit_int32_t r0, jit_int32_t r1, jit_float32_t i1) int32_t r0, jit_int32_t r1, jit_float32_t i1)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -699,10 +699,10 @@ _swf_fff_(jit_state_t *_jit, float (*i0)(float, float),
} }
static void static void
_swf_rsbi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float32_t i0) _swf_rsbi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_float32_t i0)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -722,10 +722,10 @@ _swf_rsbi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float32_t i0)
static void static void
_swf_ddd_(jit_state_t *_jit, double (*i0)(double, double), _swf_ddd_(jit_state_t *_jit, double (*i0)(double, double),
jit_int32_t r0, jit_int32_t r1, jit_float64_t i1) int32_t r0, jit_int32_t r1, jit_float64_t i1)
{ {
union { union {
jit_int32_t i[2]; int32_t i[2];
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -762,10 +762,10 @@ _swf_ddd_(jit_state_t *_jit, double (*i0)(double, double),
} }
static void static void
_swf_rsbi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) _swf_rsbi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_float64_t i0)
{ {
union { union {
jit_int32_t i[2]; int32_t i[2];
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -802,7 +802,7 @@ _swf_rsbi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t i0)
static void static void
_swf_iff(jit_state_t *_jit, int (*i0)(float, float), _swf_iff(jit_state_t *_jit, int (*i0)(float, float),
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_get_reg_args(); jit_get_reg_args();
if (jit_fpr_p(r1)) if (jit_fpr_p(r1))
@ -820,7 +820,7 @@ _swf_iff(jit_state_t *_jit, int (*i0)(float, float),
static void static void
_swf_idd(jit_state_t *_jit, int (*i0)(double, double), _swf_idd(jit_state_t *_jit, int (*i0)(double, double),
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_get_reg_args(); jit_get_reg_args();
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
@ -854,10 +854,10 @@ _swf_idd(jit_state_t *_jit, int (*i0)(double, double),
static void static void
_swf_iff_(jit_state_t *_jit, int (*i0)(float, float), _swf_iff_(jit_state_t *_jit, int (*i0)(float, float),
jit_int32_t r0, jit_int32_t r1, jit_float32_t i1) int32_t r0, jit_int32_t r1, jit_float32_t i1)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -874,10 +874,10 @@ _swf_iff_(jit_state_t *_jit, int (*i0)(float, float),
static void static void
_swf_idd_(jit_state_t *_jit, int (*i0)(double, double), _swf_idd_(jit_state_t *_jit, int (*i0)(double, double),
jit_int32_t r0, jit_int32_t r1, jit_float64_t i1) int32_t r0, jit_int32_t r1, jit_float64_t i1)
{ {
union { union {
jit_int32_t i[2]; int32_t i[2];
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -903,7 +903,7 @@ _swf_idd_(jit_state_t *_jit, int (*i0)(double, double),
static void static void
_swf_iunff(jit_state_t *_jit, int (*i0)(float, float), _swf_iunff(jit_state_t *_jit, int (*i0)(float, float),
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t instr; jit_word_t instr;
jit_get_reg_args(); jit_get_reg_args();
@ -948,7 +948,7 @@ _swf_iunff(jit_state_t *_jit, int (*i0)(float, float),
static void static void
_swf_iundd(jit_state_t *_jit, int (*i0)(double, double), _swf_iundd(jit_state_t *_jit, int (*i0)(double, double),
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t instr; jit_word_t instr;
jit_get_reg_args(); jit_get_reg_args();
@ -1025,11 +1025,11 @@ _swf_iundd(jit_state_t *_jit, int (*i0)(double, double),
static void static void
_swf_iunff_(jit_state_t *_jit, int (*i0)(float, float), _swf_iunff_(jit_state_t *_jit, int (*i0)(float, float),
jit_int32_t r0, jit_int32_t r1, jit_float32_t i1) int32_t r0, jit_int32_t r1, jit_float32_t i1)
{ {
jit_word_t instr; jit_word_t instr;
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -1069,11 +1069,11 @@ _swf_iunff_(jit_state_t *_jit, int (*i0)(float, float),
static void static void
_swf_iundd_(jit_state_t *_jit, int (*i0)(double, double), _swf_iundd_(jit_state_t *_jit, int (*i0)(double, double),
jit_int32_t r0, jit_int32_t r1, jit_float64_t i1) int32_t r0, jit_int32_t r1, jit_float64_t i1)
{ {
jit_word_t instr; jit_word_t instr;
union { union {
jit_int32_t i[2]; int32_t i[2];
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -1131,7 +1131,7 @@ _swf_iundd_(jit_state_t *_jit, int (*i0)(double, double),
static jit_word_t static jit_word_t
_swf_bff(jit_state_t *_jit, int (*i0)(float, float), int cc, _swf_bff(jit_state_t *_jit, int (*i0)(float, float), int cc,
jit_word_t i1, jit_int32_t r0, jit_int32_t r1) jit_word_t i1, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w, d; jit_word_t w, d;
jit_get_reg_args(); jit_get_reg_args();
@ -1164,7 +1164,7 @@ _swf_bff(jit_state_t *_jit, int (*i0)(float, float), int cc,
static jit_word_t static jit_word_t
_swf_bdd(jit_state_t *_jit, int (*i0)(double, double), int cc, _swf_bdd(jit_state_t *_jit, int (*i0)(double, double), int cc,
jit_word_t i1, jit_int32_t r0, jit_int32_t r1) jit_word_t i1, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w, d; jit_word_t w, d;
jit_get_reg_args(); jit_get_reg_args();
@ -1213,10 +1213,10 @@ _swf_bdd(jit_state_t *_jit, int (*i0)(double, double), int cc,
static jit_word_t static jit_word_t
_swf_bff_(jit_state_t *_jit, int (*i0)(float, float), int cc, _swf_bff_(jit_state_t *_jit, int (*i0)(float, float), int cc,
jit_word_t i1, jit_int32_t r0, jit_float32_t i2) jit_word_t i1, int32_t r0, jit_float32_t i2)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_word_t w, d; jit_word_t w, d;
@ -1248,11 +1248,11 @@ _swf_bff_(jit_state_t *_jit, int (*i0)(float, float), int cc,
static jit_word_t static jit_word_t
_swf_bdd_(jit_state_t *_jit, int (*i0)(double, double), int cc, _swf_bdd_(jit_state_t *_jit, int (*i0)(double, double), int cc,
jit_word_t i1, jit_int32_t r0, jit_float64_t i2) jit_word_t i1, int32_t r0, jit_float64_t i2)
{ {
jit_word_t w, d; jit_word_t w, d;
union { union {
jit_int32_t i[2]; int32_t i[2];
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -1292,7 +1292,7 @@ _swf_bdd_(jit_state_t *_jit, int (*i0)(double, double), int cc,
static jit_word_t static jit_word_t
_swf_bunff(jit_state_t *_jit, int eq, _swf_bunff(jit_state_t *_jit, int eq,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w, d, j0, j1; jit_word_t w, d, j0, j1;
jit_get_reg_args(); jit_get_reg_args();
@ -1362,7 +1362,7 @@ _swf_bunff(jit_state_t *_jit, int eq,
static jit_word_t static jit_word_t
_swf_bundd(jit_state_t *_jit, int eq, _swf_bundd(jit_state_t *_jit, int eq,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w, d, j0, j1; jit_word_t w, d, j0, j1;
jit_get_reg_args(); jit_get_reg_args();
@ -1464,10 +1464,10 @@ _swf_bundd(jit_state_t *_jit, int eq,
static jit_word_t static jit_word_t
_swf_bunff_(jit_state_t *_jit, int eq, _swf_bunff_(jit_state_t *_jit, int eq,
jit_word_t i0, jit_int32_t r0, jit_float32_t i1) jit_word_t i0, int32_t r0, jit_float32_t i1)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_word_t w, d, j0, j1; jit_word_t w, d, j0, j1;
@ -1533,11 +1533,11 @@ _swf_bunff_(jit_state_t *_jit, int eq,
static jit_word_t static jit_word_t
_swf_bundd_(jit_state_t *_jit, int eq, _swf_bundd_(jit_state_t *_jit, int eq,
jit_word_t i0, jit_int32_t r0, jit_float64_t i1) jit_word_t i0, int32_t r0, jit_float64_t i1)
{ {
jit_word_t w, d, j0, j1; jit_word_t w, d, j0, j1;
union { union {
jit_int32_t i[2]; int32_t i[2];
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_get_reg_args(); jit_get_reg_args();
@ -1619,7 +1619,7 @@ _swf_bundd_(jit_state_t *_jit, int eq,
} }
static void static void
_swf_extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_extr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_get_reg_args(); jit_get_reg_args();
movr(_R0_REGNO, r1); movr(_R0_REGNO, r1);
@ -1632,7 +1632,7 @@ _swf_extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_extr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_get_reg_args(); jit_get_reg_args();
movr(_R0_REGNO, r1); movr(_R0_REGNO, r1);
@ -1653,7 +1653,7 @@ _swf_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_extr_d_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_extr_d_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_get_reg_args(); jit_get_reg_args();
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
@ -1677,7 +1677,7 @@ _swf_extr_d_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_extr_f_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_extr_f_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_get_reg_args(); jit_get_reg_args();
if (jit_fpr_p(r1)) if (jit_fpr_p(r1))
@ -1701,7 +1701,7 @@ _swf_extr_f_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_truncr_f_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_truncr_f_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
#if !NAN_TO_INT_IS_ZERO #if !NAN_TO_INT_IS_ZERO
jit_word_t is_nan; jit_word_t is_nan;
@ -1755,7 +1755,7 @@ _swf_truncr_f_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_truncr_d_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
#if !NAN_TO_INT_IS_ZERO #if !NAN_TO_INT_IS_ZERO
jit_word_t is_nan; jit_word_t is_nan;
@ -1819,9 +1819,9 @@ _swf_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_movr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_movr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (r0 != r1) { if (r0 != r1) {
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -1840,9 +1840,9 @@ _swf_movr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_movr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (r0 != r1) { if (r0 != r1) {
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p() && if (!jit_thumb_p() && jit_armv5e_p() &&
@ -1887,13 +1887,13 @@ _swf_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0) _swf_movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t i0)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_int32_t reg; int32_t reg;
data.f = i0; data.f = i0;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -1906,11 +1906,11 @@ _swf_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
} }
static void static void
_swf_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0) _swf_movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t i0)
{ {
jit_int32_t reg; int32_t reg;
union { union {
jit_int32_t i[2]; int32_t i[2];
jit_float64_t d; jit_float64_t d;
} data; } data;
data.d = i0; data.d = i0;
@ -1938,9 +1938,9 @@ _swf_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0)
} }
static void static void
_swf_absr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_absr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8); swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8);
@ -1963,9 +1963,9 @@ _swf_absr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_absr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
if (jit_fpr_p(r0) && !jit_thumb_p() && jit_armv5e_p() && if (jit_fpr_p(r0) && !jit_thumb_p() && jit_armv5e_p() &&
r0 != r1 && (reg = jit_get_reg_pair()) != JIT_NOREG) { r0 != r1 && (reg = jit_get_reg_pair()) != JIT_NOREG) {
@ -2010,9 +2010,9 @@ _swf_absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_negr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_negr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8); swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8);
@ -2035,9 +2035,9 @@ _swf_negr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_negr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
if (jit_fpr_p(r0) && !jit_thumb_p() && jit_armv5e_p() && if (jit_fpr_p(r0) && !jit_thumb_p() && jit_armv5e_p() &&
r0 != r1 && (reg = jit_get_reg_pair()) != JIT_NOREG) { r0 != r1 && (reg = jit_get_reg_pair()) != JIT_NOREG) {
@ -2082,93 +2082,93 @@ _swf_negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_ner_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_ner_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
swf_iff(__aeabi_fcmpeq, r0, r1, r2); swf_iff(__aeabi_fcmpeq, r0, r1, r2);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_nei_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float32_t i0) _swf_nei_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_float32_t i0)
{ {
swf_iff_(__aeabi_fcmpeq, r0, r1, i0); swf_iff_(__aeabi_fcmpeq, r0, r1, i0);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ner_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_ner_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
swf_idd(__aeabi_dcmpeq, r0, r1, r2); swf_idd(__aeabi_dcmpeq, r0, r1, r2);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_nei_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) _swf_nei_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_float64_t i0)
{ {
swf_idd_(__aeabi_dcmpeq, r0, r1, i0); swf_idd_(__aeabi_dcmpeq, r0, r1, i0);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ltgtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_ltgtr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
swf_iunff(__aeabi_fcmpeq, r0, r1, r2); swf_iunff(__aeabi_fcmpeq, r0, r1, r2);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ltgti_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float32_t i0) _swf_ltgti_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_float32_t i0)
{ {
swf_iunff_(__aeabi_fcmpeq, r0, r1, i0); swf_iunff_(__aeabi_fcmpeq, r0, r1, i0);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_ltgtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
swf_iundd(__aeabi_dcmpeq, r0, r1, r2); swf_iundd(__aeabi_dcmpeq, r0, r1, r2);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ltgti_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) _swf_ltgti_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_float64_t i0)
{ {
swf_iundd_(__aeabi_dcmpeq, r0, r1, i0); swf_iundd_(__aeabi_dcmpeq, r0, r1, i0);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ordr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_ordr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
swf_iff(__aeabi_fcmpun, r0, r1, r2); swf_iff(__aeabi_fcmpun, r0, r1, r2);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ordi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float32_t i0) _swf_ordi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_float32_t i0)
{ {
swf_iff_(__aeabi_fcmpun, r0, r1, i0); swf_iff_(__aeabi_fcmpun, r0, r1, i0);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_ordr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
swf_idd(__aeabi_dcmpun, r0, r1, r2); swf_idd(__aeabi_dcmpun, r0, r1, r2);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ordi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) _swf_ordi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_float64_t i0)
{ {
swf_idd_(__aeabi_dcmpun, r0, r1, i0); swf_idd_(__aeabi_dcmpun, r0, r1, i0);
xori(r0, r0, 1); xori(r0, r0, 1);
} }
static void static void
_swf_ldr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_ldr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldxi_i(rn(reg), r1, 0); ldxi_i(rn(reg), r1, 0);
@ -2180,9 +2180,9 @@ _swf_ldr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_ldr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_ldr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
if (!jit_thumb_p() && jit_armv5e_p() && if (!jit_thumb_p() && jit_armv5e_p() &&
(reg = jit_get_reg_pair()) != JIT_NOREG) { (reg = jit_get_reg_pair()) != JIT_NOREG) {
@ -2208,9 +2208,9 @@ _swf_ldr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _swf_ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldi_i(rn(reg), i0); ldi_i(rn(reg), i0);
@ -2222,9 +2222,9 @@ _swf_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_swf_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _swf_ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t rg0, rg1; int32_t rg0, rg1;
if (jit_fpr_p(r0) && !jit_thumb_p() && jit_armv5e_p() && if (jit_fpr_p(r0) && !jit_thumb_p() && jit_armv5e_p() &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) { (rg0 = jit_get_reg_pair()) != JIT_NOREG) {
movi(rn(rg0), i0); movi(rn(rg0), i0);
@ -2254,9 +2254,9 @@ _swf_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_swf_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_ldxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldxr_i(rn(reg), r1, r2); ldxr_i(rn(reg), r1, r2);
@ -2268,9 +2268,9 @@ _swf_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_swf_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_ldxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t rg0, rg1; int32_t rg0, rg1;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
if (!jit_thumb_p() && jit_armv5e_p() && if (!jit_thumb_p() && jit_armv5e_p() &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) { (rg0 = jit_get_reg_pair()) != JIT_NOREG) {
@ -2304,9 +2304,9 @@ _swf_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_swf_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _swf_ldxi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
ldxi_i(rn(reg), r1, i0); ldxi_i(rn(reg), r1, i0);
@ -2318,9 +2318,9 @@ _swf_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_swf_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _swf_ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t rg0, rg1; int32_t rg0, rg1;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
if (!jit_thumb_p() && jit_armv5e_p() && if (!jit_thumb_p() && jit_armv5e_p() &&
((i0 >= 0 && i0 <= 255) || (i0 < 0 && i0 >= -255)) && ((i0 >= 0 && i0 <= 255) || (i0 < 0 && i0 >= -255)) &&
@ -2387,9 +2387,9 @@ _swf_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_swf_str_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_str_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8); swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8);
@ -2401,9 +2401,9 @@ _swf_str_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_str_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_str_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p() && if (!jit_thumb_p() && jit_armv5e_p() &&
(reg = jit_get_reg_pair()) != JIT_NOREG) { (reg = jit_get_reg_pair()) != JIT_NOREG) {
@ -2431,9 +2431,9 @@ _swf_str_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _swf_sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r0) + 8); swf_ldrin(rn(reg), _FP_REGNO, swf_off(r0) + 8);
@ -2445,9 +2445,9 @@ _swf_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_swf_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _swf_sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t rg0, rg1; int32_t rg0, rg1;
if (jit_fpr_p(r0)) { if (jit_fpr_p(r0)) {
if (!jit_thumb_p() && jit_armv5e_p() && if (!jit_thumb_p() && jit_armv5e_p() &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) { (rg0 = jit_get_reg_pair()) != JIT_NOREG) {
@ -2484,9 +2484,9 @@ _swf_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_swf_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_stxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r2)) { if (jit_fpr_p(r2)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r2) + 8); swf_ldrin(rn(reg), _FP_REGNO, swf_off(r2) + 8);
@ -2498,9 +2498,9 @@ _swf_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_swf_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _swf_stxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t rg0, rg1; int32_t rg0, rg1;
if (jit_fpr_p(r2)) { if (jit_fpr_p(r2)) {
if (!jit_thumb_p() && jit_armv5e_p() && if (!jit_thumb_p() && jit_armv5e_p() &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) { (rg0 = jit_get_reg_pair()) != JIT_NOREG) {
@ -2534,9 +2534,9 @@ _swf_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_swf_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _swf_stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8); swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8);
@ -2548,9 +2548,9 @@ _swf_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _swf_stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t rg0, rg1; int32_t rg0, rg1;
if (jit_fpr_p(r1)) { if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p() && if (!jit_thumb_p() && jit_armv5e_p() &&
((i0 >= 0 && i0 <= 255) || (i0 < 0 && i0 >= -255)) && ((i0 >= 0 && i0 <= 255) || (i0 < 0 && i0 >= -255)) &&
@ -2618,9 +2618,9 @@ _swf_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_swf_vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _swf_vaarg_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function->self.call & jit_call_varargs); assert(_jitc->function->self.call & jit_call_varargs);

File diff suppressed because it is too large Load diff

140
jit/arm.c
View file

@ -50,8 +50,8 @@
* Types * Types
*/ */
typedef union _jit_thumb_t { typedef union _jit_thumb_t {
jit_int32_t i; int32_t i;
jit_int16_t s[2]; int16_t s[2];
} jit_thumb_t; } jit_thumb_t;
typedef jit_pointer_t jit_va_list; typedef jit_pointer_t jit_va_list;
@ -66,13 +66,13 @@ static jit_node_t *_jit_make_arg_f(jit_state_t*,jit_node_t*);
#define jit_make_arg_d(node) _jit_make_arg_d(_jit,node) #define jit_make_arg_d(node) _jit_make_arg_d(_jit,node)
static jit_node_t *_jit_make_arg_d(jit_state_t*,jit_node_t*); static jit_node_t *_jit_make_arg_d(jit_state_t*,jit_node_t*);
#define jit_get_reg_pair() _jit_get_reg_pair(_jit) #define jit_get_reg_pair() _jit_get_reg_pair(_jit)
static jit_int32_t _jit_get_reg_pair(jit_state_t*); static int32_t _jit_get_reg_pair(jit_state_t*);
#define jit_unget_reg_pair(rn) _jit_unget_reg_pair(_jit,rn) #define jit_unget_reg_pair(rn) _jit_unget_reg_pair(_jit,rn)
static void _jit_unget_reg_pair(jit_state_t*,jit_int32_t); static void _jit_unget_reg_pair(jit_state_t*,int32_t);
# define must_align_p(node) _must_align_p(_jit, node) # define must_align_p(node) _must_align_p(_jit, node)
static jit_bool_t _must_align_p(jit_state_t*,jit_node_t*); static jit_bool_t _must_align_p(jit_state_t*,jit_node_t*);
#define load_const(uniq,r0,i0) _load_const(_jit,uniq,r0,i0) #define load_const(uniq,r0,i0) _load_const(_jit,uniq,r0,i0)
static void _load_const(jit_state_t*,jit_bool_t,jit_int32_t,jit_word_t); static void _load_const(jit_state_t*,jit_bool_t,int32_t,jit_word_t);
#define flush_consts() _flush_consts(_jit) #define flush_consts() _flush_consts(_jit)
static void _flush_consts(jit_state_t*); static void _flush_consts(jit_state_t*);
#define invalidate_consts() _invalidate_consts(_jit) #define invalidate_consts() _invalidate_consts(_jit)
@ -206,7 +206,7 @@ jit_get_cpu(void)
void void
_jit_init(jit_state_t *_jit) _jit_init(jit_state_t *_jit)
{ {
jit_int32_t regno; int32_t regno;
static jit_bool_t first = 1; static jit_bool_t first = 1;
_jitc->reglen = jit_size(_rvs) - 1; _jitc->reglen = jit_size(_rvs) - 1;
@ -229,7 +229,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -255,7 +255,7 @@ _jit_prolog(jit_state_t *_jit)
_jitc->function->self.aoff = 0; _jitc->function->self.aoff = 0;
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -274,8 +274,8 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
assert(_jitc->function); assert(_jitc->function);
switch (length) { switch (length) {
@ -293,13 +293,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -326,7 +326,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
if (JIT_RET != u) if (JIT_RET != u)
@ -346,7 +346,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
if (jit_cpu.abi) { if (jit_cpu.abi) {
@ -378,7 +378,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
if (jit_cpu.abi) { if (jit_cpu.abi) {
@ -438,7 +438,7 @@ _jit_arg_register_p(jit_state_t *_jit, jit_node_t *u)
static jit_node_t * static jit_node_t *
_jit_make_arg(jit_state_t *_jit, jit_node_t *node) _jit_make_arg(jit_state_t *_jit, jit_node_t *node)
{ {
jit_int32_t offset; int32_t offset;
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
else { else {
@ -458,7 +458,7 @@ _jit_make_arg(jit_state_t *_jit, jit_node_t *node)
jit_node_t * jit_node_t *
_jit_make_arg_f(jit_state_t *_jit, jit_node_t *node) _jit_make_arg_f(jit_state_t *_jit, jit_node_t *node)
{ {
jit_int32_t offset; int32_t offset;
if (jit_cpu.abi && !(_jitc->function->self.call & jit_call_varargs)) { if (jit_cpu.abi && !(_jitc->function->self.call & jit_call_varargs)) {
if (jit_arg_f_reg_p(_jitc->function->self.argf)) { if (jit_arg_f_reg_p(_jitc->function->self.argf)) {
offset = _jitc->function->self.argf++; offset = _jitc->function->self.argf++;
@ -487,7 +487,7 @@ done:
jit_node_t * jit_node_t *
_jit_make_arg_d(jit_state_t *_jit, jit_node_t *node) _jit_make_arg_d(jit_state_t *_jit, jit_node_t *node)
{ {
jit_int32_t offset; int32_t offset;
if (jit_cpu.abi && !(_jitc->function->self.call & jit_call_varargs)) { if (jit_cpu.abi && !(_jitc->function->self.call & jit_call_varargs)) {
if (jit_arg_d_reg_p(_jitc->function->self.argf)) { if (jit_arg_d_reg_p(_jitc->function->self.argf)) {
if (_jitc->function->self.argf & 1) if (_jitc->function->self.argf & 1)
@ -550,7 +550,7 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
jit_pushargr(u); jit_pushargr(u);
@ -579,7 +579,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -593,7 +593,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -607,7 +607,7 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -621,7 +621,7 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -635,7 +635,7 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -649,7 +649,7 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
@ -665,7 +665,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
if (jit_swf_p()) { if (jit_swf_p()) {
@ -686,7 +686,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(getarg_f, u, v); jit_inc_synth_wp(getarg_f, u, v);
@ -708,7 +708,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -732,7 +732,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
if (jit_cpu.abi) { if (jit_cpu.abi) {
@ -764,7 +764,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(getarg_d, u, v); jit_inc_synth_wp(getarg_d, u, v);
@ -786,7 +786,7 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
@ -810,7 +810,7 @@ _jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
if (jit_cpu.abi) { if (jit_cpu.abi) {
@ -842,7 +842,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
@ -861,7 +861,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi(jit_state_t *_jit, jit_word_t u) _jit_pushargi(jit_state_t *_jit, jit_word_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargi, u); jit_inc_synth_w(pushargi, u);
jit_link_prepare(); jit_link_prepare();
@ -880,7 +880,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_f, u); jit_inc_synth_w(pushargr_f, u);
@ -908,7 +908,7 @@ done:
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_f(pushargi_f, u); jit_inc_synth_f(pushargi_f, u);
jit_link_prepare(); jit_link_prepare();
@ -943,7 +943,7 @@ done:
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_d, u); jit_inc_synth_w(pushargr_d, u);
@ -979,7 +979,7 @@ done:
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_d(pushargi_d, u); jit_inc_synth_d(pushargi_d, u);
jit_link_prepare(); jit_link_prepare();
@ -1015,9 +1015,9 @@ done:
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
jit_int32_t spec; int32_t spec;
spec = jit_class(_rvs[regno].spec); spec = jit_class(_rvs[regno].spec);
if (spec & jit_class_arg) { if (spec & jit_class_arg) {
regno = JIT_RA0 - regno; regno = JIT_RA0 - regno;
@ -1034,7 +1034,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_node_t *node; jit_node_t *node;
assert(_jitc->function); assert(_jitc->function);
@ -1069,7 +1069,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_c, r0); jit_inc_synth_w(retval_c, r0);
jit_extr_c(r0, JIT_RET); jit_extr_c(r0, JIT_RET);
@ -1077,7 +1077,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_uc, r0); jit_inc_synth_w(retval_uc, r0);
jit_extr_uc(r0, JIT_RET); jit_extr_uc(r0, JIT_RET);
@ -1085,7 +1085,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_s, r0); jit_inc_synth_w(retval_s, r0);
jit_extr_s(r0, JIT_RET); jit_extr_s(r0, JIT_RET);
@ -1093,7 +1093,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_us, r0); jit_inc_synth_w(retval_us, r0);
jit_extr_us(r0, JIT_RET); jit_extr_us(r0, JIT_RET);
@ -1101,7 +1101,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
if (r0 != JIT_RET) if (r0 != JIT_RET)
@ -1110,7 +1110,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_f, r0); jit_inc_synth_w(retval_f, r0);
if (jit_cpu.abi) { if (jit_cpu.abi) {
@ -1123,7 +1123,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_d, r0); jit_inc_synth_w(retval_d, r0);
if (jit_cpu.abi) { if (jit_cpu.abi) {
@ -1141,21 +1141,21 @@ _emit_code(jit_state_t *_jit)
jit_node_t *node; jit_node_t *node;
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_int32_t value; int32_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_uint8_t *data; uint8_t *data;
jit_word_t word; jit_word_t word;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
#endif #endif
jit_uword_t thumb; jit_uword_t thumb;
#if DISASSEMBLER #if DISASSEMBLER
jit_int32_t info_offset; int32_t info_offset;
#endif #endif
jit_int32_t const_offset; int32_t const_offset;
jit_int32_t patch_offset; int32_t patch_offset;
} undo; } undo;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
@ -1974,7 +1974,7 @@ _emit_code(jit_state_t *_jit)
if (!jit_thumb_p() && if (!jit_thumb_p() &&
(node->code == jit_code_movi || node->code == jit_code_calli)) { (node->code == jit_code_movi || node->code == jit_code_calli)) {
/* calculate where to patch word */ /* calculate where to patch word */
value = *(jit_int32_t *)word; value = *(int32_t *)word;
assert((value & 0x0f700000) == ARM_LDRI); assert((value & 0x0f700000) == ARM_LDRI);
/* offset may become negative (-4) if last instruction /* offset may become negative (-4) if last instruction
* before unconditional branch and data following * before unconditional branch and data following
@ -2016,19 +2016,19 @@ jit_flush(void *fptr, void *tptr)
} }
void void
_emit_ldxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
ldxi_i(rn(r0), rn(r1), i0); ldxi_i(rn(r0), rn(r1), i0);
} }
void void
_emit_stxi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
stxi_i(i0, rn(r0), rn(r1)); stxi_i(i0, rn(r0), rn(r1));
} }
void void
_emit_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
if (jit_swf_p()) if (jit_swf_p())
swf_ldxi_d(rn(r0), rn(r1), i0); swf_ldxi_d(rn(r0), rn(r1), i0);
@ -2037,7 +2037,7 @@ _emit_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
void void
_emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
if (jit_swf_p()) if (jit_swf_p())
swf_stxi_d(i0, rn(r0), rn(r1)); swf_stxi_d(i0, rn(r0), rn(r1));
@ -2045,7 +2045,7 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
vfp_stxi_d(i0, rn(r0), rn(r1)); vfp_stxi_d(i0, rn(r0), rn(r1));
} }
static jit_int32_t static int32_t
_jit_get_reg_pair(jit_state_t *_jit) _jit_get_reg_pair(jit_state_t *_jit)
{ {
/* bypass jit_get_reg() with argument or'ed with jit_class_chk /* bypass jit_get_reg() with argument or'ed with jit_class_chk
@ -2081,7 +2081,7 @@ _jit_get_reg_pair(jit_state_t *_jit)
} }
static void static void
_jit_unget_reg_pair(jit_state_t *_jit, jit_int32_t reg) _jit_unget_reg_pair(jit_state_t *_jit, int32_t reg)
{ {
jit_unget_reg(reg); jit_unget_reg(reg);
switch (reg) { switch (reg) {
@ -2119,14 +2119,14 @@ _must_align_p(jit_state_t *_jit, jit_node_t *node)
} }
static void static void
_load_const(jit_state_t *_jit, jit_bool_t uniq, jit_int32_t r0, jit_word_t i0) _load_const(jit_state_t *_jit, jit_bool_t uniq, int32_t r0, jit_word_t i0)
{ {
jit_word_t w; jit_word_t w;
jit_word_t d; jit_word_t d;
jit_word_t base; jit_word_t base;
jit_int32_t *data; int32_t *data;
jit_int32_t size; int32_t size;
jit_int32_t offset; int32_t offset;
assert(!jit_thumb_p()); assert(!jit_thumb_p());
if (!uniq) { if (!uniq) {
@ -2145,7 +2145,7 @@ _load_const(jit_state_t *_jit, jit_bool_t uniq, jit_int32_t r0, jit_word_t i0)
*/ */
/* search in previous constant pool */ /* search in previous constant pool */
if ((data = (jit_int32_t *)_jitc->consts.data)) { if ((data = (int32_t *)_jitc->consts.data)) {
w = (jit_word_t)data; w = (jit_word_t)data;
/* maximum backwards offset */ /* maximum backwards offset */
base = (_jit->pc.w + 8) - 4092; base = (_jit->pc.w + 8) - 4092;
@ -2196,7 +2196,7 @@ static void
_flush_consts(jit_state_t *_jit) _flush_consts(jit_state_t *_jit)
{ {
jit_word_t word; jit_word_t word;
jit_int32_t offset; int32_t offset;
/* if no forward constants */ /* if no forward constants */
if (!_jitc->consts.length) if (!_jitc->consts.length)
@ -2243,8 +2243,8 @@ _invalidate_consts(jit_state_t *_jit)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
jit_int32_t kind; int32_t kind;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) { if (node->code == jit_code_movi) {

View file

@ -105,18 +105,18 @@ typedef enum {
} jit_reg_t; } jit_reg_t;
typedef struct { typedef struct {
jit_uint32_t version : 4; uint32_t version : 4;
jit_uint32_t extend : 1; uint32_t extend : 1;
/* only generate thumb instructions for thumb2 */ /* only generate thumb instructions for thumb2 */
jit_uint32_t thumb : 1; uint32_t thumb : 1;
jit_uint32_t vfp : 3; uint32_t vfp : 3;
jit_uint32_t neon : 1; uint32_t neon : 1;
jit_uint32_t abi : 2; uint32_t abi : 2;
/* use strt+offset instead of str.w? /* use strt+offset instead of str.w?
* on special cases it causes a SIGILL at least on qemu, probably * on special cases it causes a SIGILL at least on qemu, probably
* due to some memory ordering constraint not being respected, so, * due to some memory ordering constraint not being respected, so,
* disable by default */ * disable by default */
jit_uint32_t ldrt_strt : 1; uint32_t ldrt_strt : 1;
} jit_cpu_t; } jit_cpu_t;
/* /*

File diff suppressed because it is too large Load diff

View file

@ -28,44 +28,44 @@
#endif #endif
#define f39(o,b,x,t) _f39(_jit,o,b,x,t) #define f39(o,b,x,t) _f39(_jit,o,b,x,t)
static void _f39(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); static void _f39(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
#define f40(o,b,x,r) _f40(_jit,o,b,x,r) #define f40(o,b,x,r) _f40(_jit,o,b,x,r)
static void _f40(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t) static void _f40(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_int32_t)
maybe_unused; maybe_unused;
#define f41(o,b,x,t) _f41(_jit,o,b,x,t) #define f41(o,b,x,t) _f41(_jit,o,b,x,t)
static void _f41(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); static void _f41(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
#define f42(o,b,i,r) _f42(_jit,o,b,i,r) #define f42(o,b,i,r) _f42(_jit,o,b,i,r)
static void _f42(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); static void _f42(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
#define f43(o,b,t,i) f1(o,b,t,i) #define f43(o,b,t,i) f1(o,b,t,i)
#define f45(o,r,a,b,fmt,c,d,e,t) _f45(_jit,o,r,a,b,fmt,c,d,e,t) #define f45(o,r,a,b,fmt,c,d,e,t) _f45(_jit,o,r,a,b,fmt,c,d,e,t)
static void _f45(jit_state_t*,jit_int32_t, static void _f45(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t, int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused; int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
#define f46(o,r,a,s,df,sf,b,c,d,t) _f46(_jit,o,r,a,s,df,sf,b,c,d,t) #define f46(o,r,a,s,df,sf,b,c,d,t) _f46(_jit,o,r,a,s,df,sf,b,c,d,t)
static void _f46(jit_state_t*,jit_int32_t,jit_int32_t, static void _f46(jit_state_t*,int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t, int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
#define f47(o,r1,r2,a,fmt,b,c,d,t) f47_48(o,r1,r2,a,fmt,b,c,d,t) #define f47(o,r1,r2,a,fmt,b,c,d,t) f47_48(o,r1,r2,a,fmt,b,c,d,t)
#define f48(o,r1,r2,a,fmt,b,c,d,t) f47_48(o,r1,r2,a,fmt,b,c,d,t) #define f48(o,r1,r2,a,fmt,b,c,d,t) f47_48(o,r1,r2,a,fmt,b,c,d,t)
#define f47_48(o,r1,r2,y,fmt,b,c,d,t) _f47_48(_jit,o,r1,r2,y,fmt,b,c,d,t) #define f47_48(o,r1,r2,y,fmt,b,c,d,t) _f47_48(_jit,o,r1,r2,y,fmt,b,c,d,t)
static void _f47_48(jit_state_t*,jit_int32_t, static void _f47_48(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t, int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
#define f49(o,r,a,b,c,f,d,e,g,h,i,t) f49_52(o,r,a,b,c,f,d,e,g,h,i,t) #define f49(o,r,a,b,c,f,d,e,g,h,i,t) f49_52(o,r,a,b,c,f,d,e,g,h,i,t)
#define f51(o,r1,r2,y,a,f,b,d,e,g,h,c) f49_52(o,r1,r2,y,a,f,b,d,e,g,h,c) #define f51(o,r1,r2,y,a,f,b,d,e,g,h,c) f49_52(o,r1,r2,y,a,f,b,d,e,g,h,c)
#define f52(o,r1,r2,a,b,f,c,d,e,g,h,t) f49_52(o,r1,r2,a,b,f,c,d,e,g,h,t) #define f52(o,r1,r2,a,b,f,c,d,e,g,h,t) f49_52(o,r1,r2,a,b,f,c,d,e,g,h,t)
#define f49_52(o,r1,r2,y,v,f,a,b,u,c,d,t) _f49_52(_jit,o,r1,r2,y,v,f,a,b,u,c,d,t) #define f49_52(o,r1,r2,y,v,f,a,b,u,c,d,t) _f49_52(_jit,o,r1,r2,y,v,f,a,b,u,c,d,t)
static void _f49_52(jit_state_t*,jit_int32_t, static void _f49_52(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_int32_t, int32_t,jit_int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t, int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
#define f53(o,r1,r2,ta,ra,f,tm) _f53(_jit,o,r1,r2,ta,ra,f,tm) #define f53(o,r1,r2,ta,ra,f,tm) _f53(_jit,o,r1,r2,ta,ra,f,tm)
static void _f53(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t, static void _f53(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused; int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
#define f54(o,r1,r2,a,b,f,c,d,e,g,t) _f54(_jit,o,r1,r2,a,b,f,c,d,e,g,t) #define f54(o,r1,r2,a,b,f,c,d,e,g,t) _f54(_jit,o,r1,r2,a,b,f,c,d,e,g,t)
static void _f54(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t, static void _f54(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t, int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused; int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
#define FABS_(f,r,t) f49(0xe,r,0,3,0,f,0,0,0,0,0,t) #define FABS_(f,r,t) f49(0xe,r,0,3,0,f,0,0,0,0,0,t)
#define FABS_S(r,t) FABS_(0,r,t) #define FABS_S(r,t) FABS_(0,r,t)
#define FABS_D(r,t) FABS_(1,r,t) #define FABS_D(r,t) FABS_(1,r,t)
@ -271,67 +271,67 @@ static void _f54(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,
#define sqrtr_f(r0,r1) FSQRT_S(r1,r0) #define sqrtr_f(r0,r1) FSQRT_S(r1,r0)
#define sqrtr_d(r0,r1) FSQRT_D(r1,r0) #define sqrtr_d(r0,r1) FSQRT_D(r1,r0)
#define extr_f(r0,r1) _extr_f(_jit,r0,r1) #define extr_f(r0,r1) _extr_f(_jit,r0,r1)
static void _extr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _extr_f(jit_state_t*,int32_t,jit_int32_t);
#define extr_d(r0,r1) _extr_d(_jit,r0,r1) #define extr_d(r0,r1) _extr_d(_jit,r0,r1)
static void _extr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _extr_d(jit_state_t*,int32_t,jit_int32_t);
#define extr_f_d(r0,r1) FCNVFF_S_D(r1,r0) #define extr_f_d(r0,r1) FCNVFF_S_D(r1,r0)
#define extr_d_f(r0,r1) FCNVFF_D_S(r1,r0) #define extr_d_f(r0,r1) FCNVFF_D_S(r1,r0)
#define truncr_f(r0,r1) truncr_f_i(r0,r1) #define truncr_f(r0,r1) truncr_f_i(r0,r1)
#define truncr_f_i(r0,r1) _truncr_f_i(_jit,r0,r1) #define truncr_f_i(r0,r1) _truncr_f_i(_jit,r0,r1)
static void _truncr_f_i(jit_state_t*,jit_int32_t,jit_int32_t); static void _truncr_f_i(jit_state_t*,int32_t,jit_int32_t);
#define truncr_d(r0,r1) truncr_d_i(r0,r1) #define truncr_d(r0,r1) truncr_d_i(r0,r1)
#define truncr_d_i(r0,r1) _truncr_d_i(_jit,r0,r1) #define truncr_d_i(r0,r1) _truncr_d_i(_jit,r0,r1)
static void _truncr_d_i(jit_state_t*,jit_int32_t,jit_int32_t); static void _truncr_d_i(jit_state_t*,int32_t,jit_int32_t);
#define movr_f(r0,r1) FCPY_S(r1,r0) #define movr_f(r0,r1) FCPY_S(r1,r0)
#define movi_f(r0,i0) _movi_f(_jit,r0,i0) #define movi_f(r0,i0) _movi_f(_jit,r0,i0)
static void _movi_f(jit_state_t*,jit_int32_t,jit_float32_t*); static void _movi_f(jit_state_t*,int32_t,jit_float32_t*);
#define movr_d(r0,r1) FCPY_D(r1,r0) #define movr_d(r0,r1) FCPY_D(r1,r0)
#define movi_d(r0,i0) _movi_d(_jit,r0,i0) #define movi_d(r0,i0) _movi_d(_jit,r0,i0)
static void _movi_d(jit_state_t*,jit_int32_t,jit_float64_t*); static void _movi_d(jit_state_t*,int32_t,jit_float64_t*);
#define absr_f(r0,r1) FABS_S(r1,r0) #define absr_f(r0,r1) FABS_S(r1,r0)
#define absr_d(r0,r1) FABS_D(r1,r0) #define absr_d(r0,r1) FABS_D(r1,r0)
#define addr_f(r0,r1,r2) FADD_S(r1,r2,r0) #define addr_f(r0,r1,r2) FADD_S(r1,r2,r0)
#define addi_f(r0,r1,i0) _addi_f(_jit,r0,r1,i0) #define addi_f(r0,r1,i0) _addi_f(_jit,r0,r1,i0)
static void _addi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _addi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define addr_d(r0,r1,r2) FADD_D(r1,r2,r0) #define addr_d(r0,r1,r2) FADD_D(r1,r2,r0)
#define addi_d(r0,r1,i0) _addi_d(_jit,r0,r1,i0) #define addi_d(r0,r1,i0) _addi_d(_jit,r0,r1,i0)
static void _addi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _addi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define subr_f(r0,r1,r2) FSUB_S(r1,r2,r0) #define subr_f(r0,r1,r2) FSUB_S(r1,r2,r0)
#define subi_f(r0,r1,i0) _subi_f(_jit,r0,r1,i0) #define subi_f(r0,r1,i0) _subi_f(_jit,r0,r1,i0)
static void _subi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _subi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define subr_d(r0,r1,r2) FSUB_D(r1,r2,r0) #define subr_d(r0,r1,r2) FSUB_D(r1,r2,r0)
#define subi_d(r0,r1,i0) _subi_d(_jit,r0,r1,i0) #define subi_d(r0,r1,i0) _subi_d(_jit,r0,r1,i0)
static void _subi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _subi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define rsbr_f(r0,r1,r2) subr_f(r0,r2,r1) #define rsbr_f(r0,r1,r2) subr_f(r0,r2,r1)
#define rsbi_f(r0,r1,i0) _rsbi_f(_jit,r0,r1,i0) #define rsbi_f(r0,r1,i0) _rsbi_f(_jit,r0,r1,i0)
static void _rsbi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _rsbi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define rsbr_d(r0,r1,r2) subr_d(r0,r2,r1) #define rsbr_d(r0,r1,r2) subr_d(r0,r2,r1)
#define rsbi_d(r0,r1,i0) _rsbi_d(_jit,r0,r1,i0) #define rsbi_d(r0,r1,i0) _rsbi_d(_jit,r0,r1,i0)
static void _rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _rsbi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define mulr_f(r0,r1,r2) FMPY_S(r1,r2,r0) #define mulr_f(r0,r1,r2) FMPY_S(r1,r2,r0)
#define muli_f(r0,r1,i0) _muli_f(_jit,r0,r1,i0) #define muli_f(r0,r1,i0) _muli_f(_jit,r0,r1,i0)
static void _muli_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _muli_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define mulr_d(r0,r1,r2) FMPY_D(r1,r2,r0) #define mulr_d(r0,r1,r2) FMPY_D(r1,r2,r0)
#define muli_d(r0,r1,i0) _muli_d(_jit,r0,r1,i0) #define muli_d(r0,r1,i0) _muli_d(_jit,r0,r1,i0)
static void _muli_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _muli_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define divr_f(r0,r1,r2) FDIV_S(r1,r2,r0) #define divr_f(r0,r1,r2) FDIV_S(r1,r2,r0)
#define divi_f(r0,r1,i0) _divi_f(_jit,r0,r1,i0) #define divi_f(r0,r1,i0) _divi_f(_jit,r0,r1,i0)
static void _divi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _divi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define divr_d(r0,r1,r2) FDIV_D(r1,r2,r0) #define divr_d(r0,r1,r2) FDIV_D(r1,r2,r0)
#define divi_d(r0,r1,i0) _divi_d(_jit,r0,r1,i0) #define divi_d(r0,r1,i0) _divi_d(_jit,r0,r1,i0)
static void _divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _divi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define cmpr_f(c,r0,r1,r2) _cmpr_f(_jit,c,r0,r1,r2) #define cmpr_f(c,r0,r1,r2) _cmpr_f(_jit,c,r0,r1,r2)
static void _cmpr_f(jit_state_t*,jit_word_t, static void _cmpr_f(jit_state_t*,jit_word_t,
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
#define cmpi_f(c,r0,r1,i0) _cmpi_f(_jit,c,r0,r1,i0) #define cmpi_f(c,r0,r1,i0) _cmpi_f(_jit,c,r0,r1,i0)
static void _cmpi_f(jit_state_t*,jit_word_t, static void _cmpi_f(jit_state_t*,jit_word_t,
jit_int32_t,jit_int32_t,jit_float32_t*); int32_t,jit_int32_t,jit_float32_t*);
#define cmpr_d(c,r0,r1,r2) _cmpr_d(_jit,c,r0,r1,r2) #define cmpr_d(c,r0,r1,r2) _cmpr_d(_jit,c,r0,r1,r2)
static void _cmpr_d(jit_state_t*,jit_word_t, static void _cmpr_d(jit_state_t*,jit_word_t,
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
#define cmpi_d(c,r0,r1,i0) _cmpi_d(_jit,c,r0,r1,i0) #define cmpi_d(c,r0,r1,i0) _cmpi_d(_jit,c,r0,r1,i0)
static void _cmpi_d(jit_state_t*,jit_word_t, static void _cmpi_d(jit_state_t*,jit_word_t,
jit_int32_t,jit_int32_t,jit_float64_t*); int32_t,jit_int32_t,jit_float64_t*);
#define ltr_f(r0,r1,r2) cmpr_f(FCMP_LT,r0,r1,r2) #define ltr_f(r0,r1,r2) cmpr_f(FCMP_LT,r0,r1,r2)
#define lti_f(r0,r1,i0) cmpi_f(FCMP_LT,r0,r1,i0) #define lti_f(r0,r1,i0) cmpi_f(FCMP_LT,r0,r1,i0)
#define ltr_d(r0,r1,r2) cmpr_d(FCMP_LT,r0,r1,r2) #define ltr_d(r0,r1,r2) cmpr_d(FCMP_LT,r0,r1,r2)
@ -390,47 +390,47 @@ static void _cmpi_d(jit_state_t*,jit_word_t,
#define unordi_d(r0,r1,i0) cmpi_d(FCMP_UNORD,r0,r1,i0) #define unordi_d(r0,r1,i0) cmpi_d(FCMP_UNORD,r0,r1,i0)
#define ldr_f(r0,r1) FLDWI(0,r1,r0) #define ldr_f(r0,r1) FLDWI(0,r1,r0)
#define ldi_f(r0,i0) _ldi_f(_jit,r0,i0) #define ldi_f(r0,i0) _ldi_f(_jit,r0,i0)
static void _ldi_f(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_f(jit_state_t*,int32_t,jit_word_t);
#define ldxr_f(r0,r1,r2) FLDW(r2,r1,r0) #define ldxr_f(r0,r1,r2) FLDW(r2,r1,r0)
#define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0) #define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0)
static void _ldxi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_f(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
#define ldr_d(r0,r1) FLDDI(0,r1,r0) #define ldr_d(r0,r1) FLDDI(0,r1,r0)
#define ldi_d(r0,i0) _ldi_d(_jit,r0,i0) #define ldi_d(r0,i0) _ldi_d(_jit,r0,i0)
static void _ldi_d(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_d(jit_state_t*,int32_t,jit_word_t);
#define ldxr_d(r0,r1,r2) FLDD(r2,r1,r0) #define ldxr_d(r0,r1,r2) FLDD(r2,r1,r0)
#define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0) #define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0)
static void _ldxi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_d(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
#define str_f(r0,r1) FSTWI(r1,0,r0) #define str_f(r0,r1) FSTWI(r1,0,r0)
#define sti_f(i0,r0) _sti_f(_jit,i0,r0) #define sti_f(i0,r0) _sti_f(_jit,i0,r0)
static void _sti_f(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_f(jit_state_t*,jit_word_t,int32_t);
#if FSTXR #if FSTXR
# define stxr_f(r0,r1,r2) FSTW(r2,r1,r0) # define stxr_f(r0,r1,r2) FSTW(r2,r1,r0)
# define stxr_d(r0,r1,r2) FSTD(r2,r1,r0) # define stxr_d(r0,r1,r2) FSTD(r2,r1,r0)
#else #else
# define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2) # define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2)
static void _stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2) # define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2)
static void _stxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#endif #endif
#define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1) #define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1)
static void _stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define str_d(r0,r1) FSTDI(r1,0,r0) #define str_d(r0,r1) FSTDI(r1,0,r0)
#define sti_d(i0,r0) _sti_d(_jit,i0,r0) #define sti_d(i0,r0) _sti_d(_jit,i0,r0)
static void _sti_d(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_d(jit_state_t*,jit_word_t,int32_t);
#define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1) #define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1)
static void _stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bcmpr_f(c,i0,r0,r1) _bcmpr_f(_jit,c,i0,r0,r1) #define bcmpr_f(c,i0,r0,r1) _bcmpr_f(_jit,c,i0,r0,r1)
static jit_word_t _bcmpr_f(jit_state_t*,jit_word_t, static jit_word_t _bcmpr_f(jit_state_t*,jit_word_t,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
#define bcmpi_f(c,i0,r0,i1) _bcmpi_f(_jit,c,i0,r0,i1) #define bcmpi_f(c,i0,r0,i1) _bcmpi_f(_jit,c,i0,r0,i1)
static jit_word_t _bcmpi_f(jit_state_t*,jit_word_t, static jit_word_t _bcmpi_f(jit_state_t*,jit_word_t,
jit_word_t,jit_int32_t,jit_float32_t*); jit_word_t,int32_t,jit_float32_t*);
#define bcmpr_d(c,i0,r0,r1) _bcmpr_d(_jit,c,i0,r0,r1) #define bcmpr_d(c,i0,r0,r1) _bcmpr_d(_jit,c,i0,r0,r1)
static jit_word_t _bcmpr_d(jit_state_t*,jit_word_t, static jit_word_t _bcmpr_d(jit_state_t*,jit_word_t,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
#define bcmpi_d(c,i0,r0,i1) _bcmpi_d(_jit,c,i0,r0,i1) #define bcmpi_d(c,i0,r0,i1) _bcmpi_d(_jit,c,i0,r0,i1)
static jit_word_t _bcmpi_d(jit_state_t*,jit_word_t, static jit_word_t _bcmpi_d(jit_state_t*,jit_word_t,
jit_word_t,jit_int32_t,jit_float64_t*); jit_word_t,int32_t,jit_float64_t*);
#define bltr_f(i0,r0,r1) bcmpr_f(FCMP_LT,i0,r0,r1) #define bltr_f(i0,r0,r1) bcmpr_f(FCMP_LT,i0,r0,r1)
#define blti_f(i0,r0,i1) bcmpi_f(FCMP_LT,i0,r0,i1) #define blti_f(i0,r0,i1) bcmpi_f(FCMP_LT,i0,r0,i1)
#define bltr_d(i0,r0,r1) bcmpr_d(FCMP_LT,i0,r0,r1) #define bltr_d(i0,r0,r1) bcmpr_d(FCMP_LT,i0,r0,r1)
@ -488,13 +488,13 @@ static jit_word_t _bcmpi_d(jit_state_t*,jit_word_t,
#define bunordr_d(i0,r0,r1) bcmpr_d(FCMP_UNORD,i0,r0,r1) #define bunordr_d(i0,r0,r1) bcmpr_d(FCMP_UNORD,i0,r0,r1)
#define bunordi_d(i0,r0,i1) bcmpi_d(FCMP_UNORD,i0,r0,i1) #define bunordi_d(i0,r0,i1) bcmpi_d(FCMP_UNORD,i0,r0,i1)
#define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1) #define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1)
static void _vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _vaarg_d(jit_state_t*, int32_t, jit_int32_t);
#endif #endif
#if CODE #if CODE
static void static void
_f39(jit_state_t *_jit, jit_int32_t o, _f39(jit_state_t *_jit, int32_t o,
jit_int32_t b, jit_int32_t x, jit_int32_t t) int32_t b, jit_int32_t x, jit_int32_t t)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(b & ~0x1f)); assert(!(b & ~0x1f));
@ -504,8 +504,8 @@ _f39(jit_state_t *_jit, jit_int32_t o,
} }
static void static void
_f40(jit_state_t *_jit, jit_int32_t o, _f40(jit_state_t *_jit, int32_t o,
jit_int32_t b, jit_int32_t x, jit_int32_t r) int32_t b, jit_int32_t x, jit_int32_t r)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(b & ~0x1f)); assert(!(b & ~0x1f));
@ -515,8 +515,8 @@ _f40(jit_state_t *_jit, jit_int32_t o,
} }
static void static void
_f41(jit_state_t *_jit, jit_int32_t o, _f41(jit_state_t *_jit, int32_t o,
jit_int32_t b, jit_int32_t x, jit_int32_t t) int32_t b, jit_int32_t x, jit_int32_t t)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(b & ~0x1f)); assert(!(b & ~0x1f));
@ -526,8 +526,8 @@ _f41(jit_state_t *_jit, jit_int32_t o,
} }
static void static void
_f42(jit_state_t *_jit, jit_int32_t o, _f42(jit_state_t *_jit, int32_t o,
jit_int32_t b, jit_int32_t i, jit_int32_t r) int32_t b, jit_int32_t i, jit_int32_t r)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(b & ~0x1f)); assert(!(b & ~0x1f));
@ -537,9 +537,9 @@ _f42(jit_state_t *_jit, jit_int32_t o,
} }
static void static void
_f45(jit_state_t *_jit, jit_int32_t o, _f45(jit_state_t *_jit, int32_t o,
jit_int32_t r, jit_int32_t a, jit_int32_t b, jit_int32_t fmt, int32_t r, jit_int32_t a, jit_int32_t b, jit_int32_t fmt,
jit_int32_t c, jit_int32_t d, jit_int32_t e, jit_int32_t t) int32_t c, jit_int32_t d, jit_int32_t e, jit_int32_t t)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(r & ~0x1f)); assert(!(r & ~0x1f));
@ -554,9 +554,9 @@ _f45(jit_state_t *_jit, jit_int32_t o,
} }
static void static void
_f46(jit_state_t *_jit, jit_int32_t o, jit_int32_t r, _f46(jit_state_t *_jit, int32_t o, jit_int32_t r,
jit_int32_t a, jit_int32_t s, jit_int32_t df, jit_int32_t sf, int32_t a, jit_int32_t s, jit_int32_t df, jit_int32_t sf,
jit_int32_t b, jit_int32_t c, jit_int32_t d, jit_int32_t t) int32_t b, jit_int32_t c, jit_int32_t d, jit_int32_t t)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(r & ~0x1f)); assert(!(r & ~0x1f));
@ -573,9 +573,9 @@ _f46(jit_state_t *_jit, jit_int32_t o, jit_int32_t r,
} }
static void static void
_f47_48(jit_state_t *_jit, jit_int32_t o, _f47_48(jit_state_t *_jit, int32_t o,
jit_int32_t r2, jit_int32_t r1, jit_int32_t y, jit_int32_t fmt, int32_t r2, jit_int32_t r1, jit_int32_t y, jit_int32_t fmt,
jit_int32_t a, jit_int32_t b, jit_int32_t c, jit_int32_t t) int32_t a, jit_int32_t b, jit_int32_t c, jit_int32_t t)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(r2 & ~0x1f)); assert(!(r2 & ~0x1f));
@ -590,10 +590,10 @@ _f47_48(jit_state_t *_jit, jit_int32_t o,
} }
static void static void
_f49_52(jit_state_t *_jit, jit_int32_t o, _f49_52(jit_state_t *_jit, int32_t o,
jit_int32_t r1, jit_int32_t r2, jit_int32_t y, int32_t r1, jit_int32_t r2, jit_int32_t y,
jit_int32_t v, jit_int32_t f, jit_int32_t a, jit_int32_t b, int32_t v, jit_int32_t f, jit_int32_t a, jit_int32_t b,
jit_int32_t u, jit_int32_t c, jit_int32_t d, jit_int32_t t) int32_t u, jit_int32_t c, jit_int32_t d, jit_int32_t t)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(r1 & ~0x1f)); assert(!(r1 & ~0x1f));
@ -612,8 +612,8 @@ _f49_52(jit_state_t *_jit, jit_int32_t o,
} }
static void static void
_f53(jit_state_t *_jit, jit_int32_t o, jit_int32_t r1, jit_int32_t r2, _f53(jit_state_t *_jit, int32_t o, jit_int32_t r1, jit_int32_t r2,
jit_int32_t ta, jit_int32_t ra, jit_int32_t f, jit_int32_t tm) int32_t ta, jit_int32_t ra, jit_int32_t f, jit_int32_t tm)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(r1 & ~0x1f)); assert(!(r1 & ~0x1f));
@ -629,9 +629,9 @@ _f53(jit_state_t *_jit, jit_int32_t o, jit_int32_t r1, jit_int32_t r2,
} }
static void static void
_f54(jit_state_t *_jit, jit_int32_t o, jit_int32_t r1, jit_int32_t r2, _f54(jit_state_t *_jit, int32_t o, jit_int32_t r1, jit_int32_t r2,
jit_int32_t a, jit_int32_t b, jit_int32_t f, jit_int32_t c, int32_t a, jit_int32_t b, jit_int32_t f, jit_int32_t c,
jit_int32_t d, jit_int32_t e, jit_int32_t g, jit_int32_t t) int32_t d, jit_int32_t e, jit_int32_t g, jit_int32_t t)
{ {
assert(!(o & ~0x3f)); assert(!(o & ~0x3f));
assert(!(r1 & ~0x1f)); assert(!(r1 & ~0x1f));
@ -649,7 +649,7 @@ _f54(jit_state_t *_jit, jit_int32_t o, jit_int32_t r1, jit_int32_t r2,
} }
static void static void
_extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _extr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
stxi(alloca_offset - 8, _FP_REGNO, r1); stxi(alloca_offset - 8, _FP_REGNO, r1);
ldxi_f(r0, _FP_REGNO, alloca_offset - 8); ldxi_f(r0, _FP_REGNO, alloca_offset - 8);
@ -657,7 +657,7 @@ _extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _extr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
stxi(alloca_offset - 8, _FP_REGNO, r1); stxi(alloca_offset - 8, _FP_REGNO, r1);
ldxi_f(r0, _FP_REGNO, alloca_offset - 8); ldxi_f(r0, _FP_REGNO, alloca_offset - 8);
@ -665,9 +665,9 @@ _extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_truncr_f_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_f_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
FCNVXT_S_S(r1, rn(reg)); FCNVXT_S_S(r1, rn(reg));
stxi_f(alloca_offset - 8, _FP_REGNO, rn(reg)); stxi_f(alloca_offset - 8, _FP_REGNO, rn(reg));
@ -676,9 +676,9 @@ _truncr_f_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_d_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
FCNVXT_D_S(r1, rn(reg)); FCNVXT_D_S(r1, rn(reg));
stxi_d(alloca_offset - 8, _FP_REGNO, rn(reg)); stxi_d(alloca_offset - 8, _FP_REGNO, rn(reg));
@ -687,13 +687,13 @@ _truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0) _movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t *i0)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_int32_t reg; int32_t reg;
if (_jitc->no_data) { if (_jitc->no_data) {
data.f = *i0; data.f = *i0;
@ -708,14 +708,14 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
} }
static void static void
_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0) _movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t *i0)
{ {
union { union {
jit_int32_t ii[2]; int32_t ii[2];
jit_word_t w; jit_word_t w;
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_int32_t reg; int32_t reg;
data.d = *i0; data.d = *i0;
if (_jitc->no_data) { if (_jitc->no_data) {
@ -735,10 +735,10 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
#define fpr_opi(name, type, size) \ #define fpr_opi(name, type, size) \
static void \ static void \
_##name##i_##type(jit_state_t *_jit, \ _##name##i_##type(jit_state_t *_jit, \
jit_int32_t r0, jit_int32_t r1, \ int32_t r0, jit_int32_t r1, \
jit_float##size##_t *i0) \ jit_float##size##_t *i0) \
{ \ { \
jit_int32_t reg = jit_get_reg(jit_class_fpr); \ int32_t reg = jit_get_reg(jit_class_fpr); \
movi_##type(rn(reg), i0); \ movi_##type(rn(reg), i0); \
name##r_##type(r0, r1, rn(reg)); \ name##r_##type(r0, r1, rn(reg)); \
jit_unget_reg(reg); \ jit_unget_reg(reg); \
@ -759,7 +759,7 @@ dopi(div)
static void static void
_cmpr_f(jit_state_t *_jit, jit_word_t c, _cmpr_f(jit_state_t *_jit, jit_word_t c,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
LDI(0, r0); LDI(0, r0);
FCMP_S_(r1, r2, c); FCMP_S_(r1, r2, c);
@ -769,9 +769,9 @@ _cmpr_f(jit_state_t *_jit, jit_word_t c,
static void static void
_cmpi_f(jit_state_t *_jit, jit_word_t c, _cmpi_f(jit_state_t *_jit, jit_word_t c,
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0) int32_t r0, jit_int32_t r1, jit_float32_t *i0)
{ {
jit_int32_t reg = jit_get_reg(jit_class_fpr); int32_t reg = jit_get_reg(jit_class_fpr);
movi_f(rn(reg), i0); movi_f(rn(reg), i0);
cmpr_f(c, r0, r1, rn(reg)); cmpr_f(c, r0, r1, rn(reg));
jit_unget_reg(reg); jit_unget_reg(reg);
@ -779,7 +779,7 @@ _cmpi_f(jit_state_t *_jit, jit_word_t c,
static void static void
_cmpr_d(jit_state_t *_jit, jit_word_t c, _cmpr_d(jit_state_t *_jit, jit_word_t c,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
LDI(0, r0); LDI(0, r0);
FCMP_D_(r1, r2, c); FCMP_D_(r1, r2, c);
@ -789,18 +789,18 @@ _cmpr_d(jit_state_t *_jit, jit_word_t c,
static void static void
_cmpi_d(jit_state_t *_jit, jit_word_t c, _cmpi_d(jit_state_t *_jit, jit_word_t c,
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0) int32_t r0, jit_int32_t r1, jit_float64_t *i0)
{ {
jit_int32_t reg = jit_get_reg(jit_class_fpr); int32_t reg = jit_get_reg(jit_class_fpr);
movi_d(rn(reg), i0); movi_d(rn(reg), i0);
cmpr_d(c, r0, r1, rn(reg)); cmpr_d(c, r0, r1, rn(reg));
jit_unget_reg(reg); jit_unget_reg(reg);
} }
static void static void
_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
assert(!(i0 & 3)); assert(!(i0 & 3));
if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 6)) if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 6))
FLDWL(i0, _R0_REGNO, r0); FLDWL(i0, _R0_REGNO, r0);
@ -813,9 +813,9 @@ _ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (i0 >= -16 && i0 <= 15) if (i0 >= -16 && i0 <= 15)
FLDWI(i0, r1, r0); FLDWI(i0, r1, r0);
/* |im11a|0|t|i| */ /* |im11a|0|t|i| */
@ -830,9 +830,9 @@ _ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
assert(!(i0 & 7)); assert(!(i0 & 7));
if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 14)) if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 14))
FLDDL(i0, _R0_REGNO, r0); FLDDL(i0, _R0_REGNO, r0);
@ -845,9 +845,9 @@ _ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (i0 >= -16 && i0 <= 15) if (i0 >= -16 && i0 <= 15)
FLDDI(i0, r1, r0); FLDDI(i0, r1, r0);
/* |im10a|m|a|1|i| */ /* |im10a|m|a|1|i| */
@ -862,9 +862,9 @@ _ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
assert(!(i0 & 3)); assert(!(i0 & 3));
if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 6)) if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 6))
FSTWL(r0, i0, _R0_REGNO); FSTWL(r0, i0, _R0_REGNO);
@ -878,9 +878,9 @@ _sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
#if !FSTXR #if !FSTXR
static void static void
_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1); addr(rn(reg), r0, r1);
str_f(rn(reg), r2); str_f(rn(reg), r2);
@ -888,9 +888,9 @@ _stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1); addr(rn(reg), r0, r1);
str_d(rn(reg), r2); str_d(rn(reg), r2);
@ -899,9 +899,9 @@ _stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
#endif #endif
static void static void
_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (i0 >= -16 && i0 <= 15) if (i0 >= -16 && i0 <= 15)
FSTWI(r1, i0, r0); FSTWI(r1, i0, r0);
/* |im11a|0|t|i| */ /* |im11a|0|t|i| */
@ -921,9 +921,9 @@ _stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
assert(!(i0 & 7)); assert(!(i0 & 7));
if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 14)) if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 14))
FSTDL(r0, i0, _R0_REGNO); FSTDL(r0, i0, _R0_REGNO);
@ -936,9 +936,9 @@ _sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (i0 >= -16 && i0 <= 15) if (i0 >= -16 && i0 <= 15)
FSTDI(r1, i0, r0); FSTDI(r1, i0, r0);
/* |im10a|m|a|1|i| */ /* |im10a|m|a|1|i| */
@ -959,7 +959,7 @@ _stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
static jit_word_t static jit_word_t
_bcmpr_f(jit_state_t *_jit, jit_word_t c, _bcmpr_f(jit_state_t *_jit, jit_word_t c,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_S_(r0, r1, c); FCMP_S_(r0, r1, c);
@ -972,10 +972,10 @@ _bcmpr_f(jit_state_t *_jit, jit_word_t c,
static jit_word_t static jit_word_t
_bcmpi_f(jit_state_t *_jit, jit_word_t c, _bcmpi_f(jit_state_t *_jit, jit_word_t c,
jit_word_t i0, jit_int32_t r0, jit_float32_t *i1) jit_word_t i0, int32_t r0, jit_float32_t *i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill); reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi_f(rn(reg), i1); movi_f(rn(reg), i1);
FCMP_S_(r0, rn(reg), c); FCMP_S_(r0, rn(reg), c);
@ -989,7 +989,7 @@ _bcmpi_f(jit_state_t *_jit, jit_word_t c,
static jit_word_t static jit_word_t
_bcmpr_d(jit_state_t *_jit, jit_word_t c, _bcmpr_d(jit_state_t *_jit, jit_word_t c,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_D_(r0, r1, c); FCMP_D_(r0, r1, c);
@ -1002,10 +1002,10 @@ _bcmpr_d(jit_state_t *_jit, jit_word_t c,
static jit_word_t static jit_word_t
_bcmpi_d(jit_state_t *_jit, jit_word_t c, _bcmpi_d(jit_state_t *_jit, jit_word_t c,
jit_word_t i0, jit_int32_t r0, jit_float64_t *i1) jit_word_t i0, int32_t r0, jit_float64_t *i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill); reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi_d(rn(reg), i1); movi_d(rn(reg), i1);
FCMP_D_(r0, rn(reg), c); FCMP_D_(r0, rn(reg), c);
@ -1018,9 +1018,9 @@ _bcmpi_d(jit_state_t *_jit, jit_word_t c,
} }
static void static void
_vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _vaarg_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function->self.call & jit_call_varargs); assert(_jitc->function->self.call & jit_call_varargs);

View file

@ -141,7 +141,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -161,7 +161,7 @@ _jit_prolog(jit_state_t *_jit)
_jitc->function->self.aoff = alloca_offset; _jitc->function->self.aoff = alloca_offset;
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -180,10 +180,10 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
switch (length) { switch (length) {
case 0: case 1: case 0: case 1:
@ -208,13 +208,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -240,7 +240,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
jit_movr(JIT_RET, u); jit_movr(JIT_RET, u);
@ -258,7 +258,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
jit_movr_f(JIT_FRET, u); jit_movr_f(JIT_FRET, u);
@ -276,7 +276,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
jit_movr_d(JIT_FRET, u); jit_movr_d(JIT_FRET, u);
@ -330,7 +330,7 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
jit_pushargr(u); jit_pushargr(u);
@ -341,7 +341,7 @@ jit_node_t *
_jit_arg(jit_state_t *_jit) _jit_arg(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
_jitc->function->self.size -= sizeof(jit_word_t); _jitc->function->self.size -= sizeof(jit_word_t);
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
@ -358,7 +358,7 @@ jit_node_t *
_jit_arg_f(jit_state_t *_jit) _jit_arg_f(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
_jitc->function->self.size -= sizeof(jit_word_t); _jitc->function->self.size -= sizeof(jit_word_t);
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
@ -375,7 +375,7 @@ jit_node_t *
_jit_arg_d(jit_state_t *_jit) _jit_arg_d(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (_jitc->function->self.argi & 1) { if (_jitc->function->self.argi & 1) {
++_jitc->function->self.argi; ++_jitc->function->self.argi;
@ -399,7 +399,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -411,7 +411,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -423,7 +423,7 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -435,7 +435,7 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -447,7 +447,7 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -459,7 +459,7 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
@ -473,7 +473,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
if (v->u.w >= 0) if (v->u.w >= 0)
@ -488,7 +488,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(getarg_f, u, v); jit_inc_synth_wp(getarg_f, u, v);
@ -500,7 +500,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -514,7 +514,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
if (v->u.w >= 0) if (v->u.w >= 0)
@ -529,7 +529,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(getarg_d, u, v); jit_inc_synth_wp(getarg_d, u, v);
@ -541,7 +541,7 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
@ -555,7 +555,7 @@ _jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
if (v->u.w >= 0) if (v->u.w >= 0)
@ -570,7 +570,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
@ -588,7 +588,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi(jit_state_t *_jit, jit_word_t u) _jit_pushargi(jit_state_t *_jit, jit_word_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargi, u); jit_inc_synth_w(pushargi, u);
jit_link_prepare(); jit_link_prepare();
@ -607,7 +607,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_f, u); jit_inc_synth_w(pushargr_f, u);
@ -634,7 +634,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_f(pushargi_f, u); jit_inc_synth_f(pushargi_f, u);
jit_link_prepare(); jit_link_prepare();
@ -663,7 +663,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_d, u); jit_inc_synth_w(pushargr_d, u);
@ -700,7 +700,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_d(pushargi_d, u); jit_inc_synth_d(pushargi_d, u);
jit_link_prepare(); jit_link_prepare();
@ -737,9 +737,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
jit_int32_t spec; int32_t spec;
spec = jit_class(_rvs[regno].spec); spec = jit_class(_rvs[regno].spec);
if (spec & jit_class_arg) { if (spec & jit_class_arg) {
if (spec & jit_class_gpr) { if (spec & jit_class_gpr) {
@ -757,7 +757,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_node_t *call; jit_node_t *call;
assert(_jitc->function); assert(_jitc->function);
@ -788,7 +788,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_c, r0); jit_inc_synth_w(retval_c, r0);
jit_extr_c(r0, JIT_RET); jit_extr_c(r0, JIT_RET);
@ -796,7 +796,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_uc, r0); jit_inc_synth_w(retval_uc, r0);
jit_extr_uc(r0, JIT_RET); jit_extr_uc(r0, JIT_RET);
@ -804,7 +804,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_s, r0); jit_inc_synth_w(retval_s, r0);
jit_extr_s(r0, JIT_RET); jit_extr_s(r0, JIT_RET);
@ -812,7 +812,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_us, r0); jit_inc_synth_w(retval_us, r0);
jit_extr_us(r0, JIT_RET); jit_extr_us(r0, JIT_RET);
@ -820,7 +820,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
jit_movr(r0, JIT_RET); jit_movr(r0, JIT_RET);
@ -828,7 +828,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_f, r0); jit_inc_synth_w(retval_f, r0);
jit_movr_f(r0, JIT_FRET); jit_movr_f(r0, JIT_FRET);
@ -836,7 +836,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_d, r0); jit_inc_synth_w(retval_d, r0);
jit_movr_d(r0, JIT_FRET); jit_movr_d(r0, JIT_FRET);
@ -849,15 +849,15 @@ _emit_code(jit_state_t *_jit)
jit_node_t *node; jit_node_t *node;
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_int32_t value; int32_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_word_t word; jit_word_t word;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
#endif #endif
jit_int32_t patch_offset; int32_t patch_offset;
} undo; } undo;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
@ -1565,7 +1565,7 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_gpr_t r0, jit_fpr_t r1)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) if (node->code == jit_code_movi)

File diff suppressed because it is too large Load diff

View file

@ -432,298 +432,298 @@ static void F16_(jit_state_t*,jit_word_t,
#define movr_f(r0,r1) movr_d(r0,r1) #define movr_f(r0,r1) movr_d(r0,r1)
#define movr_d(r0,r1) MOVF(r0,r1) #define movr_d(r0,r1) MOVF(r0,r1)
#define movi_f(r0,i0) _movi_f(_jit,r0,i0) #define movi_f(r0,i0) _movi_f(_jit,r0,i0)
static void _movi_f(jit_state_t*,jit_int32_t,jit_float32_t*); static void _movi_f(jit_state_t*,int32_t,jit_float32_t*);
#define movi_d(r0,i0) _movi_d(_jit,r0,i0) #define movi_d(r0,i0) _movi_d(_jit,r0,i0)
static void _movi_d(jit_state_t*,jit_int32_t,jit_float64_t*); static void _movi_d(jit_state_t*,int32_t,jit_float64_t*);
#define movr_w_f(r0,r1) _movr_w_f(_jit,r0,r1) #define movr_w_f(r0,r1) _movr_w_f(_jit,r0,r1)
static void _movr_w_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _movr_w_f(jit_state_t*,int32_t,jit_int32_t);
#define movr_f_w(r0,r1) _movr_f_w(_jit,r0,r1) #define movr_f_w(r0,r1) _movr_f_w(_jit,r0,r1)
static void _movr_f_w(jit_state_t*,jit_int32_t,jit_int32_t); static void _movr_f_w(jit_state_t*,int32_t,jit_int32_t);
#define movr_w_d(r0,r1) _movr_w_d(_jit,r0,r1) #define movr_w_d(r0,r1) _movr_w_d(_jit,r0,r1)
static void _movr_w_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _movr_w_d(jit_state_t*,int32_t,jit_int32_t);
#define movr_d_w(r0,r1) _movr_d_w(_jit,r0,r1) #define movr_d_w(r0,r1) _movr_d_w(_jit,r0,r1)
static void _movr_d_w(jit_state_t*,jit_int32_t,jit_int32_t); static void _movr_d_w(jit_state_t*,int32_t,jit_int32_t);
#define movi_f_w(r0,i0) _movi_f_w(_jit,r0,i0) #define movi_f_w(r0,i0) _movi_f_w(_jit,r0,i0)
static void _movi_f_w(jit_state_t*,jit_int32_t,jit_float32_t*); static void _movi_f_w(jit_state_t*,int32_t,jit_float32_t*);
#define movi_d_w(r0,i0) _movi_d_w(_jit,r0,i0) #define movi_d_w(r0,i0) _movi_d_w(_jit,r0,i0)
static void _movi_d_w(jit_state_t*,jit_int32_t,jit_float64_t*); static void _movi_d_w(jit_state_t*,int32_t,jit_float64_t*);
#define absr_f(r0,r1) absr_d(r0,r1) #define absr_f(r0,r1) absr_d(r0,r1)
#define absr_d(r0,r1) FABS(r0,r1) #define absr_d(r0,r1) FABS(r0,r1)
#define negr_f(r0,r1) negr_d(r0,r1) #define negr_f(r0,r1) negr_d(r0,r1)
#define negr_d(r0,r1) FNEG(r0,r1) #define negr_d(r0,r1) FNEG(r0,r1)
#define sqrtr_f(r0,r1) _sqrtr_f(_jit,r0,r1) #define sqrtr_f(r0,r1) _sqrtr_f(_jit,r0,r1)
static void _sqrtr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _sqrtr_f(jit_state_t*,int32_t,jit_int32_t);
#define sqrtr_d(r0,r1) _sqrtr_d(_jit,r0,r1) #define sqrtr_d(r0,r1) _sqrtr_d(_jit,r0,r1)
static void _sqrtr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _sqrtr_d(jit_state_t*,int32_t,jit_int32_t);
#define extr_f_d(r0,r1) FNORM_D(r0,r1) #define extr_f_d(r0,r1) FNORM_D(r0,r1)
#define extr_d_f(r0,r1) FNORM_S(r0,r1) #define extr_d_f(r0,r1) FNORM_S(r0,r1)
#define extr_f(r0,r1) _extr_f(_jit,r0,r1) #define extr_f(r0,r1) _extr_f(_jit,r0,r1)
static void _extr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _extr_f(jit_state_t*,int32_t,jit_int32_t);
#define extr_d(r0,r1) _extr_d(_jit,r0,r1) #define extr_d(r0,r1) _extr_d(_jit,r0,r1)
static void _extr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _extr_d(jit_state_t*,int32_t,jit_int32_t);
#define truncr_f_i(r0,r1) truncr_d_l(r0,r1) #define truncr_f_i(r0,r1) truncr_d_l(r0,r1)
#define truncr_d_i(r0,r1) truncr_d_l(r0,r1) #define truncr_d_i(r0,r1) truncr_d_l(r0,r1)
#define truncr_f_l(r0,r1) truncr_d_l(r0,r1) #define truncr_f_l(r0,r1) truncr_d_l(r0,r1)
#define truncr_d_l(r0,r1) _truncr_d_l(_jit,r0,r1) #define truncr_d_l(r0,r1) _truncr_d_l(_jit,r0,r1)
static void _truncr_d_l(jit_state_t*,jit_int32_t,jit_int32_t); static void _truncr_d_l(jit_state_t*,int32_t,jit_int32_t);
#define addr_f(r0,r1,r2) FADD_S(r0,r1,r2) #define addr_f(r0,r1,r2) FADD_S(r0,r1,r2)
#define addi_f(r0,r1,i0) _addi_f(_jit,r0,r1,i0) #define addi_f(r0,r1,i0) _addi_f(_jit,r0,r1,i0)
static void _addi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _addi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define addr_d(r0,r1,r2) FADD_D(r0,r1,r2) #define addr_d(r0,r1,r2) FADD_D(r0,r1,r2)
#define addi_d(r0,r1,i0) _addi_d(_jit,r0,r1,i0) #define addi_d(r0,r1,i0) _addi_d(_jit,r0,r1,i0)
static void _addi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _addi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define subr_f(r0,r1,r2) FSUB_S(r0,r1,r2) #define subr_f(r0,r1,r2) FSUB_S(r0,r1,r2)
#define subi_f(r0,r1,i0) _subi_f(_jit,r0,r1,i0) #define subi_f(r0,r1,i0) _subi_f(_jit,r0,r1,i0)
static void _subi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _subi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define subr_d(r0,r1,r2) FSUB_D(r0,r1,r2) #define subr_d(r0,r1,r2) FSUB_D(r0,r1,r2)
#define subi_d(r0,r1,i0) _subi_d(_jit,r0,r1,i0) #define subi_d(r0,r1,i0) _subi_d(_jit,r0,r1,i0)
static void _subi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _subi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define rsbr_f(r0,r1,r2) subr_f(r0,r2,r1) #define rsbr_f(r0,r1,r2) subr_f(r0,r2,r1)
#define rsbi_f(r0,r1,i0) _rsbi_f(_jit,r0,r1,i0) #define rsbi_f(r0,r1,i0) _rsbi_f(_jit,r0,r1,i0)
static void _rsbi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _rsbi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define rsbr_d(r0,r1,r2) subr_d(r0,r2,r1) #define rsbr_d(r0,r1,r2) subr_d(r0,r2,r1)
#define rsbi_d(r0,r1,i0) _rsbi_d(_jit,r0,r1,i0) #define rsbi_d(r0,r1,i0) _rsbi_d(_jit,r0,r1,i0)
static void _rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _rsbi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define mulr_f(r0,r1,r2) FMPY_S(r0,r1,r2) #define mulr_f(r0,r1,r2) FMPY_S(r0,r1,r2)
#define muli_f(r0,r1,i0) _muli_f(_jit,r0,r1,i0) #define muli_f(r0,r1,i0) _muli_f(_jit,r0,r1,i0)
static void _muli_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _muli_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define mulr_d(r0,r1,r2) FMPY_D(r0,r1,r2) #define mulr_d(r0,r1,r2) FMPY_D(r0,r1,r2)
#define muli_d(r0,r1,i0) _muli_d(_jit,r0,r1,i0) #define muli_d(r0,r1,i0) _muli_d(_jit,r0,r1,i0)
static void _muli_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _muli_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define divr_f(r0,r1,r2) _divr_f(_jit,r0,r1,r2) #define divr_f(r0,r1,r2) _divr_f(_jit,r0,r1,r2)
static void _divr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _divr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define divi_f(r0,r1,i0) _divi_f(_jit,r0,r1,i0) #define divi_f(r0,r1,i0) _divi_f(_jit,r0,r1,i0)
static void _divi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _divi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define divr_d(r0,r1,r2) _divr_d(_jit,r0,r1,r2) #define divr_d(r0,r1,r2) _divr_d(_jit,r0,r1,r2)
static void _divr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _divr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define divi_d(r0,r1,i0) _divi_d(_jit,r0,r1,i0) #define divi_d(r0,r1,i0) _divi_d(_jit,r0,r1,i0)
static void _divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _divi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define ltr_f(r0,r1,r2) ltr_d(r0,r1,r2) #define ltr_f(r0,r1,r2) ltr_d(r0,r1,r2)
#define ltr_d(r0,r1,r2) _ltr_d(_jit,r0,r1,r2) #define ltr_d(r0,r1,r2) _ltr_d(_jit,r0,r1,r2)
static void _ltr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ltr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define lti_f(r0,r1,i0) _lti_f(_jit,r0,r1,i0) #define lti_f(r0,r1,i0) _lti_f(_jit,r0,r1,i0)
static void _lti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _lti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define lti_d(r0,r1,i0) _lti_d(_jit,r0,r1,i0) #define lti_d(r0,r1,i0) _lti_d(_jit,r0,r1,i0)
static void _lti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _lti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define ler_f(r0,r1,r2) ler_d(r0,r1,r2) #define ler_f(r0,r1,r2) ler_d(r0,r1,r2)
#define ler_d(r0,r1,r2) _ler_d(_jit,r0,r1,r2) #define ler_d(r0,r1,r2) _ler_d(_jit,r0,r1,r2)
static void _ler_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ler_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define lei_f(r0,r1,i0) _lei_f(_jit,r0,r1,i0) #define lei_f(r0,r1,i0) _lei_f(_jit,r0,r1,i0)
static void _lei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _lei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define lei_d(r0,r1,i0) _lei_d(_jit,r0,r1,i0) #define lei_d(r0,r1,i0) _lei_d(_jit,r0,r1,i0)
static void _lei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _lei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define eqr_f(r0,r1,r2) eqr_d(r0,r1,r2) #define eqr_f(r0,r1,r2) eqr_d(r0,r1,r2)
#define eqr_d(r0,r1,r2) _eqr_d(_jit,r0,r1,r2) #define eqr_d(r0,r1,r2) _eqr_d(_jit,r0,r1,r2)
static void _eqr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _eqr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define eqi_f(r0,r1,i0) _eqi_f(_jit,r0,r1,i0) #define eqi_f(r0,r1,i0) _eqi_f(_jit,r0,r1,i0)
static void _eqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _eqi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define eqi_d(r0,r1,i0) _eqi_d(_jit,r0,r1,i0) #define eqi_d(r0,r1,i0) _eqi_d(_jit,r0,r1,i0)
static void _eqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _eqi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define ger_f(r0,r1,r2) ger_d(r0,r1,r2) #define ger_f(r0,r1,r2) ger_d(r0,r1,r2)
#define ger_d(r0,r1,r2) _ger_d(_jit,r0,r1,r2) #define ger_d(r0,r1,r2) _ger_d(_jit,r0,r1,r2)
static void _ger_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ger_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define gei_f(r0,r1,i0) _gei_f(_jit,r0,r1,i0) #define gei_f(r0,r1,i0) _gei_f(_jit,r0,r1,i0)
static void _gei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _gei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define gei_d(r0,r1,i0) _gei_d(_jit,r0,r1,i0) #define gei_d(r0,r1,i0) _gei_d(_jit,r0,r1,i0)
static void _gei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _gei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define gtr_f(r0,r1,r2) gtr_d(r0,r1,r2) #define gtr_f(r0,r1,r2) gtr_d(r0,r1,r2)
#define gtr_d(r0,r1,r2) _gtr_d(_jit,r0,r1,r2) #define gtr_d(r0,r1,r2) _gtr_d(_jit,r0,r1,r2)
static void _gtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _gtr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define gti_f(r0,r1,i0) _gti_f(_jit,r0,r1,i0) #define gti_f(r0,r1,i0) _gti_f(_jit,r0,r1,i0)
static void _gti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _gti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define gti_d(r0,r1,i0) _gti_d(_jit,r0,r1,i0) #define gti_d(r0,r1,i0) _gti_d(_jit,r0,r1,i0)
static void _gti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _gti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define ner_f(r0,r1,r2) ner_d(r0,r1,r2) #define ner_f(r0,r1,r2) ner_d(r0,r1,r2)
#define ner_d(r0,r1,r2) _ner_d(_jit,r0,r1,r2) #define ner_d(r0,r1,r2) _ner_d(_jit,r0,r1,r2)
static void _ner_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ner_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define nei_f(r0,r1,i0) _nei_f(_jit,r0,r1,i0) #define nei_f(r0,r1,i0) _nei_f(_jit,r0,r1,i0)
static void _nei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _nei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define nei_d(r0,r1,i0) _nei_d(_jit,r0,r1,i0) #define nei_d(r0,r1,i0) _nei_d(_jit,r0,r1,i0)
static void _nei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _nei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define unltr_f(r0,r1,r2) unltr_d(r0,r1,r2) #define unltr_f(r0,r1,r2) unltr_d(r0,r1,r2)
#define unltr_d(r0,r1,r2) _unltr_d(_jit,r0,r1,r2) #define unltr_d(r0,r1,r2) _unltr_d(_jit,r0,r1,r2)
static void _unltr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _unltr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define unlti_f(r0,r1,i0) _unlti_f(_jit,r0,r1,i0) #define unlti_f(r0,r1,i0) _unlti_f(_jit,r0,r1,i0)
static void _unlti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _unlti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define unlti_d(r0,r1,i0) _unlti_d(_jit,r0,r1,i0) #define unlti_d(r0,r1,i0) _unlti_d(_jit,r0,r1,i0)
static void _unlti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _unlti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define unler_f(r0,r1,r2) unler_d(r0,r1,r2) #define unler_f(r0,r1,r2) unler_d(r0,r1,r2)
#define unler_d(r0,r1,r2) _unler_d(_jit,r0,r1,r2) #define unler_d(r0,r1,r2) _unler_d(_jit,r0,r1,r2)
static void _unler_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _unler_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define unlei_f(r0,r1,i0) _unlei_f(_jit,r0,r1,i0) #define unlei_f(r0,r1,i0) _unlei_f(_jit,r0,r1,i0)
static void _unlei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _unlei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define unlei_d(r0,r1,i0) _unlei_d(_jit,r0,r1,i0) #define unlei_d(r0,r1,i0) _unlei_d(_jit,r0,r1,i0)
static void _unlei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _unlei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define uneqr_f(r0,r1,r2) uneqr_d(r0,r1,r2) #define uneqr_f(r0,r1,r2) uneqr_d(r0,r1,r2)
#define uneqr_d(r0,r1,r2) _uneqr_d(_jit,r0,r1,r2) #define uneqr_d(r0,r1,r2) _uneqr_d(_jit,r0,r1,r2)
static void _uneqr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _uneqr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define uneqi_f(r0,r1,i0) _uneqi_f(_jit,r0,r1,i0) #define uneqi_f(r0,r1,i0) _uneqi_f(_jit,r0,r1,i0)
static void _uneqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _uneqi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define uneqi_d(r0,r1,i0) _uneqi_d(_jit,r0,r1,i0) #define uneqi_d(r0,r1,i0) _uneqi_d(_jit,r0,r1,i0)
static void _uneqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _uneqi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define unger_f(r0,r1,r2) unger_d(r0,r1,r2) #define unger_f(r0,r1,r2) unger_d(r0,r1,r2)
#define unger_d(r0,r1,r2) _unger_d(_jit,r0,r1,r2) #define unger_d(r0,r1,r2) _unger_d(_jit,r0,r1,r2)
static void _unger_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _unger_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define ungei_f(r0,r1,i0) _ungei_f(_jit,r0,r1,i0) #define ungei_f(r0,r1,i0) _ungei_f(_jit,r0,r1,i0)
static void _ungei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _ungei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define ungei_d(r0,r1,i0) _ungei_d(_jit,r0,r1,i0) #define ungei_d(r0,r1,i0) _ungei_d(_jit,r0,r1,i0)
static void _ungei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _ungei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define ungtr_f(r0,r1,r2) ungtr_d(r0,r1,r2) #define ungtr_f(r0,r1,r2) ungtr_d(r0,r1,r2)
#define ungtr_d(r0,r1,r2) _ungtr_d(_jit,r0,r1,r2) #define ungtr_d(r0,r1,r2) _ungtr_d(_jit,r0,r1,r2)
static void _ungtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ungtr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define ungti_f(r0,r1,i0) _ungti_f(_jit,r0,r1,i0) #define ungti_f(r0,r1,i0) _ungti_f(_jit,r0,r1,i0)
static void _ungti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _ungti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define ungti_d(r0,r1,i0) _ungti_d(_jit,r0,r1,i0) #define ungti_d(r0,r1,i0) _ungti_d(_jit,r0,r1,i0)
static void _ungti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _ungti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define ltgtr_f(r0,r1,r2) ltgtr_d(r0,r1,r2) #define ltgtr_f(r0,r1,r2) ltgtr_d(r0,r1,r2)
#define ltgtr_d(r0,r1,r2) _ltgtr_d(_jit,r0,r1,r2) #define ltgtr_d(r0,r1,r2) _ltgtr_d(_jit,r0,r1,r2)
static void _ltgtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ltgtr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define ltgti_f(r0,r1,i0) _ltgti_f(_jit,r0,r1,i0) #define ltgti_f(r0,r1,i0) _ltgti_f(_jit,r0,r1,i0)
static void _ltgti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _ltgti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define ltgti_d(r0,r1,i0) _ltgti_d(_jit,r0,r1,i0) #define ltgti_d(r0,r1,i0) _ltgti_d(_jit,r0,r1,i0)
static void _ltgti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _ltgti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define ordr_f(r0,r1,r2) ordr_d(r0,r1,r2) #define ordr_f(r0,r1,r2) ordr_d(r0,r1,r2)
#define ordr_d(r0,r1,r2) _ordr_d(_jit,r0,r1,r2) #define ordr_d(r0,r1,r2) _ordr_d(_jit,r0,r1,r2)
static void _ordr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ordr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define ordi_f(r0,r1,i0) _ordi_f(_jit,r0,r1,i0) #define ordi_f(r0,r1,i0) _ordi_f(_jit,r0,r1,i0)
static void _ordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _ordi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define ordi_d(r0,r1,i0) _ordi_d(_jit,r0,r1,i0) #define ordi_d(r0,r1,i0) _ordi_d(_jit,r0,r1,i0)
static void _ordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _ordi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define unordr_f(r0,r1,r2) unordr_d(r0,r1,r2) #define unordr_f(r0,r1,r2) unordr_d(r0,r1,r2)
#define unordr_d(r0,r1,r2) _unordr_d(_jit,r0,r1,r2) #define unordr_d(r0,r1,r2) _unordr_d(_jit,r0,r1,r2)
static void _unordr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _unordr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define unordi_f(r0,r1,i0) _unordi_f(_jit,r0,r1,i0) #define unordi_f(r0,r1,i0) _unordi_f(_jit,r0,r1,i0)
static void _unordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _unordi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
#define unordi_d(r0,r1,i0) _unordi_d(_jit,r0,r1,i0) #define unordi_d(r0,r1,i0) _unordi_d(_jit,r0,r1,i0)
static void _unordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _unordi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define ldr_f(r0,r1) LDFS(r0,r1) #define ldr_f(r0,r1) LDFS(r0,r1)
#define ldi_f(r0,i0) _ldi_f(_jit,r0,i0) #define ldi_f(r0,i0) _ldi_f(_jit,r0,i0)
static void _ldi_f(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_f(jit_state_t*,int32_t,jit_word_t);
#define ldxr_f(r0,r1,r2) _ldxr_f(_jit,r0,r1,r2) #define ldxr_f(r0,r1,r2) _ldxr_f(_jit,r0,r1,r2)
static void _ldxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0) #define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0)
static void _ldxi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_f(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
#define ldr_d(r0,r1) LDFD(r0,r1) #define ldr_d(r0,r1) LDFD(r0,r1)
#define ldi_d(r0,i0) _ldi_d(_jit,r0,i0) #define ldi_d(r0,i0) _ldi_d(_jit,r0,i0)
static void _ldi_d(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_d(jit_state_t*,int32_t,jit_word_t);
#define ldxr_d(r0,r1,r2) _ldxr_d(_jit,r0,r1,r2) #define ldxr_d(r0,r1,r2) _ldxr_d(_jit,r0,r1,r2)
static void _ldxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0) #define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0)
static void _ldxi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_d(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
#define str_f(r0,r1) STFS(r0,r1) #define str_f(r0,r1) STFS(r0,r1)
#define sti_f(i0,r0) _sti_f(_jit,i0,r0) #define sti_f(i0,r0) _sti_f(_jit,i0,r0)
static void _sti_f(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_f(jit_state_t*,jit_word_t,int32_t);
#define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2) #define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2)
static void _stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1) #define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1)
static void _stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define str_d(r0,r1) STFD(r0,r1) #define str_d(r0,r1) STFD(r0,r1)
#define sti_d(i0,r0) _sti_d(_jit,i0,r0) #define sti_d(i0,r0) _sti_d(_jit,i0,r0)
static void _sti_d(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_d(jit_state_t*,jit_word_t,int32_t);
#define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2) #define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2)
static void _stxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
#define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1) #define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1)
static void _stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bltr_f(i0,r0,r1) bltr_d(i0,r0,r1) #define bltr_f(i0,r0,r1) bltr_d(i0,r0,r1)
#define bltr_d(i0,r0,r1) _bltr_d(_jit,i0,r0,r1) #define bltr_d(i0,r0,r1) _bltr_d(_jit,i0,r0,r1)
static jit_word_t _bltr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bltr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define blti_f(i0,r0,i1) _blti_f(_jit,i0,r0,i1) #define blti_f(i0,r0,i1) _blti_f(_jit,i0,r0,i1)
static jit_word_t _blti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _blti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define blti_d(i0,r0,i1) _blti_d(_jit,i0,r0,i1) #define blti_d(i0,r0,i1) _blti_d(_jit,i0,r0,i1)
static jit_word_t _blti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _blti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bler_f(i0,r0,r1) bler_d(i0,r0,r1) #define bler_f(i0,r0,r1) bler_d(i0,r0,r1)
#define bler_d(i0,r0,r1) _bler_d(_jit,i0,r0,r1) #define bler_d(i0,r0,r1) _bler_d(_jit,i0,r0,r1)
static jit_word_t _bler_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bler_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define blei_f(i0,r0,i1) _blei_f(_jit,i0,r0,i1) #define blei_f(i0,r0,i1) _blei_f(_jit,i0,r0,i1)
static jit_word_t _blei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _blei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define blei_d(i0,r0,i1) _blei_d(_jit,i0,r0,i1) #define blei_d(i0,r0,i1) _blei_d(_jit,i0,r0,i1)
static jit_word_t _blei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _blei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define beqr_f(i0,r0,r1) beqr_d(i0,r0,r1) #define beqr_f(i0,r0,r1) beqr_d(i0,r0,r1)
#define beqr_d(i0,r0,r1) _beqr_d(_jit,i0,r0,r1) #define beqr_d(i0,r0,r1) _beqr_d(_jit,i0,r0,r1)
static jit_word_t _beqr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _beqr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define beqi_f(i0,r0,i1) _beqi_f(_jit,i0,r0,i1) #define beqi_f(i0,r0,i1) _beqi_f(_jit,i0,r0,i1)
static jit_word_t _beqi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _beqi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define beqi_d(i0,r0,i1) _beqi_d(_jit,i0,r0,i1) #define beqi_d(i0,r0,i1) _beqi_d(_jit,i0,r0,i1)
static jit_word_t _beqi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _beqi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bger_f(i0,r0,r1) bger_d(i0,r0,r1) #define bger_f(i0,r0,r1) bger_d(i0,r0,r1)
#define bger_d(i0,r0,r1) _bger_d(_jit,i0,r0,r1) #define bger_d(i0,r0,r1) _bger_d(_jit,i0,r0,r1)
static jit_word_t _bger_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bger_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bgei_f(i0,r0,i1) _bgei_f(_jit,i0,r0,i1) #define bgei_f(i0,r0,i1) _bgei_f(_jit,i0,r0,i1)
static jit_word_t _bgei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bgei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bgei_d(i0,r0,i1) _bgei_d(_jit,i0,r0,i1) #define bgei_d(i0,r0,i1) _bgei_d(_jit,i0,r0,i1)
static jit_word_t _bgei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bgei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bgtr_f(i0,r0,r1) bgtr_d(i0,r0,r1) #define bgtr_f(i0,r0,r1) bgtr_d(i0,r0,r1)
#define bgtr_d(i0,r0,r1) _bgtr_d(_jit,i0,r0,r1) #define bgtr_d(i0,r0,r1) _bgtr_d(_jit,i0,r0,r1)
static jit_word_t _bgtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bgtr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bgti_f(i0,r0,i1) _bgti_f(_jit,i0,r0,i1) #define bgti_f(i0,r0,i1) _bgti_f(_jit,i0,r0,i1)
static jit_word_t _bgti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bgti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bgti_d(i0,r0,i1) _bgti_d(_jit,i0,r0,i1) #define bgti_d(i0,r0,i1) _bgti_d(_jit,i0,r0,i1)
static jit_word_t _bgti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bgti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bner_f(i0,r0,r1) bner_d(i0,r0,r1) #define bner_f(i0,r0,r1) bner_d(i0,r0,r1)
#define bner_d(i0,r0,r1) _bner_d(_jit,i0,r0,r1) #define bner_d(i0,r0,r1) _bner_d(_jit,i0,r0,r1)
static jit_word_t _bner_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bner_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bnei_f(i0,r0,i1) _bnei_f(_jit,i0,r0,i1) #define bnei_f(i0,r0,i1) _bnei_f(_jit,i0,r0,i1)
static jit_word_t _bnei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bnei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bnei_d(i0,r0,i1) _bnei_d(_jit,i0,r0,i1) #define bnei_d(i0,r0,i1) _bnei_d(_jit,i0,r0,i1)
static jit_word_t _bnei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bnei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bunltr_f(i0,r0,r1) bunltr_d(i0,r0,r1) #define bunltr_f(i0,r0,r1) bunltr_d(i0,r0,r1)
#define bunltr_d(i0,r0,r1) _bunltr_d(_jit,i0,r0,r1) #define bunltr_d(i0,r0,r1) _bunltr_d(_jit,i0,r0,r1)
static jit_word_t _bunltr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bunltr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bunlti_f(i0,r0,i1) _bunlti_f(_jit,i0,r0,i1) #define bunlti_f(i0,r0,i1) _bunlti_f(_jit,i0,r0,i1)
static jit_word_t _bunlti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bunlti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bunlti_d(i0,r0,i1) _bunlti_d(_jit,i0,r0,i1) #define bunlti_d(i0,r0,i1) _bunlti_d(_jit,i0,r0,i1)
static jit_word_t _bunlti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bunlti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bunler_f(i0,r0,r1) bunler_d(i0,r0,r1) #define bunler_f(i0,r0,r1) bunler_d(i0,r0,r1)
#define bunler_d(i0,r0,r1) _bunler_d(_jit,i0,r0,r1) #define bunler_d(i0,r0,r1) _bunler_d(_jit,i0,r0,r1)
static jit_word_t _bunler_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bunler_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bunlei_f(i0,r0,i1) _bunlei_f(_jit,i0,r0,i1) #define bunlei_f(i0,r0,i1) _bunlei_f(_jit,i0,r0,i1)
static jit_word_t _bunlei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bunlei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bunlei_d(i0,r0,i1) _bunlei_d(_jit,i0,r0,i1) #define bunlei_d(i0,r0,i1) _bunlei_d(_jit,i0,r0,i1)
static jit_word_t _bunlei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bunlei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define buneqr_f(i0,r0,r1) buneqr_d(i0,r0,r1) #define buneqr_f(i0,r0,r1) buneqr_d(i0,r0,r1)
#define buneqr_d(i0,r0,r1) _buneqr_d(_jit,i0,r0,r1) #define buneqr_d(i0,r0,r1) _buneqr_d(_jit,i0,r0,r1)
static jit_word_t _buneqr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _buneqr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define buneqi_f(i0,r0,i1) _buneqi_f(_jit,i0,r0,i1) #define buneqi_f(i0,r0,i1) _buneqi_f(_jit,i0,r0,i1)
static jit_word_t _buneqi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _buneqi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define buneqi_d(i0,r0,i1) _buneqi_d(_jit,i0,r0,i1) #define buneqi_d(i0,r0,i1) _buneqi_d(_jit,i0,r0,i1)
static jit_word_t _buneqi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _buneqi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bunger_f(i0,r0,r1) bunger_d(i0,r0,r1) #define bunger_f(i0,r0,r1) bunger_d(i0,r0,r1)
#define bunger_d(i0,r0,r1) _bunger_d(_jit,i0,r0,r1) #define bunger_d(i0,r0,r1) _bunger_d(_jit,i0,r0,r1)
static jit_word_t _bunger_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bunger_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bungei_f(i0,r0,i1) _bungei_f(_jit,i0,r0,i1) #define bungei_f(i0,r0,i1) _bungei_f(_jit,i0,r0,i1)
static jit_word_t _bungei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bungei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bungei_d(i0,r0,i1) _bungei_d(_jit,i0,r0,i1) #define bungei_d(i0,r0,i1) _bungei_d(_jit,i0,r0,i1)
static jit_word_t _bungei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bungei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bungtr_f(i0,r0,r1) bungtr_d(i0,r0,r1) #define bungtr_f(i0,r0,r1) bungtr_d(i0,r0,r1)
#define bungtr_d(i0,r0,r1) _bungtr_d(_jit,i0,r0,r1) #define bungtr_d(i0,r0,r1) _bungtr_d(_jit,i0,r0,r1)
static jit_word_t _bungtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bungtr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bungti_f(i0,r0,i1) _bungti_f(_jit,i0,r0,i1) #define bungti_f(i0,r0,i1) _bungti_f(_jit,i0,r0,i1)
static jit_word_t _bungti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bungti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bungti_d(i0,r0,i1) _bungti_d(_jit,i0,r0,i1) #define bungti_d(i0,r0,i1) _bungti_d(_jit,i0,r0,i1)
static jit_word_t _bungti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bungti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bltgtr_f(i0,r0,r1) bltgtr_d(i0,r0,r1) #define bltgtr_f(i0,r0,r1) bltgtr_d(i0,r0,r1)
#define bltgtr_d(i0,r0,r1) _bltgtr_d(_jit,i0,r0,r1) #define bltgtr_d(i0,r0,r1) _bltgtr_d(_jit,i0,r0,r1)
static jit_word_t _bltgtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bltgtr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bltgti_f(i0,r0,i1) _bltgti_f(_jit,i0,r0,i1) #define bltgti_f(i0,r0,i1) _bltgti_f(_jit,i0,r0,i1)
static jit_word_t _bltgti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bltgti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bltgti_d(i0,r0,i1) _bltgti_d(_jit,i0,r0,i1) #define bltgti_d(i0,r0,i1) _bltgti_d(_jit,i0,r0,i1)
static jit_word_t _bltgti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bltgti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bordr_f(i0,r0,r1) bordr_d(i0,r0,r1) #define bordr_f(i0,r0,r1) bordr_d(i0,r0,r1)
#define bordr_d(i0,r0,r1) _bordr_d(_jit,i0,r0,r1) #define bordr_d(i0,r0,r1) _bordr_d(_jit,i0,r0,r1)
static jit_word_t _bordr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bordr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bordi_f(i0,r0,i1) _bordi_f(_jit,i0,r0,i1) #define bordi_f(i0,r0,i1) _bordi_f(_jit,i0,r0,i1)
static jit_word_t _bordi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bordi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bordi_d(i0,r0,i1) _bordi_d(_jit,i0,r0,i1) #define bordi_d(i0,r0,i1) _bordi_d(_jit,i0,r0,i1)
static jit_word_t _bordi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bordi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
#define bunordr_f(i0,r0,r1) bunordr_d(i0,r0,r1) #define bunordr_f(i0,r0,r1) bunordr_d(i0,r0,r1)
#define bunordr_d(i0,r0,r1) _bunordr_d(_jit,i0,r0,r1) #define bunordr_d(i0,r0,r1) _bunordr_d(_jit,i0,r0,r1)
static jit_word_t _bunordr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bunordr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
#define bunordi_f(i0,r0,i1) _bunordi_f(_jit,i0,r0,i1) #define bunordi_f(i0,r0,i1) _bunordi_f(_jit,i0,r0,i1)
static jit_word_t _bunordi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bunordi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
#define bunordi_d(i0,r0,i1) _bunordi_d(_jit,i0,r0,i1) #define bunordi_d(i0,r0,i1) _bunordi_d(_jit,i0,r0,i1)
static jit_word_t _bunordi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bunordi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1) # define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1)
static void _vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _vaarg_d(jit_state_t*, int32_t, jit_int32_t);
#endif #endif
#if CODE #if CODE
@ -1014,13 +1014,13 @@ F16_(jit_state_t* _jit, jit_word_t _p,
} }
static void static void
_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0) _movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t *i0)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_int32_t reg; int32_t reg;
if (_jitc->no_data) { if (_jitc->no_data) {
data.f = *i0; data.f = *i0;
@ -1034,13 +1034,13 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
} }
static void static void
_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0) _movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t *i0)
{ {
union { union {
jit_word_t w; jit_word_t w;
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_int32_t reg; int32_t reg;
if (_jitc->no_data) { if (_jitc->no_data) {
data.d = *i0; data.d = *i0;
@ -1054,7 +1054,7 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
} }
static void static void
_movr_w_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_w_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
/* Should be used only in this case (with out0 == 120) */ /* Should be used only in this case (with out0 == 120) */
if (r1 >= 120) if (r1 >= 120)
@ -1063,7 +1063,7 @@ _movr_w_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_movr_f_w(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_f_w(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
/* Should actually be used only in this case (with out0 == 120) */ /* Should actually be used only in this case (with out0 == 120) */
if (r0 >= 120) if (r0 >= 120)
@ -1072,7 +1072,7 @@ _movr_f_w(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_movi_f_w(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0) _movi_f_w(jit_state_t *_jit, int32_t r0, jit_float32_t *i0)
{ {
jit_data_t data; jit_data_t data;
@ -1088,7 +1088,7 @@ _movi_f_w(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
} }
static void static void
_movr_w_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_w_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
/* Should be used only in this case (with out0 == 120) */ /* Should be used only in this case (with out0 == 120) */
if (r1 >= 120) if (r1 >= 120)
@ -1097,7 +1097,7 @@ _movr_w_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_movr_d_w(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_d_w(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
/* Should be used only in this case (with out0 == 120) */ /* Should be used only in this case (with out0 == 120) */
if (r0 >= 120) if (r0 >= 120)
@ -1106,7 +1106,7 @@ _movr_d_w(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_movi_d_w(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0) _movi_d_w(jit_state_t *_jit, int32_t r0, jit_float64_t *i0)
{ {
union { union {
jit_word_t w; jit_word_t w;
@ -1127,10 +1127,10 @@ _movi_d_w(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
#define fpr_opi(name, type, size) \ #define fpr_opi(name, type, size) \
static void \ static void \
_##name##i_##type(jit_state_t *_jit, \ _##name##i_##type(jit_state_t *_jit, \
jit_int32_t r0, jit_int32_t r1, \ int32_t r0, jit_int32_t r1, \
jit_float##size##_t *i0) \ jit_float##size##_t *i0) \
{ \ { \
jit_int32_t reg = jit_get_reg(jit_class_fpr); \ int32_t reg = jit_get_reg(jit_class_fpr); \
movi_##type(rn(reg), i0); \ movi_##type(rn(reg), i0); \
name##r_##type(r0, r1, rn(reg)); \ name##r_##type(r0, r1, rn(reg)); \
jit_unget_reg(reg); \ jit_unget_reg(reg); \
@ -1138,11 +1138,11 @@ _##name##i_##type(jit_state_t *_jit, \
#define fpr_bopi(name, type, size) \ #define fpr_bopi(name, type, size) \
static jit_word_t \ static jit_word_t \
_b##name##i_##type(jit_state_t *_jit, \ _b##name##i_##type(jit_state_t *_jit, \
jit_word_t i0, jit_int32_t r0, \ jit_word_t i0, int32_t r0, \
jit_float##size##_t *i1) \ jit_float##size##_t *i1) \
{ \ { \
jit_word_t word; \ jit_word_t word; \
jit_int32_t reg = jit_get_reg(jit_class_fpr| \ int32_t reg = jit_get_reg(jit_class_fpr| \
jit_class_nospill); \ jit_class_nospill); \
movi_##type(rn(reg), i1); \ movi_##type(rn(reg), i1); \
word = b##name##r_##type(i0, r0, rn(reg)); \ word = b##name##r_##type(i0, r0, rn(reg)); \
@ -1167,9 +1167,9 @@ dopi(div)
/* translation from gcc -O0 */ /* translation from gcc -O0 */
static void static void
_divr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _divr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t t0, t1, t2; int32_t t0, t1, t2;
t0 = jit_get_reg(jit_class_fpr); t0 = jit_get_reg(jit_class_fpr);
t1 = jit_get_reg(jit_class_fpr); t1 = jit_get_reg(jit_class_fpr);
t2 = jit_get_reg(jit_class_fpr); t2 = jit_get_reg(jit_class_fpr);
@ -1189,9 +1189,9 @@ _divr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_divr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _divr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t t0, t1, t2; int32_t t0, t1, t2;
t0 = jit_get_reg(jit_class_fpr); t0 = jit_get_reg(jit_class_fpr);
t1 = jit_get_reg(jit_class_fpr); t1 = jit_get_reg(jit_class_fpr);
t2 = jit_get_reg(jit_class_fpr); t2 = jit_get_reg(jit_class_fpr);
@ -1211,9 +1211,9 @@ _divr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _extr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
SETF_SIG(rn(reg), r1); SETF_SIG(rn(reg), r1);
FCVT_XF(r0, rn(reg)); FCVT_XF(r0, rn(reg));
@ -1222,9 +1222,9 @@ _extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _extr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
SETF_SIG(rn(reg), r1); SETF_SIG(rn(reg), r1);
FCVT_XF(r0, rn(reg)); FCVT_XF(r0, rn(reg));
@ -1233,9 +1233,9 @@ _extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_truncr_d_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_d_l(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
FCVT_FX_TRUNC(rn(reg), r1); FCVT_FX_TRUNC(rn(reg), r1);
GETF_SIG(r0, rn(reg)); GETF_SIG(r0, rn(reg));
@ -1244,7 +1244,7 @@ _truncr_d_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_ltr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ltr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_LT(PR_6, PR_7, r1, r2); FCMP_LT(PR_6, PR_7, r1, r2);
MOVI_p(r0, 1, PR_6); MOVI_p(r0, 1, PR_6);
@ -1254,7 +1254,7 @@ fopi(lt)
dopi(lt) dopi(lt)
static void static void
_ler_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ler_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_LE(PR_6, PR_7, r1, r2); FCMP_LE(PR_6, PR_7, r1, r2);
MOVI_p(r0, 1, PR_6); MOVI_p(r0, 1, PR_6);
@ -1264,7 +1264,7 @@ fopi(le)
dopi(le) dopi(le)
static void static void
_eqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _eqr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_EQ(PR_6, PR_7, r1, r2); FCMP_EQ(PR_6, PR_7, r1, r2);
MOVI_p(r0, 1, PR_6); MOVI_p(r0, 1, PR_6);
@ -1274,7 +1274,7 @@ fopi(eq)
dopi(eq) dopi(eq)
static void static void
_ger_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ger_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_LE(PR_6, PR_7, r2, r1); FCMP_LE(PR_6, PR_7, r2, r1);
MOVI_p(r0, 1, PR_6); MOVI_p(r0, 1, PR_6);
@ -1284,7 +1284,7 @@ fopi(ge)
dopi(ge) dopi(ge)
static void static void
_gtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _gtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_LT(PR_6, PR_7, r2, r1); FCMP_LT(PR_6, PR_7, r2, r1);
MOVI_p(r0, 1, PR_6); MOVI_p(r0, 1, PR_6);
@ -1294,7 +1294,7 @@ fopi(gt)
dopi(gt) dopi(gt)
static void static void
_ner_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ner_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_EQ(PR_6, PR_7, r1, r2); FCMP_EQ(PR_6, PR_7, r1, r2);
MOV_p(r0, GR_0, PR_6); MOV_p(r0, GR_0, PR_6);
@ -1304,7 +1304,7 @@ fopi(ne)
dopi(ne) dopi(ne)
static void static void
_unltr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _unltr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_LE(PR_6, PR_7, r2, r1); FCMP_LE(PR_6, PR_7, r2, r1);
MOV_p(r0, GR_0, PR_6); MOV_p(r0, GR_0, PR_6);
@ -1314,7 +1314,7 @@ fopi(unlt)
dopi(unlt) dopi(unlt)
static void static void
_unler_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _unler_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_LT(PR_6, PR_7, r2, r1); FCMP_LT(PR_6, PR_7, r2, r1);
MOV_p(r0, GR_0, PR_6); MOV_p(r0, GR_0, PR_6);
@ -1324,7 +1324,7 @@ fopi(unle)
dopi(unle) dopi(unle)
static void static void
_uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _uneqr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
MOVI(r0, 1); MOVI(r0, 1);
FCMP_LT(PR_8, PR_9, r1, r2); FCMP_LT(PR_8, PR_9, r1, r2);
@ -1336,7 +1336,7 @@ fopi(uneq)
dopi(uneq) dopi(uneq)
static void static void
_unger_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _unger_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_LT(PR_6, PR_7, r1, r2); FCMP_LT(PR_6, PR_7, r1, r2);
MOV_p(r0, GR_0, PR_6); MOV_p(r0, GR_0, PR_6);
@ -1346,7 +1346,7 @@ fopi(unge)
dopi(unge) dopi(unge)
static void static void
_ungtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ungtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_LE(PR_6, PR_7, r1, r2); FCMP_LE(PR_6, PR_7, r1, r2);
MOV_p(r0, GR_0, PR_6); MOV_p(r0, GR_0, PR_6);
@ -1356,7 +1356,7 @@ fopi(ungt)
dopi(ungt) dopi(ungt)
static void static void
_ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ltgtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
MOVI(r0, 1); MOVI(r0, 1);
FCMP_EQ(PR_8, PR_9, r1, r2); FCMP_EQ(PR_8, PR_9, r1, r2);
@ -1368,7 +1368,7 @@ fopi(ltgt)
dopi(ltgt) dopi(ltgt)
static void static void
_ordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ordr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_UNORD(PR_6, PR_7, r1, r2); FCMP_UNORD(PR_6, PR_7, r1, r2);
MOV_p(r0, GR_0, PR_6); MOV_p(r0, GR_0, PR_6);
@ -1378,7 +1378,7 @@ fopi(ord)
dopi(ord) dopi(ord)
static void static void
_unordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _unordr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMP_UNORD(PR_6, PR_7, r1, r2); FCMP_UNORD(PR_6, PR_7, r1, r2);
MOVI_p(r0, 1, PR_6); MOVI_p(r0, 1, PR_6);
@ -1388,9 +1388,9 @@ fopi(unord)
dopi(unord) dopi(unord)
static void static void
_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0); movi(rn(reg), i0);
ldr_f(r0, rn(reg)); ldr_f(r0, rn(reg));
@ -1398,9 +1398,9 @@ _ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ldxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2); addr(rn(reg), r1, r2);
ldr_f(r0, rn(reg)); ldr_f(r0, rn(reg));
@ -1408,9 +1408,9 @@ _ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (r0) { if (r0) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r1, i0); addi(rn(reg), r1, i0);
@ -1422,9 +1422,9 @@ _ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0); movi(rn(reg), i0);
ldr_d(r0, rn(reg)); ldr_d(r0, rn(reg));
@ -1432,9 +1432,9 @@ _ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ldxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2); addr(rn(reg), r1, r2);
ldr_d(r0, rn(reg)); ldr_d(r0, rn(reg));
@ -1442,9 +1442,9 @@ _ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (r0) { if (r0) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r1, i0); addi(rn(reg), r1, i0);
@ -1456,9 +1456,9 @@ _ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0); movi(rn(reg), i0);
str_f(rn(reg), r0); str_f(rn(reg), r0);
@ -1466,9 +1466,9 @@ _sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1); addr(rn(reg), r0, r1);
str_f(rn(reg), r2); str_f(rn(reg), r2);
@ -1476,9 +1476,9 @@ _stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (i0) { if (i0) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r0, i0); addi(rn(reg), r0, i0);
@ -1490,9 +1490,9 @@ _stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0); movi(rn(reg), i0);
str_d(rn(reg), r0); str_d(rn(reg), r0);
@ -1500,9 +1500,9 @@ _sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1); addr(rn(reg), r0, r1);
str_d(rn(reg), r2); str_d(rn(reg), r2);
@ -1510,9 +1510,9 @@ _stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (i0) { if (i0) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r0, i0); addi(rn(reg), r0, i0);
@ -1524,7 +1524,7 @@ _stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_sqrtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _sqrtr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
movr_f(GR_8, r1); movr_f(GR_8, r1);
calli((jit_word_t)sqrtf); calli((jit_word_t)sqrtf);
@ -1532,7 +1532,7 @@ _sqrtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_sqrtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _sqrtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
movr_d(GR_8, r1); movr_d(GR_8, r1);
calli((jit_word_t)sqrt); calli((jit_word_t)sqrt);
@ -1540,7 +1540,7 @@ _sqrtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static jit_word_t static jit_word_t
_bltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bltr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_LT(PR_6, PR_7, r0, r1); FCMP_LT(PR_6, PR_7, r0, r1);
@ -1553,7 +1553,7 @@ fbopi(lt)
dbopi(lt) dbopi(lt)
static jit_word_t static jit_word_t
_bler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bler_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_LE(PR_6, PR_7, r0, r1); FCMP_LE(PR_6, PR_7, r0, r1);
@ -1566,7 +1566,7 @@ fbopi(le)
dbopi(le) dbopi(le)
static jit_word_t static jit_word_t
_beqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _beqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_EQ(PR_6, PR_7, r0, r1); FCMP_EQ(PR_6, PR_7, r0, r1);
@ -1579,7 +1579,7 @@ fbopi(eq)
dbopi(eq) dbopi(eq)
static jit_word_t static jit_word_t
_bger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bger_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_LE(PR_6, PR_7, r1, r0); FCMP_LE(PR_6, PR_7, r1, r0);
@ -1592,7 +1592,7 @@ fbopi(ge)
dbopi(ge) dbopi(ge)
static jit_word_t static jit_word_t
_bgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bgtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_LT(PR_6, PR_7, r1, r0); FCMP_LT(PR_6, PR_7, r1, r0);
@ -1605,7 +1605,7 @@ fbopi(gt)
dbopi(gt) dbopi(gt)
static jit_word_t static jit_word_t
_bner_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bner_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_EQ(PR_6, PR_7, r0, r1); FCMP_EQ(PR_6, PR_7, r0, r1);
@ -1618,7 +1618,7 @@ fbopi(ne)
dbopi(ne) dbopi(ne)
static jit_word_t static jit_word_t
_bunltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bunltr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_LE(PR_6, PR_7, r1, r0); FCMP_LE(PR_6, PR_7, r1, r0);
@ -1631,7 +1631,7 @@ fbopi(unlt)
dbopi(unlt) dbopi(unlt)
static jit_word_t static jit_word_t
_bunler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bunler_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_LT(PR_6, PR_7, r1, r0); FCMP_LT(PR_6, PR_7, r1, r0);
@ -1644,7 +1644,7 @@ fbopi(unle)
dbopi(unle) dbopi(unle)
static jit_word_t static jit_word_t
_buneqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _buneqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
jit_word_t junord, jne; jit_word_t junord, jne;
@ -1672,7 +1672,7 @@ fbopi(uneq)
dbopi(uneq) dbopi(uneq)
static jit_word_t static jit_word_t
_bunger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bunger_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_LT(PR_6, PR_7, r0, r1); FCMP_LT(PR_6, PR_7, r0, r1);
@ -1685,7 +1685,7 @@ fbopi(unge)
dbopi(unge) dbopi(unge)
static jit_word_t static jit_word_t
_bungtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bungtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_LE(PR_6, PR_7, r0, r1); FCMP_LE(PR_6, PR_7, r0, r1);
@ -1698,7 +1698,7 @@ fbopi(ungt)
dbopi(ungt) dbopi(ungt)
static jit_word_t static jit_word_t
_bltgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bltgtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
jit_word_t jeq, junord; jit_word_t jeq, junord;
@ -1725,7 +1725,7 @@ fbopi(ltgt)
dbopi(ltgt) dbopi(ltgt)
static jit_word_t static jit_word_t
_bordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bordr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_UNORD(PR_6, PR_7, r0, r1); FCMP_UNORD(PR_6, PR_7, r0, r1);
@ -1738,7 +1738,7 @@ fbopi(ord)
dbopi(ord) dbopi(ord)
static jit_word_t static jit_word_t
_bunordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bunordr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMP_UNORD(PR_6, PR_7, r0, r1); FCMP_UNORD(PR_6, PR_7, r0, r1);
@ -1751,7 +1751,7 @@ fbopi(unord)
dbopi(unord) dbopi(unord)
static void static void
_vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _vaarg_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
assert(_jitc->function->self.call & jit_call_varargs); assert(_jitc->function->self.call & jit_call_varargs);
/* Load argument. */ /* Load argument. */

View file

@ -27,9 +27,9 @@
# define I_DISP 0 # define I_DISP 0
# define F_DISP 0 # define F_DISP 0
#else #else
# define C_DISP 8 - sizeof(jit_int8_t) # define C_DISP 8 - sizeof(int8_t)
# define S_DISP 8 - sizeof(jit_int16_t) # define S_DISP 8 - sizeof(int16_t)
# define I_DISP 8 - sizeof(jit_int32_t) # define I_DISP 8 - sizeof(int32_t)
# define F_DISP 8 - sizeof(jit_float32_t) # define F_DISP 8 - sizeof(jit_float32_t)
#endif #endif
@ -251,7 +251,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -273,7 +273,7 @@ _jit_prolog(jit_state_t *_jit)
_jitc->function->self.aoff = _jitc->function->self.alen = 0; _jitc->function->self.aoff = _jitc->function->self.alen = 0;
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -292,8 +292,8 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
assert(_jitc->function); assert(_jitc->function);
switch (length) { switch (length) {
@ -311,13 +311,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -344,7 +344,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
jit_movr(JIT_RET, u); jit_movr(JIT_RET, u);
@ -362,7 +362,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
jit_movr_f(JIT_FRET, u); jit_movr_f(JIT_FRET, u);
@ -380,7 +380,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
jit_movr_d(JIT_FRET, u); jit_movr_d(JIT_FRET, u);
@ -433,7 +433,7 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
jit_pushargr(u); jit_pushargr(u);
@ -444,7 +444,7 @@ jit_node_t *
_jit_arg(jit_state_t *_jit) _jit_arg(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -462,7 +462,7 @@ jit_node_t *
_jit_arg_f(jit_state_t *_jit) _jit_arg_f(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_reg_p(_jitc->function->self.argi)) { if (jit_arg_reg_p(_jitc->function->self.argi)) {
if (!(_jitc->function->self.call & jit_call_varargs)) if (!(_jitc->function->self.call & jit_call_varargs))
@ -485,7 +485,7 @@ jit_node_t *
_jit_arg_d(jit_state_t *_jit) _jit_arg_d(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_reg_p(_jitc->function->self.argi)) { if (jit_arg_reg_p(_jitc->function->self.argi)) {
if (!(_jitc->function->self.call & jit_call_varargs)) if (!(_jitc->function->self.call & jit_call_varargs))
@ -505,7 +505,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -517,7 +517,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -529,7 +529,7 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -541,7 +541,7 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -553,7 +553,7 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -565,7 +565,7 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_ui(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_ui, u, v); jit_inc_synth_wp(getarg_ui, u, v);
@ -577,7 +577,7 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_l(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_l, u, v); jit_inc_synth_wp(getarg_l, u, v);
@ -589,7 +589,7 @@ _jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
@ -603,7 +603,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -618,7 +618,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(getarg_f, u, v); jit_inc_synth_wp(getarg_f, u, v);
@ -632,7 +632,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -648,7 +648,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -665,7 +665,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(getarg_d, u, v); jit_inc_synth_wp(getarg_d, u, v);
@ -679,7 +679,7 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
@ -695,7 +695,7 @@ _jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -712,7 +712,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
@ -731,7 +731,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi(jit_state_t *_jit, jit_word_t u) _jit_pushargi(jit_state_t *_jit, jit_word_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargi, u); jit_inc_synth_w(pushargi, u);
jit_link_prepare(); jit_link_prepare();
@ -750,7 +750,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_f, u); jit_inc_synth_w(pushargr_f, u);
@ -775,7 +775,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_f(pushargi_f, u); jit_inc_synth_f(pushargi_f, u);
jit_link_prepare(); jit_link_prepare();
@ -800,7 +800,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_d, u); jit_inc_synth_w(pushargr_d, u);
@ -824,7 +824,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_d(pushargi_d, u); jit_inc_synth_d(pushargi_d, u);
jit_link_prepare(); jit_link_prepare();
@ -848,14 +848,14 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
/* Argument registers are allocated from the pool of unused registers */ /* Argument registers are allocated from the pool of unused registers */
return (0); return (0);
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_node_t *call; jit_node_t *call;
assert(_jitc->function); assert(_jitc->function);
@ -890,7 +890,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_c, r0); jit_inc_synth_w(retval_c, r0);
jit_extr_c(r0, JIT_RET); jit_extr_c(r0, JIT_RET);
@ -898,7 +898,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_uc, r0); jit_inc_synth_w(retval_uc, r0);
jit_extr_uc(r0, JIT_RET); jit_extr_uc(r0, JIT_RET);
@ -906,7 +906,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_s, r0); jit_inc_synth_w(retval_s, r0);
jit_extr_s(r0, JIT_RET); jit_extr_s(r0, JIT_RET);
@ -914,7 +914,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_us, r0); jit_inc_synth_w(retval_us, r0);
jit_extr_us(r0, JIT_RET); jit_extr_us(r0, JIT_RET);
@ -922,7 +922,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
jit_extr_i(r0, JIT_RET); jit_extr_i(r0, JIT_RET);
@ -930,7 +930,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_ui(jit_state_t *_jit, jit_int32_t r0) _jit_retval_ui(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_ui, r0); jit_inc_synth_w(retval_ui, r0);
jit_extr_ui(r0, JIT_RET); jit_extr_ui(r0, JIT_RET);
@ -938,7 +938,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_l(jit_state_t *_jit, jit_int32_t r0) _jit_retval_l(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_l, r0); jit_inc_synth_w(retval_l, r0);
jit_movr(r0, JIT_RET); jit_movr(r0, JIT_RET);
@ -946,7 +946,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_l, r0); jit_inc_synth_w(retval_l, r0);
jit_movr_f(r0, JIT_FRET); jit_movr_f(r0, JIT_FRET);
@ -954,7 +954,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_d, r0); jit_inc_synth_w(retval_d, r0);
jit_movr_d(r0, JIT_FRET); jit_movr_d(r0, JIT_FRET);
@ -967,15 +967,15 @@ _emit_code(jit_state_t *_jit)
jit_node_t *node; jit_node_t *node;
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_int32_t value; int32_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_word_t word; jit_word_t word;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
#endif #endif
jit_int32_t patch_offset; int32_t patch_offset;
jit_word_t prolog_offset; jit_word_t prolog_offset;
} undo; } undo;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
@ -1751,7 +1751,7 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_gpr_t r0, jit_fpr_t r1)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) if (node->code == jit_code_movi)

156
jit/jit.c
View file

@ -127,12 +127,12 @@ _redundant_store(jit_state_t *_jit, jit_node_t *node, jit_bool_t jump);
#define simplify_movr(p, n, k, s) _simplify_movr(_jit, p, n, k, s) #define simplify_movr(p, n, k, s) _simplify_movr(_jit, p, n, k, s)
static jit_bool_t static jit_bool_t
_simplify_movr(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node, _simplify_movr(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node,
jit_int32_t kind, jit_int32_t size); int32_t kind, jit_int32_t size);
#define simplify_movi(p, n, k, s) _simplify_movi(_jit, p, n, k, s) #define simplify_movi(p, n, k, s) _simplify_movi(_jit, p, n, k, s)
static jit_bool_t static jit_bool_t
_simplify_movi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node, _simplify_movi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node,
jit_int32_t kind, jit_int32_t size); int32_t kind, jit_int32_t size);
#define simplify_ldxi(prev, node) _simplify_ldxi(_jit, prev, node) #define simplify_ldxi(prev, node) _simplify_ldxi(_jit, prev, node)
static jit_bool_t static jit_bool_t
@ -144,7 +144,7 @@ _simplify_stxi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node);
#define simplify_spill(node, regno) _simplify_spill(_jit, node, regno) #define simplify_spill(node, regno) _simplify_spill(_jit, node, regno)
static void static void
_simplify_spill(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno); _simplify_spill(jit_state_t *_jit, jit_node_t *node, int32_t regno);
#define simplify() _simplify(_jit) #define simplify() _simplify(_jit)
static void static void
@ -154,13 +154,13 @@ _simplify(jit_state_t *_jit);
#define jit_reg_static 0 #define jit_reg_static 0
#define jit_reg_change 1 #define jit_reg_change 1
#define register_change_p(n, l, r) _register_change_p(_jit, n, l, r) #define register_change_p(n, l, r) _register_change_p(_jit, n, l, r)
static jit_int32_t static int32_t
_register_change_p(jit_state_t *_jit, jit_node_t *node, jit_node_t *link, _register_change_p(jit_state_t *_jit, jit_node_t *node, jit_node_t *link,
jit_int32_t regno); int32_t regno);
#define spill_reglive_p(node, regno) _spill_reglive_p(_jit, node, regno) #define spill_reglive_p(node, regno) _spill_reglive_p(_jit, node, regno)
static jit_bool_t static jit_bool_t
_spill_reglive_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno); _spill_reglive_p(jit_state_t *_jit, jit_node_t *node, int32_t regno);
#define patch_registers() _patch_registers(_jit) #define patch_registers() _patch_registers(_jit)
static void static void
@ -169,7 +169,7 @@ _patch_registers(jit_state_t *_jit);
#define patch_register(n,l,r,p) _patch_register(_jit,n,l,r,p) #define patch_register(n,l,r,p) _patch_register(_jit,n,l,r,p)
static void static void
_patch_register(jit_state_t *jit, jit_node_t *node, jit_node_t *link, _patch_register(jit_state_t *jit, jit_node_t *node, jit_node_t *link,
jit_int32_t regno, jit_int32_t patch); int32_t regno, jit_int32_t patch);
/* /*
* Initialization * Initialization
@ -196,11 +196,11 @@ finish_jit(void)
jit_finish_size(); jit_finish_size();
} }
jit_int32_t int32_t
_jit_get_reg(jit_state_t *_jit, jit_int32_t regspec) _jit_get_reg(jit_state_t *_jit, int32_t regspec)
{ {
jit_int32_t spec; int32_t spec;
jit_int32_t regno; int32_t regno;
spec = regspec & ~(jit_class_chk|jit_class_nospill); spec = regspec & ~(jit_class_chk|jit_class_nospill);
if (spec & jit_class_named) { if (spec & jit_class_named) {
@ -311,7 +311,7 @@ fail:
} }
void void
_jit_unget_reg(jit_state_t *_jit, jit_int32_t regno) _jit_unget_reg(jit_state_t *_jit, int32_t regno)
{ {
regno = jit_regno(regno); regno = jit_regno(regno);
if (jit_regset_tstbit(&_jitc->regsav, regno)) { if (jit_regset_tstbit(&_jitc->regsav, regno)) {
@ -339,7 +339,7 @@ _jit_unget_reg(jit_state_t *_jit, jit_int32_t regno)
} }
jit_bool_t jit_bool_t
_jit_callee_save_p(jit_state_t *_jit, jit_int32_t regno) _jit_callee_save_p(jit_state_t *_jit, int32_t regno)
{ {
assert(regno >= 0 && regno < JIT_NOREG); assert(regno >= 0 && regno < JIT_NOREG);
return (!!(_rvs[regno].spec & jit_class_sav)); return (!!(_rvs[regno].spec & jit_class_sav));
@ -348,7 +348,7 @@ _jit_callee_save_p(jit_state_t *_jit, jit_int32_t regno)
extern jit_bool_t extern jit_bool_t
_jit_pointer_p(jit_state_t *_jit, jit_pointer_t address) _jit_pointer_p(jit_state_t *_jit, jit_pointer_t address)
{ {
return ((jit_uint8_t *)address >= _jit->code.ptr && return ((uint8_t *)address >= _jit->code.ptr &&
(jit_word_t)address < _jit->pc.w); (jit_word_t)address < _jit->pc.w);
} }
@ -389,7 +389,7 @@ jit_regset_set(jit_regset_t *u, jit_regset_t *v)
} }
void void
jit_regset_set_mask(jit_regset_t *u, jit_int32_t v) jit_regset_set_mask(jit_regset_t *u, int32_t v)
{ {
jit_bool_t w = !!(v & (v - 1)); jit_bool_t w = !!(v & (v - 1));
@ -436,7 +436,7 @@ jit_regset_set_p(jit_regset_t *u)
} }
void void
jit_regset_clrbit(jit_regset_t *set, jit_int32_t bit) jit_regset_clrbit(jit_regset_t *set, int32_t bit)
{ {
assert(bit >= 0 && bit <= 255); assert(bit >= 0 && bit <= 255);
if (bit < 64) if (bit < 64)
@ -450,7 +450,7 @@ jit_regset_clrbit(jit_regset_t *set, jit_int32_t bit)
} }
void void
jit_regset_setbit(jit_regset_t *set, jit_int32_t bit) jit_regset_setbit(jit_regset_t *set, int32_t bit)
{ {
assert(bit >= 0 && bit <= 255); assert(bit >= 0 && bit <= 255);
if (bit < 64) if (bit < 64)
@ -464,7 +464,7 @@ jit_regset_setbit(jit_regset_t *set, jit_int32_t bit)
} }
jit_bool_t jit_bool_t
jit_regset_tstbit(jit_regset_t *set, jit_int32_t bit) jit_regset_tstbit(jit_regset_t *set, int32_t bit)
{ {
assert(bit >= 0 && bit <= 255); assert(bit >= 0 && bit <= 255);
if (bit < 64) if (bit < 64)
@ -477,7 +477,7 @@ jit_regset_tstbit(jit_regset_t *set, jit_int32_t bit)
} }
unsigned long unsigned long
jit_regset_scan1(jit_regset_t *set, jit_int32_t offset) jit_regset_scan1(jit_regset_t *set, int32_t offset)
{ {
assert(offset >= 0 && offset <= 255); assert(offset >= 0 && offset <= 255);
for (; offset < 64; offset++) { for (; offset < 64; offset++) {
@ -531,7 +531,7 @@ jit_regset_set(jit_regset_t *u, jit_regset_t *v)
} }
void void
jit_regset_set_mask(jit_regset_t *u, jit_int32_t v) jit_regset_set_mask(jit_regset_t *u, int32_t v)
{ {
jit_bool_t w = !!(v & (v - 1)); jit_bool_t w = !!(v & (v - 1));
@ -568,7 +568,7 @@ jit_regset_set_p(jit_regset_t *u)
} }
void void
jit_regset_clrbit(jit_regset_t *set, jit_int32_t bit) jit_regset_clrbit(jit_regset_t *set, int32_t bit)
{ {
assert(bit >= 0 && bit <= 128); assert(bit >= 0 && bit <= 128);
if (bit < 64) if (bit < 64)
@ -578,7 +578,7 @@ jit_regset_clrbit(jit_regset_t *set, jit_int32_t bit)
} }
void void
jit_regset_setbit(jit_regset_t *set, jit_int32_t bit) jit_regset_setbit(jit_regset_t *set, int32_t bit)
{ {
assert(bit >= 0 && bit <= 127); assert(bit >= 0 && bit <= 127);
if (bit < 64) if (bit < 64)
@ -588,7 +588,7 @@ jit_regset_setbit(jit_regset_t *set, jit_int32_t bit)
} }
jit_bool_t jit_bool_t
jit_regset_tstbit(jit_regset_t *set, jit_int32_t bit) jit_regset_tstbit(jit_regset_t *set, int32_t bit)
{ {
assert(bit >= 0 && bit <= 127); assert(bit >= 0 && bit <= 127);
if (bit < 64) if (bit < 64)
@ -598,7 +598,7 @@ jit_regset_tstbit(jit_regset_t *set, jit_int32_t bit)
} }
unsigned long unsigned long
jit_regset_scan1(jit_regset_t *set, jit_int32_t offset) jit_regset_scan1(jit_regset_t *set, int32_t offset)
{ {
assert(offset >= 0 && offset <= 127); assert(offset >= 0 && offset <= 127);
for (; offset < 64; offset++) { for (; offset < 64; offset++) {
@ -614,7 +614,7 @@ jit_regset_scan1(jit_regset_t *set, jit_int32_t offset)
#else #else
unsigned long unsigned long
jit_regset_scan1(jit_regset_t *set, jit_int32_t offset) jit_regset_scan1(jit_regset_t *set, int32_t offset)
{ {
jit_regset_t mask; jit_regset_t mask;
assert(offset >= 0 && offset <= 63); assert(offset >= 0 && offset <= 63);
@ -631,7 +631,7 @@ jit_regset_scan1(jit_regset_t *set, jit_int32_t offset)
#endif #endif
void void
_jit_save(jit_state_t *_jit, jit_int32_t reg) _jit_save(jit_state_t *_jit, int32_t reg)
{ {
reg = jit_regno(reg); reg = jit_regno(reg);
assert(!_jitc->realize); assert(!_jitc->realize);
@ -639,7 +639,7 @@ _jit_save(jit_state_t *_jit, jit_int32_t reg)
} }
void void
_jit_load(jit_state_t *_jit, jit_int32_t reg) _jit_load(jit_state_t *_jit, int32_t reg)
{ {
jit_node_t *node; jit_node_t *node;
@ -656,7 +656,7 @@ _jit_load(jit_state_t *_jit, jit_int32_t reg)
static jit_word_t static jit_word_t
hash_data(const void *data, jit_word_t length) hash_data(const void *data, jit_word_t length)
{ {
const jit_uint8_t *ptr; const uint8_t *ptr;
jit_word_t i, key; jit_word_t i, key;
for (i = key = 0, ptr = data; i < length; i++) for (i = key = 0, ptr = data; i < length; i++)
key = (key << (key & 1)) ^ ptr[i]; key = (key << (key & 1)) ^ ptr[i];
@ -677,7 +677,7 @@ _jit_address(jit_state_t *_jit, jit_node_t *node)
jit_node_t * jit_node_t *
_jit_data(jit_state_t *_jit, const void *data, _jit_data(jit_state_t *_jit, const void *data,
jit_word_t length, jit_int32_t align) jit_word_t length, int32_t align)
{ {
jit_word_t key; jit_word_t key;
jit_node_t *node; jit_node_t *node;
@ -769,10 +769,10 @@ static void
_new_pool(jit_state_t *_jit) _new_pool(jit_state_t *_jit)
{ {
jit_node_t *list; jit_node_t *list;
jit_int32_t offset; int32_t offset;
if (_jitc->pool.offset >= _jitc->pool.length) { if (_jitc->pool.offset >= _jitc->pool.length) {
jit_int32_t length; int32_t length;
length = _jitc->pool.length + 16; length = _jitc->pool.length + 16;
jit_realloc((jit_pointer_t *)&_jitc->pool.ptr, jit_realloc((jit_pointer_t *)&_jitc->pool.ptr,
@ -932,7 +932,7 @@ jit_new_state(void)
jit_alloc((jit_pointer_t *)&_jitc->spill, jit_alloc((jit_pointer_t *)&_jitc->spill,
_jitc->reglen * sizeof(jit_node_t*)); _jitc->reglen * sizeof(jit_node_t*));
jit_alloc((jit_pointer_t *)&_jitc->gen, jit_alloc((jit_pointer_t *)&_jitc->gen,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
jit_alloc((jit_pointer_t *)&_jitc->values, jit_alloc((jit_pointer_t *)&_jitc->values,
_jitc->reglen * sizeof(jit_value_t)); _jitc->reglen * sizeof(jit_value_t));
@ -1192,7 +1192,7 @@ _jit_new_node_www(jit_state_t *_jit, jit_code_t code,
jit_node_t * jit_node_t *
_jit_new_node_qww(jit_state_t *_jit, jit_code_t code, _jit_new_node_qww(jit_state_t *_jit, jit_code_t code,
jit_int32_t l, jit_int32_t h, int32_t l, jit_int32_t h,
jit_word_t v, jit_word_t w) jit_word_t v, jit_word_t w)
{ {
jit_node_t *node = new_node(code); jit_node_t *node = new_node(code);
@ -1360,10 +1360,10 @@ _jit_patch(jit_state_t* _jit, jit_node_t *instr)
jit_patch_at(instr, label); jit_patch_at(instr, label);
} }
jit_int32_t int32_t
_jit_classify(jit_state_t *_jit, jit_code_t code) _jit_classify(jit_state_t *_jit, jit_code_t code)
{ {
jit_int32_t mask; int32_t mask;
switch (code) { switch (code) {
case jit_code_data: case jit_code_save: case jit_code_load: case jit_code_data: case jit_code_save: case jit_code_load:
@ -1612,7 +1612,7 @@ _jit_classify(jit_state_t *_jit, jit_code_t code)
void void
_jit_patch_abs(jit_state_t *_jit, jit_node_t *instr, jit_pointer_t address) _jit_patch_abs(jit_state_t *_jit, jit_node_t *instr, jit_pointer_t address)
{ {
jit_int32_t mask; int32_t mask;
if (instr->code == jit_code_movi) if (instr->code == jit_code_movi)
instr->v.p = address; instr->v.p = address;
@ -1626,7 +1626,7 @@ _jit_patch_abs(jit_state_t *_jit, jit_node_t *instr, jit_pointer_t address)
void void
_jit_patch_at(jit_state_t *_jit, jit_node_t *instr, jit_node_t *label) _jit_patch_at(jit_state_t *_jit, jit_node_t *instr, jit_node_t *label)
{ {
jit_int32_t mask; int32_t mask;
assert(!(instr->flag & jit_flag_node)); assert(!(instr->flag & jit_flag_node));
instr->flag |= jit_flag_node; instr->flag |= jit_flag_node;
@ -1659,7 +1659,7 @@ void
_jit_optimize(jit_state_t *_jit) _jit_optimize(jit_state_t *_jit)
{ {
jit_bool_t jump; jit_bool_t jump;
jit_int32_t mask; int32_t mask;
jit_node_t *node; jit_node_t *node;
jit_block_t *block; jit_block_t *block;
jit_word_t offset; jit_word_t offset;
@ -1809,8 +1809,8 @@ _jit_optimize(jit_state_t *_jit)
void void
_jit_reglive(jit_state_t *_jit, jit_node_t *node) _jit_reglive(jit_state_t *_jit, jit_node_t *node)
{ {
jit_int32_t spec; int32_t spec;
jit_int32_t value; int32_t value;
jit_block_t *block; jit_block_t *block;
switch (node->code) { switch (node->code) {
@ -1895,7 +1895,7 @@ _jit_reglive(jit_state_t *_jit, jit_node_t *node)
} }
void void
_jit_regarg_set(jit_state_t *_jit, jit_node_t *node, jit_int32_t value) _jit_regarg_set(jit_state_t *_jit, jit_node_t *node, int32_t value)
{ {
#if GET_JIT_SIZE #if GET_JIT_SIZE
jit_size_prepare(); jit_size_prepare();
@ -1915,7 +1915,7 @@ _jit_regarg_set(jit_state_t *_jit, jit_node_t *node, jit_int32_t value)
} }
void void
_jit_regarg_clr(jit_state_t *_jit, jit_node_t *node, jit_int32_t value) _jit_regarg_clr(jit_state_t *_jit, jit_node_t *node, int32_t value)
{ {
#if GET_JIT_SIZE #if GET_JIT_SIZE
jit_size_collect(node); jit_size_collect(node);
@ -1958,7 +1958,7 @@ _jit_realize(jit_state_t *_jit)
void void
_jit_dataset(jit_state_t *_jit) _jit_dataset(jit_state_t *_jit)
{ {
jit_uint8_t *ptr; uint8_t *ptr;
jit_node_t *node; jit_node_t *node;
jit_word_t offset; jit_word_t offset;
#if defined(__sgi) #if defined(__sgi)
@ -2184,21 +2184,21 @@ fail:
} }
void void
_jit_frame(jit_state_t *_jit, jit_int32_t frame) _jit_frame(jit_state_t *_jit, int32_t frame)
{ {
jit_trampoline(frame, 1); jit_trampoline(frame, 1);
} }
void void
_jit_tramp(jit_state_t *_jit, jit_int32_t frame) _jit_tramp(jit_state_t *_jit, int32_t frame)
{ {
jit_trampoline(frame, 0); jit_trampoline(frame, 0);
} }
void void
_jit_trampoline(jit_state_t *_jit, jit_int32_t frame, jit_bool_t prolog) _jit_trampoline(jit_state_t *_jit, int32_t frame, jit_bool_t prolog)
{ {
jit_int32_t regno; int32_t regno;
/* Must be called after prolog, actually, just to simplify /* Must be called after prolog, actually, just to simplify
* tests and know there is a current function and that * tests and know there is a current function and that
@ -2310,8 +2310,8 @@ static void
_jit_update(jit_state_t *_jit, jit_node_t *node, _jit_update(jit_state_t *_jit, jit_node_t *node,
jit_regset_t *live, jit_regset_t *mask, jit_bool_t recurse) jit_regset_t *live, jit_regset_t *mask, jit_bool_t recurse)
{ {
jit_int32_t spec; int32_t spec;
jit_int32_t regno; int32_t regno;
jit_regset_t ztmp; jit_regset_t ztmp;
jit_regset_t zmask; jit_regset_t zmask;
unsigned long value; unsigned long value;
@ -2477,7 +2477,7 @@ _thread_jumps(jit_state_t *_jit)
jit_node_t *prev; jit_node_t *prev;
jit_node_t *node; jit_node_t *node;
jit_node_t *next; jit_node_t *next;
jit_int32_t mask; int32_t mask;
for (prev = node = _jitc->head; node;) { for (prev = node = _jitc->head; node;) {
next = node->next; next = node->next;
@ -2826,8 +2826,8 @@ _redundant_store(jit_state_t *_jit, jit_node_t *node, jit_bool_t jump)
jit_node_t *iter; jit_node_t *iter;
jit_node_t *prev; jit_node_t *prev;
jit_word_t word; jit_word_t word;
jit_int32_t spec; int32_t spec;
jit_int32_t regno; int32_t regno;
if (jump) { if (jump) {
prev = node->u.n; prev = node->u.n;
@ -2889,10 +2889,10 @@ _redundant_store(jit_state_t *_jit, jit_node_t *node, jit_bool_t jump)
static jit_bool_t static jit_bool_t
_simplify_movr(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node, _simplify_movr(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node,
jit_int32_t kind, jit_int32_t size) int32_t kind, jit_int32_t size)
{ {
jit_int32_t regno; int32_t regno;
jit_int32_t right; int32_t right;
jit_value_t *value; jit_value_t *value;
regno = jit_regno(node->u.w); regno = jit_regno(node->u.w);
@ -2920,12 +2920,12 @@ _simplify_movr(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node,
static jit_bool_t static jit_bool_t
_simplify_movi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node, _simplify_movi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node,
jit_int32_t kind, jit_int32_t size) int32_t kind, jit_int32_t size)
{ {
jit_value_t *value; jit_value_t *value;
jit_int32_t spec; int32_t spec;
jit_int32_t regno; int32_t regno;
jit_int32_t offset; int32_t offset;
regno = jit_regno(node->u.w); regno = jit_regno(node->u.w);
value = _jitc->values + regno; value = _jitc->values + regno;
@ -2976,8 +2976,8 @@ static jit_bool_t
_simplify_ldxi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node) _simplify_ldxi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node)
{ {
jit_value_t *value; jit_value_t *value;
jit_int32_t regno; int32_t regno;
jit_int32_t right; int32_t right;
regno = jit_regno(node->u.w); regno = jit_regno(node->u.w);
right = jit_regno(node->v.w); right = jit_regno(node->v.w);
@ -3003,9 +3003,9 @@ static jit_bool_t
_simplify_stxi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node) _simplify_stxi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node)
{ {
jit_value_t *value; jit_value_t *value;
jit_int32_t regno; int32_t regno;
jit_int32_t right; int32_t right;
jit_int32_t offset; int32_t offset;
regno = jit_regno(node->w.w); regno = jit_regno(node->w.w);
right = jit_regno(node->v.w); right = jit_regno(node->v.w);
@ -3055,7 +3055,7 @@ _simplify_stxi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node)
* jit_get_reg/jit_unget_reg, but properly handle * jit_get_reg/jit_unget_reg, but properly handle
* multiple ones by moving the save node */ * multiple ones by moving the save node */
static void static void
_simplify_spill(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _simplify_spill(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
jit_node_t *save; jit_node_t *save;
jit_node_t *temp; jit_node_t *temp;
@ -3078,8 +3078,8 @@ _simplify(jit_state_t *_jit)
jit_node_t *prev; jit_node_t *prev;
jit_node_t *node; jit_node_t *node;
jit_node_t *next; jit_node_t *next;
jit_int32_t info; int32_t info;
jit_int32_t regno; int32_t regno;
for (prev = NULL, node = _jitc->head; node; prev = node, node = next) { for (prev = NULL, node = _jitc->head; node; prev = node, node = next) {
next = node->next; next = node->next;
@ -3087,7 +3087,7 @@ _simplify(jit_state_t *_jit)
case jit_code_label: case jit_code_prolog: case jit_code_label: case jit_code_prolog:
case jit_code_callr: case jit_code_calli: case jit_code_callr: case jit_code_calli:
reset: reset:
memset(_jitc->gen, 0, sizeof(jit_int32_t) * _jitc->reglen); memset(_jitc->gen, 0, sizeof(int32_t) * _jitc->reglen);
memset(_jitc->values, 0, sizeof(jit_value_t) * _jitc->reglen); memset(_jitc->values, 0, sizeof(jit_value_t) * _jitc->reglen);
break; break;
case jit_code_save: case jit_code_save:
@ -3197,11 +3197,11 @@ _simplify(jit_state_t *_jit)
} }
} }
static jit_int32_t static int32_t
_register_change_p(jit_state_t *_jit, jit_node_t *node, jit_node_t *link, _register_change_p(jit_state_t *_jit, jit_node_t *node, jit_node_t *link,
jit_int32_t regno) int32_t regno)
{ {
jit_int32_t value; int32_t value;
for (; node != link; node = node->next) { for (; node != link; node = node->next) {
switch (node->code) { switch (node->code) {
@ -3240,7 +3240,7 @@ _register_change_p(jit_state_t *_jit, jit_node_t *node, jit_node_t *link,
* avoid complications on different cpu backends and patch spill/loads * avoid complications on different cpu backends and patch spill/loads
* here, by simulating jit generation */ * here, by simulating jit generation */
static jit_bool_t static jit_bool_t
_spill_reglive_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _spill_reglive_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
if (!jit_regset_tstbit(&_jitc->reglive, regno)) { if (!jit_regset_tstbit(&_jitc->reglive, regno)) {
bmp_zero(); bmp_zero();
@ -3260,10 +3260,10 @@ _patch_registers(jit_state_t *_jit)
jit_node_t *prev; jit_node_t *prev;
jit_node_t *node; jit_node_t *node;
jit_node_t *next; jit_node_t *next;
jit_int32_t info; int32_t info;
jit_int32_t spec; int32_t spec;
jit_int32_t regno; int32_t regno;
jit_int32_t value; int32_t value;
_jitc->function = NULL; _jitc->function = NULL;
@ -3376,9 +3376,9 @@ _patch_registers(jit_state_t *_jit)
static void static void
_patch_register(jit_state_t *_jit, jit_node_t *node, jit_node_t *link, _patch_register(jit_state_t *_jit, jit_node_t *node, jit_node_t *link,
jit_int32_t regno, jit_int32_t patch) int32_t regno, jit_int32_t patch)
{ {
jit_int32_t value; int32_t value;
for (; node != link; node = node->next) { for (; node != link; node = node->next) {
value = jit_classify(node->code); value = jit_classify(node->code);

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -41,9 +41,9 @@
# define S_DISP 0 # define S_DISP 0
# define I_DISP 0 # define I_DISP 0
#else #else
# define C_DISP STACK_SLOT - sizeof(jit_int8_t) # define C_DISP STACK_SLOT - sizeof(int8_t)
# define S_DISP STACK_SLOT - sizeof(jit_int16_t) # define S_DISP STACK_SLOT - sizeof(int16_t)
# define I_DISP STACK_SLOT - sizeof(jit_int32_t) # define I_DISP STACK_SLOT - sizeof(int32_t)
#endif #endif
/* /*
@ -169,7 +169,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -188,7 +188,7 @@ _jit_prolog(jit_state_t *_jit)
_jitc->function->self.aoff = _jitc->function->self.alen = 0; _jitc->function->self.aoff = _jitc->function->self.alen = 0;
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -207,8 +207,8 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
assert(_jitc->function); assert(_jitc->function);
switch (length) { switch (length) {
@ -226,13 +226,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -259,7 +259,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
if (JIT_RET != u) if (JIT_RET != u)
@ -279,7 +279,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
if (JIT_FRET != u) if (JIT_FRET != u)
@ -300,7 +300,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
if (JIT_FRET != u) if (JIT_FRET != u)
@ -345,7 +345,7 @@ _jit_arg_register_p(jit_state_t *_jit, jit_node_t *u)
static jit_node_t * static jit_node_t *
_jit_make_arg(jit_state_t *_jit, jit_node_t *node) _jit_make_arg(jit_state_t *_jit, jit_node_t *node)
{ {
jit_int32_t offset; int32_t offset;
#if NEW_ABI #if NEW_ABI
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -373,7 +373,7 @@ _jit_make_arg(jit_state_t *_jit, jit_node_t *node)
static jit_node_t * static jit_node_t *
_jit_make_arg_f(jit_state_t *_jit, jit_node_t *node) _jit_make_arg_f(jit_state_t *_jit, jit_node_t *node)
{ {
jit_int32_t offset; int32_t offset;
#if NEW_ABI #if NEW_ABI
if (jit_arg_reg_p(_jitc->function->self.argi)) { if (jit_arg_reg_p(_jitc->function->self.argi)) {
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -416,7 +416,7 @@ _jit_make_arg_f(jit_state_t *_jit, jit_node_t *node)
static jit_node_t * static jit_node_t *
_jit_make_arg_d(jit_state_t *_jit, jit_node_t *node) _jit_make_arg_d(jit_state_t *_jit, jit_node_t *node)
{ {
jit_int32_t offset; int32_t offset;
#if NEW_ABI #if NEW_ABI
if (jit_arg_reg_p(_jitc->function->self.argi)) { if (jit_arg_reg_p(_jitc->function->self.argi)) {
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -490,7 +490,7 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
jit_pushargr(u); jit_pushargr(u);
@ -519,7 +519,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -531,7 +531,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -543,7 +543,7 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -555,7 +555,7 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -567,7 +567,7 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -585,7 +585,7 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
#if __WORDSIZE == 64 #if __WORDSIZE == 64
void void
_jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_ui(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_ui, u, v); jit_inc_synth_wp(getarg_ui, u, v);
@ -597,7 +597,7 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_l(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_l, u, v); jit_inc_synth_wp(getarg_l, u, v);
@ -610,7 +610,7 @@ _jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
#endif #endif
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
@ -624,7 +624,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -639,7 +639,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(getarg_f, u, v); jit_inc_synth_wp(getarg_f, u, v);
@ -660,7 +660,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -683,7 +683,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
#if NEW_ABI #if NEW_ABI
@ -715,7 +715,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(getarg_d, u, v); jit_inc_synth_wp(getarg_d, u, v);
@ -736,7 +736,7 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
@ -759,7 +759,7 @@ _jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
#if NEW_ABI #if NEW_ABI
@ -791,7 +791,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
jit_link_prepare(); jit_link_prepare();
@ -822,7 +822,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi(jit_state_t *_jit, jit_word_t u) _jit_pushargi(jit_state_t *_jit, jit_word_t u)
{ {
jit_int32_t regno; int32_t regno;
#if !NEW_ABI #if !NEW_ABI
jit_word_t offset; jit_word_t offset;
#endif #endif
@ -858,7 +858,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
#if !NEW_ABI #if !NEW_ABI
jit_word_t offset; jit_word_t offset;
@ -899,7 +899,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
#if !NEW_ABI #if !NEW_ABI
jit_word_t offset; jit_word_t offset;
#endif #endif
@ -944,7 +944,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
#if !NEW_ABI #if !NEW_ABI
jit_bool_t adjust; jit_bool_t adjust;
@ -992,7 +992,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
#if !NEW_ABI #if !NEW_ABI
jit_bool_t adjust; jit_bool_t adjust;
jit_word_t offset; jit_word_t offset;
@ -1044,9 +1044,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
jit_int32_t spec; int32_t spec;
spec = jit_class(_rvs[regno].spec); spec = jit_class(_rvs[regno].spec);
if (spec & jit_class_arg) { if (spec & jit_class_arg) {
@ -1066,7 +1066,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_node_t *call; jit_node_t *call;
assert(_jitc->function); assert(_jitc->function);
@ -1112,31 +1112,31 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_extr_c(r0, JIT_RET); jit_extr_c(r0, JIT_RET);
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_extr_uc(r0, JIT_RET); jit_extr_uc(r0, JIT_RET);
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_extr_s(r0, JIT_RET); jit_extr_s(r0, JIT_RET);
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_extr_us(r0, JIT_RET); jit_extr_us(r0, JIT_RET);
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
#if __WORDSIZE == 32 #if __WORDSIZE == 32
if (r0 != JIT_RET) if (r0 != JIT_RET)
@ -1148,13 +1148,13 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
#if __WORDSIZE == 64 #if __WORDSIZE == 64
void void
_jit_retval_ui(jit_state_t *_jit, jit_int32_t r0) _jit_retval_ui(jit_state_t *_jit, int32_t r0)
{ {
jit_extr_ui(r0, JIT_RET); jit_extr_ui(r0, JIT_RET);
} }
void void
_jit_retval_l(jit_state_t *_jit, jit_int32_t r0) _jit_retval_l(jit_state_t *_jit, int32_t r0)
{ {
if (r0 != JIT_RET) if (r0 != JIT_RET)
jit_movr(r0, JIT_RET); jit_movr(r0, JIT_RET);
@ -1162,14 +1162,14 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
#endif #endif
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
if (r0 != JIT_FRET) if (r0 != JIT_FRET)
jit_movr_f(r0, JIT_FRET); jit_movr_f(r0, JIT_FRET);
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
if (r0 != JIT_FRET) if (r0 != JIT_FRET)
jit_movr_d(r0, JIT_FRET); jit_movr_d(r0, JIT_FRET);
@ -1181,15 +1181,15 @@ _emit_code(jit_state_t *_jit)
jit_node_t *node; jit_node_t *node;
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_int32_t value; int32_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_word_t word; jit_word_t word;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
#endif #endif
jit_int32_t patch_offset; int32_t patch_offset;
} undo; } undo;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
@ -1883,25 +1883,25 @@ jit_flush(void *fptr, void *tptr)
} }
void void
_emit_ldxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
ldxi(rn(r0), rn(r1), i0); ldxi(rn(r0), rn(r1), i0);
} }
void void
_emit_stxi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
stxi(i0, rn(r0), rn(r1)); stxi(i0, rn(r0), rn(r1));
} }
void void
_emit_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
ldxi_d(rn(r0), rn(r1), i0); ldxi_d(rn(r0), rn(r1), i0);
} }
void void
_emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
stxi_d(i0, rn(r0), rn(r1)); stxi_d(i0, rn(r0), rn(r1));
} }
@ -1909,7 +1909,7 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) if (node->code == jit_code_movi)

File diff suppressed because it is too large Load diff

View file

@ -117,25 +117,25 @@ static void _FXFL(jit_state_t*,int,int,int,int,int) maybe_unused;
# define STFSX(s,a,b) FX(31,s,a,b,663) # define STFSX(s,a,b) FX(31,s,a,b,663)
# define movr_f(r0,r1) movr_d(r0,r1) # define movr_f(r0,r1) movr_d(r0,r1)
# define movr_d(r0,r1) _movr_d(_jit,r0,r1) # define movr_d(r0,r1) _movr_d(_jit,r0,r1)
static void _movr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _movr_d(jit_state_t*,int32_t,jit_int32_t);
# define movi_f(r0,i0) _movi_f(_jit,r0,i0) # define movi_f(r0,i0) _movi_f(_jit,r0,i0)
static void _movi_f(jit_state_t*,jit_int32_t,jit_float32_t*); static void _movi_f(jit_state_t*,int32_t,jit_float32_t*);
# define movi_d(r0,i0) _movi_d(_jit,r0,i0) # define movi_d(r0,i0) _movi_d(_jit,r0,i0)
static void _movi_d(jit_state_t*,jit_int32_t,jit_float64_t*); static void _movi_d(jit_state_t*,int32_t,jit_float64_t*);
# define extr_f(r0,r1) extr_d(r0,r1) # define extr_f(r0,r1) extr_d(r0,r1)
# define extr_d(r0,r1) _extr_d(_jit,r0,r1) # define extr_d(r0,r1) _extr_d(_jit,r0,r1)
static void _extr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _extr_d(jit_state_t*,int32_t,jit_int32_t);
# define truncr_f(r0,r1) truncr_d(r0,r1) # define truncr_f(r0,r1) truncr_d(r0,r1)
# define truncr_f_i(r0,r1) truncr_d_i(r0,r1) # define truncr_f_i(r0,r1) truncr_d_i(r0,r1)
# define truncr_d_i(r0,r1) _truncr_d_i(_jit,r0,r1) # define truncr_d_i(r0,r1) _truncr_d_i(_jit,r0,r1)
static void _truncr_d_i(jit_state_t*,jit_int32_t,jit_int32_t); static void _truncr_d_i(jit_state_t*,int32_t,jit_int32_t);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define truncr_d(r0,r1) truncr_d_i(r0,r1) # define truncr_d(r0,r1) truncr_d_i(r0,r1)
# else # else
# define truncr_d(r0,r1) truncr_d_l(r0,r1) # define truncr_d(r0,r1) truncr_d_l(r0,r1)
# define truncr_f_l(r0,r1) truncr_d_l(r0,r1) # define truncr_f_l(r0,r1) truncr_d_l(r0,r1)
# define truncr_d_l(r0,r1) _truncr_d_l(_jit,r0,r1) # define truncr_d_l(r0,r1) _truncr_d_l(_jit,r0,r1)
static void _truncr_d_l(jit_state_t*,jit_int32_t,jit_int32_t); static void _truncr_d_l(jit_state_t*,int32_t,jit_int32_t);
# endif # endif
# define extr_d_f(r0,r1) FRSP(r0,r1) # define extr_d_f(r0,r1) FRSP(r0,r1)
# define extr_f_d(r0,r1) movr_d(r0,r1) # define extr_f_d(r0,r1) movr_d(r0,r1)
@ -148,259 +148,259 @@ static void _truncr_d_l(jit_state_t*,jit_int32_t,jit_int32_t);
# define addr_f(r0,r1,r2) FADDS(r0,r1,r2) # define addr_f(r0,r1,r2) FADDS(r0,r1,r2)
# define addr_d(r0,r1,r2) FADD(r0,r1,r2) # define addr_d(r0,r1,r2) FADD(r0,r1,r2)
# define addi_f(r0,r1,i0) _addi_f(_jit,r0,r1,i0) # define addi_f(r0,r1,i0) _addi_f(_jit,r0,r1,i0)
static void _addi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _addi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define addi_d(r0,r1,i0) _addi_d(_jit,r0,r1,i0) # define addi_d(r0,r1,i0) _addi_d(_jit,r0,r1,i0)
static void _addi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _addi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define subr_f(r0,r1,r2) FSUBS(r0,r1,r2) # define subr_f(r0,r1,r2) FSUBS(r0,r1,r2)
# define subi_f(r0,r1,i0) _subi_f(_jit,r0,r1,i0) # define subi_f(r0,r1,i0) _subi_f(_jit,r0,r1,i0)
static void _subi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _subi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define subr_d(r0,r1,r2) FSUB(r0,r1,r2) # define subr_d(r0,r1,r2) FSUB(r0,r1,r2)
# define subi_d(r0,r1,i0) _subi_d(_jit,r0,r1,i0) # define subi_d(r0,r1,i0) _subi_d(_jit,r0,r1,i0)
static void _subi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _subi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define rsbr_f(r0,r1,r2) subr_f(r0,r2,r1) # define rsbr_f(r0,r1,r2) subr_f(r0,r2,r1)
# define rsbi_f(r0,r1,i0) _rsbi_f(_jit,r0,r1,i0) # define rsbi_f(r0,r1,i0) _rsbi_f(_jit,r0,r1,i0)
static void _rsbi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _rsbi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define rsbr_d(r0,r1,r2) subr_d(r0,r2,r1) # define rsbr_d(r0,r1,r2) subr_d(r0,r2,r1)
# define rsbi_d(r0,r1,i0) _rsbi_d(_jit,r0,r1,i0) # define rsbi_d(r0,r1,i0) _rsbi_d(_jit,r0,r1,i0)
static void _rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _rsbi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define mulr_f(r0,r1,r2) FMULS(r0,r1,r2) # define mulr_f(r0,r1,r2) FMULS(r0,r1,r2)
# define muli_f(r0,r1,i0) _muli_f(_jit,r0,r1,i0) # define muli_f(r0,r1,i0) _muli_f(_jit,r0,r1,i0)
static void _muli_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _muli_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define mulr_d(r0,r1,r2) FMUL(r0,r1,r2) # define mulr_d(r0,r1,r2) FMUL(r0,r1,r2)
# define muli_d(r0,r1,i0) _muli_d(_jit,r0,r1,i0) # define muli_d(r0,r1,i0) _muli_d(_jit,r0,r1,i0)
static void _muli_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _muli_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define divr_f(r0,r1,r2) FDIVS(r0,r1,r2) # define divr_f(r0,r1,r2) FDIVS(r0,r1,r2)
# define divi_f(r0,r1,i0) _divi_f(_jit,r0,r1,i0) # define divi_f(r0,r1,i0) _divi_f(_jit,r0,r1,i0)
static void _divi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _divi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define divr_d(r0,r1,r2) FDIV(r0,r1,r2) # define divr_d(r0,r1,r2) FDIV(r0,r1,r2)
# define divi_d(r0,r1,i0) _divi_d(_jit,r0,r1,i0) # define divi_d(r0,r1,i0) _divi_d(_jit,r0,r1,i0)
static void _divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _divi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define ltr_f(r0,r1,r2) ltr_d(r0,r1,r2) # define ltr_f(r0,r1,r2) ltr_d(r0,r1,r2)
# define ltr_d(r0,r1,r2) _ltr_d(_jit,r0,r1,r2) # define ltr_d(r0,r1,r2) _ltr_d(_jit,r0,r1,r2)
static void _ltr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ltr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define lti_f(r0,r1,i0) _lti_f(_jit,r0,r1,i0) # define lti_f(r0,r1,i0) _lti_f(_jit,r0,r1,i0)
static void _lti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _lti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define lti_d(r0,r1,i0) _lti_d(_jit,r0,r1,i0) # define lti_d(r0,r1,i0) _lti_d(_jit,r0,r1,i0)
static void _lti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _lti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define ler_f(r0,r1,r2) ler_d(r0,r1,r2) # define ler_f(r0,r1,r2) ler_d(r0,r1,r2)
# define ler_d(r0,r1,r2) _ler_d(_jit,r0,r1,r2) # define ler_d(r0,r1,r2) _ler_d(_jit,r0,r1,r2)
static void _ler_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ler_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define lei_f(r0,r1,i0) _lei_f(_jit,r0,r1,i0) # define lei_f(r0,r1,i0) _lei_f(_jit,r0,r1,i0)
static void _lei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _lei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define lei_d(r0,r1,i0) _lei_d(_jit,r0,r1,i0) # define lei_d(r0,r1,i0) _lei_d(_jit,r0,r1,i0)
static void _lei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _lei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define eqr_f(r0,r1,r2) eqr_d(r0,r1,r2) # define eqr_f(r0,r1,r2) eqr_d(r0,r1,r2)
# define eqr_d(r0,r1,r2) _eqr_d(_jit,r0,r1,r2) # define eqr_d(r0,r1,r2) _eqr_d(_jit,r0,r1,r2)
static void _eqr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _eqr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define eqi_f(r0,r1,i0) _eqi_f(_jit,r0,r1,i0) # define eqi_f(r0,r1,i0) _eqi_f(_jit,r0,r1,i0)
static void _eqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _eqi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define eqi_d(r0,r1,i0) _eqi_d(_jit,r0,r1,i0) # define eqi_d(r0,r1,i0) _eqi_d(_jit,r0,r1,i0)
static void _eqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _eqi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define ger_f(r0,r1,r2) ger_d(r0,r1,r2) # define ger_f(r0,r1,r2) ger_d(r0,r1,r2)
# define ger_d(r0,r1,r2) _ger_d(_jit,r0,r1,r2) # define ger_d(r0,r1,r2) _ger_d(_jit,r0,r1,r2)
static void _ger_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ger_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define gei_f(r0,r1,i0) _gei_f(_jit,r0,r1,i0) # define gei_f(r0,r1,i0) _gei_f(_jit,r0,r1,i0)
static void _gei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _gei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define gei_d(r0,r1,i0) _gei_d(_jit,r0,r1,i0) # define gei_d(r0,r1,i0) _gei_d(_jit,r0,r1,i0)
static void _gei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _gei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define gtr_f(r0,r1,r2) gtr_d(r0,r1,r2) # define gtr_f(r0,r1,r2) gtr_d(r0,r1,r2)
# define gtr_d(r0,r1,r2) _gtr_d(_jit,r0,r1,r2) # define gtr_d(r0,r1,r2) _gtr_d(_jit,r0,r1,r2)
static void _gtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _gtr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define gti_f(r0,r1,i0) _gti_f(_jit,r0,r1,i0) # define gti_f(r0,r1,i0) _gti_f(_jit,r0,r1,i0)
static void _gti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _gti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define gti_d(r0,r1,i0) _gti_d(_jit,r0,r1,i0) # define gti_d(r0,r1,i0) _gti_d(_jit,r0,r1,i0)
static void _gti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _gti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define ner_f(r0,r1,r2) ner_d(r0,r1,r2) # define ner_f(r0,r1,r2) ner_d(r0,r1,r2)
# define ner_d(r0,r1,r2) _ner_d(_jit,r0,r1,r2) # define ner_d(r0,r1,r2) _ner_d(_jit,r0,r1,r2)
static void _ner_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ner_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define nei_f(r0,r1,i0) _nei_f(_jit,r0,r1,i0) # define nei_f(r0,r1,i0) _nei_f(_jit,r0,r1,i0)
static void _nei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _nei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define nei_d(r0,r1,i0) _nei_d(_jit,r0,r1,i0) # define nei_d(r0,r1,i0) _nei_d(_jit,r0,r1,i0)
static void _nei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _nei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define unltr_f(r0,r1,r2) unltr_d(r0,r1,r2) # define unltr_f(r0,r1,r2) unltr_d(r0,r1,r2)
# define unltr_d(r0,r1,r2) _unltr_d(_jit,r0,r1,r2) # define unltr_d(r0,r1,r2) _unltr_d(_jit,r0,r1,r2)
static void _unltr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _unltr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define unlti_f(r0,r1,i0) _unlti_f(_jit,r0,r1,i0) # define unlti_f(r0,r1,i0) _unlti_f(_jit,r0,r1,i0)
static void _unlti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _unlti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define unlti_d(r0,r1,i0) _unlti_d(_jit,r0,r1,i0) # define unlti_d(r0,r1,i0) _unlti_d(_jit,r0,r1,i0)
static void _unlti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _unlti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define unler_f(r0,r1,r2) unler_d(r0,r1,r2) # define unler_f(r0,r1,r2) unler_d(r0,r1,r2)
# define unler_d(r0,r1,r2) _unler_d(_jit,r0,r1,r2) # define unler_d(r0,r1,r2) _unler_d(_jit,r0,r1,r2)
static void _unler_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _unler_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define unlei_f(r0,r1,i0) _unlei_f(_jit,r0,r1,i0) # define unlei_f(r0,r1,i0) _unlei_f(_jit,r0,r1,i0)
static void _unlei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _unlei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define unlei_d(r0,r1,i0) _unlei_d(_jit,r0,r1,i0) # define unlei_d(r0,r1,i0) _unlei_d(_jit,r0,r1,i0)
static void _unlei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _unlei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define uneqr_f(r0,r1,r2) uneqr_d(r0,r1,r2) # define uneqr_f(r0,r1,r2) uneqr_d(r0,r1,r2)
# define uneqr_d(r0,r1,r2) _uneqr_d(_jit,r0,r1,r2) # define uneqr_d(r0,r1,r2) _uneqr_d(_jit,r0,r1,r2)
static void _uneqr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _uneqr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define uneqi_f(r0,r1,i0) _uneqi_f(_jit,r0,r1,i0) # define uneqi_f(r0,r1,i0) _uneqi_f(_jit,r0,r1,i0)
static void _uneqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _uneqi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define uneqi_d(r0,r1,i0) _uneqi_d(_jit,r0,r1,i0) # define uneqi_d(r0,r1,i0) _uneqi_d(_jit,r0,r1,i0)
static void _uneqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _uneqi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define unger_f(r0,r1,r2) unger_d(r0,r1,r2) # define unger_f(r0,r1,r2) unger_d(r0,r1,r2)
# define unger_d(r0,r1,r2) _unger_d(_jit,r0,r1,r2) # define unger_d(r0,r1,r2) _unger_d(_jit,r0,r1,r2)
static void _unger_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _unger_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ungei_f(r0,r1,i0) _ungei_f(_jit,r0,r1,i0) # define ungei_f(r0,r1,i0) _ungei_f(_jit,r0,r1,i0)
static void _ungei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _ungei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define ungei_d(r0,r1,i0) _ungei_d(_jit,r0,r1,i0) # define ungei_d(r0,r1,i0) _ungei_d(_jit,r0,r1,i0)
static void _ungei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _ungei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define ungtr_f(r0,r1,r2) ungtr_d(r0,r1,r2) # define ungtr_f(r0,r1,r2) ungtr_d(r0,r1,r2)
# define ungtr_d(r0,r1,r2) _ungtr_d(_jit,r0,r1,r2) # define ungtr_d(r0,r1,r2) _ungtr_d(_jit,r0,r1,r2)
static void _ungtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ungtr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ungti_f(r0,r1,i0) _ungti_f(_jit,r0,r1,i0) # define ungti_f(r0,r1,i0) _ungti_f(_jit,r0,r1,i0)
static void _ungti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _ungti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define ungti_d(r0,r1,i0) _ungti_d(_jit,r0,r1,i0) # define ungti_d(r0,r1,i0) _ungti_d(_jit,r0,r1,i0)
static void _ungti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _ungti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define ltgtr_f(r0,r1,r2) ltgtr_d(r0,r1,r2) # define ltgtr_f(r0,r1,r2) ltgtr_d(r0,r1,r2)
# define ltgtr_d(r0,r1,r2) _ltgtr_d(_jit,r0,r1,r2) # define ltgtr_d(r0,r1,r2) _ltgtr_d(_jit,r0,r1,r2)
static void _ltgtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ltgtr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ltgti_f(r0,r1,i0) _ltgti_f(_jit,r0,r1,i0) # define ltgti_f(r0,r1,i0) _ltgti_f(_jit,r0,r1,i0)
static void _ltgti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _ltgti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define ltgti_d(r0,r1,i0) _ltgti_d(_jit,r0,r1,i0) # define ltgti_d(r0,r1,i0) _ltgti_d(_jit,r0,r1,i0)
static void _ltgti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _ltgti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define ordr_f(r0,r1,r2) ordr_d(r0,r1,r2) # define ordr_f(r0,r1,r2) ordr_d(r0,r1,r2)
# define ordr_d(r0,r1,r2) _ordr_d(_jit,r0,r1,r2) # define ordr_d(r0,r1,r2) _ordr_d(_jit,r0,r1,r2)
static void _ordr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ordr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ordi_f(r0,r1,i0) _ordi_f(_jit,r0,r1,i0) # define ordi_f(r0,r1,i0) _ordi_f(_jit,r0,r1,i0)
static void _ordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _ordi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define ordi_d(r0,r1,i0) _ordi_d(_jit,r0,r1,i0) # define ordi_d(r0,r1,i0) _ordi_d(_jit,r0,r1,i0)
static void _ordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _ordi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define unordr_f(r0,r1,r2) unordr_d(r0,r1,r2) # define unordr_f(r0,r1,r2) unordr_d(r0,r1,r2)
# define unordr_d(r0,r1,r2) _unordr_d(_jit,r0,r1,r2) # define unordr_d(r0,r1,r2) _unordr_d(_jit,r0,r1,r2)
static void _unordr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _unordr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define unordi_f(r0,r1,i0) _unordi_f(_jit,r0,r1,i0) # define unordi_f(r0,r1,i0) _unordi_f(_jit,r0,r1,i0)
static void _unordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _unordi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define unordi_d(r0,r1,i0) _unordi_d(_jit,r0,r1,i0) # define unordi_d(r0,r1,i0) _unordi_d(_jit,r0,r1,i0)
static void _unordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _unordi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define bltr_f(i0,r0,r1) bltr_d(i0,r0,r1) # define bltr_f(i0,r0,r1) bltr_d(i0,r0,r1)
# define bltr_d(i0,r0,r1) _bltr_d(_jit,i0,r0,r1) # define bltr_d(i0,r0,r1) _bltr_d(_jit,i0,r0,r1)
static jit_word_t _bltr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bltr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define blti_f(i0,r0,i1) _blti_f(_jit,i0,r0,i1) # define blti_f(i0,r0,i1) _blti_f(_jit,i0,r0,i1)
static jit_word_t _blti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _blti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define blti_d(i0,r0,i1) _blti_d(_jit,i0,r0,i1) # define blti_d(i0,r0,i1) _blti_d(_jit,i0,r0,i1)
static jit_word_t _blti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _blti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bler_f(i0,r0,r1) bler_d(i0,r0,r1) # define bler_f(i0,r0,r1) bler_d(i0,r0,r1)
# define bler_d(i0,r0,r1) _bler_d(_jit,i0,r0,r1) # define bler_d(i0,r0,r1) _bler_d(_jit,i0,r0,r1)
static jit_word_t _bler_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bler_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define blei_f(i0,r0,i1) _blei_f(_jit,i0,r0,i1) # define blei_f(i0,r0,i1) _blei_f(_jit,i0,r0,i1)
static jit_word_t _blei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _blei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define blei_d(i0,r0,i1) _blei_d(_jit,i0,r0,i1) # define blei_d(i0,r0,i1) _blei_d(_jit,i0,r0,i1)
static jit_word_t _blei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _blei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define beqr_f(i0,r0,r1) beqr_d(i0,r0,r1) # define beqr_f(i0,r0,r1) beqr_d(i0,r0,r1)
# define beqr_d(i0,r0,r1) _beqr_d(_jit,i0,r0,r1) # define beqr_d(i0,r0,r1) _beqr_d(_jit,i0,r0,r1)
static jit_word_t _beqr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _beqr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define beqi_f(i0,r0,i1) _beqi_f(_jit,i0,r0,i1) # define beqi_f(i0,r0,i1) _beqi_f(_jit,i0,r0,i1)
static jit_word_t _beqi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _beqi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define beqi_d(i0,r0,i1) _beqi_d(_jit,i0,r0,i1) # define beqi_d(i0,r0,i1) _beqi_d(_jit,i0,r0,i1)
static jit_word_t _beqi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _beqi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bger_f(i0,r0,r1) bger_d(i0,r0,r1) # define bger_f(i0,r0,r1) bger_d(i0,r0,r1)
# define bger_d(i0,r0,r1) _bger_d(_jit,i0,r0,r1) # define bger_d(i0,r0,r1) _bger_d(_jit,i0,r0,r1)
static jit_word_t _bger_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bger_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bgei_f(i0,r0,i1) _bgei_f(_jit,i0,r0,i1) # define bgei_f(i0,r0,i1) _bgei_f(_jit,i0,r0,i1)
static jit_word_t _bgei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bgei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bgei_d(i0,r0,i1) _bgei_d(_jit,i0,r0,i1) # define bgei_d(i0,r0,i1) _bgei_d(_jit,i0,r0,i1)
static jit_word_t _bgei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bgei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bgtr_f(i0,r0,r1) bgtr_d(i0,r0,r1) # define bgtr_f(i0,r0,r1) bgtr_d(i0,r0,r1)
# define bgtr_d(i0,r0,r1) _bgtr_d(_jit,i0,r0,r1) # define bgtr_d(i0,r0,r1) _bgtr_d(_jit,i0,r0,r1)
static jit_word_t _bgtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bgtr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bgti_f(i0,r0,i1) _bgti_f(_jit,i0,r0,i1) # define bgti_f(i0,r0,i1) _bgti_f(_jit,i0,r0,i1)
static jit_word_t _bgti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bgti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bgti_d(i0,r0,i1) _bgti_d(_jit,i0,r0,i1) # define bgti_d(i0,r0,i1) _bgti_d(_jit,i0,r0,i1)
static jit_word_t _bgti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bgti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bner_f(i0,r0,r1) bner_d(i0,r0,r1) # define bner_f(i0,r0,r1) bner_d(i0,r0,r1)
# define bner_d(i0,r0,r1) _bner_d(_jit,i0,r0,r1) # define bner_d(i0,r0,r1) _bner_d(_jit,i0,r0,r1)
static jit_word_t _bner_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bner_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bnei_f(i0,r0,i1) _bnei_f(_jit,i0,r0,i1) # define bnei_f(i0,r0,i1) _bnei_f(_jit,i0,r0,i1)
static jit_word_t _bnei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bnei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bnei_d(i0,r0,i1) _bnei_d(_jit,i0,r0,i1) # define bnei_d(i0,r0,i1) _bnei_d(_jit,i0,r0,i1)
static jit_word_t _bnei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bnei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bunltr_f(i0,r0,r1) bunltr_d(i0,r0,r1) # define bunltr_f(i0,r0,r1) bunltr_d(i0,r0,r1)
# define bunltr_d(i0,r0,r1) _bunltr_d(_jit,i0,r0,r1) # define bunltr_d(i0,r0,r1) _bunltr_d(_jit,i0,r0,r1)
static jit_word_t _bunltr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bunltr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bunlti_f(i0,r0,i1) _bunlti_f(_jit,i0,r0,i1) # define bunlti_f(i0,r0,i1) _bunlti_f(_jit,i0,r0,i1)
static jit_word_t _bunlti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bunlti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bunlti_d(i0,r0,i1) _bunlti_d(_jit,i0,r0,i1) # define bunlti_d(i0,r0,i1) _bunlti_d(_jit,i0,r0,i1)
static jit_word_t _bunlti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bunlti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bunler_f(i0,r0,r1) bunler_d(i0,r0,r1) # define bunler_f(i0,r0,r1) bunler_d(i0,r0,r1)
# define bunler_d(i0,r0,r1) _bunler_d(_jit,i0,r0,r1) # define bunler_d(i0,r0,r1) _bunler_d(_jit,i0,r0,r1)
static jit_word_t _bunler_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bunler_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bunlei_f(i0,r0,i1) _bunlei_f(_jit,i0,r0,i1) # define bunlei_f(i0,r0,i1) _bunlei_f(_jit,i0,r0,i1)
static jit_word_t _bunlei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bunlei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bunlei_d(i0,r0,i1) _bunlei_d(_jit,i0,r0,i1) # define bunlei_d(i0,r0,i1) _bunlei_d(_jit,i0,r0,i1)
static jit_word_t _bunlei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bunlei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define buneqr_f(i0,r0,r1) buneqr_d(i0,r0,r1) # define buneqr_f(i0,r0,r1) buneqr_d(i0,r0,r1)
# define buneqr_d(i0,r0,r1) _buneqr_d(_jit,i0,r0,r1) # define buneqr_d(i0,r0,r1) _buneqr_d(_jit,i0,r0,r1)
static jit_word_t _buneqr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _buneqr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define buneqi_f(i0,r0,i1) _buneqi_f(_jit,i0,r0,i1) # define buneqi_f(i0,r0,i1) _buneqi_f(_jit,i0,r0,i1)
static jit_word_t _buneqi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _buneqi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define buneqi_d(i0,r0,i1) _buneqi_d(_jit,i0,r0,i1) # define buneqi_d(i0,r0,i1) _buneqi_d(_jit,i0,r0,i1)
static jit_word_t _buneqi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _buneqi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bunger_f(i0,r0,r1) bunger_d(i0,r0,r1) # define bunger_f(i0,r0,r1) bunger_d(i0,r0,r1)
# define bunger_d(i0,r0,r1) _bunger_d(_jit,i0,r0,r1) # define bunger_d(i0,r0,r1) _bunger_d(_jit,i0,r0,r1)
static jit_word_t _bunger_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bunger_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bungei_f(i0,r0,i1) _bungei_f(_jit,i0,r0,i1) # define bungei_f(i0,r0,i1) _bungei_f(_jit,i0,r0,i1)
static jit_word_t _bungei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bungei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bungei_d(i0,r0,i1) _bungei_d(_jit,i0,r0,i1) # define bungei_d(i0,r0,i1) _bungei_d(_jit,i0,r0,i1)
static jit_word_t _bungei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bungei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bungtr_f(i0,r0,r1) bungtr_d(i0,r0,r1) # define bungtr_f(i0,r0,r1) bungtr_d(i0,r0,r1)
# define bungtr_d(i0,r0,r1) _bungtr_d(_jit,i0,r0,r1) # define bungtr_d(i0,r0,r1) _bungtr_d(_jit,i0,r0,r1)
static jit_word_t _bungtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bungtr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bungti_f(i0,r0,i1) _bungti_f(_jit,i0,r0,i1) # define bungti_f(i0,r0,i1) _bungti_f(_jit,i0,r0,i1)
static jit_word_t _bungti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bungti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bungti_d(i0,r0,i1) _bungti_d(_jit,i0,r0,i1) # define bungti_d(i0,r0,i1) _bungti_d(_jit,i0,r0,i1)
static jit_word_t _bungti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bungti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bltgtr_f(i0,r0,r1) bltgtr_d(i0,r0,r1) # define bltgtr_f(i0,r0,r1) bltgtr_d(i0,r0,r1)
# define bltgtr_d(i0,r0,r1) _bltgtr_d(_jit,i0,r0,r1) # define bltgtr_d(i0,r0,r1) _bltgtr_d(_jit,i0,r0,r1)
static jit_word_t _bltgtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bltgtr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bltgti_f(i0,r0,i1) _bltgti_f(_jit,i0,r0,i1) # define bltgti_f(i0,r0,i1) _bltgti_f(_jit,i0,r0,i1)
static jit_word_t _bltgti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bltgti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bltgti_d(i0,r0,i1) _bltgti_d(_jit,i0,r0,i1) # define bltgti_d(i0,r0,i1) _bltgti_d(_jit,i0,r0,i1)
static jit_word_t _bltgti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bltgti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bordr_f(i0,r0,r1) bordr_d(i0,r0,r1) # define bordr_f(i0,r0,r1) bordr_d(i0,r0,r1)
# define bordr_d(i0,r0,r1) _bordr_d(_jit,i0,r0,r1) # define bordr_d(i0,r0,r1) _bordr_d(_jit,i0,r0,r1)
static jit_word_t _bordr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bordr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bordi_f(i0,r0,i1) _bordi_f(_jit,i0,r0,i1) # define bordi_f(i0,r0,i1) _bordi_f(_jit,i0,r0,i1)
static jit_word_t _bordi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bordi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bordi_d(i0,r0,i1) _bordi_d(_jit,i0,r0,i1) # define bordi_d(i0,r0,i1) _bordi_d(_jit,i0,r0,i1)
static jit_word_t _bordi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bordi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define bunordr_f(i0,r0,r1) bunordr_d(i0,r0,r1) # define bunordr_f(i0,r0,r1) bunordr_d(i0,r0,r1)
# define bunordr_d(i0,r0,r1) _bunordr_d(_jit,i0,r0,r1) # define bunordr_d(i0,r0,r1) _bunordr_d(_jit,i0,r0,r1)
static jit_word_t _bunordr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static jit_word_t _bunordr_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define bunordi_f(i0,r0,i1) _bunordi_f(_jit,i0,r0,i1) # define bunordi_f(i0,r0,i1) _bunordi_f(_jit,i0,r0,i1)
static jit_word_t _bunordi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t*); static jit_word_t _bunordi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t*);
# define bunordi_d(i0,r0,i1) _bunordi_d(_jit,i0,r0,i1) # define bunordi_d(i0,r0,i1) _bunordi_d(_jit,i0,r0,i1)
static jit_word_t _bunordi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t*); static jit_word_t _bunordi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t*);
# define ldr_f(r0,r1) LFSX(r0, _R0_REGNO, r1) # define ldr_f(r0,r1) LFSX(r0, _R0_REGNO, r1)
# define ldi_f(r0,i0) _ldi_f(_jit,r0,i0) # define ldi_f(r0,i0) _ldi_f(_jit,r0,i0)
static void _ldi_f(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_f(jit_state_t*,int32_t,jit_word_t);
# define ldxr_f(r0,r1,r2) _ldxr_f(_jit,r0,r1,r2) # define ldxr_f(r0,r1,r2) _ldxr_f(_jit,r0,r1,r2)
static void _ldxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0) # define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0)
static void _ldxi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_f(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
# define str_f(r0,r1) STFSX(r1, _R0_REGNO, r0) # define str_f(r0,r1) STFSX(r1, _R0_REGNO, r0)
# define sti_f(i0,r0) _sti_f(_jit,i0,r0) # define sti_f(i0,r0) _sti_f(_jit,i0,r0)
static void _sti_f(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_f(jit_state_t*,jit_word_t,int32_t);
# define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2) # define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2)
static void _stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1) # define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1)
static void _stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define ldr_d(r0,r1) LFDX(r0, _R0_REGNO, r1) # define ldr_d(r0,r1) LFDX(r0, _R0_REGNO, r1)
# define ldi_d(r0,i0) _ldi_d(_jit,r0,i0) # define ldi_d(r0,i0) _ldi_d(_jit,r0,i0)
static void _ldi_d(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_d(jit_state_t*,int32_t,jit_word_t);
# define ldxr_d(r0,r1,r2) _ldxr_d(_jit,r0,r1,r2) # define ldxr_d(r0,r1,r2) _ldxr_d(_jit,r0,r1,r2)
static void _ldxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0) # define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0)
static void _ldxi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_d(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
# define str_d(r0,r1) STFDX(r1, _R0_REGNO, r0) # define str_d(r0,r1) STFDX(r1, _R0_REGNO, r0)
# define sti_d(i0,r0) _sti_d(_jit,i0,r0) # define sti_d(i0,r0) _sti_d(_jit,i0,r0)
static void _sti_d(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_d(jit_state_t*,jit_word_t,int32_t);
# define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2) # define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2)
static void _stxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1) # define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1)
static void _stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1) # define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1)
static void _vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _vaarg_d(jit_state_t*, int32_t, jit_int32_t);
#endif #endif
#if CODE #if CODE
@ -430,20 +430,20 @@ _FXFL(jit_state_t *_jit, int o, int m, int b, int x, int r)
} }
static void static void
_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r0 != r1) if (r0 != r1)
FMR(r0,r1); FMR(r0,r1);
} }
static void static void
_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0) _movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t *i0)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_int32_t reg; int32_t reg;
if (_jitc->no_data) { if (_jitc->no_data) {
data.f = *i0; data.f = *i0;
@ -458,14 +458,14 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
} }
static void static void
_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0) _movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t *i0)
{ {
union { union {
jit_int32_t i[2]; int32_t i[2];
jit_word_t w; jit_word_t w;
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_int32_t reg; int32_t reg;
if (_jitc->no_data) { if (_jitc->no_data) {
data.d = *i0; data.d = *i0;
@ -488,10 +488,10 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
/* should only work on newer ppc (fcfid is a ppc64 instruction) */ /* should only work on newer ppc (fcfid is a ppc64 instruction) */
static void static void
_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _extr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
# if __WORDSIZE == 32 # if __WORDSIZE == 32
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
rshi(rn(reg), r1, 31); rshi(rn(reg), r1, 31);
/* use reserved 8 bytes area */ /* use reserved 8 bytes area */
@ -506,9 +506,9 @@ _extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_d_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
FCTIWZ(rn(reg), r1); FCTIWZ(rn(reg), r1);
/* use reserved 8 bytes area */ /* use reserved 8 bytes area */
@ -519,9 +519,9 @@ _truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_truncr_d_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_d_l(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
FCTIDZ(rn(reg), r1); FCTIDZ(rn(reg), r1);
/* use reserved 8 bytes area */ /* use reserved 8 bytes area */
@ -534,10 +534,10 @@ _truncr_d_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# define fpr_opi(name, type, size) \ # define fpr_opi(name, type, size) \
static void \ static void \
_##name##i_##type(jit_state_t *_jit, \ _##name##i_##type(jit_state_t *_jit, \
jit_int32_t r0, jit_int32_t r1, \ int32_t r0, jit_int32_t r1, \
jit_float##size##_t *i0) \ jit_float##size##_t *i0) \
{ \ { \
jit_int32_t reg = jit_get_reg(jit_class_fpr); \ int32_t reg = jit_get_reg(jit_class_fpr); \
movi_##type(rn(reg), i0); \ movi_##type(rn(reg), i0); \
name##r_##type(r0, r1, rn(reg)); \ name##r_##type(r0, r1, rn(reg)); \
jit_unget_reg(reg); \ jit_unget_reg(reg); \
@ -545,11 +545,11 @@ _##name##i_##type(jit_state_t *_jit, \
# define fpr_bopi(name, type, size) \ # define fpr_bopi(name, type, size) \
static jit_word_t \ static jit_word_t \
_b##name##i_##type(jit_state_t *_jit, \ _b##name##i_##type(jit_state_t *_jit, \
jit_word_t i0, jit_int32_t r0, \ jit_word_t i0, int32_t r0, \
jit_float##size##_t *i1) \ jit_float##size##_t *i1) \
{ \ { \
jit_word_t word; \ jit_word_t word; \
jit_int32_t reg = jit_get_reg(jit_class_fpr| \ int32_t reg = jit_get_reg(jit_class_fpr| \
jit_class_nospill); \ jit_class_nospill); \
movi_##type(rn(reg), i1); \ movi_##type(rn(reg), i1); \
word = b##name##r_##type(i0, r0, rn(reg)); \ word = b##name##r_##type(i0, r0, rn(reg)); \
@ -573,7 +573,7 @@ fopi(div)
dopi(div) dopi(div)
static void static void
_ltr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ltr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPO(CR_0, r1, r2); FCMPO(CR_0, r1, r2);
MFCR(r0); MFCR(r0);
@ -583,7 +583,7 @@ fopi(lt)
dopi(lt) dopi(lt)
static void static void
_ler_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ler_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPO(CR_0, r1, r2); FCMPO(CR_0, r1, r2);
CREQV(CR_GT, CR_GT, CR_UN); CREQV(CR_GT, CR_GT, CR_UN);
@ -594,7 +594,7 @@ fopi(le)
dopi(le) dopi(le)
static void static void
_eqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _eqr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPO(CR_0, r1, r2); FCMPO(CR_0, r1, r2);
MFCR(r0); MFCR(r0);
@ -604,7 +604,7 @@ fopi(eq)
dopi(eq) dopi(eq)
static void static void
_ger_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ger_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPO(CR_0, r1, r2); FCMPO(CR_0, r1, r2);
CREQV(CR_LT, CR_LT, CR_UN); CREQV(CR_LT, CR_LT, CR_UN);
@ -615,7 +615,7 @@ fopi(ge)
dopi(ge) dopi(ge)
static void static void
_gtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _gtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPO(CR_0, r1, r2); FCMPO(CR_0, r1, r2);
MFCR(r0); MFCR(r0);
@ -625,7 +625,7 @@ fopi(gt)
dopi(gt) dopi(gt)
static void static void
_ner_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ner_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPO(CR_0, r1, r2); FCMPO(CR_0, r1, r2);
CRNOT(CR_EQ, CR_EQ); CRNOT(CR_EQ, CR_EQ);
@ -636,7 +636,7 @@ fopi(ne)
dopi(ne) dopi(ne)
static void static void
_unltr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _unltr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPU(CR_0, r1, r2); FCMPU(CR_0, r1, r2);
CROR(CR_LT, CR_LT, CR_UN); CROR(CR_LT, CR_LT, CR_UN);
@ -647,7 +647,7 @@ fopi(unlt)
dopi(unlt) dopi(unlt)
static void static void
_unler_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _unler_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPU(CR_0, r1, r2); FCMPU(CR_0, r1, r2);
CRNOT(CR_GT, CR_GT); CRNOT(CR_GT, CR_GT);
@ -658,7 +658,7 @@ fopi(unle)
dopi(unle) dopi(unle)
static void static void
_uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _uneqr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPU(CR_0, r1, r2); FCMPU(CR_0, r1, r2);
CROR(CR_EQ, CR_EQ, CR_UN); CROR(CR_EQ, CR_EQ, CR_UN);
@ -669,7 +669,7 @@ fopi(uneq)
dopi(uneq) dopi(uneq)
static void static void
_unger_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _unger_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPU(CR_0, r1, r2); FCMPU(CR_0, r1, r2);
CRNOT(CR_LT, CR_LT); CRNOT(CR_LT, CR_LT);
@ -680,7 +680,7 @@ fopi(unge)
dopi(unge) dopi(unge)
static void static void
_ungtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ungtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPU(CR_0, r1, r2); FCMPU(CR_0, r1, r2);
CROR(CR_GT, CR_GT, CR_UN); CROR(CR_GT, CR_GT, CR_UN);
@ -691,7 +691,7 @@ fopi(ungt)
dopi(ungt) dopi(ungt)
static void static void
_ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ltgtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPU(CR_0, r1, r2); FCMPU(CR_0, r1, r2);
CROR(CR_GT, CR_GT, CR_LT); CROR(CR_GT, CR_GT, CR_LT);
@ -702,7 +702,7 @@ fopi(ltgt)
dopi(ltgt) dopi(ltgt)
static void static void
_ordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ordr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPU(CR_0, r1, r2); FCMPU(CR_0, r1, r2);
CRNOT(CR_UN, CR_UN); CRNOT(CR_UN, CR_UN);
@ -713,7 +713,7 @@ fopi(ord)
dopi(ord) dopi(ord)
static void static void
_unordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _unordr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPU(CR_0, r1, r2); FCMPU(CR_0, r1, r2);
MFCR(r0); MFCR(r0);
@ -723,7 +723,7 @@ fopi(unord)
dopi(unord) dopi(unord)
static jit_word_t static jit_word_t
_bltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bltr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPO(CR_0, r0, r1); FCMPO(CR_0, r0, r1);
@ -736,7 +736,7 @@ fbopi(lt)
dbopi(lt) dbopi(lt)
static jit_word_t static jit_word_t
_bler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bler_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPO(CR_0, r0, r1); FCMPO(CR_0, r0, r1);
@ -750,7 +750,7 @@ fbopi(le)
dbopi(le) dbopi(le)
static jit_word_t static jit_word_t
_beqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _beqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPO(CR_0, r0, r1); FCMPO(CR_0, r0, r1);
@ -763,7 +763,7 @@ fbopi(eq)
dbopi(eq) dbopi(eq)
static jit_word_t static jit_word_t
_bger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bger_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPO(CR_0, r0, r1); FCMPO(CR_0, r0, r1);
@ -777,7 +777,7 @@ fbopi(ge)
dbopi(ge) dbopi(ge)
static jit_word_t static jit_word_t
_bgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bgtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPO(CR_0, r0, r1); FCMPO(CR_0, r0, r1);
@ -790,7 +790,7 @@ fbopi(gt)
dbopi(gt) dbopi(gt)
static jit_word_t static jit_word_t
_bner_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bner_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPO(CR_0, r0, r1); FCMPO(CR_0, r0, r1);
@ -803,7 +803,7 @@ fbopi(ne)
dbopi(ne) dbopi(ne)
static jit_word_t static jit_word_t
_bunltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bunltr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPU(CR_0, r0, r1); FCMPU(CR_0, r0, r1);
@ -817,7 +817,7 @@ fbopi(unlt)
dbopi(unlt) dbopi(unlt)
static jit_word_t static jit_word_t
_bunler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bunler_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPU(CR_0, r0, r1); FCMPU(CR_0, r0, r1);
@ -830,7 +830,7 @@ fbopi(unle)
dbopi(unle) dbopi(unle)
static jit_word_t static jit_word_t
_buneqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _buneqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPU(CR_0, r0, r1); FCMPU(CR_0, r0, r1);
@ -844,7 +844,7 @@ fbopi(uneq)
dbopi(uneq) dbopi(uneq)
static jit_word_t static jit_word_t
_bunger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bunger_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPU(CR_0, r0, r1); FCMPU(CR_0, r0, r1);
@ -857,7 +857,7 @@ fbopi(unge)
dbopi(unge) dbopi(unge)
static jit_word_t static jit_word_t
_bungtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bungtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPU(CR_0, r0, r1); FCMPU(CR_0, r0, r1);
@ -871,7 +871,7 @@ fbopi(ungt)
dbopi(ungt) dbopi(ungt)
static jit_word_t static jit_word_t
_bltgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bltgtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPU(CR_0, r0, r1); FCMPU(CR_0, r0, r1);
@ -885,7 +885,7 @@ fbopi(ltgt)
dbopi(ltgt) dbopi(ltgt)
static jit_word_t static jit_word_t
_bordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bordr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPU(CR_0, r0, r1); FCMPU(CR_0, r0, r1);
@ -898,7 +898,7 @@ fbopi(ord)
dbopi(ord) dbopi(ord)
static jit_word_t static jit_word_t
_bunordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _bunordr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d, w; jit_word_t d, w;
FCMPU(CR_0, r0, r1); FCMPU(CR_0, r0, r1);
@ -911,16 +911,16 @@ fbopi(unord)
dbopi(unord) dbopi(unord)
static void static void
_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_bool_t inv; jit_bool_t inv;
jit_int32_t reg; int32_t reg;
jit_word_t lo, hi; jit_word_t lo, hi;
if (can_sign_extend_short_p(i0)) if (can_sign_extend_short_p(i0))
LFS(r0, _R0_REGNO, i0); LFS(r0, _R0_REGNO, i0);
else if (can_sign_extend_int_p(i0)) { else if (can_sign_extend_int_p(i0)) {
hi = (jit_int16_t)((i0 >> 16) + ((jit_uint16_t)i0 >> 15)); hi = (int16_t)((i0 >> 16) + ((uint16_t)i0 >> 15));
lo = (jit_int16_t)(i0 - (hi << 16)); lo = (int16_t)(i0 - (hi << 16));
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr); if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr);
LIS(rn(reg), hi); LIS(rn(reg), hi);
@ -937,16 +937,16 @@ _ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_bool_t inv; jit_bool_t inv;
jit_int32_t reg; int32_t reg;
jit_word_t lo, hi; jit_word_t lo, hi;
if (can_sign_extend_short_p(i0)) if (can_sign_extend_short_p(i0))
LFD(r0, _R0_REGNO, i0); LFD(r0, _R0_REGNO, i0);
else if (can_sign_extend_int_p(i0)) { else if (can_sign_extend_int_p(i0)) {
hi = (jit_int16_t)((i0 >> 16) + ((jit_uint16_t)i0 >> 15)); hi = (int16_t)((i0 >> 16) + ((uint16_t)i0 >> 15));
lo = (jit_int16_t)(i0 - (hi << 16)); lo = (int16_t)(i0 - (hi << 16));
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr); if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr);
LIS(rn(reg), hi); LIS(rn(reg), hi);
@ -963,9 +963,9 @@ _ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ldxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (r1 == _R0_REGNO) { if (r1 == _R0_REGNO) {
if (r2 != _R0_REGNO) if (r2 != _R0_REGNO)
LFSX(r0, r2, r1); LFSX(r0, r2, r1);
@ -981,9 +981,9 @@ _ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ldxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (r1 == _R0_REGNO) { if (r1 == _R0_REGNO) {
if (r2 != _R0_REGNO) if (r2 != _R0_REGNO)
LFDX(r0, r2, r1); LFDX(r0, r2, r1);
@ -999,9 +999,9 @@ _ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (i0 == 0) if (i0 == 0)
ldr_f(r0, r1); ldr_f(r0, r1);
else if (can_sign_extend_short_p(i0)) { else if (can_sign_extend_short_p(i0)) {
@ -1023,9 +1023,9 @@ _ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (i0 == 0) if (i0 == 0)
ldr_d(r0, r1); ldr_d(r0, r1);
else if (can_sign_extend_short_p(i0)) { else if (can_sign_extend_short_p(i0)) {
@ -1047,16 +1047,16 @@ _ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_bool_t inv; jit_bool_t inv;
jit_int32_t reg; int32_t reg;
jit_word_t lo, hi; jit_word_t lo, hi;
if (can_sign_extend_short_p(i0)) if (can_sign_extend_short_p(i0))
STFS(r0, _R0_REGNO, i0); STFS(r0, _R0_REGNO, i0);
else if (can_sign_extend_int_p(i0)) { else if (can_sign_extend_int_p(i0)) {
hi = (jit_int16_t)((i0 >> 16) + ((jit_uint16_t)i0 >> 15)); hi = (int16_t)((i0 >> 16) + ((uint16_t)i0 >> 15));
lo = (jit_int16_t)(i0 - (hi << 16)); lo = (int16_t)(i0 - (hi << 16));
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr); if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr);
LIS(rn(reg), hi); LIS(rn(reg), hi);
@ -1073,16 +1073,16 @@ _sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_bool_t inv; jit_bool_t inv;
jit_int32_t reg; int32_t reg;
jit_word_t lo, hi; jit_word_t lo, hi;
if (can_sign_extend_short_p(i0)) if (can_sign_extend_short_p(i0))
STFD(r0, _R0_REGNO, i0); STFD(r0, _R0_REGNO, i0);
else if (can_sign_extend_int_p(i0)) { else if (can_sign_extend_int_p(i0)) {
hi = (jit_int16_t)((i0 >> 16) + ((jit_uint16_t)i0 >> 15)); hi = (int16_t)((i0 >> 16) + ((uint16_t)i0 >> 15));
lo = (jit_int16_t)(i0 - (hi << 16)); lo = (int16_t)(i0 - (hi << 16));
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr); if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr);
LIS(rn(reg), hi); LIS(rn(reg), hi);
@ -1099,9 +1099,9 @@ _sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (r0 == _R0_REGNO) { if (r0 == _R0_REGNO) {
if (r1 != _R0_REGNO) if (r1 != _R0_REGNO)
STFSX(r2, r1, r0); STFSX(r2, r1, r0);
@ -1117,9 +1117,9 @@ _stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (r0 == _R0_REGNO) { if (r0 == _R0_REGNO) {
if (r1 != _R0_REGNO) if (r1 != _R0_REGNO)
STFDX(r2, r1, r0); STFDX(r2, r1, r0);
@ -1135,9 +1135,9 @@ _stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (i0 == 0) if (i0 == 0)
str_f(r0, r1); str_f(r0, r1);
else if (can_sign_extend_short_p(i0)) { else if (can_sign_extend_short_p(i0)) {
@ -1159,9 +1159,9 @@ _stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (i0 == 0) if (i0 == 0)
str_d(r0, r1); str_d(r0, r1);
else if (can_sign_extend_short_p(i0)) { else if (can_sign_extend_short_p(i0)) {
@ -1183,7 +1183,7 @@ _stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _vaarg_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
/* Load argument. */ /* Load argument. */
ldr_d(r0, r1); ldr_d(r0, r1);

114
jit/ppc.c
View file

@ -25,9 +25,9 @@
# define I_DISP 0 # define I_DISP 0
# define F_DISP 0 # define F_DISP 0
#else #else
# define C_DISP (__WORDSIZE >> 3) - sizeof(jit_int8_t) # define C_DISP (__WORDSIZE >> 3) - sizeof(int8_t)
# define S_DISP (__WORDSIZE >> 3) - sizeof(jit_int16_t) # define S_DISP (__WORDSIZE >> 3) - sizeof(int16_t)
# define I_DISP (__WORDSIZE >> 3) - sizeof(jit_int32_t) # define I_DISP (__WORDSIZE >> 3) - sizeof(int32_t)
# define F_DISP (__WORDSIZE >> 3) - sizeof(jit_float32_t) # define F_DISP (__WORDSIZE >> 3) - sizeof(jit_float32_t)
#endif #endif
@ -145,7 +145,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -166,7 +166,7 @@ _jit_prolog(jit_state_t *_jit)
_jitc->function->self.aoff = alloca_offset - 8; _jitc->function->self.aoff = alloca_offset - 8;
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -185,8 +185,8 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
assert(_jitc->function); assert(_jitc->function);
switch (length) { switch (length) {
@ -204,13 +204,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t r0, r1; int32_t r0, r1;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
r0 = jit_get_reg(jit_class_gpr); r0 = jit_get_reg(jit_class_gpr);
@ -241,7 +241,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
if (JIT_RET != u) if (JIT_RET != u)
@ -261,7 +261,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
if (JIT_RET != u) if (JIT_RET != u)
@ -282,7 +282,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
if (JIT_FRET != u) if (JIT_FRET != u)
@ -341,7 +341,7 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
jit_pushargr(u); jit_pushargr(u);
@ -352,7 +352,7 @@ jit_node_t *
_jit_arg(jit_state_t *_jit) _jit_arg(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -369,7 +369,7 @@ jit_node_t *
_jit_arg_f(jit_state_t *_jit) _jit_arg_f(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_f_reg_p(_jitc->function->self.argf)) if (jit_arg_f_reg_p(_jitc->function->self.argf))
offset = _jitc->function->self.argf++; offset = _jitc->function->self.argf++;
@ -393,7 +393,7 @@ jit_node_t *
_jit_arg_d(jit_state_t *_jit) _jit_arg_d(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_f_reg_p(_jitc->function->self.argf)) if (jit_arg_f_reg_p(_jitc->function->self.argf))
offset = _jitc->function->self.argf++; offset = _jitc->function->self.argf++;
@ -414,7 +414,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -426,7 +426,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -438,7 +438,7 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -450,7 +450,7 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -462,7 +462,7 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -480,7 +480,7 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
#if __WORDSIZE == 64 #if __WORDSIZE == 64
void void
_jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_ui(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_ui, u, v); jit_inc_synth_wp(getarg_ui, u, v);
@ -492,7 +492,7 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_l(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_l, u, v); jit_inc_synth_wp(getarg_l, u, v);
@ -505,7 +505,7 @@ _jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
#endif #endif
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
@ -519,7 +519,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -534,7 +534,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(getarg_f, u, v); jit_inc_synth_wp(getarg_f, u, v);
@ -546,7 +546,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -560,7 +560,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
if (jit_arg_f_reg_p(v->u.w)) if (jit_arg_f_reg_p(v->u.w))
@ -575,7 +575,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(getarg_d, u, v); jit_inc_synth_wp(getarg_d, u, v);
@ -587,7 +587,7 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
@ -601,7 +601,7 @@ _jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
if (jit_arg_f_reg_p(v->u.w)) if (jit_arg_f_reg_p(v->u.w))
@ -616,7 +616,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
@ -634,7 +634,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi(jit_state_t *_jit, jit_word_t u) _jit_pushargi(jit_state_t *_jit, jit_word_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargi, u); jit_inc_synth_w(pushargi, u);
jit_link_prepare(); jit_link_prepare();
@ -653,7 +653,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_f, u); jit_inc_synth_w(pushargr_f, u);
@ -699,7 +699,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_f(pushargi_f, u); jit_inc_synth_f(pushargi_f, u);
jit_link_prepare(); jit_link_prepare();
@ -745,7 +745,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_d, u); jit_inc_synth_w(pushargr_d, u);
@ -796,7 +796,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_d(pushargi_d, u); jit_inc_synth_d(pushargi_d, u);
jit_link_prepare(); jit_link_prepare();
@ -852,9 +852,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
jit_int32_t spec; int32_t spec;
spec = jit_class(_rvs[regno].spec); spec = jit_class(_rvs[regno].spec);
if (spec & jit_class_arg) { if (spec & jit_class_arg) {
if (spec & jit_class_gpr) { if (spec & jit_class_gpr) {
@ -872,7 +872,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_node_t *call; jit_node_t *call;
assert(_jitc->function); assert(_jitc->function);
@ -905,7 +905,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth(retval_c); jit_inc_synth(retval_c);
jit_extr_c(r0, JIT_RET); jit_extr_c(r0, JIT_RET);
@ -913,7 +913,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth(retval_uc); jit_inc_synth(retval_uc);
jit_extr_uc(r0, JIT_RET); jit_extr_uc(r0, JIT_RET);
@ -921,7 +921,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth(retval_s); jit_inc_synth(retval_s);
jit_extr_s(r0, JIT_RET); jit_extr_s(r0, JIT_RET);
@ -929,7 +929,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth(retval_us); jit_inc_synth(retval_us);
jit_extr_us(r0, JIT_RET); jit_extr_us(r0, JIT_RET);
@ -937,7 +937,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth(retval_i); jit_inc_synth(retval_i);
#if __WORDSIZE == 32 #if __WORDSIZE == 32
@ -951,7 +951,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
#if __WORDSIZE == 64 #if __WORDSIZE == 64
void void
_jit_retval_ui(jit_state_t *_jit, jit_int32_t r0) _jit_retval_ui(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth(retval_ui); jit_inc_synth(retval_ui);
jit_extr_ui(r0, JIT_RET); jit_extr_ui(r0, JIT_RET);
@ -959,7 +959,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_l(jit_state_t *_jit, jit_int32_t r0) _jit_retval_l(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth(retval_l); jit_inc_synth(retval_l);
if (r0 != JIT_RET) if (r0 != JIT_RET)
@ -969,7 +969,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
#endif #endif
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth(retval_f); jit_inc_synth(retval_f);
jit_retval_d(r0); jit_retval_d(r0);
@ -977,7 +977,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth(retval_d); jit_inc_synth(retval_d);
if (r0 != JIT_FRET) if (r0 != JIT_FRET)
@ -991,8 +991,8 @@ _emit_code(jit_state_t *_jit)
jit_node_t *node; jit_node_t *node;
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_int32_t value; int32_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_word_t word; jit_word_t word;
@ -1691,7 +1691,7 @@ jit_flush(void *fptr, void *tptr)
} }
void void
_emit_ldxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
#if __WORDSIZE == 32 #if __WORDSIZE == 32
ldxi_i(rn(r0), rn(r1), i0); ldxi_i(rn(r0), rn(r1), i0);
@ -1701,7 +1701,7 @@ _emit_ldxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
void void
_emit_stxi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
#if __WORDSIZE == 32 #if __WORDSIZE == 32
stxi_i(i0, rn(r0), rn(r1)); stxi_i(i0, rn(r0), rn(r1));
@ -1711,13 +1711,13 @@ _emit_stxi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
void void
_emit_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _emit_ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
ldxi_d(rn(r0), rn(r1), i0); ldxi_d(rn(r0), rn(r1), i0);
} }
void void
_emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
stxi_d(i0, rn(r0), rn(r1)); stxi_d(i0, rn(r0), rn(r1));
} }
@ -1725,7 +1725,7 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) if (node->code == jit_code_movi)

View file

@ -55,7 +55,7 @@
# define JIT_RET _RAX # define JIT_RET _RAX
# if __X32 # if __X32
# define JIT_FRET _ST0 # define JIT_FRET _ST0
typedef jit_uint32_t jit_regset_t; typedef uint32_t jit_regset_t;
# else # else
# if __CYGWIN__ # if __CYGWIN__
# define JIT_RA0 _RCX # define JIT_RA0 _RCX
@ -64,7 +64,7 @@ typedef jit_uint32_t jit_regset_t;
# endif # endif
# define JIT_FA0 _XMM0 # define JIT_FA0 _XMM0
# define JIT_FRET _XMM0 # define JIT_FRET _XMM0
typedef jit_uint64_t jit_regset_t; typedef uint64_t jit_regset_t;
# endif # endif
#elif defined(__mips__) #elif defined(__mips__)
# define JIT_RA0 _A0 # define JIT_RA0 _A0
@ -72,7 +72,7 @@ typedef jit_uint64_t jit_regset_t;
# define JIT_SP _SP # define JIT_SP _SP
# define JIT_RET _V0 # define JIT_RET _V0
# define JIT_FRET _F0 # define JIT_FRET _F0
typedef jit_uint64_t jit_regset_t; typedef uint64_t jit_regset_t;
#elif defined(__arm__) #elif defined(__arm__)
# define JIT_RA0 _R0 # define JIT_RA0 _R0
# define JIT_FA0 _D0 # define JIT_FA0 _D0
@ -83,24 +83,24 @@ typedef jit_uint64_t jit_regset_t;
# else # else
# define JIT_FRET _R0 # define JIT_FRET _R0
# endif # endif
typedef jit_uint64_t jit_regset_t; typedef uint64_t jit_regset_t;
#elif defined(__ppc__) || defined(__powerpc__) #elif defined(__ppc__) || defined(__powerpc__)
# define JIT_RA0 _R3 # define JIT_RA0 _R3
# define JIT_FA0 _F1 # define JIT_FA0 _F1
# define JIT_SP _R1 # define JIT_SP _R1
# define JIT_RET _R3 # define JIT_RET _R3
# define JIT_FRET _F1 # define JIT_FRET _F1
typedef jit_uint64_t jit_regset_t; typedef uint64_t jit_regset_t;
#elif defined(__sparc__) #elif defined(__sparc__)
# define JIT_SP _SP # define JIT_SP _SP
# define JIT_RET _I0 # define JIT_RET _I0
# define JIT_FRET _F0 # define JIT_FRET _F0
# if __WORDSIZE == 32 # if __WORDSIZE == 32
typedef jit_uint64_t jit_regset_t; typedef uint64_t jit_regset_t;
# else # else
typedef struct { typedef struct {
jit_uint64_t rl; uint64_t rl;
jit_uint64_t rh; uint64_t rh;
} jit_regset_t; } jit_regset_t;
# endif # endif
#elif defined(__ia64__) #elif defined(__ia64__)
@ -108,38 +108,38 @@ typedef struct {
# define JIT_RET _R8 # define JIT_RET _R8
# define JIT_FRET _F8 # define JIT_FRET _F8
typedef struct { typedef struct {
jit_uint64_t rl; uint64_t rl;
jit_uint64_t rh; uint64_t rh;
jit_uint64_t fl; uint64_t fl;
jit_uint64_t fh; uint64_t fh;
} jit_regset_t; } jit_regset_t;
#elif defined(__hppa__) #elif defined(__hppa__)
# define JIT_SP _R30 # define JIT_SP _R30
# define JIT_RET _R28 # define JIT_RET _R28
# define JIT_FRET _F4 # define JIT_FRET _F4
typedef jit_uint64_t jit_regset_t; typedef uint64_t jit_regset_t;
#elif defined(__aarch64__) #elif defined(__aarch64__)
# define JIT_RA0 _R0 # define JIT_RA0 _R0
# define JIT_FA0 _V0 # define JIT_FA0 _V0
# define JIT_SP _SP # define JIT_SP _SP
# define JIT_RET _R0 # define JIT_RET _R0
# define JIT_FRET _V0 # define JIT_FRET _V0
typedef jit_uint64_t jit_regset_t; typedef uint64_t jit_regset_t;
#elif defined(__s390__) || defined(__s390x__) #elif defined(__s390__) || defined(__s390x__)
# define JIT_SP _R15 # define JIT_SP _R15
# define JIT_RET _R2 # define JIT_RET _R2
# define JIT_FRET _F0 # define JIT_FRET _F0
typedef jit_uint32_t jit_regset_t; typedef uint32_t jit_regset_t;
#elif defined(__alpha__) #elif defined(__alpha__)
# define JIT_SP _SP # define JIT_SP _SP
# define JIT_RET _V0 # define JIT_RET _V0
# define JIT_FRET _F0 # define JIT_FRET _F0
typedef jit_uint64_t jit_regset_t; typedef uint64_t jit_regset_t;
#endif #endif
#define jit_data(u,v,w) _jit_data(_jit,u,v,w) #define jit_data(u,v,w) _jit_data(_jit,u,v,w)
extern jit_node_t *_jit_data(jit_state_t*, const void*, extern jit_node_t *_jit_data(jit_state_t*, const void*,
jit_word_t, jit_int32_t); jit_word_t, int32_t);
#define jit_size(vector) (sizeof(vector) / sizeof((vector)[0])) #define jit_size(vector) (sizeof(vector) / sizeof((vector)[0]))
@ -278,7 +278,7 @@ extern void
jit_regset_set(jit_regset_t*, jit_regset_t*); jit_regset_set(jit_regset_t*, jit_regset_t*);
extern void extern void
jit_regset_set_mask(jit_regset_t*, jit_int32_t); jit_regset_set_mask(jit_regset_t*, int32_t);
extern jit_bool_t extern jit_bool_t
jit_regset_cmp_ui(jit_regset_t*, jit_word_t); jit_regset_cmp_ui(jit_regset_t*, jit_word_t);
@ -290,13 +290,13 @@ extern jit_bool_t
jit_regset_set_p(jit_regset_t*); jit_regset_set_p(jit_regset_t*);
extern void extern void
jit_regset_clrbit(jit_regset_t*, jit_int32_t); jit_regset_clrbit(jit_regset_t*, int32_t);
extern void extern void
jit_regset_setbit(jit_regset_t*, jit_int32_t); jit_regset_setbit(jit_regset_t*, int32_t);
extern jit_bool_t extern jit_bool_t
jit_regset_tstbit(jit_regset_t*, jit_int32_t); jit_regset_tstbit(jit_regset_t*, int32_t);
# if __sparc__ && __WORDSIZE == 64 # if __sparc__ && __WORDSIZE == 64
# define jit_regset_new(set) \ # define jit_regset_new(set) \
do { (set)->rl = (set)->rh = 0; } while (0) do { (set)->rl = (set)->rh = 0; } while (0)
@ -325,7 +325,7 @@ jit_regset_tstbit(jit_regset_t*, jit_int32_t);
# define jit_regset_del(set) (*(set) = 0) # define jit_regset_del(set) (*(set) = 0)
#endif #endif
extern unsigned long extern unsigned long
jit_regset_scan1(jit_regset_t*, jit_int32_t); jit_regset_scan1(jit_regset_t*, int32_t);
#define jit_reglive_setup() \ #define jit_reglive_setup() \
do { \ do { \
@ -353,11 +353,11 @@ typedef struct jit_data_info jit_data_info_t;
union jit_data { union jit_data {
struct { struct {
#if __BYTE_ORDER == __LITTLE_ENDIAN #if __BYTE_ORDER == __LITTLE_ENDIAN
jit_int32_t l; int32_t l;
jit_int32_t h; int32_t h;
#else #else
jit_int32_t h; int32_t h;
jit_int32_t l; int32_t l;
#endif #endif
} q; } q;
jit_word_t w; jit_word_t w;
@ -368,7 +368,7 @@ union jit_data {
}; };
struct jit_note { struct jit_note {
jit_uint8_t *code; uint8_t *code;
char *name; char *name;
jit_line_t *lines; jit_line_t *lines;
jit_word_t length; jit_word_t length;
@ -377,16 +377,16 @@ struct jit_note {
struct jit_line { struct jit_line {
char *file; char *file;
jit_int32_t *linenos; int32_t *linenos;
jit_int32_t *offsets; int32_t *offsets;
jit_word_t length; jit_word_t length;
}; };
struct jit_node { struct jit_node {
jit_node_t *next; jit_node_t *next;
jit_code_t code; jit_code_t code;
jit_uint16_t flag; uint16_t flag;
jit_uint16_t offset; /* Used if DEVEL_DISASSEMBLER */ uint16_t offset; /* Used if DEVEL_DISASSEMBLER */
jit_data_t u; jit_data_t u;
jit_data_t v; jit_data_t v;
jit_data_t w; jit_data_t w;
@ -401,7 +401,7 @@ struct jit_block {
}; };
struct jit_value { struct jit_value {
jit_int32_t kind; int32_t kind;
jit_code_t code; jit_code_t code;
jit_data_t base; jit_data_t base;
jit_data_t disp; jit_data_t disp;
@ -424,76 +424,76 @@ struct jit_data_info {
struct jit_function { struct jit_function {
struct { struct {
jit_int32_t argi; int32_t argi;
jit_int32_t argf; int32_t argf;
jit_int32_t size; int32_t size;
jit_int32_t aoff; int32_t aoff;
jit_int32_t alen; int32_t alen;
jit_int32_t call; int32_t call;
jit_int32_t argn; /* for debug output */ int32_t argn; /* for debug output */
} self; } self;
struct { struct {
jit_int32_t argi; int32_t argi;
jit_int32_t argf; int32_t argf;
jit_int32_t size; int32_t size;
jit_int32_t call; int32_t call;
} call; } call;
jit_node_t *prolog; jit_node_t *prolog;
jit_node_t *epilog; jit_node_t *epilog;
jit_int32_t *regoff; int32_t *regoff;
jit_regset_t regset; jit_regset_t regset;
jit_int32_t stack; int32_t stack;
/* Helper for common jit generation pattern, used in GNU Smalltalk /* Helper for common jit generation pattern, used in GNU Smalltalk
* and possibly others, where a static frame layout is required or * and possibly others, where a static frame layout is required or
* assumed. */ * assumed. */
jit_int32_t frame; int32_t frame;
jit_uint32_t define_frame : 1; uint32_t define_frame : 1;
jit_uint32_t assume_frame : 1; uint32_t assume_frame : 1;
/* alloca offset offset */ /* alloca offset offset */
jit_int32_t aoffoff; int32_t aoffoff;
/* uses allocar flag */ /* uses allocar flag */
jit_uint32_t allocar : 1; uint32_t allocar : 1;
/* varargs state offsets */ /* varargs state offsets */
jit_int32_t vaoff; /* offset of jit_va_list */ int32_t vaoff; /* offset of jit_va_list */
jit_int32_t vagp; /* first gp va argument */ int32_t vagp; /* first gp va argument */
jit_int32_t vafp; /* first fp va argument */ int32_t vafp; /* first fp va argument */
}; };
/* data used only during jit generation */ /* data used only during jit generation */
struct jit_compiler { struct jit_compiler {
#if __ia64__ #if __ia64__
struct { struct {
jit_uint64_t i : 41; uint64_t i : 41;
jit_uint64_t t : 4; uint64_t t : 4;
} inst[3]; } inst[3];
jit_regset_t regs; /* changed regs since last stop */ jit_regset_t regs; /* changed regs since last stop */
jit_int32_t pred; /* changed preds last stop */ int32_t pred; /* changed preds last stop */
jit_int32_t ioff; /* offset in inst vector */ int32_t ioff; /* offset in inst vector */
jit_int32_t rout; /* first output register */ int32_t rout; /* first output register */
jit_int32_t breg; /* base register for prolog/epilog */ int32_t breg; /* base register for prolog/epilog */
#endif #endif
#if __mips__ || __ia64__ || __alpha__ || (__sparc__ && __WORDSIZE == 64) #if __mips__ || __ia64__ || __alpha__ || (__sparc__ && __WORDSIZE == 64)
jit_int32_t carry; int32_t carry;
#define jit_carry _jitc->carry #define jit_carry _jitc->carry
#endif #endif
jit_node_t *head; jit_node_t *head;
jit_node_t *tail; jit_node_t *tail;
jit_node_t *prepare; /* inside prepare/finish* block */ jit_node_t *prepare; /* inside prepare/finish* block */
jit_uint32_t realize : 1; /* jit_realize() called? */ uint32_t realize : 1; /* jit_realize() called? */
jit_uint32_t dataset : 1; /* jit_dataset() called? */ uint32_t dataset : 1; /* jit_dataset() called? */
jit_uint32_t done : 1; /* emit state finished */ uint32_t done : 1; /* emit state finished */
jit_uint32_t emit : 1; /* emit state entered */ uint32_t emit : 1; /* emit state entered */
jit_uint32_t again : 1; /* start over emiting function */ uint32_t again : 1; /* start over emiting function */
jit_uint32_t synth : 8; /* emiting synthesized instructions */ uint32_t synth : 8; /* emiting synthesized instructions */
#if DEBUG #if DEBUG
jit_uint32_t getreg : 1; uint32_t getreg : 1;
#endif #endif
jit_uint32_t no_data : 1; uint32_t no_data : 1;
jit_uint32_t no_note : 1; uint32_t no_note : 1;
jit_int32_t reglen; /* number of registers */ int32_t reglen; /* number of registers */
jit_regset_t regarg; /* cannot allocate */ jit_regset_t regarg; /* cannot allocate */
jit_regset_t regsav; /* automatic spill only once */ jit_regset_t regsav; /* automatic spill only once */
jit_regset_t reglive; /* known live registers at some point */ jit_regset_t reglive; /* known live registers at some point */
@ -503,17 +503,17 @@ struct jit_compiler {
jit_word_t length; jit_word_t length;
} blockmask; /* mask of visited basic blocks */ } blockmask; /* mask of visited basic blocks */
struct { struct {
jit_uint8_t *end; uint8_t *end;
} code; } code;
struct { struct {
jit_uint8_t *ptr; uint8_t *ptr;
jit_node_t **table; /* very simple hash table */ jit_node_t **table; /* very simple hash table */
jit_word_t size; /* number of vectors in table */ jit_word_t size; /* number of vectors in table */
jit_word_t count; /* number of hash table entries */ jit_word_t count; /* number of hash table entries */
jit_word_t offset; /* offset in bytes in ptr */ jit_word_t offset; /* offset in bytes in ptr */
} data; } data;
jit_node_t **spill; jit_node_t **spill;
jit_int32_t *gen; /* ssa like "register version" */ int32_t *gen; /* ssa like "register version" */
jit_value_t *values; /* temporary jit_value_t vector */ jit_value_t *values; /* temporary jit_value_t vector */
struct { struct {
jit_block_t *ptr; jit_block_t *ptr;
@ -544,11 +544,11 @@ struct jit_compiler {
jit_word_t size; jit_word_t size;
jit_node_t *name; jit_node_t *name;
jit_node_t *note; jit_node_t *note;
jit_uint8_t *base; uint8_t *base;
} note; } note;
#if __arm__ #if __arm__
/* prevent using thumb instructions that set flags? */ /* prevent using thumb instructions that set flags? */
jit_uint32_t no_set_flags : 1; uint32_t no_set_flags : 1;
# if DISASSEMBLER # if DISASSEMBLER
struct { struct {
jit_data_info_t *ptr; jit_data_info_t *ptr;
@ -565,11 +565,11 @@ struct jit_compiler {
* test cases start with a "jmpi main" call. */ * test cases start with a "jmpi main" call. */
jit_uword_t thumb; jit_uword_t thumb;
struct { struct {
jit_uint8_t *data; /* pointer to code */ uint8_t *data; /* pointer to code */
jit_word_t size; /* size data */ jit_word_t size; /* size data */
jit_word_t offset; /* pending patches */ jit_word_t offset; /* pending patches */
jit_word_t length; /* number of pending constants */ jit_word_t length; /* number of pending constants */
jit_int32_t values[1024]; /* pending constants */ int32_t values[1024]; /* pending constants */
jit_word_t patches[2048]; jit_word_t patches[2048];
} consts; } consts;
#elif __powerpc__ || __ia64__ #elif __powerpc__ || __ia64__
@ -589,25 +589,25 @@ struct jit_compiler {
/* Global flag for code buffer heuristic size computation */ /* Global flag for code buffer heuristic size computation */
jit_word_t mult; jit_word_t mult;
/* Pointer to code to prevent miscalculation if reallocating buffer */ /* Pointer to code to prevent miscalculation if reallocating buffer */
jit_uint8_t *cptr; uint8_t *cptr;
#endif #endif
}; };
#define _jitc _jit->comp #define _jitc _jit->comp
struct jit_state { struct jit_state {
union { union {
jit_uint8_t *uc; uint8_t *uc;
jit_uint16_t *us; uint16_t *us;
jit_uint32_t *ui; uint32_t *ui;
jit_uint64_t *ul; uint64_t *ul;
jit_word_t w; jit_word_t w;
} pc; } pc;
struct { struct {
jit_uint8_t *ptr; uint8_t *ptr;
jit_word_t length; jit_word_t length;
} code; } code;
struct { struct {
jit_uint8_t *ptr; uint8_t *ptr;
jit_word_t length; jit_word_t length;
} data; } data;
struct { struct {
@ -616,8 +616,8 @@ struct jit_state {
} note; } note;
jit_compiler_t *comp; jit_compiler_t *comp;
/* Flags to know if user did set the code and data buffers */ /* Flags to know if user did set the code and data buffers */
jit_uint32_t user_code : 1; uint32_t user_code : 1;
jit_uint32_t user_data : 1; uint32_t user_data : 1;
}; };
struct jit_register { struct jit_register {
@ -655,42 +655,42 @@ _jit_reglive(jit_state_t*, jit_node_t*);
#define jit_regarg_set(n,v) _jit_regarg_set(_jit,n,v) #define jit_regarg_set(n,v) _jit_regarg_set(_jit,n,v)
extern void extern void
_jit_regarg_set(jit_state_t*, jit_node_t*, jit_int32_t); _jit_regarg_set(jit_state_t*, jit_node_t*, int32_t);
#define jit_regarg_clr(n,v) _jit_regarg_clr(_jit,n,v) #define jit_regarg_clr(n,v) _jit_regarg_clr(_jit,n,v)
extern void extern void
_jit_regarg_clr(jit_state_t*, jit_node_t*, jit_int32_t); _jit_regarg_clr(jit_state_t*, jit_node_t*, int32_t);
#define jit_get_reg(s) _jit_get_reg(_jit,s) #define jit_get_reg(s) _jit_get_reg(_jit,s)
extern jit_int32_t extern int32_t
_jit_get_reg(jit_state_t*, jit_int32_t); _jit_get_reg(jit_state_t*, int32_t);
#define jit_unget_reg(r) _jit_unget_reg(_jit,r) #define jit_unget_reg(r) _jit_unget_reg(_jit,r)
extern void extern void
_jit_unget_reg(jit_state_t*, jit_int32_t); _jit_unget_reg(jit_state_t*, int32_t);
#define jit_save(reg) _jit_save(_jit, reg) #define jit_save(reg) _jit_save(_jit, reg)
extern void extern void
_jit_save(jit_state_t*, jit_int32_t); _jit_save(jit_state_t*, int32_t);
#define jit_load(reg) _jit_load(_jit, reg) #define jit_load(reg) _jit_load(_jit, reg)
extern void extern void
_jit_load(jit_state_t*, jit_int32_t); _jit_load(jit_state_t*, int32_t);
#define jit_trampoline(u,v) _jit_trampoline(_jit, u, v) #define jit_trampoline(u,v) _jit_trampoline(_jit, u, v)
extern void _jit_trampoline(jit_state_t*, jit_int32_t, jit_bool_t); extern void _jit_trampoline(jit_state_t*, int32_t, jit_bool_t);
#define jit_optimize() _jit_optimize(_jit) #define jit_optimize() _jit_optimize(_jit)
extern void extern void
_jit_optimize(jit_state_t*); _jit_optimize(jit_state_t*);
#define jit_classify(code) _jit_classify(_jit, code) #define jit_classify(code) _jit_classify(_jit, code)
extern jit_int32_t extern int32_t
_jit_classify(jit_state_t*, jit_code_t); _jit_classify(jit_state_t*, jit_code_t);
#define jit_regarg_p(n, r) _jit_regarg_p(_jit, n, r) #define jit_regarg_p(n, r) _jit_regarg_p(_jit, n, r)
extern jit_bool_t extern jit_bool_t
_jit_regarg_p(jit_state_t*, jit_node_t*, jit_int32_t); _jit_regarg_p(jit_state_t*, jit_node_t*, int32_t);
#define emit_code() _emit_code(_jit) #define emit_code() _emit_code(_jit)
extern jit_pointer_t extern jit_pointer_t
@ -701,19 +701,19 @@ jit_flush(void *fptr, void *tptr);
#define emit_ldxi(r0, r1, i0) _emit_ldxi(_jit, r0, r1, i0) #define emit_ldxi(r0, r1, i0) _emit_ldxi(_jit, r0, r1, i0)
extern void extern void
_emit_ldxi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t); _emit_ldxi(jit_state_t*, int32_t, jit_int32_t, jit_word_t);
#define emit_stxi(i0, r0, r1) _emit_stxi(_jit, i0, r0, r1) #define emit_stxi(i0, r0, r1) _emit_stxi(_jit, i0, r0, r1)
extern void extern void
_emit_stxi(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t); _emit_stxi(jit_state_t*, jit_word_t, int32_t, jit_int32_t);
#define emit_ldxi_d(r0, r1, i0) _emit_ldxi_d(_jit, r0, r1, i0) #define emit_ldxi_d(r0, r1, i0) _emit_ldxi_d(_jit, r0, r1, i0)
extern void extern void
_emit_ldxi_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t); _emit_ldxi_d(jit_state_t*, int32_t, jit_int32_t, jit_word_t);
#define emit_stxi_d(i0, r0, r1) _emit_stxi_d(_jit, i0, r0, r1) #define emit_stxi_d(i0, r0, r1) _emit_stxi_d(_jit, i0, r0, r1)
extern void extern void
_emit_stxi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t); _emit_stxi_d(jit_state_t*, jit_word_t, int32_t, jit_int32_t);
extern void jit_init_debug(const char*); extern void jit_init_debug(const char*);
extern void jit_finish_debug(void); extern void jit_finish_debug(void);
@ -721,7 +721,7 @@ extern void jit_finish_debug(void);
extern void jit_init_note(void); extern void jit_init_note(void);
extern void jit_finish_note(void); extern void jit_finish_note(void);
#define jit_set_note(n,u,v,w) _jit_set_note(_jit, n, u, v, w) #define jit_set_note(n,u,v,w) _jit_set_note(_jit, n, u, v, w)
extern void _jit_set_note(jit_state_t*, jit_note_t*, char*, int, jit_int32_t); extern void _jit_set_note(jit_state_t*, jit_note_t*, char*, int, int32_t);
#define jit_annotate() _jit_annotate(_jit) #define jit_annotate() _jit_annotate(_jit)
extern void _jit_annotate(jit_state_t*); extern void _jit_annotate(jit_state_t*);

File diff suppressed because it is too large Load diff

View file

@ -286,66 +286,66 @@
# define TCXB(R1,D2,X2,B2) RXE_(0xED,R1,X2,B2,D2,0x12) # define TCXB(R1,D2,X2,B2) RXE_(0xED,R1,X2,B2,D2,0x12)
# define fp(code,r0,r1,i0) _fp(_jit,jit_code_##code##i_f,r0,r1,i0) # define fp(code,r0,r1,i0) _fp(_jit,jit_code_##code##i_f,r0,r1,i0)
static void _fp(jit_state_t*,jit_code_t, static void _fp(jit_state_t*,jit_code_t,
jit_int32_t,jit_int32_t,jit_float32_t*); int32_t,jit_int32_t,jit_float32_t*);
# define dp(code,r0,r1,i0) _dp(_jit,jit_code_##code##i_d,r0,r1,i0) # define dp(code,r0,r1,i0) _dp(_jit,jit_code_##code##i_d,r0,r1,i0)
static void _dp(jit_state_t*,jit_code_t, static void _dp(jit_state_t*,jit_code_t,
jit_int32_t,jit_int32_t,jit_float64_t*); int32_t,jit_int32_t,jit_float64_t*);
# define fr(cc,r0,r1,r2) _fr(_jit,cc,r0,r1,r2) # define fr(cc,r0,r1,r2) _fr(_jit,cc,r0,r1,r2)
static void _fr(jit_state_t*,jit_int32_t, static void _fr(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define dr(cc,r0,r1,r2) _dr(_jit,cc,r0,r1,r2) # define dr(cc,r0,r1,r2) _dr(_jit,cc,r0,r1,r2)
static void _dr(jit_state_t*,jit_int32_t, static void _dr(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_int32_t); int32_t,jit_int32_t,jit_int32_t);
# define fi(cc,r0,r1,i0) _fi(_jit,cc,r0,r1,i0) # define fi(cc,r0,r1,i0) _fi(_jit,cc,r0,r1,i0)
static void _fi(jit_state_t*,jit_int32_t, static void _fi(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_float32_t*); int32_t,jit_int32_t,jit_float32_t*);
# define di(cc,r0,r1,i0) _di(_jit,cc,r0,r1,i0) # define di(cc,r0,r1,i0) _di(_jit,cc,r0,r1,i0)
static void _di(jit_state_t*,jit_int32_t, static void _di(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_float64_t*); int32_t,jit_int32_t,jit_float64_t*);
# define bfr(cc,i0,r0,r1) _bfr(_jit,cc,i0,r0,r1) # define bfr(cc,i0,r0,r1) _bfr(_jit,cc,i0,r0,r1)
static void _bfr(jit_state_t*,jit_int32_t, static void _bfr(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define bdr(cc,i0,r0,r1) _bdr(_jit,cc,i0,r0,r1) # define bdr(cc,i0,r0,r1) _bdr(_jit,cc,i0,r0,r1)
static void _bdr(jit_state_t*,jit_int32_t, static void _bdr(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define bfr_p(cc,i0,r0,r1) _bfr_p(_jit,cc,i0,r0,r1) # define bfr_p(cc,i0,r0,r1) _bfr_p(_jit,cc,i0,r0,r1)
static jit_word_t _bfr_p(jit_state_t*,jit_int32_t, static jit_word_t _bfr_p(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define bdr_p(cc,i0,r0,r1) _bdr_p(_jit,cc,i0,r0,r1) # define bdr_p(cc,i0,r0,r1) _bdr_p(_jit,cc,i0,r0,r1)
static jit_word_t _bdr_p(jit_state_t*,jit_int32_t, static jit_word_t _bdr_p(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define bfi(cc,i0,r0,i1) _bfi(_jit,cc,i0,r0,i1) # define bfi(cc,i0,r0,i1) _bfi(_jit,cc,i0,r0,i1)
static void _bfi(jit_state_t*,jit_int32_t, static void _bfi(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_float32_t*); jit_word_t,int32_t,jit_float32_t*);
# define bdi(cc,i0,r0,i1) _bdi(_jit,cc,i0,r0,i1) # define bdi(cc,i0,r0,i1) _bdi(_jit,cc,i0,r0,i1)
static void _bdi(jit_state_t*,jit_int32_t, static void _bdi(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_float64_t*); jit_word_t,int32_t,jit_float64_t*);
# define bfi_p(cc,i0,r0,i1) _bfi_p(_jit,cc,i0,r0,i1) # define bfi_p(cc,i0,r0,i1) _bfi_p(_jit,cc,i0,r0,i1)
static jit_word_t _bfi_p(jit_state_t*,jit_int32_t, static jit_word_t _bfi_p(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_float32_t*); jit_word_t,int32_t,jit_float32_t*);
# define bdi_p(cc,i0,r0,i1) _bdi_p(_jit,cc,i0,r0,i1) # define bdi_p(cc,i0,r0,i1) _bdi_p(_jit,cc,i0,r0,i1)
static jit_word_t _bdi_p(jit_state_t*,jit_int32_t, static jit_word_t _bdi_p(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_float64_t*); jit_word_t,int32_t,jit_float64_t*);
# define buneqr(db,i0,r0,r1) _buneqr(_jit,db,i0,r0,r1) # define buneqr(db,i0,r0,r1) _buneqr(_jit,db,i0,r0,r1)
static jit_word_t _buneqr(jit_state_t*,jit_int32_t, static jit_word_t _buneqr(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define buneqi(db,i0,r0,i1) _buneqi(_jit,db,i0,r0,(jit_word_t)i1) # define buneqi(db,i0,r0,i1) _buneqi(_jit,db,i0,r0,(jit_word_t)i1)
static jit_word_t _buneqi(jit_state_t*,jit_int32_t, static jit_word_t _buneqi(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_word_t); jit_word_t,int32_t,jit_word_t);
# define bltgtr(db,i0,r0,r1) _bltgtr(_jit,db,i0,r0,r1) # define bltgtr(db,i0,r0,r1) _bltgtr(_jit,db,i0,r0,r1)
static jit_word_t _bltgtr(jit_state_t*,jit_int32_t, static jit_word_t _bltgtr(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_int32_t); jit_word_t,int32_t,jit_int32_t);
# define bltgti(db,i0,r0,i1) _bltgti(_jit,db,i0,r0,(jit_word_t)i1) # define bltgti(db,i0,r0,i1) _bltgti(_jit,db,i0,r0,(jit_word_t)i1)
static jit_word_t _bltgti(jit_state_t*,jit_int32_t, static jit_word_t _bltgti(jit_state_t*,int32_t,
jit_word_t,jit_int32_t,jit_word_t); jit_word_t,int32_t,jit_word_t);
# define movr_f(r0,r1) _movr_f(_jit,r0,r1) # define movr_f(r0,r1) _movr_f(_jit,r0,r1)
static void _movr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _movr_f(jit_state_t*,int32_t,jit_int32_t);
# define movi_f(r0,i0) _movi_f(_jit,r0,i0) # define movi_f(r0,i0) _movi_f(_jit,r0,i0)
static void _movi_f(jit_state_t*,jit_int32_t,jit_float32_t*); static void _movi_f(jit_state_t*,int32_t,jit_float32_t*);
# define movr_d(r0,r1) _movr_d(_jit,r0,r1) # define movr_d(r0,r1) _movr_d(_jit,r0,r1)
static void _movr_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _movr_d(jit_state_t*,int32_t,jit_int32_t);
# define movi_d(r0,i0) _movi_d(_jit,r0,i0) # define movi_d(r0,i0) _movi_d(_jit,r0,i0)
static void _movi_d(jit_state_t*,jit_int32_t,jit_float64_t*); static void _movi_d(jit_state_t*,int32_t,jit_float64_t*);
# define absr_f(r0,r1) LPEBR(r0,r1) # define absr_f(r0,r1) LPEBR(r0,r1)
# define absr_d(r0,r1) LPDBR(r0,r1) # define absr_d(r0,r1) LPDBR(r0,r1)
# define negr_f(r0,r1) LCEBR(r0,r1) # define negr_f(r0,r1) LCEBR(r0,r1)
@ -368,61 +368,61 @@ static void _movi_d(jit_state_t*,jit_int32_t,jit_float64_t*);
# define extr_d_f(r0,r1) LEDBR(r0,r1) # define extr_d_f(r0,r1) LEDBR(r0,r1)
# define extr_f_d(r0,r1) LDEBR(r0,r1) # define extr_f_d(r0,r1) LDEBR(r0,r1)
# define addr_f(r0,r1,r2) _addr_f(_jit,r0,r1,r2) # define addr_f(r0,r1,r2) _addr_f(_jit,r0,r1,r2)
static void _addr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _addr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define addi_f(r0,r1,i0) fp(add,r0,r1,i0) # define addi_f(r0,r1,i0) fp(add,r0,r1,i0)
# define addr_d(r0,r1,r2) _addr_d(_jit,r0,r1,r2) # define addr_d(r0,r1,r2) _addr_d(_jit,r0,r1,r2)
static void _addr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _addr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define addi_d(r0,r1,i0) dp(add,r0,r1,i0) # define addi_d(r0,r1,i0) dp(add,r0,r1,i0)
# define subr_f(r0,r1,r2) _subr_f(_jit,r0,r1,r2) # define subr_f(r0,r1,r2) _subr_f(_jit,r0,r1,r2)
static void _subr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _subr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define subi_f(r0,r1,i0) fp(sub,r0,r1,i0) # define subi_f(r0,r1,i0) fp(sub,r0,r1,i0)
# define subr_d(r0,r1,r2) _subr_d(_jit,r0,r1,r2) # define subr_d(r0,r1,r2) _subr_d(_jit,r0,r1,r2)
static void _subr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _subr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define subi_d(r0,r1,i0) dp(sub,r0,r1,i0) # define subi_d(r0,r1,i0) dp(sub,r0,r1,i0)
# define rsbr_f(r0,r1,r2) subr_f(r0,r2,r1) # define rsbr_f(r0,r1,r2) subr_f(r0,r2,r1)
# define rsbi_f(r0,r1,i0) fp(rsb,r0,r1,i0) # define rsbi_f(r0,r1,i0) fp(rsb,r0,r1,i0)
# define rsbr_d(r0,r1,r2) subr_d(r0,r2,r1) # define rsbr_d(r0,r1,r2) subr_d(r0,r2,r1)
# define rsbi_d(r0,r1,i0) dp(rsb,r0,r1,i0) # define rsbi_d(r0,r1,i0) dp(rsb,r0,r1,i0)
# define mulr_f(r0,r1,r2) _mulr_f(_jit,r0,r1,r2) # define mulr_f(r0,r1,r2) _mulr_f(_jit,r0,r1,r2)
static void _mulr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _mulr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define muli_f(r0,r1,i0) fp(mul,r0,r1,i0) # define muli_f(r0,r1,i0) fp(mul,r0,r1,i0)
# define mulr_d(r0,r1,r2) _mulr_d(_jit,r0,r1,r2) # define mulr_d(r0,r1,r2) _mulr_d(_jit,r0,r1,r2)
static void _mulr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _mulr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define muli_d(r0,r1,i0) dp(mul,r0,r1,i0) # define muli_d(r0,r1,i0) dp(mul,r0,r1,i0)
# define divr_f(r0,r1,r2) _divr_f(_jit,r0,r1,r2) # define divr_f(r0,r1,r2) _divr_f(_jit,r0,r1,r2)
static void _divr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _divr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define divi_f(r0,r1,i0) fp(div,r0,r1,i0) # define divi_f(r0,r1,i0) fp(div,r0,r1,i0)
# define divr_d(r0,r1,r2) _divr_d(_jit,r0,r1,r2) # define divr_d(r0,r1,r2) _divr_d(_jit,r0,r1,r2)
static void _divr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _divr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define divi_d(r0,r1,i0) dp(div,r0,r1,i0) # define divi_d(r0,r1,i0) dp(div,r0,r1,i0)
# define ldr_f(r0,r1) LE(r0,0,0,r1) # define ldr_f(r0,r1) LE(r0,0,0,r1)
# define ldr_d(r0,r1) LD(r0,0,0,r1) # define ldr_d(r0,r1) LD(r0,0,0,r1)
# define ldi_f(r0,i0) _ldi_f(_jit,r0,i0) # define ldi_f(r0,i0) _ldi_f(_jit,r0,i0)
static void _ldi_f(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_f(jit_state_t*,int32_t,jit_word_t);
# define ldi_d(r0,i0) _ldi_d(_jit,r0,i0) # define ldi_d(r0,i0) _ldi_d(_jit,r0,i0)
static void _ldi_d(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_d(jit_state_t*,int32_t,jit_word_t);
# define ldxr_f(r0,r1,r2) _ldxr_f(_jit,r0,r1,r2) # define ldxr_f(r0,r1,r2) _ldxr_f(_jit,r0,r1,r2)
static void _ldxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ldxr_d(r0,r1,r2) _ldxr_d(_jit,r0,r1,r2) # define ldxr_d(r0,r1,r2) _ldxr_d(_jit,r0,r1,r2)
static void _ldxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0) # define ldxi_f(r0,r1,i0) _ldxi_f(_jit,r0,r1,i0)
static void _ldxi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_f(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
# define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0) # define ldxi_d(r0,r1,i0) _ldxi_d(_jit,r0,r1,i0)
static void _ldxi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_d(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
# define str_f(r0,r1) STE(r1,0,0,r0) # define str_f(r0,r1) STE(r1,0,0,r0)
# define str_d(r0,r1) STD(r1,0,0,r0) # define str_d(r0,r1) STD(r1,0,0,r0)
# define sti_f(i0,r0) _sti_f(_jit,i0,r0) # define sti_f(i0,r0) _sti_f(_jit,i0,r0)
static void _sti_f(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_f(jit_state_t*,jit_word_t,int32_t);
# define sti_d(i0,r0) _sti_d(_jit,i0,r0) # define sti_d(i0,r0) _sti_d(_jit,i0,r0)
static void _sti_d(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_d(jit_state_t*,jit_word_t,int32_t);
# define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2) # define stxr_f(r0,r1,r2) _stxr_f(_jit,r0,r1,r2)
static void _stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2) # define stxr_d(r0,r1,r2) _stxr_d(_jit,r0,r1,r2)
static void _stxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1) # define stxi_f(i0,r0,r1) _stxi_f(_jit,i0,r0,r1)
static void _stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1) # define stxi_d(i0,r0,r1) _stxi_d(_jit,i0,r0,r1)
static void _stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define ltr_f(r0,r1,r2) fr(CC_L,r0,r1,r2) # define ltr_f(r0,r1,r2) fr(CC_L,r0,r1,r2)
# define ltr_d(r0,r1,r2) dr(CC_L,r0,r1,r2) # define ltr_d(r0,r1,r2) dr(CC_L,r0,r1,r2)
# define lti_f(r0,r1,i0) fi(CC_L,r0,r1,i0) # define lti_f(r0,r1,i0) fi(CC_L,r0,r1,i0)
@ -456,9 +456,9 @@ static void _stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
# define unlei_f(r0,r1,i0) fi(CC_NH,r0,r1,i0) # define unlei_f(r0,r1,i0) fi(CC_NH,r0,r1,i0)
# define unlei_d(r0,r1,i0) di(CC_NH,r0,r1,i0) # define unlei_d(r0,r1,i0) di(CC_NH,r0,r1,i0)
# define uneqr_f(r0,r1,r2) _uneqr_f(_jit,r0,r1,r2) # define uneqr_f(r0,r1,r2) _uneqr_f(_jit,r0,r1,r2)
static void _uneqr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _uneqr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define uneqr_d(r0,r1,r2) _uneqr_d(_jit,r0,r1,r2) # define uneqr_d(r0,r1,r2) _uneqr_d(_jit,r0,r1,r2)
static void _uneqr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _uneqr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define uneqi_f(r0,r1,i0) fp(uneq,r0,r1,i0) # define uneqi_f(r0,r1,i0) fp(uneq,r0,r1,i0)
# define uneqi_d(r0,r1,i0) dp(uneq,r0,r1,i0) # define uneqi_d(r0,r1,i0) dp(uneq,r0,r1,i0)
# define unger_f(r0,r1,r2) fr(CC_NL,r0,r1,r2) # define unger_f(r0,r1,r2) fr(CC_NL,r0,r1,r2)
@ -470,9 +470,9 @@ static void _uneqr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
# define ungti_f(r0,r1,i0) fi(CC_NLE,r0,r1,i0) # define ungti_f(r0,r1,i0) fi(CC_NLE,r0,r1,i0)
# define ungti_d(r0,r1,i0) di(CC_NLE,r0,r1,i0) # define ungti_d(r0,r1,i0) di(CC_NLE,r0,r1,i0)
# define ltgtr_f(r0,r1,r2) _ltgtr_f(_jit,r0,r1,r2) # define ltgtr_f(r0,r1,r2) _ltgtr_f(_jit,r0,r1,r2)
static void _ltgtr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ltgtr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ltgtr_d(r0,r1,r2) _ltgtr_d(_jit,r0,r1,r2) # define ltgtr_d(r0,r1,r2) _ltgtr_d(_jit,r0,r1,r2)
static void _ltgtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ltgtr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define ltgti_f(r0,r1,i0) fp(ltgt,r0,r1,i0) # define ltgti_f(r0,r1,i0) fp(ltgt,r0,r1,i0)
# define ltgti_d(r0,r1,i0) dp(ltgt,r0,r1,i0) # define ltgti_d(r0,r1,i0) dp(ltgt,r0,r1,i0)
# define ordr_f(r0,r1,r2) fr(CC_NO,r0,r1,r2) # define ordr_f(r0,r1,r2) fr(CC_NO,r0,r1,r2)
@ -596,15 +596,15 @@ static void _ltgtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
# define bunordi_f_p(i0,r0,i1) bfi_p(CC_O,i0,r0,i1) # define bunordi_f_p(i0,r0,i1) bfi_p(CC_O,i0,r0,i1)
# define bunordi_d_p(i0,r0,i1) bdi_p(CC_O,i0,r0,i1) # define bunordi_d_p(i0,r0,i1) bdi_p(CC_O,i0,r0,i1)
# define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1) # define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1)
static void _vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _vaarg_d(jit_state_t*, int32_t, jit_int32_t);
#endif #endif
#if CODE #if CODE
static void static void
_fp(jit_state_t *_jit, jit_code_t code, _fp(jit_state_t *_jit, jit_code_t code,
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0) int32_t r0, jit_int32_t r1, jit_float32_t *i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
movi_f(rn(reg), i0); movi_f(rn(reg), i0);
switch (code) { switch (code) {
@ -622,9 +622,9 @@ _fp(jit_state_t *_jit, jit_code_t code,
static void static void
_dp(jit_state_t *_jit, jit_code_t code, _dp(jit_state_t *_jit, jit_code_t code,
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0) int32_t r0, jit_int32_t r1, jit_float64_t *i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
movi_d(rn(reg), i0); movi_d(rn(reg), i0);
switch (code) { switch (code) {
@ -641,8 +641,8 @@ _dp(jit_state_t *_jit, jit_code_t code,
} }
static void static void
_fr(jit_state_t *_jit, jit_int32_t cc, _fr(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t w; jit_word_t w;
LGHI(r0, 1); LGHI(r0, 1);
@ -654,8 +654,8 @@ _fr(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_dr(jit_state_t *_jit, jit_int32_t cc, _dr(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t w; jit_word_t w;
LGHI(r0, 1); LGHI(r0, 1);
@ -667,10 +667,10 @@ _dr(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_fi(jit_state_t *_jit, jit_int32_t cc, _fi(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0) int32_t r0, jit_int32_t r1, jit_float32_t *i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill); reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi_f(rn(reg), i0); movi_f(rn(reg), i0);
fr(cc, r0, r1, rn(reg)); fr(cc, r0, r1, rn(reg));
@ -678,10 +678,10 @@ _fi(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_di(jit_state_t *_jit, jit_int32_t cc, _di(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0) int32_t r0, jit_int32_t r1, jit_float64_t *i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill); reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi_d(rn(reg), i0); movi_d(rn(reg), i0);
dr(cc, r0, r1, rn(reg)); dr(cc, r0, r1, rn(reg));
@ -690,8 +690,8 @@ _di(jit_state_t *_jit, jit_int32_t cc,
static void static void
_bfr(jit_state_t *_jit, jit_int32_t cc, _bfr(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d; jit_word_t d;
CEBR(r0, r1); CEBR(r0, r1);
@ -705,8 +705,8 @@ _bfr(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_bdr(jit_state_t *_jit, jit_int32_t cc, _bdr(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t d; jit_word_t d;
CDBR(r0, r1); CDBR(r0, r1);
@ -720,8 +720,8 @@ _bdr(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_bfr_p(jit_state_t *_jit, jit_int32_t cc, _bfr_p(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
CEBR(r0, r1); CEBR(r0, r1);
@ -731,8 +731,8 @@ _bfr_p(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_bdr_p(jit_state_t *_jit, jit_int32_t cc, _bdr_p(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
CDBR(r0, r1); CDBR(r0, r1);
@ -742,10 +742,10 @@ _bdr_p(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_bfi(jit_state_t *_jit, jit_int32_t cc, _bfi(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_float32_t *i1) jit_word_t i0, int32_t r0, jit_float32_t *i1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill); reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi_f(rn(reg), i1); movi_f(rn(reg), i1);
bfr(cc, i0, r0, rn(reg)); bfr(cc, i0, r0, rn(reg));
@ -753,10 +753,10 @@ _bfi(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_bdi(jit_state_t *_jit, jit_int32_t cc, _bdi(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_float64_t *i1) jit_word_t i0, int32_t r0, jit_float64_t *i1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill); reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi_d(rn(reg), i1); movi_d(rn(reg), i1);
bdr(cc, i0, r0, rn(reg)); bdr(cc, i0, r0, rn(reg));
@ -764,11 +764,11 @@ _bdi(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_bfi_p(jit_state_t *_jit, jit_int32_t cc, _bfi_p(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_float32_t *i1) jit_word_t i0, int32_t r0, jit_float32_t *i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill); reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi_f(rn(reg), i1); movi_f(rn(reg), i1);
w = bfr_p(cc, i0, r0, rn(reg)); w = bfr_p(cc, i0, r0, rn(reg));
@ -777,11 +777,11 @@ _bfi_p(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_bdi_p(jit_state_t *_jit, jit_int32_t cc, _bdi_p(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_float64_t *i1) jit_word_t i0, int32_t r0, jit_float64_t *i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill); reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi_d(rn(reg), i1); movi_d(rn(reg), i1);
w = bdr_p(cc, i0, r0, rn(reg)); w = bdr_p(cc, i0, r0, rn(reg));
@ -790,8 +790,8 @@ _bdi_p(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_buneqr(jit_state_t *_jit, jit_int32_t db, _buneqr(jit_state_t *_jit, int32_t db,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t unord, ne, w; jit_word_t unord, ne, w;
if (db) CDBR(r0, r1); if (db) CDBR(r0, r1);
@ -808,11 +808,11 @@ _buneqr(jit_state_t *_jit, jit_int32_t db,
} }
static jit_word_t static jit_word_t
_buneqi(jit_state_t *_jit, jit_int32_t db, _buneqi(jit_state_t *_jit, int32_t db,
jit_word_t i0, jit_int32_t r0, jit_word_t i1) jit_word_t i0, int32_t r0, jit_word_t i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill); reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
if (db) if (db)
movi_d(rn(reg), (jit_float64_t *)i1); movi_d(rn(reg), (jit_float64_t *)i1);
@ -824,8 +824,8 @@ _buneqi(jit_state_t *_jit, jit_int32_t db,
} }
static jit_word_t static jit_word_t
_bltgtr(jit_state_t *_jit, jit_int32_t db, _bltgtr(jit_state_t *_jit, int32_t db,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t unord, eq, w; jit_word_t unord, eq, w;
if (db) CDBR(r0, r1); if (db) CDBR(r0, r1);
@ -842,11 +842,11 @@ _bltgtr(jit_state_t *_jit, jit_int32_t db,
} }
static jit_word_t static jit_word_t
_bltgti(jit_state_t *_jit, jit_int32_t db, _bltgti(jit_state_t *_jit, int32_t db,
jit_word_t i0, jit_int32_t r0, jit_word_t i1) jit_word_t i0, int32_t r0, jit_word_t i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill); reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
if (db) if (db)
movi_d(rn(reg), (jit_float64_t *)i1); movi_d(rn(reg), (jit_float64_t *)i1);
@ -858,22 +858,22 @@ _bltgti(jit_state_t *_jit, jit_int32_t db,
} }
static void static void
_movr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r0 != r1) if (r0 != r1)
LER(r0, r1); LER(r0, r1);
} }
static void static void
_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0) _movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t *i0)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_int32_t reg; int32_t reg;
if (*(jit_int32_t *)i0 == 0) if (*(int32_t *)i0 == 0)
LZER(r0); LZER(r0);
else if (_jitc->no_data) { else if (_jitc->no_data) {
data.f = *i0; data.f = *i0;
@ -888,26 +888,26 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
} }
static void static void
_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r0 != r1) if (r0 != r1)
LDR(r0, r1); LDR(r0, r1);
} }
static void static void
_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0) _movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t *i0)
{ {
union { union {
#if __WORDSIZE == 32 #if __WORDSIZE == 32
jit_int32_t i[2]; int32_t i[2];
#else #else
jit_int64_t l; int64_t l;
#endif #endif
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_int32_t reg; int32_t reg;
if (*(jit_int64_t *)i0 == 0) if (*(int64_t *)i0 == 0)
LZDR(r0); LZDR(r0);
else if (_jitc->no_data) { else if (_jitc->no_data) {
data.d = *i0; data.d = *i0;
@ -929,7 +929,7 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
} }
static void static void
_addr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _addr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
if (r0 == r2) if (r0 == r2)
AEBR(r0, r1); AEBR(r0, r1);
@ -940,7 +940,7 @@ _addr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_addr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _addr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
if (r0 == r2) if (r0 == r2)
ADBR(r0, r1); ADBR(r0, r1);
@ -951,9 +951,9 @@ _addr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_subr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _subr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (r0 == r2) { if (r0 == r2) {
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
movr_f(rn(reg), r2); movr_f(rn(reg), r2);
@ -968,9 +968,9 @@ _subr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_subr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _subr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (r0 == r2) { if (r0 == r2) {
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
movr_d(rn(reg), r2); movr_d(rn(reg), r2);
@ -985,7 +985,7 @@ _subr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_mulr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _mulr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
if (r0 == r2) if (r0 == r2)
MEEBR(r0, r1); MEEBR(r0, r1);
@ -996,7 +996,7 @@ _mulr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_mulr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _mulr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
if (r0 == r2) if (r0 == r2)
MDBR(r0, r1); MDBR(r0, r1);
@ -1007,9 +1007,9 @@ _mulr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_divr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _divr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (r0 == r2) { if (r0 == r2) {
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
movr_f(rn(reg), r2); movr_f(rn(reg), r2);
@ -1024,9 +1024,9 @@ _divr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_divr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _divr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (r0 == r2) { if (r0 == r2) {
reg = jit_get_reg(jit_class_fpr); reg = jit_get_reg(jit_class_fpr);
movr_d(rn(reg), r2); movr_d(rn(reg), r2);
@ -1041,9 +1041,9 @@ _divr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg_but_zero(0); reg = jit_get_reg_but_zero(0);
movi(rn(reg), i0); movi(rn(reg), i0);
ldr_f(r0, rn(reg)); ldr_f(r0, rn(reg));
@ -1051,9 +1051,9 @@ _ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg_but_zero(0); reg = jit_get_reg_but_zero(0);
movi(rn(reg), i0); movi(rn(reg), i0);
ldr_d(r0, rn(reg)); ldr_d(r0, rn(reg));
@ -1061,9 +1061,9 @@ _ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ldxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg_but_zero(0); reg = jit_get_reg_but_zero(0);
movr(rn(reg), r1); movr(rn(reg), r1);
addr(rn(reg), rn(reg), r2); addr(rn(reg), rn(reg), r2);
@ -1072,9 +1072,9 @@ _ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ldxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg_but_zero(0); reg = jit_get_reg_but_zero(0);
movr(rn(reg), r1); movr(rn(reg), r1);
addr(rn(reg), rn(reg), r2); addr(rn(reg), rn(reg), r2);
@ -1083,9 +1083,9 @@ _ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (u12_p(i0)) if (u12_p(i0))
LE(r0, i0, 0, r1); LE(r0, i0, 0, r1);
else if (s20_p(i0)) else if (s20_p(i0))
@ -1100,9 +1100,9 @@ _ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (u12_p(i0)) if (u12_p(i0))
LD(r0, i0, 0, r1); LD(r0, i0, 0, r1);
else if (s20_p(i0)) else if (s20_p(i0))
@ -1117,9 +1117,9 @@ _ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg_but_zero(0); reg = jit_get_reg_but_zero(0);
movi(rn(reg), i0); movi(rn(reg), i0);
str_f(rn(reg), r0); str_f(rn(reg), r0);
@ -1127,9 +1127,9 @@ _sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg_but_zero(0); reg = jit_get_reg_but_zero(0);
movi(rn(reg), i0); movi(rn(reg), i0);
str_d(rn(reg), r0); str_d(rn(reg), r0);
@ -1137,9 +1137,9 @@ _sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg_but_zero(0); reg = jit_get_reg_but_zero(0);
movr(rn(reg), r0); movr(rn(reg), r0);
addr(rn(reg), rn(reg), r1); addr(rn(reg), rn(reg), r1);
@ -1148,9 +1148,9 @@ _stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg_but_zero(0); reg = jit_get_reg_but_zero(0);
movr(rn(reg), r0); movr(rn(reg), r0);
addr(rn(reg), rn(reg), r1); addr(rn(reg), rn(reg), r1);
@ -1159,9 +1159,9 @@ _stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (u12_p(i0)) if (u12_p(i0))
STE(r1, i0, 0, r0); STE(r1, i0, 0, r0);
else if (s20_p(i0)) else if (s20_p(i0))
@ -1176,9 +1176,9 @@ _stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (u12_p(i0)) if (u12_p(i0))
STD(r1, i0, 0, r0); STD(r1, i0, 0, r0);
else if (s20_p(i0)) else if (s20_p(i0))
@ -1193,7 +1193,7 @@ _stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_uneqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _uneqr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t unord, eq; jit_word_t unord, eq;
movi(r0, 1); /* set to one */ movi(r0, 1); /* set to one */
@ -1208,7 +1208,7 @@ _uneqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _uneqr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t unord, eq; jit_word_t unord, eq;
movi(r0, 1); /* set to one */ movi(r0, 1); /* set to one */
@ -1223,7 +1223,7 @@ _uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ltgtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ltgtr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t unord, eq; jit_word_t unord, eq;
movi(r0, 0); /* set to zero */ movi(r0, 0); /* set to zero */
@ -1238,7 +1238,7 @@ _ltgtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ltgtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_word_t unord, eq; jit_word_t unord, eq;
movi(r0, 0); /* set to zero */ movi(r0, 0); /* set to zero */
@ -1253,11 +1253,11 @@ _ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _vaarg_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t rg0; int32_t rg0;
jit_int32_t rg1; int32_t rg1;
jit_int32_t rg2; int32_t rg2;
jit_word_t ge_code; jit_word_t ge_code;
jit_word_t lt_code; jit_word_t lt_code;

View file

@ -73,11 +73,11 @@ type = struct __va_list_tag {
* Prototypes * Prototypes
*/ */
#define jit_get_reg_pair() _jit_get_reg_pair(_jit) #define jit_get_reg_pair() _jit_get_reg_pair(_jit)
static jit_int32_t _jit_get_reg_pair(jit_state_t*); static int32_t _jit_get_reg_pair(jit_state_t*);
#define jit_unget_reg_pair(regno) _jit_unget_reg_pair(_jit,regno) #define jit_unget_reg_pair(regno) _jit_unget_reg_pair(_jit,regno)
static void _jit_unget_reg_pair(jit_state_t*,jit_int32_t); static void _jit_unget_reg_pair(jit_state_t*,int32_t);
#define jit_get_reg_but_zero(flags) _jit_get_reg_but_zero(_jit,flags) #define jit_get_reg_but_zero(flags) _jit_get_reg_but_zero(_jit,flags)
static jit_int32_t _jit_get_reg_but_zero(jit_state_t*,jit_int32_t); static int32_t _jit_get_reg_but_zero(jit_state_t*,jit_int32_t);
#define jit_unget_reg_but_zero(reg) jit_unget_reg(reg) #define jit_unget_reg_but_zero(reg) jit_unget_reg(reg)
#define patch(instr, node) _patch(_jit, instr, node) #define patch(instr, node) _patch(_jit, instr, node)
static void _patch(jit_state_t*,jit_word_t,jit_node_t*); static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
@ -147,7 +147,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -169,7 +169,7 @@ _jit_prolog(jit_state_t *_jit)
_jitc->function->self.aoff = -8; _jitc->function->self.aoff = -8;
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -188,8 +188,8 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
assert(_jitc->function); assert(_jitc->function);
switch (length) { switch (length) {
@ -207,13 +207,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -240,7 +240,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
jit_movr(JIT_RET, u); jit_movr(JIT_RET, u);
@ -258,7 +258,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
jit_movr_f(JIT_FRET, u); jit_movr_f(JIT_FRET, u);
@ -276,7 +276,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
jit_movr_d(JIT_FRET, u); jit_movr_d(JIT_FRET, u);
@ -344,7 +344,7 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
jit_pushargr(u); jit_pushargr(u);
@ -355,7 +355,7 @@ jit_node_t *
_jit_arg(jit_state_t *_jit) _jit_arg(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -373,7 +373,7 @@ jit_node_t *
_jit_arg_f(jit_state_t *_jit) _jit_arg_f(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_f_reg_p(_jitc->function->self.argf)) if (jit_arg_f_reg_p(_jitc->function->self.argf))
offset = _jitc->function->self.argf++; offset = _jitc->function->self.argf++;
@ -391,7 +391,7 @@ jit_node_t *
_jit_arg_d(jit_state_t *_jit) _jit_arg_d(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_f_reg_p(_jitc->function->self.argf)) if (jit_arg_f_reg_p(_jitc->function->self.argf))
offset = _jitc->function->self.argf++; offset = _jitc->function->self.argf++;
@ -406,7 +406,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -414,12 +414,12 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_c(u, _R2 - v->u.w); jit_extr_c(u, _R2 - v->u.w);
else else
jit_ldxi_c(u, JIT_FP, jit_ldxi_c(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_int8_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(int8_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -427,12 +427,12 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_uc(u, _R2 - v->u.w); jit_extr_uc(u, _R2 - v->u.w);
else else
jit_ldxi_uc(u, JIT_FP, jit_ldxi_uc(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_uint8_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(uint8_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -440,12 +440,12 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_s(u, _R2 - v->u.w); jit_extr_s(u, _R2 - v->u.w);
else else
jit_ldxi_s(u, JIT_FP, jit_ldxi_s(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_int16_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(int16_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -453,12 +453,12 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_us(u, _R2 - v->u.w); jit_extr_us(u, _R2 - v->u.w);
else else
jit_ldxi_us(u, JIT_FP, jit_ldxi_us(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_uint16_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(uint16_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -471,13 +471,13 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
else else
jit_ldxi_i(u, JIT_FP, jit_ldxi_i(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_int32_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(int32_t));
jit_dec_synth(); jit_dec_synth();
} }
#if __WORDSIZE == 64 #if __WORDSIZE == 64
void void
_jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_ui(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_ui, u, v); jit_inc_synth_wp(getarg_ui, u, v);
@ -485,12 +485,12 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_ui(u, _R2 - v->u.w); jit_extr_ui(u, _R2 - v->u.w);
else else
jit_ldxi_ui(u, JIT_FP, jit_ldxi_ui(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_uint32_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(uint32_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_l(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_l, u, v); jit_inc_synth_wp(getarg_l, u, v);
@ -503,7 +503,7 @@ _jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
#endif #endif
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
@ -517,7 +517,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -532,7 +532,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(getarg_f, u, v); jit_inc_synth_wp(getarg_f, u, v);
@ -549,7 +549,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -567,7 +567,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
if (jit_arg_f_reg_p(v->u.w)) if (jit_arg_f_reg_p(v->u.w))
@ -586,7 +586,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(getarg_d, u, v); jit_inc_synth_wp(getarg_d, u, v);
@ -598,7 +598,7 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
@ -612,7 +612,7 @@ _jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
if (jit_arg_f_reg_p(v->u.w)) if (jit_arg_f_reg_p(v->u.w))
@ -627,7 +627,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
@ -646,7 +646,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi(jit_state_t *_jit, jit_word_t u) _jit_pushargi(jit_state_t *_jit, jit_word_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargi, u); jit_inc_synth_w(pushargi, u);
jit_link_prepare(); jit_link_prepare();
@ -665,7 +665,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_f, u); jit_inc_synth_w(pushargr_f, u);
@ -688,7 +688,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_f(pushargi_f, u); jit_inc_synth_f(pushargi_f, u);
jit_link_prepare(); jit_link_prepare();
@ -711,7 +711,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_d, u); jit_inc_synth_w(pushargr_d, u);
@ -730,7 +730,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_d(pushargi_d, u); jit_inc_synth_d(pushargi_d, u);
jit_link_prepare(); jit_link_prepare();
@ -749,9 +749,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
jit_int32_t spec; int32_t spec;
spec = jit_class(_rvs[regno].spec); spec = jit_class(_rvs[regno].spec);
if (spec & jit_class_arg) { if (spec & jit_class_arg) {
regno = _R2 - regno; regno = _R2 - regno;
@ -767,7 +767,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_node_t *call; jit_node_t *call;
assert(_jitc->function); assert(_jitc->function);
@ -802,7 +802,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_c, r0); jit_inc_synth_w(retval_c, r0);
jit_extr_c(r0, JIT_RET); jit_extr_c(r0, JIT_RET);
@ -810,7 +810,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_uc, r0); jit_inc_synth_w(retval_uc, r0);
jit_extr_uc(r0, JIT_RET); jit_extr_uc(r0, JIT_RET);
@ -818,7 +818,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_s, r0); jit_inc_synth_w(retval_s, r0);
jit_extr_s(r0, JIT_RET); jit_extr_s(r0, JIT_RET);
@ -826,7 +826,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_us, r0); jit_inc_synth_w(retval_us, r0);
jit_extr_us(r0, JIT_RET); jit_extr_us(r0, JIT_RET);
@ -834,7 +834,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
#if __WORDSIZE == 64 #if __WORDSIZE == 64
@ -847,7 +847,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
#if __WORDSIZE == 64 #if __WORDSIZE == 64
void void
_jit_retval_ui(jit_state_t *_jit, jit_int32_t r0) _jit_retval_ui(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_ui, r0); jit_inc_synth_w(retval_ui, r0);
jit_extr_ui(r0, JIT_RET); jit_extr_ui(r0, JIT_RET);
@ -855,7 +855,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_l(jit_state_t *_jit, jit_int32_t r0) _jit_retval_l(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_l, r0); jit_inc_synth_w(retval_l, r0);
jit_movr(r0, JIT_RET); jit_movr(r0, JIT_RET);
@ -864,7 +864,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
#endif #endif
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_f, r0); jit_inc_synth_w(retval_f, r0);
jit_movr_f(r0, JIT_FRET); jit_movr_f(r0, JIT_FRET);
@ -872,7 +872,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_d, r0); jit_inc_synth_w(retval_d, r0);
jit_movr_d(r0, JIT_FRET); jit_movr_d(r0, JIT_FRET);
@ -885,15 +885,15 @@ _emit_code(jit_state_t *_jit)
jit_node_t *node; jit_node_t *node;
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_int32_t value; int32_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_word_t word; jit_word_t word;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
#endif #endif
jit_int32_t patch_offset; int32_t patch_offset;
} undo; } undo;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
@ -1590,10 +1590,10 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_gpr_t r0, jit_fpr_t r1)
stxi_d(i0, rn(r0), rn(r1)); stxi_d(i0, rn(r0), rn(r1));
} }
static jit_int32_t static int32_t
_jit_get_reg_pair(jit_state_t *_jit) _jit_get_reg_pair(jit_state_t *_jit)
{ {
jit_int32_t r1, r2; int32_t r1, r2;
/* Try to find a register pair for use with operations that /* Try to find a register pair for use with operations that
* require a odd based register pair. Search for the best * require a odd based register pair. Search for the best
* match to avoid spills or at least a valid operation. * match to avoid spills or at least a valid operation.
@ -1638,9 +1638,9 @@ _jit_get_reg_pair(jit_state_t *_jit)
} }
static void static void
_jit_unget_reg_pair(jit_state_t *_jit, jit_int32_t reg) _jit_unget_reg_pair(jit_state_t *_jit, int32_t reg)
{ {
jit_int32_t r1, r2; int32_t r1, r2;
r1 = reg; r1 = reg;
switch (r1) { switch (r1) {
case _R0: r2 = _R1; break; case _R0: r2 = _R1; break;
@ -1655,10 +1655,10 @@ _jit_unget_reg_pair(jit_state_t *_jit, jit_int32_t reg)
jit_unget_reg(r2); jit_unget_reg(r2);
} }
static jit_int32_t static int32_t
_jit_get_reg_but_zero(jit_state_t *_jit, jit_int32_t flags) _jit_get_reg_but_zero(jit_state_t *_jit, int32_t flags)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
if (reg == _R0) { if (reg == _R0) {
reg = jit_get_reg(jit_class_gpr|flags); reg = jit_get_reg(jit_class_gpr|flags);
@ -1670,7 +1670,7 @@ _jit_get_reg_but_zero(jit_state_t *_jit, jit_int32_t flags)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) if (node->code == jit_code_movi)

File diff suppressed because it is too large Load diff

View file

@ -92,7 +92,7 @@
# define FPop2(rd, rs1, opf, rs2) f3f(rd, 53, rs1, opf, rs2) # define FPop2(rd, rs1, opf, rs2) f3f(rd, 53, rs1, opf, rs2)
# define f3f(rd, op3, rs1, opf, rs2) _f3f(_jit, rd, op3, rs1, opf, rs2) # define f3f(rd, op3, rs1, opf, rs2) _f3f(_jit, rd, op3, rs1, opf, rs2)
static void static void
_f3f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t, jit_int32_t,jit_int32_t); _f3f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t, jit_int32_t,jit_int32_t);
# define FITOS(rs2, rd) FPop1(rd, 0, 196, rs2) # define FITOS(rs2, rd) FPop1(rd, 0, 196, rs2)
# define FITOD(rs2, rd) FPop1(rd, 0, 200, rs2) # define FITOD(rs2, rd) FPop1(rd, 0, 200, rs2)
# define FITOQ(rs2, rd) FPop1(rd, 0, 204, rs2) # define FITOQ(rs2, rd) FPop1(rd, 0, 204, rs2)
@ -168,7 +168,7 @@ _f3f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t, jit_int32_t,jit_int32_t);
# define CPop1(rd, rs1, opc, rs2) f3f(rd, 54, rs1, opf, rs2) # define CPop1(rd, rs1, opc, rs2) f3f(rd, 54, rs1, opf, rs2)
# define CPop2(rd, rs1, opc, rs2) f3f(rd, 55, rs1, opf, rs2) # define CPop2(rd, rs1, opc, rs2) f3f(rd, 55, rs1, opf, rs2)
# define extr_f(r0, r1) _extr_f(_jit, r0, r1) # define extr_f(r0, r1) _extr_f(_jit, r0, r1)
static void _extr_f(jit_state_t*, jit_int32_t, jit_int32_t); static void _extr_f(jit_state_t*, int32_t, jit_int32_t);
# if __WORDSIZSE == 32 # if __WORDSIZSE == 32
# define truncr_f(r0, r1) truncr_f_i(r0, r1) # define truncr_f(r0, r1) truncr_f_i(r0, r1)
# define truncr_d(r0, r1) truncr_d_i(r0, r1) # define truncr_d(r0, r1) truncr_d_i(r0, r1)
@ -177,60 +177,60 @@ static void _extr_f(jit_state_t*, jit_int32_t, jit_int32_t);
# define truncr_d(r0, r1) truncr_d_l(r0, r1) # define truncr_d(r0, r1) truncr_d_l(r0, r1)
# endif # endif
# define truncr_f_i(r0, r1) _truncr_f_i(_jit, r0, r1) # define truncr_f_i(r0, r1) _truncr_f_i(_jit, r0, r1)
static void _truncr_f_i(jit_state_t*, jit_int32_t, jit_int32_t); static void _truncr_f_i(jit_state_t*, int32_t, jit_int32_t);
# if __WORDSIZE == 64 # if __WORDSIZE == 64
# define truncr_f_l(r0, r1) _truncr_f_l(_jit, r0, r1) # define truncr_f_l(r0, r1) _truncr_f_l(_jit, r0, r1)
static void _truncr_f_l(jit_state_t*, jit_int32_t, jit_int32_t); static void _truncr_f_l(jit_state_t*, int32_t, jit_int32_t);
# endif # endif
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define extr_d_f(r0, r1) FDTOS(r1, r0) # define extr_d_f(r0, r1) FDTOS(r1, r0)
# else # else
# define extr_d_f(r0, r1) _extr_d_f(_jit, r0, r1) # define extr_d_f(r0, r1) _extr_d_f(_jit, r0, r1)
static void _extr_d_f(jit_state_t*, jit_int32_t, jit_int32_t); static void _extr_d_f(jit_state_t*, int32_t, jit_int32_t);
# endif # endif
# define movi_f(r0, i0) _movi_f(_jit, r0, i0) # define movi_f(r0, i0) _movi_f(_jit, r0, i0)
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define movr_f(r0, r1) FMOVS(r1, r0) # define movr_f(r0, r1) FMOVS(r1, r0)
# else # else
# define movr_f(r0, r1) _movr_f(_jit, r0, r1) # define movr_f(r0, r1) _movr_f(_jit, r0, r1)
static void _movr_f(jit_state_t*, jit_int32_t, jit_int32_t); static void _movr_f(jit_state_t*, int32_t, jit_int32_t);
# endif # endif
static void _movi_f(jit_state_t*, jit_int32_t, jit_float32_t*); static void _movi_f(jit_state_t*, int32_t, jit_float32_t*);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define negr_f(r0, r1) FNEGS(r1, r0) # define negr_f(r0, r1) FNEGS(r1, r0)
# define absr_f(r0, r1) FABSS(r1, r0) # define absr_f(r0, r1) FABSS(r1, r0)
# define sqrtr_f(r0, r1) FSQRTS(r1, r0) # define sqrtr_f(r0, r1) FSQRTS(r1, r0)
# else # else
# define negr_f(r0, r1) _negr_f(_jit, r0, r1) # define negr_f(r0, r1) _negr_f(_jit, r0, r1)
static void _negr_f(jit_state_t*, jit_int32_t, jit_int32_t); static void _negr_f(jit_state_t*, int32_t, jit_int32_t);
# define absr_f(r0, r1) _absr_f(_jit, r0, r1) # define absr_f(r0, r1) _absr_f(_jit, r0, r1)
static void _absr_f(jit_state_t*, jit_int32_t, jit_int32_t); static void _absr_f(jit_state_t*, int32_t, jit_int32_t);
# define sqrtr_f(r0, r1) _sqrtr_f(_jit, r0, r1) # define sqrtr_f(r0, r1) _sqrtr_f(_jit, r0, r1)
static void _sqrtr_f(jit_state_t*, jit_int32_t, jit_int32_t); static void _sqrtr_f(jit_state_t*, int32_t, jit_int32_t);
# endif # endif
# define extr_d(r0, r1) _extr_d(_jit, r0, r1) # define extr_d(r0, r1) _extr_d(_jit, r0, r1)
static void _extr_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _extr_d(jit_state_t*, int32_t, jit_int32_t);
# define truncr_d_i(r0, r1) _truncr_d_i(_jit, r0, r1) # define truncr_d_i(r0, r1) _truncr_d_i(_jit, r0, r1)
static void _truncr_d_i(jit_state_t*, jit_int32_t, jit_int32_t); static void _truncr_d_i(jit_state_t*, int32_t, jit_int32_t);
# if __WORDSIZE == 64 # if __WORDSIZE == 64
# define truncr_d_l(r0, r1) _truncr_d_l(_jit, r0, r1) # define truncr_d_l(r0, r1) _truncr_d_l(_jit, r0, r1)
static void _truncr_d_l(jit_state_t*, jit_int32_t, jit_int32_t); static void _truncr_d_l(jit_state_t*, int32_t, jit_int32_t);
# endif # endif
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define extr_f_d(r0, r1) FSTOD(r1, r0) # define extr_f_d(r0, r1) FSTOD(r1, r0)
# else # else
# define extr_f_d(r0, r1) _extr_f_d(_jit, r0, r1) # define extr_f_d(r0, r1) _extr_f_d(_jit, r0, r1)
static void _extr_f_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _extr_f_d(jit_state_t*, int32_t, jit_int32_t);
# endif # endif
# define movi_d(r0, i0) _movi_d(_jit, r0, i0) # define movi_d(r0, i0) _movi_d(_jit, r0, i0)
static void _movi_d(jit_state_t*, jit_int32_t, jit_float64_t*); static void _movi_d(jit_state_t*, int32_t, jit_float64_t*);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define movr_d(r0, r1) _movr_d(_jit, r0, r1) # define movr_d(r0, r1) _movr_d(_jit, r0, r1)
static void _movr_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _movr_d(jit_state_t*, int32_t, jit_int32_t);
# define negr_d(r0, r1) _negr_d(_jit, r0, r1) # define negr_d(r0, r1) _negr_d(_jit, r0, r1)
static void _negr_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _negr_d(jit_state_t*, int32_t, jit_int32_t);
# define absr_d(r0, r1) _absr_d(_jit, r0, r1) # define absr_d(r0, r1) _absr_d(_jit, r0, r1)
static void _absr_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _absr_d(jit_state_t*, int32_t, jit_int32_t);
# else # else
# define movr_d(r0, r1) FMOVD(r1, r0) # define movr_d(r0, r1) FMOVD(r1, r0)
# define negr_d(r0, r1) FNEGD(r1, r0) # define negr_d(r0, r1) FNEGD(r1, r0)
@ -238,17 +238,17 @@ static void _absr_d(jit_state_t*, jit_int32_t, jit_int32_t);
# endif # endif
# define sqrtr_d(r0, r1) FSQRTD(r1, r0) # define sqrtr_d(r0, r1) FSQRTD(r1, r0)
# define fop1f(op, r0, r1, i0) _fop1f(_jit, op, r0, r1, i0) # define fop1f(op, r0, r1, i0) _fop1f(_jit, op, r0, r1, i0)
static void _fop1f(jit_state_t*,jit_int32_t, static void _fop1f(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_float32_t*); int32_t,jit_int32_t,jit_float32_t*);
# define rfop1f(op, r0, r1, i0) _rfop1f(_jit, op, r0, r1, i0) # define rfop1f(op, r0, r1, i0) _rfop1f(_jit, op, r0, r1, i0)
static void _rfop1f(jit_state_t*,jit_int32_t, static void _rfop1f(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_float32_t*); int32_t,jit_int32_t,jit_float32_t*);
# define fop1d(op, r0, r1, i0) _fop1d(_jit, op, r0, r1, i0) # define fop1d(op, r0, r1, i0) _fop1d(_jit, op, r0, r1, i0)
static void _fop1d(jit_state_t*,jit_int32_t, static void _fop1d(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_float64_t*); int32_t,jit_int32_t,jit_float64_t*);
# define rfop1d(op, r0, r1, i0) _rfop1d(_jit, op, r0, r1, i0) # define rfop1d(op, r0, r1, i0) _rfop1d(_jit, op, r0, r1, i0)
static void _rfop1d(jit_state_t*,jit_int32_t, static void _rfop1d(jit_state_t*,int32_t,
jit_int32_t,jit_int32_t,jit_float64_t*); int32_t,jit_int32_t,jit_float64_t*);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define addr_f(r0, r1, r2) FADDS(r1, r2, r0) # define addr_f(r0, r1, r2) FADDS(r1, r2, r0)
# define subr_f(r0, r1, r2) FSUBS(r1, r2, r0) # define subr_f(r0, r1, r2) FSUBS(r1, r2, r0)
@ -256,8 +256,8 @@ static void _rfop1d(jit_state_t*,jit_int32_t,
# define divr_f(r0, r1, r2) FDIVS(r1, r2, r0) # define divr_f(r0, r1, r2) FDIVS(r1, r2, r0)
# else # else
# define fop2f(op, r0, r1, r2) _fop2f(_jit, op, r0, r1, r2) # define fop2f(op, r0, r1, r2) _fop2f(_jit, op, r0, r1, r2)
static void _fop2f(jit_state_t*, jit_int32_t, static void _fop2f(jit_state_t*, int32_t,
jit_int32_t, jit_int32_t, jit_int32_t); int32_t, jit_int32_t, jit_int32_t);
# define addr_f(r0, r1, r2) fop2f(SPARC_FADDS, r0, r1, r2) # define addr_f(r0, r1, r2) fop2f(SPARC_FADDS, r0, r1, r2)
# define subr_f(r0, r1, r2) fop2f(SPARC_FSUBS, r0, r1, r2) # define subr_f(r0, r1, r2) fop2f(SPARC_FSUBS, r0, r1, r2)
# define mulr_f(r0, r1, r2) fop2f(SPARC_FMULS, r0, r1, r2) # define mulr_f(r0, r1, r2) fop2f(SPARC_FMULS, r0, r1, r2)
@ -282,10 +282,10 @@ static void _fop2f(jit_state_t*, jit_int32_t,
# define divr_d(r0, r1, r2) FDIVD(r1, r2, r0) # define divr_d(r0, r1, r2) FDIVD(r1, r2, r0)
# define divi_d(r0, r1, i0) fop1d(SPARC_FDIVD, r0, r1, i0) # define divi_d(r0, r1, i0) fop1d(SPARC_FDIVD, r0, r1, i0)
#define fcr(cc, r0, r1, r2) _fcr(_jit, cc, r0, r1, r2) #define fcr(cc, r0, r1, r2) _fcr(_jit, cc, r0, r1, r2)
static void _fcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); static void _fcr(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
#define fcw(cc, r0, r1, i0) _fcw(_jit, cc, r0, r1, i0) #define fcw(cc, r0, r1, i0) _fcw(_jit, cc, r0, r1, i0)
static void static void
_fcw(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_float32_t*); _fcw(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_float32_t*);
# define ltr_f(r0, r1, r2) fcr(SPARC_FBL, r0, r1, r2) # define ltr_f(r0, r1, r2) fcr(SPARC_FBL, r0, r1, r2)
# define lti_f(r0, r1, i0) fcw(SPARC_FBL, r0, r1, i0) # define lti_f(r0, r1, i0) fcw(SPARC_FBL, r0, r1, i0)
# define ler_f(r0, r1, r2) fcr(SPARC_FBLE, r0, r1, r2) # define ler_f(r0, r1, r2) fcr(SPARC_FBLE, r0, r1, r2)
@ -315,10 +315,10 @@ _fcw(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_float32_t*);
# define unordr_f(r0, r1, r2) fcr(SPARC_FBU, r0, r1, r2) # define unordr_f(r0, r1, r2) fcr(SPARC_FBU, r0, r1, r2)
# define unordi_f(r0, r1, i0) fcw(SPARC_FBU, r0, r1, i0) # define unordi_f(r0, r1, i0) fcw(SPARC_FBU, r0, r1, i0)
#define dcr(cc, r0, r1, r2) _dcr(_jit, cc, r0, r1, r2) #define dcr(cc, r0, r1, r2) _dcr(_jit, cc, r0, r1, r2)
static void _dcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t); static void _dcr(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
#define dcw(cc, r0, r1, i0) _dcw(_jit, cc, r0, r1, i0) #define dcw(cc, r0, r1, i0) _dcw(_jit, cc, r0, r1, i0)
static void static void
_dcw(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_float64_t*); _dcw(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,jit_float64_t*);
# define ltr_d(r0, r1, r2) dcr(SPARC_FBL, r0, r1, r2) # define ltr_d(r0, r1, r2) dcr(SPARC_FBL, r0, r1, r2)
# define lti_d(r0, r1, i0) dcw(SPARC_FBL, r0, r1, i0) # define lti_d(r0, r1, i0) dcw(SPARC_FBL, r0, r1, i0)
# define ler_d(r0, r1, r2) dcr(SPARC_FBLE, r0, r1, r2) # define ler_d(r0, r1, r2) dcr(SPARC_FBLE, r0, r1, r2)
@ -351,52 +351,52 @@ _dcw(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_float64_t*);
# define ldr_f(r0, r1) LDF(r1, 0, r0) # define ldr_f(r0, r1) LDF(r1, 0, r0)
# else # else
# define ldr_f(r0, r1) _ldr_f(_jit, r0, r1) # define ldr_f(r0, r1) _ldr_f(_jit, r0, r1)
static void _ldr_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _ldr_f(jit_state_t*,int32_t,jit_int32_t);
# endif # endif
# define ldi_f(r0, i0) _ldi_f(_jit, r0, i0) # define ldi_f(r0, i0) _ldi_f(_jit, r0, i0)
static void _ldi_f(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_f(jit_state_t*,int32_t,jit_word_t);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define ldxr_f(r0, r1, r2) LDF(r1, r2, r0) # define ldxr_f(r0, r1, r2) LDF(r1, r2, r0)
# else # else
# define ldxr_f(r0, r1, r2) _ldxr_f(_jit, r0, r1, r2) # define ldxr_f(r0, r1, r2) _ldxr_f(_jit, r0, r1, r2)
static void _ldxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# endif # endif
# define ldxi_f(r0, r1, i0) _ldxi_f(_jit, r0, r1, i0) # define ldxi_f(r0, r1, i0) _ldxi_f(_jit, r0, r1, i0)
static void _ldxi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t); static void _ldxi_f(jit_state_t*,int32_t,jit_int32_t,jit_word_t);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define str_f(r0, r1) STF(r1, r0, 0) # define str_f(r0, r1) STF(r1, r0, 0)
# else # else
# define str_f(r0, r1) _str_f(_jit, r0, r1) # define str_f(r0, r1) _str_f(_jit, r0, r1)
static void _str_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _str_f(jit_state_t*,int32_t,jit_int32_t);
# endif # endif
# define sti_f(r0, i0) _sti_f(_jit, r0, i0) # define sti_f(r0, i0) _sti_f(_jit, r0, i0)
static void _sti_f(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_f(jit_state_t*,jit_word_t,int32_t);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
# define stxr_f(r0, r1, r2) STF(r2, r1, r0) # define stxr_f(r0, r1, r2) STF(r2, r1, r0)
# else # else
# define stxr_f(r0, r1, r2) _stxr_f(_jit, r0, r1, r2) # define stxr_f(r0, r1, r2) _stxr_f(_jit, r0, r1, r2)
static void _stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# endif # endif
# define stxi_f(r0, r1, i0) _stxi_f(_jit, r0, r1, i0) # define stxi_f(r0, r1, i0) _stxi_f(_jit, r0, r1, i0)
static void _stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t); static void _stxi_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define ldr_d(r0, r1) LDDF(r1, 0, r0) # define ldr_d(r0, r1) LDDF(r1, 0, r0)
# define ldi_d(r0, i0) _ldi_d(_jit, r0, i0) # define ldi_d(r0, i0) _ldi_d(_jit, r0, i0)
static void _ldi_d(jit_state_t*,jit_int32_t,jit_word_t); static void _ldi_d(jit_state_t*,int32_t,jit_word_t);
# define ldxr_d(r0, r1, r2) LDDF(r1, r2, r0) # define ldxr_d(r0, r1, r2) LDDF(r1, r2, r0)
# define ldxi_d(r0, r1, i0) _ldxi_d(_jit, r0, r1, i0) # define ldxi_d(r0, r1, i0) _ldxi_d(_jit, r0, r1, i0)
static void _ldxi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _ldxi_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define str_d(r0, r1) STDF(r1, r0, 0) # define str_d(r0, r1) STDF(r1, r0, 0)
# define sti_d(r0, i0) _sti_d(_jit, r0, i0) # define sti_d(r0, i0) _sti_d(_jit, r0, i0)
static void _sti_d(jit_state_t*,jit_word_t,jit_int32_t); static void _sti_d(jit_state_t*,jit_word_t,int32_t);
# define stxr_d(r0, r1, r2) STDF(r2, r1, r0) # define stxr_d(r0, r1, r2) STDF(r2, r1, r0)
# define stxi_d(r0, r1, i0) _stxi_d(_jit, r0, r1, i0) # define stxi_d(r0, r1, i0) _stxi_d(_jit, r0, r1, i0)
static void _stxi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _stxi_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define fbr(cc, i0, r0, r1) _fbr(_jit, cc, i0, r0, r1) # define fbr(cc, i0, r0, r1) _fbr(_jit, cc, i0, r0, r1)
static jit_word_t static jit_word_t
_fbr(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t); _fbr(jit_state_t*,int32_t,jit_word_t,jit_int32_t,jit_int32_t);
# define fbw(cc, i0, r0, i1) _fbw(_jit, cc, i0, r0, i1) # define fbw(cc, i0, r0, i1) _fbw(_jit, cc, i0, r0, i1)
static jit_word_t static jit_word_t
_fbw(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_float32_t*); _fbw(jit_state_t*,int32_t,jit_word_t,jit_int32_t,jit_float32_t*);
# define bltr_f(i0, r0, r1) fbr(SPARC_FBL, i0, r0, r1) # define bltr_f(i0, r0, r1) fbr(SPARC_FBL, i0, r0, r1)
# define blti_f(i0, r0, i1) fbw(SPARC_FBL, i0, r0, i1) # define blti_f(i0, r0, i1) fbw(SPARC_FBL, i0, r0, i1)
# define bler_f(i0, r0, r1) fbr(SPARC_FBLE, i0, r0, r1) # define bler_f(i0, r0, r1) fbr(SPARC_FBLE, i0, r0, r1)
@ -427,10 +427,10 @@ _fbw(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_float32_t*);
# define bunordi_f(i0, r0, i1) fbw(SPARC_FBU, i0, r0, i1) # define bunordi_f(i0, r0, i1) fbw(SPARC_FBU, i0, r0, i1)
# define dbr(cc, i0, r0, r1) _dbr(_jit, cc, i0, r0, r1) # define dbr(cc, i0, r0, r1) _dbr(_jit, cc, i0, r0, r1)
static jit_word_t static jit_word_t
_dbr(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t); _dbr(jit_state_t*,int32_t,jit_word_t,jit_int32_t,jit_int32_t);
# define dbw(cc, i0, r0, i1) _dbw(_jit, cc, i0, r0, i1) # define dbw(cc, i0, r0, i1) _dbw(_jit, cc, i0, r0, i1)
static jit_word_t static jit_word_t
_dbw(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_float64_t*); _dbw(jit_state_t*,int32_t,jit_word_t,jit_int32_t,jit_float64_t*);
# define bltr_d(i0, r0, r1) dbr(SPARC_FBL, i0, r0, r1) # define bltr_d(i0, r0, r1) dbr(SPARC_FBL, i0, r0, r1)
# define blti_d(i0, r0, i1) dbw(SPARC_FBL, i0, r0, i1) # define blti_d(i0, r0, i1) dbw(SPARC_FBL, i0, r0, i1)
# define bler_d(i0, r0, r1) dbr(SPARC_FBLE, i0, r0, r1) # define bler_d(i0, r0, r1) dbr(SPARC_FBLE, i0, r0, r1)
@ -460,13 +460,13 @@ _dbw(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_float64_t*);
# define bunordr_d(i0, r0, r1) dbr(SPARC_FBU, i0, r0, r1) # define bunordr_d(i0, r0, r1) dbr(SPARC_FBU, i0, r0, r1)
# define bunordi_d(i0, r0, i1) dbw(SPARC_FBU, i0, r0, i1) # define bunordi_d(i0, r0, i1) dbw(SPARC_FBU, i0, r0, i1)
# define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1) # define vaarg_d(r0, r1) _vaarg_d(_jit, r0, r1)
static void _vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _vaarg_d(jit_state_t*, int32_t, jit_int32_t);
#endif #endif
#if CODE #if CODE
static void static void
_f3f(jit_state_t *_jit, jit_int32_t rd, _f3f(jit_state_t *_jit, int32_t rd,
jit_int32_t op3, jit_int32_t rs1, jit_int32_t opf, jit_int32_t rs2) int32_t op3, jit_int32_t rs1, jit_int32_t opf, jit_int32_t rs2)
{ {
jit_instr_t v; jit_instr_t v;
# if __WORDSIZE == 64 # if __WORDSIZE == 64
@ -499,9 +499,9 @@ _f3f(jit_state_t *_jit, jit_int32_t rd,
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_movr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t t0, t1; int32_t t0, t1;
if (r0 != r1) { if (r0 != r1) {
if (single_precision_p(r0)) { if (single_precision_p(r0)) {
if (single_precision_p(r1)) if (single_precision_p(r1))
@ -532,9 +532,9 @@ _movr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_negr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _negr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t t0, t1; int32_t t0, t1;
if (single_precision_p(r0)) { if (single_precision_p(r0)) {
if (single_precision_p(r1)) if (single_precision_p(r1))
FNEGS(r1, r0); FNEGS(r1, r0);
@ -563,9 +563,9 @@ _negr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_absr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _absr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t t0, t1; int32_t t0, t1;
if (single_precision_p(r0)) { if (single_precision_p(r0)) {
if (single_precision_p(r1)) if (single_precision_p(r1))
FABSS(r1, r0); FABSS(r1, r0);
@ -594,9 +594,9 @@ _absr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_sqrtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _sqrtr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t t0, t1; int32_t t0, t1;
if (single_precision_p(r0)) { if (single_precision_p(r0)) {
if (single_precision_p(r1)) if (single_precision_p(r1))
FSQRTS(r1, r0); FSQRTS(r1, r0);
@ -627,9 +627,9 @@ _sqrtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_extr_d_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _extr_d_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (!single_precision_p(r0)) { if (!single_precision_p(r0)) {
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
movr_d(rn(reg), r0); movr_d(rn(reg), r0);
@ -643,13 +643,13 @@ _extr_d_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif # endif
static void static void
_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0) _movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t *i0)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_int32_t reg; int32_t reg;
if (_jitc->no_data) { if (_jitc->no_data) {
data.f = *i0; data.f = *i0;
@ -665,9 +665,9 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_extr_f_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _extr_f_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (!single_precision_p(r1)) { if (!single_precision_p(r1)) {
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
movr_d(rn(reg), r1); movr_d(rn(reg), r1);
@ -680,17 +680,17 @@ _extr_f_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif # endif
static void static void
_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0) _movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t *i0)
{ {
union { union {
# if __WORDSIZE == 32 # if __WORDSIZE == 32
jit_int32_t i[2]; int32_t i[2];
# else # else
jit_word_t w; jit_word_t w;
# endif # endif
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_int32_t reg; int32_t reg;
if (_jitc->no_data) { if (_jitc->no_data) {
data.d = *i0; data.d = *i0;
@ -714,7 +714,7 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
# if __WORDSIZE == 32 # if __WORDSIZE == 32
static void static void
_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _movr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
assert(!(r0 & 1)); assert(!(r0 & 1));
assert(!(r1 & 1)); assert(!(r1 & 1));
@ -725,7 +725,7 @@ _movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _negr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
assert(!(r0 & 1)); assert(!(r0 & 1));
assert(!(r1 & 1)); assert(!(r1 & 1));
@ -735,7 +735,7 @@ _negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _absr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
assert(!(r0 & 1)); assert(!(r0 & 1));
assert(!(r1 & 1)); assert(!(r1 & 1));
@ -748,9 +748,9 @@ _absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
# define single_rrr(NAME, CODE) \ # define single_rrr(NAME, CODE) \
static void \ static void \
NAME(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) \ NAME(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2) \
{ \ { \
jit_int32_t x0, t0, x1, t1, x2, t2, mask = 0; \ int32_t x0, t0, x1, t1, x2, t2, mask = 0; \
if (!single_precision_p(r0)) { \ if (!single_precision_p(r0)) { \
mask |= 1; \ mask |= 1; \
t0 = jit_get_reg(CLASS_SNG); \ t0 = jit_get_reg(CLASS_SNG); \
@ -802,10 +802,10 @@ NAME(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) \
} }
static void static void
_fop2f(jit_state_t *_jit, jit_int32_t op, _fop2f(jit_state_t *_jit, int32_t op,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t x0, t0, x1, t1, x2, t2, mask = 0; int32_t x0, t0, x1, t1, x2, t2, mask = 0;
if (!single_precision_p(r0)) { if (!single_precision_p(r0)) {
mask |= 1; mask |= 1;
t0 = jit_get_reg(CLASS_SNG); t0 = jit_get_reg(CLASS_SNG);
@ -858,12 +858,12 @@ _fop2f(jit_state_t *_jit, jit_int32_t op,
# endif # endif
static void static void
_fop1f(jit_state_t *_jit, jit_int32_t op, _fop1f(jit_state_t *_jit, int32_t op,
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0) int32_t r0, jit_int32_t r1, jit_float32_t *i0)
{ {
jit_int32_t reg; int32_t reg;
# if __WORDSIZE == 64 # if __WORDSIZE == 64
jit_int32_t x0, t0, x1, t1, mask = 0; int32_t x0, t0, x1, t1, mask = 0;
# endif # endif
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
movi_f(rn(reg), i0); movi_f(rn(reg), i0);
@ -903,12 +903,12 @@ _fop1f(jit_state_t *_jit, jit_int32_t op,
} }
static void static void
_rfop1f(jit_state_t *_jit, jit_int32_t op, _rfop1f(jit_state_t *_jit, int32_t op,
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0) int32_t r0, jit_int32_t r1, jit_float32_t *i0)
{ {
jit_int32_t reg; int32_t reg;
# if __WORDSIZE == 64 # if __WORDSIZE == 64
jit_int32_t x0, t0, x1, t1, mask = 0; int32_t x0, t0, x1, t1, mask = 0;
# endif # endif
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
movi_f(rn(reg), i0); movi_f(rn(reg), i0);
@ -948,10 +948,10 @@ _rfop1f(jit_state_t *_jit, jit_int32_t op,
} }
static void static void
_fop1d(jit_state_t *_jit, jit_int32_t op, _fop1d(jit_state_t *_jit, int32_t op,
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0) int32_t r0, jit_int32_t r1, jit_float64_t *i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(CLASS_DBL); reg = jit_get_reg(CLASS_DBL);
movi_d(rn(reg), i0); movi_d(rn(reg), i0);
FPop1(r0, r1, op, rn(reg)); FPop1(r0, r1, op, rn(reg));
@ -959,10 +959,10 @@ _fop1d(jit_state_t *_jit, jit_int32_t op,
} }
static void static void
_rfop1d(jit_state_t *_jit, jit_int32_t op, _rfop1d(jit_state_t *_jit, int32_t op,
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0) int32_t r0, jit_int32_t r1, jit_float64_t *i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(CLASS_DBL); reg = jit_get_reg(CLASS_DBL);
movi_d(rn(reg), i0); movi_d(rn(reg), i0);
FPop1(r0, rn(reg), op, r1); FPop1(r0, rn(reg), op, r1);
@ -970,7 +970,7 @@ _rfop1d(jit_state_t *_jit, jit_int32_t op,
} }
static void static void
_extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _extr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
stxi(BIAS(-8), _FP_REGNO, r1); stxi(BIAS(-8), _FP_REGNO, r1);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
@ -979,7 +979,7 @@ _extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# else # else
ldxi_d(r0, _FP_REGNO, BIAS(-8)); ldxi_d(r0, _FP_REGNO, BIAS(-8));
if (!single_precision_p(r0)) { if (!single_precision_p(r0)) {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
movr_d(rn(reg), r0); movr_d(rn(reg), r0);
FXTOS(rn(reg), rn(reg)); FXTOS(rn(reg), rn(reg));
@ -992,9 +992,9 @@ _extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_truncr_f_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_f_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
# if __WORDSIZE == 64 # if __WORDSIZE == 64
if (!single_precision_p(r1)) { if (!single_precision_p(r1)) {
@ -1011,9 +1011,9 @@ _truncr_f_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_truncr_f_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_f_l(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
# if __WORDSIZE == 64 # if __WORDSIZE == 64
if (!single_precision_p(r1)) { if (!single_precision_p(r1)) {
@ -1030,11 +1030,11 @@ _truncr_f_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif # endif
static void static void
_fcr(jit_state_t *_jit, jit_int32_t cc, _fcr(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
# if __WORDSIZE == 64 # if __WORDSIZE == 64
jit_int32_t x0, t0, x1, t1, mask = 0; int32_t x0, t0, x1, t1, mask = 0;
if (!single_precision_p(r1)) { if (!single_precision_p(r1)) {
mask |= 1; mask |= 1;
t0 = jit_get_reg(CLASS_SNG); t0 = jit_get_reg(CLASS_SNG);
@ -1067,12 +1067,12 @@ _fcr(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_fcw(jit_state_t *_jit, jit_int32_t cc, _fcw(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0) int32_t r0, jit_int32_t r1, jit_float32_t *i0)
{ {
jit_int32_t reg; int32_t reg;
# if __WORDSIZE == 64 # if __WORDSIZE == 64
jit_int32_t x0, t0, mask = 0; int32_t x0, t0, mask = 0;
if (!single_precision_p(r1)) { if (!single_precision_p(r1)) {
mask |= 1; mask |= 1;
t0 = jit_get_reg(CLASS_SNG); t0 = jit_get_reg(CLASS_SNG);
@ -1098,8 +1098,8 @@ _fcw(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_dcr(jit_state_t *_jit, jit_int32_t cc, _dcr(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
FCMPD(r1, r2); FCMPD(r1, r2);
FBa(cc, 3); FBa(cc, 3);
@ -1108,10 +1108,10 @@ _dcr(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_dcw(jit_state_t *_jit, jit_int32_t cc, _dcw(jit_state_t *_jit, int32_t cc,
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0) int32_t r0, jit_int32_t r1, jit_float64_t *i0)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(CLASS_DBL); reg = jit_get_reg(CLASS_DBL);
movi_d(rn(reg), i0); movi_d(rn(reg), i0);
FCMPD(r1, rn(reg)); FCMPD(r1, rn(reg));
@ -1123,9 +1123,9 @@ _dcw(jit_state_t *_jit, jit_int32_t cc,
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_ldr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _ldr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (!single_precision_p(r0)) { if (!single_precision_p(r0)) {
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
LDF(r1, 0, rn(reg)); LDF(r1, 0, rn(reg));
@ -1138,9 +1138,9 @@ _ldr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif # endif
static void static void
_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (s13_p(i0)) { if (s13_p(i0)) {
# if __WORDSIZE == 64 # if __WORDSIZE == 64
if (!single_precision_p(r0)) { if (!single_precision_p(r0)) {
@ -1163,9 +1163,9 @@ _ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _ldxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (!single_precision_p(r0)) { if (!single_precision_p(r0)) {
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
LDF(r1, r2, rn(reg)); LDF(r1, r2, rn(reg));
@ -1178,9 +1178,9 @@ _ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
# endif # endif
static void static void
_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _ldxi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (s13_p(i0)) { if (s13_p(i0)) {
# if __WORDSIZE == 64 # if __WORDSIZE == 64
if (!single_precision_p(r0)) { if (!single_precision_p(r0)) {
@ -1203,9 +1203,9 @@ _ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_str_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _str_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (!single_precision_p(r1)) { if (!single_precision_p(r1)) {
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
movr_d(rn(reg), r1); movr_d(rn(reg), r1);
@ -1218,9 +1218,9 @@ _str_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif # endif
static void static void
_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
if (s13_p(i0)) { if (s13_p(i0)) {
# if __WORDSIZE == 64 # if __WORDSIZE == 64
if (!single_precision_p(r0)) { if (!single_precision_p(r0)) {
@ -1243,9 +1243,9 @@ _sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _stxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_int32_t reg; int32_t reg;
if (!single_precision_p(r2)) { if (!single_precision_p(r2)) {
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
movr_d(rn(reg), r2); movr_d(rn(reg), r2);
@ -1258,9 +1258,9 @@ _stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
# endif # endif
static void static void
_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (s13_p(i0)) { if (s13_p(i0)) {
# if __WORDSIZE == 64 # if __WORDSIZE == 64
if (!single_precision_p(r1)) { if (!single_precision_p(r1)) {
@ -1282,7 +1282,7 @@ _stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _extr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
stxi(BIAS(-8), _FP_REGNO, r1); stxi(BIAS(-8), _FP_REGNO, r1);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
@ -1297,9 +1297,9 @@ _extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_d_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(CLASS_SNG); reg = jit_get_reg(CLASS_SNG);
# if __WORDSIZE == 64 # if __WORDSIZE == 64
if (!single_precision_p(r1)) { if (!single_precision_p(r1)) {
@ -1316,9 +1316,9 @@ _truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
static void static void
_truncr_d_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _truncr_d_l(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(CLASS_DBL); reg = jit_get_reg(CLASS_DBL);
FDTOX(r1, rn(reg)); FDTOX(r1, rn(reg));
stxi_d(BIAS(-8), _FP_REGNO, rn(reg)); stxi_d(BIAS(-8), _FP_REGNO, rn(reg));
@ -1328,9 +1328,9 @@ _truncr_d_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif # endif
static void static void
_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (s13_p(i0)) if (s13_p(i0))
LDDFI(0, i0, r0); LDDFI(0, i0, r0);
else { else {
@ -1342,9 +1342,9 @@ _ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t i0) _ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (s13_p(i0)) if (s13_p(i0))
LDDFI(r1, i0, r0); LDDFI(r1, i0, r0);
else { else {
@ -1356,9 +1356,9 @@ _ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t i0)
} }
static void static void
_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
if (s13_p(i0)) if (s13_p(i0))
STDFI(r0, 0, i0); STDFI(r0, 0, i0);
else { else {
@ -1370,9 +1370,9 @@ _sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_stxi_d(jit_state_t *_jit, jit_int32_t i0, jit_int32_t r0, jit_int32_t r1) _stxi_d(jit_state_t *_jit, int32_t i0, jit_int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (s13_p(i0)) if (s13_p(i0))
STDFI(r1, r0, i0); STDFI(r1, r0, i0);
else { else {
@ -1384,11 +1384,11 @@ _stxi_d(jit_state_t *_jit, jit_int32_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static jit_word_t static jit_word_t
_fbr(jit_state_t *_jit, jit_int32_t cc, _fbr(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0,jit_int32_t r1) jit_word_t i0, int32_t r0,jit_int32_t r1)
{ {
# if __WORDSIZE == 64 # if __WORDSIZE == 64
jit_int32_t x0, t0, x1, t1, mask = 0; int32_t x0, t0, x1, t1, mask = 0;
# endif # endif
jit_word_t w; jit_word_t w;
# if __WORDSIZE == 64 # if __WORDSIZE == 64
@ -1425,13 +1425,13 @@ _fbr(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_fbw(jit_state_t *_jit, jit_int32_t cc, _fbw(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_float32_t *i1) jit_word_t i0, int32_t r0, jit_float32_t *i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
# if __WORDSIZE == 64 # if __WORDSIZE == 64
jit_int32_t x0, t0, mask = 0; int32_t x0, t0, mask = 0;
if (!single_precision_p(r0)) { if (!single_precision_p(r0)) {
mask |= 1; mask |= 1;
t0 = jit_get_reg(CLASS_SNG); t0 = jit_get_reg(CLASS_SNG);
@ -1458,8 +1458,8 @@ _fbw(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_dbr(jit_state_t *_jit, jit_int32_t cc, _dbr(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_word_t w; jit_word_t w;
FCMPD(r0, r1); FCMPD(r0, r1);
@ -1470,11 +1470,11 @@ _dbr(jit_state_t *_jit, jit_int32_t cc,
} }
static jit_word_t static jit_word_t
_dbw(jit_state_t *_jit, jit_int32_t cc, _dbw(jit_state_t *_jit, int32_t cc,
jit_word_t i0, jit_int32_t r0, jit_float64_t *i1) jit_word_t i0, int32_t r0, jit_float64_t *i1)
{ {
jit_word_t w; jit_word_t w;
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(CLASS_DBL); reg = jit_get_reg(CLASS_DBL);
movi_d(rn(reg), i1); movi_d(rn(reg), i1);
FCMPD(r0, rn(reg)); FCMPD(r0, rn(reg));
@ -1486,7 +1486,7 @@ _dbw(jit_state_t *_jit, jit_int32_t cc,
} }
static void static void
_vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _vaarg_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
assert(_jitc->function->self.call & jit_call_varargs); assert(_jitc->function->self.call & jit_call_varargs);

View file

@ -168,7 +168,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -194,7 +194,7 @@ _jit_prolog(jit_state_t *_jit)
# endif # endif
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -213,8 +213,8 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
assert(_jitc->function); assert(_jitc->function);
switch (length) { switch (length) {
@ -232,13 +232,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -265,7 +265,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
if (JIT_RET != u) if (JIT_RET != u)
@ -285,7 +285,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
if (JIT_FRET != u) if (JIT_FRET != u)
@ -306,7 +306,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
if (JIT_FRET != u) if (JIT_FRET != u)
@ -371,7 +371,7 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
jit_pushargr(u); jit_pushargr(u);
@ -382,7 +382,7 @@ jit_node_t *
_jit_arg(jit_state_t *_jit) _jit_arg(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
if (jit_arg_reg_p(_jitc->function->self.argi)) if (jit_arg_reg_p(_jitc->function->self.argi))
offset = _jitc->function->self.argi++; offset = _jitc->function->self.argi++;
@ -404,7 +404,7 @@ jit_node_t *
_jit_arg_f(jit_state_t *_jit) _jit_arg_f(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
# if __WORDSIZE == 64 # if __WORDSIZE == 64
jit_bool_t inc; jit_bool_t inc;
# endif # endif
@ -435,7 +435,7 @@ jit_node_t *
_jit_arg_d(jit_state_t *_jit) _jit_arg_d(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
# if __WORDSIZE == 64 # if __WORDSIZE == 64
jit_bool_t inc; jit_bool_t inc;
# endif # endif
@ -469,7 +469,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -477,12 +477,12 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_c(u, _I0 + v->u.w); jit_extr_c(u, _I0 + v->u.w);
else else
jit_ldxi_c(u, JIT_FP, jit_ldxi_c(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_int8_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(int8_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -490,12 +490,12 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_uc(u, _I0 + v->u.w); jit_extr_uc(u, _I0 + v->u.w);
else else
jit_ldxi_uc(u, JIT_FP, jit_ldxi_uc(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_uint8_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(uint8_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -503,12 +503,12 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_s(u, _I0 + v->u.w); jit_extr_s(u, _I0 + v->u.w);
else else
jit_ldxi_s(u, JIT_FP, jit_ldxi_s(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_int16_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(int16_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -516,12 +516,12 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_us(u, _I0 + v->u.w); jit_extr_us(u, _I0 + v->u.w);
else else
jit_ldxi_us(u, JIT_FP, jit_ldxi_us(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_uint16_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(uint16_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -534,13 +534,13 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
else else
jit_ldxi_i(u, JIT_FP, jit_ldxi_i(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_int32_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(int32_t));
jit_dec_synth(); jit_dec_synth();
} }
# if __WORDSIZE == 64 # if __WORDSIZE == 64
void void
_jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_ui(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -548,12 +548,12 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
jit_extr_ui(u, _I0 + v->u.w); jit_extr_ui(u, _I0 + v->u.w);
else else
jit_ldxi_ui(u, JIT_FP, jit_ldxi_ui(u, JIT_FP,
v->u.w + (__WORDSIZE >> 3) - sizeof(jit_int32_t)); v->u.w + (__WORDSIZE >> 3) - sizeof(int32_t));
jit_dec_synth(); jit_dec_synth();
} }
void void
_jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_l(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -566,7 +566,7 @@ _jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
# endif # endif
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
@ -580,7 +580,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
if (jit_arg_reg_p(v->u.w)) if (jit_arg_reg_p(v->u.w))
@ -595,7 +595,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
assert(_jitc->function); assert(_jitc->function);
@ -618,7 +618,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -642,7 +642,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
@ -672,7 +672,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
assert(_jitc->function); assert(_jitc->function);
@ -705,9 +705,9 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
@ -748,9 +748,9 @@ void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
# if __WORDSIZE == 32 # if __WORDSIZE == 32
jit_int32_t gpr; int32_t gpr;
# endif # endif
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
@ -795,7 +795,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
jit_link_prepare(); jit_link_prepare();
@ -818,7 +818,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi(jit_state_t *_jit, jit_word_t u) _jit_pushargi(jit_state_t *_jit, jit_word_t u)
{ {
jit_int32_t regno; int32_t regno;
jit_inc_synth_w(pushargi, u); jit_inc_synth_w(pushargi, u);
jit_link_prepare(); jit_link_prepare();
if (jit_arg_reg_p(_jitc->function->call.argi)) { if (jit_arg_reg_p(_jitc->function->call.argi)) {
@ -841,7 +841,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(pushargr_f, u); jit_inc_synth_w(pushargr_f, u);
jit_link_prepare(); jit_link_prepare();
@ -884,7 +884,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
jit_inc_synth_f(pushargi_f, u); jit_inc_synth_f(pushargi_f, u);
jit_link_prepare(); jit_link_prepare();
# if __WORDSIZE == 32 # if __WORDSIZE == 32
@ -933,7 +933,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(pushargr_d, u); jit_inc_synth_w(pushargr_d, u);
jit_link_prepare(); jit_link_prepare();
@ -984,7 +984,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
jit_inc_synth_d(pushargi_d, u); jit_inc_synth_d(pushargi_d, u);
jit_link_prepare(); jit_link_prepare();
# if __WORDSIZE == 32 # if __WORDSIZE == 32
@ -1041,9 +1041,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
jit_int32_t spec; int32_t spec;
spec = jit_class(_rvs[regno].spec); spec = jit_class(_rvs[regno].spec);
if ((spec & (jit_class_arg|jit_class_gpr)) == if ((spec & (jit_class_arg|jit_class_gpr)) ==
@ -1065,7 +1065,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_node_t *call; jit_node_t *call;
assert(_jitc->function); assert(_jitc->function);
@ -1100,7 +1100,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_c, r0); jit_inc_synth_w(retval_c, r0);
jit_extr_c(r0, _O0); jit_extr_c(r0, _O0);
@ -1108,7 +1108,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_uc, r0); jit_inc_synth_w(retval_uc, r0);
jit_extr_uc(r0, _O0); jit_extr_uc(r0, _O0);
@ -1116,7 +1116,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_s, r0); jit_inc_synth_w(retval_s, r0);
jit_extr_s(r0, _O0); jit_extr_s(r0, _O0);
@ -1124,7 +1124,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_us, r0); jit_inc_synth_w(retval_us, r0);
jit_extr_us(r0, _O0); jit_extr_us(r0, _O0);
@ -1132,7 +1132,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
# if __WORDSIZE == 32 # if __WORDSIZE == 32
@ -1146,7 +1146,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
# if __WORDSIZE == 64 # if __WORDSIZE == 64
void void
_jit_retval_ui(jit_state_t *_jit, jit_int32_t r0) _jit_retval_ui(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
if (r0 != _O0) if (r0 != _O0)
@ -1155,7 +1155,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_l(jit_state_t *_jit, jit_int32_t r0) _jit_retval_l(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
if (r0 != _O0) if (r0 != _O0)
@ -1165,7 +1165,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
# endif # endif
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_f, r0); jit_inc_synth_w(retval_f, r0);
if (r0 != JIT_FRET) if (r0 != JIT_FRET)
@ -1174,7 +1174,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_d, r0); jit_inc_synth_w(retval_d, r0);
if (r0 != JIT_FRET) if (r0 != JIT_FRET)
@ -1188,15 +1188,15 @@ _emit_code(jit_state_t *_jit)
jit_node_t *node; jit_node_t *node;
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_int32_t value; int32_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_word_t word; jit_word_t word;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
#endif #endif
jit_int32_t patch_offset; int32_t patch_offset;
} undo; } undo;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
@ -1904,7 +1904,7 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_gpr_t r0, jit_fpr_t r1)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) if (node->code == jit_code_movi)

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -38,7 +38,7 @@
# define fldcwm(md, rb, ri, ms) x87rx(015, 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) # define fstcwm(md, rb, ri, ms) _fstcwm(_jit, md, rb, ri, ms)
static void static void
_fstcwm(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t); _fstcwm(jit_state_t*, int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
# define fldsm(md, rb, ri, ms) x87rx(010, md, rb, ri, ms) # 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 fstsm(md, rb, ri, ms) x87rx(012, md, rb, ri, ms)
# define fldlm(md, rb, ri, ms) x87rx(050, md, rb, ri, ms) # define fldlm(md, rb, ri, ms) x87rx(050, md, rb, ri, ms)
@ -49,8 +49,8 @@ _fstcwm(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
# define fildlm(md, rb, ri, ms) x87rx(030, 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) # define fildqm(md, rb, ri, ms) x87rx(075, md, rb,ri, ms)
static void static void
_x87rx(jit_state_t*, jit_int32_t, jit_int32_t, _x87rx(jit_state_t*, int32_t, jit_int32_t,
jit_int32_t, jit_int32_t, jit_int32_t); int32_t, jit_int32_t, jit_int32_t);
# define x87ri(cc,r0) _x87ri(_jit,cc,r0) # define x87ri(cc,r0) _x87ri(_jit,cc,r0)
# define fchs_() x87ri(014, 0) # define fchs_() x87ri(014, 0)
# define fabs_() x87ri(014, 1) # define fabs_() x87ri(014, 1)
@ -68,7 +68,7 @@ _x87rx(jit_state_t*, jit_int32_t, jit_int32_t,
# define fstpr(r0) x87ri(053, r0) # define fstpr(r0) x87ri(053, r0)
# define fucomir(r0) x87ri(035, r0) # define fucomir(r0) x87ri(035, r0)
# define fucomipr(r0) x87ri(075, r0) # define fucomipr(r0) x87ri(075, r0)
static void _x87ri(jit_state_t*, jit_int32_t, jit_int32_t); static void _x87ri(jit_state_t*, int32_t, jit_int32_t);
# define faddr(r0, r1) x87rri(000, r0, r1) # define faddr(r0, r1) x87rri(000, r0, r1)
# define fmulr(r0, r1) x87rri(001, r0, r1) # define fmulr(r0, r1) x87rri(001, r0, r1)
# define fsubr(r0, r1) x87rri(004, r0, r1) # define fsubr(r0, r1) x87rri(004, r0, r1)
@ -76,327 +76,327 @@ static void _x87ri(jit_state_t*, jit_int32_t, jit_int32_t);
# define fdivr(r0, r1) x87rri(006, r0, r1) # define fdivr(r0, r1) x87rri(006, r0, r1)
# define fdivrr(r0, r1) x87rri(007, r0, r1) # define fdivrr(r0, r1) x87rri(007, r0, r1)
# define x87rri(cc, r0, r1) _x87rri(_jit, cc, r0, r1) # define x87rri(cc, r0, r1) _x87rri(_jit, cc, r0, r1)
static void _x87rri(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87rri(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_addr_f(r0, r1, r2) _x87_addr_d(_jit, r0, r1, r2) # 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) # define x87_addi_f(r0, r1, i0) _x87_addi_f(_jit, r0, r1, i0)
static void _x87_addi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_addi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_addr_d(r0, r1, r2) _x87_addr_d(_jit, r0, r1, r2) # define x87_addr_d(r0, r1, r2) _x87_addr_d(_jit, r0, r1, r2)
static void _x87_addr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87_addr_d(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_addi_d(r0, r1, i0) _x87_addi_d(_jit, r0, r1, i0) # define x87_addi_d(r0, r1, i0) _x87_addi_d(_jit, r0, r1, i0)
static void _x87_addi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_addi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_subr_f(r0, r1, r2) _x87_subr_d(_jit, r0, r1, r2) # 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) # define x87_subi_f(r0, r1, i0) _x87_subi_f(_jit, r0, r1, i0)
static void _x87_subi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_subi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_subr_d(r0, r1, r2) _x87_subr_d(_jit, r0, r1, r2) # define x87_subr_d(r0, r1, r2) _x87_subr_d(_jit, r0, r1, r2)
static void _x87_subr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87_subr_d(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_subi_d(r0, r1, i0) _x87_subi_d(_jit, r0, r1, i0) # define x87_subi_d(r0, r1, i0) _x87_subi_d(_jit, r0, r1, i0)
static void _x87_subi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_subi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_rsbr_f(r0, r1, r2) x87_subr_f(r0, r2, r1) # 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) # define x87_rsbi_f(r0, r1, i0) _x87_rsbi_f(_jit, r0, r1, i0)
static void _x87_rsbi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_rsbi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_rsbr_d(r0, r1, r2) x87_subr_d(r0, r2, r1) # 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) # define x87_rsbi_d(r0, r1, i0) _x87_rsbi_d(_jit, r0, r1, i0)
static void _x87_rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_rsbi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_mulr_f(r0, r1, r2) _x87_mulr_d(_jit, r0, r1, r2) # 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) # define x87_muli_f(r0, r1, i0) _x87_muli_f(_jit, r0, r1, i0)
static void _x87_muli_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_muli_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_mulr_d(r0, r1, r2) _x87_mulr_d(_jit, r0, r1, r2) # define x87_mulr_d(r0, r1, r2) _x87_mulr_d(_jit, r0, r1, r2)
static void _x87_mulr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87_mulr_d(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_muli_d(r0, r1, i0) _x87_muli_d(_jit, r0, r1, i0) # define x87_muli_d(r0, r1, i0) _x87_muli_d(_jit, r0, r1, i0)
static void _x87_muli_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_muli_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_divr_f(r0, r1, r2) _x87_divr_d(_jit, r0, r1, r2) # 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) # define x87_divi_f(r0, r1, i0) _x87_divi_f(_jit, r0, r1, i0)
static void _x87_divi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_divi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_divr_d(r0, r1, r2) _x87_divr_d(_jit, r0, r1, r2) # define x87_divr_d(r0, r1, r2) _x87_divr_d(_jit, r0, r1, r2)
static void _x87_divr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87_divr_d(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_divi_d(r0, r1, i0) _x87_divi_d(_jit, r0, r1, i0) # define x87_divi_d(r0, r1, i0) _x87_divi_d(_jit, r0, r1, i0)
static void _x87_divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_divi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_absr_f(r0, r1) _x87_absr_d(_jit, r0, r1) # define x87_absr_f(r0, r1) _x87_absr_d(_jit, r0, r1)
# define x87_absr_d(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*, jit_int32_t, jit_int32_t); static void _x87_absr_d(jit_state_t*, int32_t, jit_int32_t);
# define x87_negr_f(r0, r1) _x87_negr_d(_jit, r0, r1) # define x87_negr_f(r0, r1) _x87_negr_d(_jit, r0, r1)
# define x87_negr_d(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*, jit_int32_t, jit_int32_t); static void _x87_negr_d(jit_state_t*, int32_t, jit_int32_t);
# define x87_sqrtr_f(r0, r1) _x87_sqrtr_d(_jit, r0, r1) # define x87_sqrtr_f(r0, r1) _x87_sqrtr_d(_jit, r0, r1)
# define x87_sqrtr_d(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*, jit_int32_t, jit_int32_t); static void _x87_sqrtr_d(jit_state_t*, int32_t, jit_int32_t);
# define x87_truncr_f_i(r0, r1) _x87_truncr_d_i(_jit, r0, r1) # 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) # define x87_truncr_d_i(r0, r1) _x87_truncr_d_i(_jit, r0, r1)
static void _x87_truncr_d_i(jit_state_t*, jit_int32_t, jit_int32_t); static void _x87_truncr_d_i(jit_state_t*, int32_t, jit_int32_t);
# if __X64 # if __X64
# define x87_truncr_f_l(r0, r1) _x87_truncr_d_l(_jit, r0, r1) # 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) # define x87_truncr_d_l(r0, r1) _x87_truncr_d_l(_jit, r0, r1)
static void _x87_truncr_d_l(jit_state_t*, jit_int32_t, jit_int32_t); static void _x87_truncr_d_l(jit_state_t*, int32_t, jit_int32_t);
# endif # endif
# define x87_extr_f(r0, r1) _x87_extr_d(_jit, r0, r1) # 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_d(r0, r1) _x87_extr_d(_jit, r0, r1)
# define x87_extr_f_d(r0, r1) x87_movr_d(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) # define x87_extr_d_f(r0, r1) x87_movr_d(r0, r1)
static void _x87_extr_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _x87_extr_d(jit_state_t*, int32_t, jit_int32_t);
# define x87cmp(code, r0, r1, r2) _x87cmp(_jit, code, r0, r1, r2) # define x87cmp(code, r0, r1, r2) _x87cmp(_jit, code, r0, r1, r2)
static void static void
_x87cmp(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t); _x87cmp(jit_state_t*, int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
# define x87cmp2(code, r0, r1, r2) _x87cmp2(_jit, code, r0, r1, r2) # define x87cmp2(code, r0, r1, r2) _x87cmp2(_jit, code, r0, r1, r2)
static void static void
_x87cmp2(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t); _x87cmp2(jit_state_t*, int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
# define x87jcc(code, i0, r0, r1) _x87jcc(_jit, code, i0, r0, r1) # define x87jcc(code, i0, r0, r1) _x87jcc(_jit, code, i0, r0, r1)
static jit_word_t static jit_word_t
_x87jcc(jit_state_t*, jit_int32_t, jit_word_t, jit_int32_t, jit_int32_t); _x87jcc(jit_state_t*, int32_t, jit_word_t, jit_int32_t, jit_int32_t);
# define x87jcc2(code, i0, r0, r1) _x87jcc2(_jit, code, i0, r0, r1) # define x87jcc2(code, i0, r0, r1) _x87jcc2(_jit, code, i0, r0, r1)
static jit_word_t static jit_word_t
_x87jcc2(jit_state_t*, jit_int32_t, jit_word_t, jit_int32_t, jit_int32_t); _x87jcc2(jit_state_t*, int32_t, jit_word_t, jit_int32_t, jit_int32_t);
#define x87_movi_f(r0,i0) _x87_movi_f(_jit,r0,i0) #define x87_movi_f(r0,i0) _x87_movi_f(_jit,r0,i0)
static void _x87_movi_f(jit_state_t*, jit_int32_t, jit_float32_t*); 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) # define x87_ldr_f(r0, r1) _x87_ldr_f(_jit, r0, r1)
static void _x87_ldr_f(jit_state_t*, jit_int32_t, jit_int32_t); static void _x87_ldr_f(jit_state_t*, int32_t, jit_int32_t);
# define x87_ldi_f(r0, i0) _x87_ldi_f(_jit, r0, i0) # define x87_ldi_f(r0, i0) _x87_ldi_f(_jit, r0, i0)
static void _x87_ldi_f(jit_state_t*, jit_int32_t, jit_word_t); 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) # define x87_ldxr_f(r0, r1, r2) _x87_ldxr_f(_jit, r0, r1, r2)
static void _x87_ldxr_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87_ldxr_f(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_ldxi_f(r0, r1, i0) _x87_ldxi_f(_jit, r0, r1, i0) # define x87_ldxi_f(r0, r1, i0) _x87_ldxi_f(_jit, r0, r1, i0)
static void _x87_ldxi_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t); static void _x87_ldxi_f(jit_state_t*, int32_t, jit_int32_t, jit_word_t);
# define x87_str_f(r0, r1) _x87_str_f(_jit, r0, r1) # define x87_str_f(r0, r1) _x87_str_f(_jit, r0, r1)
static void _x87_str_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _x87_str_f(jit_state_t*,int32_t,jit_int32_t);
# define x87_sti_f(i0, r0) _x87_sti_f(_jit, i0, r0) # define x87_sti_f(i0, r0) _x87_sti_f(_jit, i0, r0)
static void _x87_sti_f(jit_state_t*,jit_word_t, jit_int32_t); 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) # define x87_stxr_f(r0, r1, r2) _x87_stxr_f(_jit, r0, r1, r2)
static void _x87_stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _x87_stxr_f(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define x87_stxi_f(i0, r0, r1) _x87_stxi_f(_jit, i0, r0, r1) # 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,jit_int32_t,jit_int32_t); static void _x87_stxi_f(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define x87_ltr_f(r0, r1, r2) x87cmp(X86_CC_A, r0, r2, r1) # 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) # define x87_lti_f(r0, r1, i0) _x87_lti_f(_jit, r0, r1, i0)
static void _x87_lti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_lti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_ler_f(r0, r1, r2) x87cmp(X86_CC_AE, r0, r2, r1) # 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) # define x87_lei_f(r0, r1, i0) _x87_lei_f(_jit, r0, r1, i0)
static void _x87_lei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_lei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_eqr_f(r0, r1, r2) x87_eqr_d(r0, r2, r1) # 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) # define x87_eqi_f(r0, r1, i0) _x87_eqi_f(_jit, r0, r1, i0)
static void _x87_eqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_eqi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_ger_f(r0, r1, r2) x87cmp(X86_CC_AE, r0, r1, r2) # 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) # define x87_gei_f(r0, r1, i0) _x87_gei_f(_jit, r0, r1, i0)
static void _x87_gei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_gei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_gtr_f(r0, r1, r2) x87cmp(X86_CC_A, r0, r1, r2) # 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) # define x87_gti_f(r0, r1, i0) _x87_gti_f(_jit, r0, r1, i0)
static void _x87_gti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_gti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_ner_f(r0, r1, r2) x87_ner_d(r0, r2, r1) # 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) # define x87_nei_f(r0, r1, i0) _x87_nei_f(_jit, r0, r1, i0)
static void _x87_nei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_nei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_unltr_f(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r1, r2) # 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) # define x87_unlti_f(r0, r1, i0) _x87_unlti_f(_jit, r0, r1, i0)
static void _x87_unlti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_unlti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_unler_f(r0, r1, r2) x87cmp(X86_CC_NA, r0, r1, r2) # 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) # define x87_unlei_f(r0, r1, i0) _x87_unlei_f(_jit, r0, r1, i0)
static void _x87_unlei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_unlei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_uneqr_f(r0, r1, r2) x87cmp2(X86_CC_E, r0, r1, r2) # 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) # define x87_uneqi_f(r0, r1, i0) _x87_uneqi_f(_jit, r0, r1, i0)
static void _x87_uneqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_uneqi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_unger_f(r0, r1, r2) x87cmp(X86_CC_NA, r0, r2, r1) # 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) # define x87_ungei_f(r0, r1, i0) _x87_ungei_f(_jit, r0, r1, i0)
static void _x87_ungei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_ungei_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_ungtr_f(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r2, r1) # 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) # define x87_ungti_f(r0, r1, i0) _x87_ungti_f(_jit, r0, r1, i0)
static void _x87_ungti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_ungti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_ltgtr_f(r0, r1, r2) x87_ltgtr_d(r0, r1, r2) # 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) # define x87_ltgti_f(r0, r1, i0) _x87_ltgti_f(_jit, r0, r1, i0)
static void _x87_ltgti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_ltgti_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_ordr_f(r0, r1, r2) x87cmp2(X86_CC_NP, r0, r2, r1) # 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) # define x87_ordi_f(r0, r1, i0) _x87_ordi_f(_jit, r0, r1, i0)
static void _x87_ordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_ordi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_unordr_f(r0, r1, r2) x87cmp2(X86_CC_P, r0, r2, r1) # 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) # define x87_unordi_f(r0, r1, i0) _x87_unordi_f(_jit, r0, r1, i0)
static void _x87_unordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*); static void _x87_unordi_f(jit_state_t*,int32_t,jit_int32_t,jit_float32_t*);
# define x87_ltr_d(r0, r1, r2) x87cmp(X86_CC_A, r0, r2, r1) # 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) # define x87_lti_d(r0, r1, i0) _x87_lti_d(_jit, r0, r1, i0)
static void _x87_lti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_lti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_ler_d(r0, r1, r2) x87cmp(X86_CC_AE, r0, r2, r1) # 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) # define x87_lei_d(r0, r1, i0) _x87_lei_d(_jit, r0, r1, i0)
static void _x87_lei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_lei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_eqr_d(r0, r1, r2) _x87_eqr_d(_jit, r0, r2, r1) # define x87_eqr_d(r0, r1, r2) _x87_eqr_d(_jit, r0, r2, r1)
static void _x87_eqr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87_eqr_d(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_eqi_d(r0, r1, i0) _x87_eqi_d(_jit, r0, r1, i0) # define x87_eqi_d(r0, r1, i0) _x87_eqi_d(_jit, r0, r1, i0)
static void _x87_eqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_eqi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_ger_d(r0, r1, r2) x87cmp(X86_CC_AE, r0, r1, r2) # 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) # define x87_gei_d(r0, r1, i0) _x87_gei_d(_jit, r0, r1, i0)
static void _x87_gei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_gei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_gtr_d(r0, r1, r2) x87cmp(X86_CC_A, r0, r1, r2) # 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) # define x87_gti_d(r0, r1, i0) _x87_gti_d(_jit, r0, r1, i0)
static void _x87_gti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_gti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_ner_d(r0, r1, r2) _x87_ner_d(_jit, r0, r2, r1) # define x87_ner_d(r0, r1, r2) _x87_ner_d(_jit, r0, r2, r1)
static void _x87_ner_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87_ner_d(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_nei_d(r0, r1, i0) _x87_nei_d(_jit, r0, r1, i0) # define x87_nei_d(r0, r1, i0) _x87_nei_d(_jit, r0, r1, i0)
static void _x87_nei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_nei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_unltr_d(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r1, r2) # 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) # define x87_unlti_d(r0, r1, i0) _x87_unlti_d(_jit, r0, r1, i0)
static void _x87_unlti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_unlti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_unler_d(r0, r1, r2) x87cmp(X86_CC_NA, r0, r1, r2) # 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) # define x87_unlei_d(r0, r1, i0) _x87_unlei_d(_jit, r0, r1, i0)
static void _x87_unlei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_unlei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_uneqr_d(r0, r1, r2) x87cmp2(X86_CC_E, r0, r1, r2) # 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) # define x87_uneqi_d(r0, r1, i0) _x87_uneqi_d(_jit, r0, r1, i0)
static void _x87_uneqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_uneqi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_unger_d(r0, r1, r2) x87cmp(X86_CC_NA, r0, r2, r1) # 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) # define x87_ungei_d(r0, r1, i0) _x87_ungei_d(_jit, r0, r1, i0)
static void _x87_ungei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_ungei_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_ungtr_d(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r2, r1) # 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) # define x87_ungti_d(r0, r1, i0) _x87_ungti_d(_jit, r0, r1, i0)
static void _x87_ungti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_ungti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_ltgtr_d(r0, r1, r2) _x87_ltgtr_d(_jit, r0, r1, r2) # define x87_ltgtr_d(r0, r1, r2) _x87_ltgtr_d(_jit, r0, r1, r2)
static void _x87_ltgtr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87_ltgtr_d(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_ltgti_d(r0, r1, i0) _x87_ltgti_d(_jit, r0, r1, i0) # define x87_ltgti_d(r0, r1, i0) _x87_ltgti_d(_jit, r0, r1, i0)
static void _x87_ltgti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_ltgti_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_ordr_d(r0, r1, r2) x87cmp2(X86_CC_NP, r0, r2, r1) # 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) # define x87_ordi_d(r0, r1, i0) _x87_ordi_d(_jit, r0, r1, i0)
static void _x87_ordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_ordi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
# define x87_unordr_d(r0, r1, r2) x87cmp2(X86_CC_P, r0, r2, r1) # 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) # define x87_unordi_d(r0, r1, i0) _x87_unordi_d(_jit, r0, r1, i0)
static void _x87_unordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*); static void _x87_unordi_d(jit_state_t*,int32_t,jit_int32_t,jit_float64_t*);
#define x87_movr_f(r0,r1) _x87_movr_d(_jit,r0,r1) #define x87_movr_f(r0,r1) _x87_movr_d(_jit,r0,r1)
#define x87_movr_d(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*, jit_int32_t, jit_int32_t); static void _x87_movr_d(jit_state_t*, int32_t, jit_int32_t);
#define x87_movi_d(r0,i0) _x87_movi_d(_jit,r0,i0) #define x87_movi_d(r0,i0) _x87_movi_d(_jit,r0,i0)
static void _x87_movi_d(jit_state_t*, jit_int32_t, jit_float64_t*); 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) # define x87_ldr_d(r0, r1) _x87_ldr_d(_jit, r0, r1)
static void _x87_ldr_d(jit_state_t*, jit_int32_t, jit_int32_t); static void _x87_ldr_d(jit_state_t*, int32_t, jit_int32_t);
# define x87_ldi_d(r0, i0) _x87_ldi_d(_jit, r0, i0) # define x87_ldi_d(r0, i0) _x87_ldi_d(_jit, r0, i0)
static void _x87_ldi_d(jit_state_t*, jit_int32_t, jit_word_t); 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) # define x87_ldxr_d(r0, r1, r2) _x87_ldxr_d(_jit, r0, r1, r2)
static void _x87_ldxr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t); static void _x87_ldxr_d(jit_state_t*, int32_t, jit_int32_t, jit_int32_t);
# define x87_ldxi_d(r0, r1, i0) _x87_ldxi_d(_jit, r0, r1, i0) # define x87_ldxi_d(r0, r1, i0) _x87_ldxi_d(_jit, r0, r1, i0)
static void _x87_ldxi_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t); static void _x87_ldxi_d(jit_state_t*, int32_t, jit_int32_t, jit_word_t);
# define x87_str_d(r0, r1) _x87_str_d(_jit, r0, r1) # define x87_str_d(r0, r1) _x87_str_d(_jit, r0, r1)
static void _x87_str_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _x87_str_d(jit_state_t*,int32_t,jit_int32_t);
# define x87_sti_d(i0, r0) _x87_sti_d(_jit, i0, r0) # define x87_sti_d(i0, r0) _x87_sti_d(_jit, i0, r0)
static void _x87_sti_d(jit_state_t*,jit_word_t,jit_int32_t); 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) # define x87_stxr_d(r0, r1, r2) _x87_stxr_d(_jit, r0, r1, r2)
static void _x87_stxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t); static void _x87_stxr_d(jit_state_t*,int32_t,jit_int32_t,jit_int32_t);
# define x87_stxi_d(i0, r0, r1) _x87_stxi_d(_jit, i0, r0, r1) # 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,jit_int32_t,jit_int32_t); static void _x87_stxi_d(jit_state_t*,jit_word_t,int32_t,jit_int32_t);
# define x87_bltr_f(i0, r0, r1) x87jcc(X86_CC_A, i0, r1, r0) # 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) # define x87_blti_f(i0, r0, i1) _x87_blti_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_blti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_blei_f(i0, r0, i1) _x87_blei_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_blei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_beqi_f(i0, r0, i1) _x87_beqi_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_beqi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bgei_f(i0, r0, i1) _x87_bgei_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bgei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bgti_f(i0, r0, i1) _x87_bgti_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bgti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bnei_f(i0, r0, i1) _x87_bnei_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bnei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bunlti_f(i0, r0, i1) _x87_bunlti_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bunlti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bunlei_f(i0, r0, i1) _x87_bunlei_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bunlei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_buneqi_f(i0, r0, i1) _x87_buneqi_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_buneqi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bungei_f(i0, r0, i1) _x87_bungei_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bungei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bungti_f(i0, r0, i1) _x87_bungti_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bungti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bltgti_f(i0, r0, i1) _x87_bltgti_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bltgti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bordi_f(i0, r0, i1) _x87_bordi_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bordi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_bunordi_f(i0, r0, i1) _x87_bunordi_f(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bunordi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_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_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) # define x87_blti_d(i0, r0, i1) _x87_blti_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_blti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_blei_d(i0, r0, i1) _x87_blei_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_blei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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) # define x87_beqr_d(i0, r0, r1) _x87_beqr_d(_jit, i0, r0, r1)
static jit_word_t static jit_word_t
_x87_beqr_d(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t); _x87_beqr_d(jit_state_t*, jit_word_t, int32_t, jit_int32_t);
# define x87_beqi_d(i0, r0, i1) _x87_beqi_d(_jit, i0, r0, i1) # define x87_beqi_d(i0, r0, i1) _x87_beqi_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_beqi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_bgei_d(i0, r0, i1) _x87_bgei_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bgei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_bgti_d(i0, r0, i1) _x87_bgti_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bgti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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) # define x87_bner_d(i0, r0, r1) _x87_bner_d(_jit, i0, r0, r1)
static jit_word_t static jit_word_t
_x87_bner_d(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t); _x87_bner_d(jit_state_t*, jit_word_t, int32_t, jit_int32_t);
# define x87_bnei_d(i0, r0, i1) _x87_bnei_d(_jit, i0, r0, i1) # define x87_bnei_d(i0, r0, i1) _x87_bnei_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bnei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_bunlti_d(i0, r0, i1) _x87_bunlti_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bunlti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_bunlei_d(i0, r0, i1) _x87_bunlei_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bunlei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_buneqi_d(i0, r0, i1) _x87_buneqi_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_buneqi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_bungei_d(i0, r0, i1) _x87_bungei_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bungei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_bungti_d(i0, r0, i1) _x87_bungti_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bungti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_bltgti_d(i0, r0, i1) _x87_bltgti_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bltgti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_bordi_d(i0, r0, i1) _x87_bordi_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bordi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_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_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) # define x87_bunordi_d(i0, r0, i1) _x87_bunordi_d(_jit, i0, r0, i1)
static jit_word_t static jit_word_t
_x87_bunordi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*); _x87_bunordi_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
#endif #endif
#if CODE #if CODE
# define fpr_opi(name, type, size) \ # define fpr_opi(name, type, size) \
static void \ static void \
_x87_##name##i_##type(jit_state_t *_jit, \ _x87_##name##i_##type(jit_state_t *_jit, \
jit_int32_t r0, jit_int32_t r1, \ int32_t r0, jit_int32_t r1, \
jit_float##size##_t *i0) \ jit_float##size##_t *i0) \
{ \ { \
jit_int32_t reg = jit_get_reg(jit_class_fpr); \ int32_t reg = jit_get_reg(jit_class_fpr); \
assert(jit_x87_reg_p(reg)); \ assert(jit_x87_reg_p(reg)); \
x87_movi_##type(rn(reg), i0); \ x87_movi_##type(rn(reg), i0); \
x87_##name##r_##type(r0, r1, rn(reg)); \ x87_##name##r_##type(r0, r1, rn(reg)); \
@ -405,11 +405,11 @@ _x87_##name##i_##type(jit_state_t *_jit, \
# define fpr_bopi(name, type, size) \ # define fpr_bopi(name, type, size) \
static jit_word_t \ static jit_word_t \
_x87_b##name##i_##type(jit_state_t *_jit, \ _x87_b##name##i_##type(jit_state_t *_jit, \
jit_word_t i0, jit_int32_t r0, \ jit_word_t i0, int32_t r0, \
jit_float##size##_t *i1) \ jit_float##size##_t *i1) \
{ \ { \
jit_word_t word; \ jit_word_t word; \
jit_int32_t reg = jit_get_reg(jit_class_fpr| \ int32_t reg = jit_get_reg(jit_class_fpr| \
jit_class_nospill); \ jit_class_nospill); \
assert(jit_x87_reg_p(reg)); \ assert(jit_x87_reg_p(reg)); \
x87_movi_##type(rn(reg), i1); \ x87_movi_##type(rn(reg), i1); \
@ -423,8 +423,8 @@ _x87_b##name##i_##type(jit_state_t *_jit, \
# define dbopi(name) fpr_bopi(name, d, 64) # define dbopi(name) fpr_bopi(name, d, 64)
static void static void
_fstcwm(jit_state_t *_jit, jit_int32_t md, _fstcwm(jit_state_t *_jit, int32_t md,
jit_int32_t rb, jit_int32_t ri, jit_int32_t ms) int32_t rb, jit_int32_t ri, jit_int32_t ms)
{ {
ic(0x9b); ic(0x9b);
rex(0, 1, rb, ri, _NOREG); rex(0, 1, rb, ri, _NOREG);
@ -432,8 +432,8 @@ _fstcwm(jit_state_t *_jit, jit_int32_t md,
} }
static void static void
_x87rx(jit_state_t *_jit, jit_int32_t code, jit_int32_t md, _x87rx(jit_state_t *_jit, int32_t code, jit_int32_t md,
jit_int32_t rb, jit_int32_t ri, jit_int32_t ms) int32_t rb, jit_int32_t ri, jit_int32_t ms)
{ {
rex(0, 1, rb, ri, _NOREG); rex(0, 1, rb, ri, _NOREG);
ic(0xd8 | (code >> 3)); ic(0xd8 | (code >> 3));
@ -441,14 +441,14 @@ _x87rx(jit_state_t *_jit, jit_int32_t code, jit_int32_t md,
} }
static void static void
_x87ri(jit_state_t *_jit, jit_int32_t code, jit_int32_t r0) _x87ri(jit_state_t *_jit, int32_t code, jit_int32_t r0)
{ {
ic(0xd8 | (code >> 3)); ic(0xd8 | (code >> 3));
mrm(0x03, (code & 7), r0); mrm(0x03, (code & 7), r0);
} }
static void static void
_x87rri(jit_state_t *_jit, jit_int32_t code, jit_int32_t r0, jit_int32_t r1) _x87rri(jit_state_t *_jit, int32_t code, jit_int32_t r0, jit_int32_t r1)
{ {
if (r1 == _ST0_REGNO) if (r1 == _ST0_REGNO)
x87ri(code | 040, r0); x87ri(code | 040, r0);
@ -465,7 +465,7 @@ fopi(mul)
fopi(div) fopi(div)
static void static void
_x87_addr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_addr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
if (r0 == r1) { if (r0 == r1) {
if (r2 == _ST0_REGNO) if (r2 == _ST0_REGNO)
@ -499,7 +499,7 @@ _x87_addr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(add) dopi(add)
static void static void
_x87_subr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_subr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
if (r0 == r1) { if (r0 == r1) {
if (r2 == _ST0_REGNO) if (r2 == _ST0_REGNO)
@ -535,7 +535,7 @@ dopi(sub)
dopi(rsb) dopi(rsb)
static void static void
_x87_mulr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_mulr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
if (r0 == r1) { if (r0 == r1) {
if (r2 == _ST0_REGNO) if (r2 == _ST0_REGNO)
@ -569,7 +569,7 @@ _x87_mulr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(mul) dopi(mul)
static void static void
_x87_divr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_divr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
if (r0 == r1) { if (r0 == r1) {
if (r2 == _ST0_REGNO) if (r2 == _ST0_REGNO)
@ -603,7 +603,7 @@ _x87_divr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(div) dopi(div)
static void static void
_x87_absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_absr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r0 == r1) { if (r0 == r1) {
if (r1 == _ST0_REGNO) if (r1 == _ST0_REGNO)
@ -622,7 +622,7 @@ _x87_absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_x87_negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_negr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r0 == r1) { if (r0 == r1) {
if (r1 == _ST0_REGNO) if (r1 == _ST0_REGNO)
@ -641,7 +641,7 @@ _x87_negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_x87_sqrtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_sqrtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r0 == r1) { if (r0 == r1) {
if (r1 == _ST0_REGNO) if (r1 == _ST0_REGNO)
@ -660,7 +660,7 @@ _x87_sqrtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_x87_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_truncr_d_i(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
#if defined(sun) #if defined(sun)
/* for the sake of passing test cases in x87 mode, otherwise only sse /* for the sake of passing test cases in x87 mode, otherwise only sse
@ -690,7 +690,7 @@ _x87_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# if __X64 # if __X64
static void static void
_x87_truncr_d_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_truncr_d_l(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
fldr(r1); fldr(r1);
fisttpqm(CVT_OFFSET, _RBP_REGNO, _NOREG, _SCL1); fisttpqm(CVT_OFFSET, _RBP_REGNO, _NOREG, _SCL1);
@ -699,7 +699,7 @@ _x87_truncr_d_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif # endif
static void static void
_x87_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_extr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
stxi(CVT_OFFSET, _RBP_REGNO, r1); stxi(CVT_OFFSET, _RBP_REGNO, r1);
# if __X32 # if __X32
@ -711,11 +711,11 @@ _x87_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_x87cmp(jit_state_t *_jit, jit_int32_t code, _x87cmp(jit_state_t *_jit, int32_t code,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_bool_t rc; jit_bool_t rc;
jit_int32_t reg; int32_t reg;
if ((rc = reg8_p(r0))) if ((rc = reg8_p(r0)))
reg = r0; reg = r0;
else { else {
@ -735,12 +735,12 @@ _x87cmp(jit_state_t *_jit, jit_int32_t code,
} }
static void static void
_x87cmp2(jit_state_t *_jit, jit_int32_t code, _x87cmp2(jit_state_t *_jit, int32_t code,
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_bool_t rc; jit_bool_t rc;
jit_int32_t reg; int32_t reg;
jit_int32_t f1, f2; int32_t f1, f2;
if (r2 == _ST0_REGNO) f1 = r2, f2 = r1; if (r2 == _ST0_REGNO) f1 = r2, f2 = r1;
else f1 = r1, f2 = r2; else f1 = r1, f2 = r2;
if ((rc = reg8_p(r0))) if ((rc = reg8_p(r0)))
@ -762,8 +762,8 @@ _x87cmp2(jit_state_t *_jit, jit_int32_t code,
} }
static jit_word_t static jit_word_t
_x87jcc(jit_state_t *_jit, jit_int32_t code, _x87jcc(jit_state_t *_jit, int32_t code,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
if (r0 == _ST0_REGNO) if (r0 == _ST0_REGNO)
fucomir(r1); fucomir(r1);
@ -776,10 +776,10 @@ _x87jcc(jit_state_t *_jit, jit_int32_t code,
} }
static jit_word_t static jit_word_t
_x87jcc2(jit_state_t *_jit, jit_int32_t code, _x87jcc2(jit_state_t *_jit, int32_t code,
jit_word_t i0, jit_int32_t r0, jit_int32_t r1) jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t f0, f1; int32_t f0, f1;
if (r1 == _ST0_REGNO) f0 = r1, f1 = r0; if (r1 == _ST0_REGNO) f0 = r1, f1 = r0;
else f0 = r0, f1 = r1; else f0 = r0, f1 = r1;
if (f0 == _ST0_REGNO) if (f0 == _ST0_REGNO)
@ -822,13 +822,13 @@ fbopi(ord)
fbopi(unord) fbopi(unord)
static void static void
_x87_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0) _x87_movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t *i0)
{ {
union { union {
jit_int32_t i; int32_t i;
jit_float32_t f; jit_float32_t f;
} data; } data;
jit_int32_t reg; int32_t reg;
data.f = *i0; data.f = *i0;
if (data.f == 0.0 && !(data.i & 0x80000000)) if (data.f == 0.0 && !(data.i & 0x80000000))
@ -861,16 +861,16 @@ _x87_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
} }
static void static void
_x87_ldr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_ldr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
fldsm(0, r1, _NOREG, _SCL1); fldsm(0, r1, _NOREG, _SCL1);
fstpr(r0 + 1); fstpr(r0 + 1);
} }
static void static void
_x87_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _x87_ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (x87_address_p(i0)) { if (x87_address_p(i0)) {
fldsm(i0, _NOREG, _NOREG, _SCL1); fldsm(i0, _NOREG, _NOREG, _SCL1);
fstpr(r0 + 1); fstpr(r0 + 1);
@ -884,10 +884,10 @@ _x87_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_x87_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_ldxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
#if __X64_32 #if __X64_32
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2); addr(rn(reg), r1, r2);
x87_ldr_f(r0, rn(reg)); x87_ldr_f(r0, rn(reg));
@ -899,9 +899,9 @@ _x87_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_x87_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _x87_ldxi_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (can_sign_extend_int_p(i0)) { if (can_sign_extend_int_p(i0)) {
fldsm(i0, r1, _NOREG, _SCL1); fldsm(i0, r1, _NOREG, _SCL1);
fstpr(r0 + 1); fstpr(r0 + 1);
@ -920,7 +920,7 @@ _x87_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_x87_str_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_str_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r1 == _ST0_REGNO) if (r1 == _ST0_REGNO)
fstsm(0, r0, _NOREG, _SCL1); fstsm(0, r0, _NOREG, _SCL1);
@ -932,9 +932,9 @@ _x87_str_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_x87_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _x87_sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
if (!x87_address_p(i0)) { if (!x87_address_p(i0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0); movi(rn(reg), i0);
@ -951,10 +951,10 @@ _x87_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_x87_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_stxr_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
#if __X64_32 #if __X64_32
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1); addr(rn(reg), r0, r1);
x87_str_f(rn(reg), r2); x87_str_f(rn(reg), r2);
@ -971,9 +971,9 @@ _x87_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_x87_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _x87_stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (!can_sign_extend_int_p(i0)) { if (!can_sign_extend_int_p(i0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
#if __X64_32 #if __X64_32
@ -995,7 +995,7 @@ _x87_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_x87_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_movr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r0 != r1) { if (r0 != r1) {
if (r1 == _ST0) if (r1 == _ST0)
@ -1012,14 +1012,14 @@ _x87_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_x87_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0) _x87_movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t *i0)
{ {
union { union {
jit_int32_t ii[2]; int32_t ii[2];
jit_word_t w; jit_word_t w;
jit_float64_t d; jit_float64_t d;
} data; } data;
jit_int32_t reg; int32_t reg;
data.d = *i0; data.d = *i0;
if (data.d == 0.0 && !(data.ii[1] & 0x80000000)) if (data.d == 0.0 && !(data.ii[1] & 0x80000000))
@ -1062,11 +1062,11 @@ dopi(lt)
dopi(le) dopi(le)
static void static void
_x87_eqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_eqr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_bool_t rc; jit_bool_t rc;
jit_word_t jp_code; jit_word_t jp_code;
jit_int32_t reg, f1, f2; int32_t reg, f1, f2;
if (r2 == _ST0_REGNO) f1 = r2, f2 = r1; if (r2 == _ST0_REGNO) f1 = r2, f2 = r1;
else f1 = r1, f2 = r2; else f1 = r1, f2 = r2;
if ((rc = reg8_p(r0))) if ((rc = reg8_p(r0)))
@ -1095,11 +1095,11 @@ dopi(ge)
dopi(gt) dopi(gt)
static void static void
_x87_ner_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_ner_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
jit_bool_t rc; jit_bool_t rc;
jit_word_t jp_code; jit_word_t jp_code;
jit_int32_t reg, f1, f2; int32_t reg, f1, f2;
if (r2 == _ST0_REGNO) f1 = r2, f2 = r1; if (r2 == _ST0_REGNO) f1 = r2, f2 = r1;
else f1 = r1, f2 = r2; else f1 = r1, f2 = r2;
if ((rc = reg8_p(r0))) if ((rc = reg8_p(r0)))
@ -1131,7 +1131,7 @@ dopi(unge)
dopi(ungt) dopi(ungt)
static void static void
_x87_ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_ltgtr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
if (r1 == r2) if (r1 == r2)
movi(r0, 1); movi(r0, 1);
@ -1144,16 +1144,16 @@ dopi(ord)
dopi(unord) dopi(unord)
static void static void
_x87_ldr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_ldr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
fldlm(0, r1, _NOREG, _SCL1); fldlm(0, r1, _NOREG, _SCL1);
fstpr(r0 + 1); fstpr(r0 + 1);
} }
static void static void
_x87_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0) _x87_ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (x87_address_p(i0)) { if (x87_address_p(i0)) {
fldlm(i0, _NOREG, _NOREG, _SCL1); fldlm(i0, _NOREG, _NOREG, _SCL1);
fstpr(r0 + 1); fstpr(r0 + 1);
@ -1167,10 +1167,10 @@ _x87_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
} }
static void static void
_x87_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_ldxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
#if __X64_32 #if __X64_32
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2); addr(rn(reg), r1, r2);
x87_ldr_d(r0, rn(reg)); x87_ldr_d(r0, rn(reg));
@ -1182,9 +1182,9 @@ _x87_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_x87_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0) _x87_ldxi_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_word_t i0)
{ {
jit_int32_t reg; int32_t reg;
if (can_sign_extend_int_p(i0)) { if (can_sign_extend_int_p(i0)) {
fldlm(i0, r1, _NOREG, _SCL1); fldlm(i0, r1, _NOREG, _SCL1);
fstpr(r0 + 1); fstpr(r0 + 1);
@ -1203,7 +1203,7 @@ _x87_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
} }
static void static void
_x87_str_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_str_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
if (r1 == _ST0_REGNO) if (r1 == _ST0_REGNO)
fstlm(0, r0, _NOREG, _SCL1); fstlm(0, r0, _NOREG, _SCL1);
@ -1215,9 +1215,9 @@ _x87_str_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
} }
static void static void
_x87_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0) _x87_sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
if (!x87_address_p(i0)) { if (!x87_address_p(i0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0); movi(rn(reg), i0);
@ -1234,10 +1234,10 @@ _x87_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
} }
static void static void
_x87_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2) _x87_stxr_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1, jit_int32_t r2)
{ {
#if __X64_32 #if __X64_32
jit_int32_t reg; int32_t reg;
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1); addr(rn(reg), r0, r1);
x87_str_d(rn(reg), r2); x87_str_d(rn(reg), r2);
@ -1254,9 +1254,9 @@ _x87_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
} }
static void static void
_x87_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _x87_stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t reg; int32_t reg;
if (!can_sign_extend_int_p(i0)) { if (!can_sign_extend_int_p(i0)) {
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
#if __X64_32 #if __X64_32
@ -1281,9 +1281,9 @@ dbopi(lt)
dbopi(le) dbopi(le)
static jit_word_t static jit_word_t
_x87_beqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _x87_beqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t f0, f1; int32_t f0, f1;
jit_word_t jp_code; jit_word_t jp_code;
if (r1 == _ST0_REGNO) f0 = r1, f1 = r0; if (r1 == _ST0_REGNO) f0 = r1, f1 = r0;
else f0 = r0, f1 = r1; else f0 = r0, f1 = r1;
@ -1304,9 +1304,9 @@ dbopi(ge)
dbopi(gt) dbopi(gt)
static jit_word_t static jit_word_t
_x87_bner_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1) _x87_bner_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_int32_t r1)
{ {
jit_int32_t f0, f1; int32_t f0, f1;
jit_word_t jp_code; jit_word_t jp_code;
jit_word_t jz_code; jit_word_t jz_code;
if (r1 == _ST0_REGNO) f0 = r1, f1 = r0; if (r1 == _ST0_REGNO) f0 = r1, f1 = r0;

268
jit/x86.c
View file

@ -66,17 +66,17 @@
typedef jit_pointer_t jit_va_list_t; typedef jit_pointer_t jit_va_list_t;
#else #else
typedef struct jit_va_list { typedef struct jit_va_list {
jit_int32_t gpoff; int32_t gpoff;
jit_int32_t fpoff; int32_t fpoff;
jit_pointer_t over; jit_pointer_t over;
jit_pointer_t save; jit_pointer_t save;
/* Declared explicitly as int64 for the x32 abi */ /* Declared explicitly as int64 for the x32 abi */
jit_int64_t rdi; int64_t rdi;
jit_int64_t rsi; int64_t rsi;
jit_int64_t rdx; int64_t rdx;
jit_int64_t rcx; int64_t rcx;
jit_int64_t r8; int64_t r8;
jit_int64_t r9; int64_t r9;
jit_float64_t xmm0; jit_float64_t xmm0;
jit_float64_t _up0; jit_float64_t _up0;
jit_float64_t xmm1; jit_float64_t xmm1;
@ -102,13 +102,13 @@ typedef struct jit_va_list {
#define patch(instr, node) _patch(_jit, instr, node) #define patch(instr, node) _patch(_jit, instr, node)
static void _patch(jit_state_t*,jit_word_t,jit_node_t*); static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
#define sse_from_x87_f(r0, r1) _sse_from_x87_f(_jit, r0, r1) #define sse_from_x87_f(r0, r1) _sse_from_x87_f(_jit, r0, r1)
static void _sse_from_x87_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _sse_from_x87_f(jit_state_t*,int32_t,jit_int32_t);
#define sse_from_x87_d(r0, r1) _sse_from_x87_d(_jit, r0, r1) #define sse_from_x87_d(r0, r1) _sse_from_x87_d(_jit, r0, r1)
static void _sse_from_x87_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _sse_from_x87_d(jit_state_t*,int32_t,jit_int32_t);
#define x87_from_sse_f(r0, r1) _x87_from_sse_f(_jit, r0, r1) #define x87_from_sse_f(r0, r1) _x87_from_sse_f(_jit, r0, r1)
static void _x87_from_sse_f(jit_state_t*,jit_int32_t,jit_int32_t); static void _x87_from_sse_f(jit_state_t*,int32_t,jit_int32_t);
#define x87_from_sse_d(r0, r1) _x87_from_sse_d(_jit, r0, r1) #define x87_from_sse_d(r0, r1) _x87_from_sse_d(_jit, r0, r1)
static void _x87_from_sse_d(jit_state_t*,jit_int32_t,jit_int32_t); static void _x87_from_sse_d(jit_state_t*,int32_t,jit_int32_t);
#define PROTO 1 #define PROTO 1
# include "x86-cpu.c" # include "x86-cpu.c"
@ -235,75 +235,75 @@ jit_get_cpu(void)
{ {
union { union {
struct { struct {
jit_uint32_t sse3 : 1; uint32_t sse3 : 1;
jit_uint32_t pclmulqdq : 1; uint32_t pclmulqdq : 1;
jit_uint32_t dtes64 : 1; /* amd reserved */ uint32_t dtes64 : 1; /* amd reserved */
jit_uint32_t monitor : 1; uint32_t monitor : 1;
jit_uint32_t ds_cpl : 1; /* amd reserved */ uint32_t ds_cpl : 1; /* amd reserved */
jit_uint32_t vmx : 1; /* amd reserved */ uint32_t vmx : 1; /* amd reserved */
jit_uint32_t smx : 1; /* amd reserved */ uint32_t smx : 1; /* amd reserved */
jit_uint32_t est : 1; /* amd reserved */ uint32_t est : 1; /* amd reserved */
jit_uint32_t tm2 : 1; /* amd reserved */ uint32_t tm2 : 1; /* amd reserved */
jit_uint32_t ssse3 : 1; uint32_t ssse3 : 1;
jit_uint32_t cntx_id : 1; /* amd reserved */ uint32_t cntx_id : 1; /* amd reserved */
jit_uint32_t __reserved0 : 1; uint32_t __reserved0 : 1;
jit_uint32_t fma : 1; uint32_t fma : 1;
jit_uint32_t cmpxchg16b : 1; uint32_t cmpxchg16b : 1;
jit_uint32_t xtpr : 1; /* amd reserved */ uint32_t xtpr : 1; /* amd reserved */
jit_uint32_t pdcm : 1; /* amd reserved */ uint32_t pdcm : 1; /* amd reserved */
jit_uint32_t __reserved1 : 1; uint32_t __reserved1 : 1;
jit_uint32_t pcid : 1; /* amd reserved */ uint32_t pcid : 1; /* amd reserved */
jit_uint32_t dca : 1; /* amd reserved */ uint32_t dca : 1; /* amd reserved */
jit_uint32_t sse4_1 : 1; uint32_t sse4_1 : 1;
jit_uint32_t sse4_2 : 1; uint32_t sse4_2 : 1;
jit_uint32_t x2apic : 1; /* amd reserved */ uint32_t x2apic : 1; /* amd reserved */
jit_uint32_t movbe : 1; /* amd reserved */ uint32_t movbe : 1; /* amd reserved */
jit_uint32_t popcnt : 1; uint32_t popcnt : 1;
jit_uint32_t tsc : 1; /* amd reserved */ uint32_t tsc : 1; /* amd reserved */
jit_uint32_t aes : 1; uint32_t aes : 1;
jit_uint32_t xsave : 1; uint32_t xsave : 1;
jit_uint32_t osxsave : 1; uint32_t osxsave : 1;
jit_uint32_t avx : 1; uint32_t avx : 1;
jit_uint32_t __reserved2 : 1; /* amd F16C */ uint32_t __reserved2 : 1; /* amd F16C */
jit_uint32_t __reserved3 : 1; uint32_t __reserved3 : 1;
jit_uint32_t __alwayszero : 1; /* amd RAZ */ uint32_t __alwayszero : 1; /* amd RAZ */
} bits; } bits;
jit_uword_t cpuid; jit_uword_t cpuid;
} ecx; } ecx;
union { union {
struct { struct {
jit_uint32_t fpu : 1; uint32_t fpu : 1;
jit_uint32_t vme : 1; uint32_t vme : 1;
jit_uint32_t de : 1; uint32_t de : 1;
jit_uint32_t pse : 1; uint32_t pse : 1;
jit_uint32_t tsc : 1; uint32_t tsc : 1;
jit_uint32_t msr : 1; uint32_t msr : 1;
jit_uint32_t pae : 1; uint32_t pae : 1;
jit_uint32_t mce : 1; uint32_t mce : 1;
jit_uint32_t cmpxchg8b : 1; uint32_t cmpxchg8b : 1;
jit_uint32_t apic : 1; uint32_t apic : 1;
jit_uint32_t __reserved0 : 1; uint32_t __reserved0 : 1;
jit_uint32_t sep : 1; uint32_t sep : 1;
jit_uint32_t mtrr : 1; uint32_t mtrr : 1;
jit_uint32_t pge : 1; uint32_t pge : 1;
jit_uint32_t mca : 1; uint32_t mca : 1;
jit_uint32_t cmov : 1; uint32_t cmov : 1;
jit_uint32_t pat : 1; uint32_t pat : 1;
jit_uint32_t pse36 : 1; uint32_t pse36 : 1;
jit_uint32_t psn : 1; /* amd reserved */ uint32_t psn : 1; /* amd reserved */
jit_uint32_t clfsh : 1; uint32_t clfsh : 1;
jit_uint32_t __reserved1 : 1; uint32_t __reserved1 : 1;
jit_uint32_t ds : 1; /* amd reserved */ uint32_t ds : 1; /* amd reserved */
jit_uint32_t acpi : 1; /* amd reserved */ uint32_t acpi : 1; /* amd reserved */
jit_uint32_t mmx : 1; uint32_t mmx : 1;
jit_uint32_t fxsr : 1; uint32_t fxsr : 1;
jit_uint32_t sse : 1; uint32_t sse : 1;
jit_uint32_t sse2 : 1; uint32_t sse2 : 1;
jit_uint32_t ss : 1; /* amd reserved */ uint32_t ss : 1; /* amd reserved */
jit_uint32_t htt : 1; uint32_t htt : 1;
jit_uint32_t tm : 1; /* amd reserved */ uint32_t tm : 1; /* amd reserved */
jit_uint32_t __reserved2 : 1; uint32_t __reserved2 : 1;
jit_uint32_t pbe : 1; /* amd reserved */ uint32_t pbe : 1; /* amd reserved */
} bits; } bits;
jit_uword_t cpuid; jit_uword_t cpuid;
} edx; } edx;
@ -379,7 +379,7 @@ void
_jit_init(jit_state_t *_jit) _jit_init(jit_state_t *_jit)
{ {
#if __X32 #if __X32
jit_int32_t regno; int32_t regno;
static jit_bool_t first = 1; static jit_bool_t first = 1;
#endif #endif
@ -400,7 +400,7 @@ _jit_init(jit_state_t *_jit)
void void
_jit_prolog(jit_state_t *_jit) _jit_prolog(jit_state_t *_jit)
{ {
jit_int32_t offset; int32_t offset;
if (_jitc->function) if (_jitc->function)
jit_epilog(); jit_epilog();
@ -421,7 +421,7 @@ _jit_prolog(jit_state_t *_jit)
_jitc->function->self.aoff = CVT_OFFSET; _jitc->function->self.aoff = CVT_OFFSET;
_jitc->function->self.call = jit_call_default; _jitc->function->self.call = jit_call_default;
jit_alloc((jit_pointer_t *)&_jitc->function->regoff, jit_alloc((jit_pointer_t *)&_jitc->function->regoff,
_jitc->reglen * sizeof(jit_int32_t)); _jitc->reglen * sizeof(int32_t));
/* _no_link here does not mean the jit_link() call can be removed /* _no_link here does not mean the jit_link() call can be removed
* by rewriting as: * by rewriting as:
@ -440,8 +440,8 @@ _jit_prolog(jit_state_t *_jit)
jit_regset_new(&_jitc->function->regset); jit_regset_new(&_jitc->function->regset);
} }
jit_int32_t int32_t
_jit_allocai(jit_state_t *_jit, jit_int32_t length) _jit_allocai(jit_state_t *_jit, int32_t length)
{ {
assert(_jitc->function); assert(_jitc->function);
switch (length) { switch (length) {
@ -467,13 +467,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
} }
void void
_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v) _jit_allocar(jit_state_t *_jit, int32_t u, jit_int32_t v)
{ {
jit_int32_t reg; int32_t reg;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_ww(allocar, u, v); jit_inc_synth_ww(allocar, u, v);
if (!_jitc->function->allocar) { if (!_jitc->function->allocar) {
_jitc->function->aoffoff = jit_allocai(sizeof(jit_int32_t)); _jitc->function->aoffoff = jit_allocai(sizeof(int32_t));
_jitc->function->allocar = 1; _jitc->function->allocar = 1;
} }
reg = jit_get_reg(jit_class_gpr); reg = jit_get_reg(jit_class_gpr);
@ -500,7 +500,7 @@ _jit_ret(jit_state_t *_jit)
} }
void void
_jit_retr(jit_state_t *_jit, jit_int32_t u) _jit_retr(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr, u); jit_inc_synth_w(retr, u);
/* movr(%ret, %ret) would be optimized out */ /* movr(%ret, %ret) would be optimized out */
@ -522,7 +522,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_retr_f(jit_state_t *_jit, jit_int32_t u) _jit_retr_f(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_f, u); jit_inc_synth_w(retr_f, u);
if (JIT_FRET != u) if (JIT_FRET != u)
@ -543,7 +543,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_retr_d(jit_state_t *_jit, jit_int32_t u) _jit_retr_d(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(retr_d, u); jit_inc_synth_w(retr_d, u);
if (JIT_FRET != u) if (JIT_FRET != u)
@ -621,7 +621,7 @@ _jit_ellipsis(jit_state_t *_jit)
} }
void void
_jit_va_push(jit_state_t *_jit, jit_int32_t u) _jit_va_push(jit_state_t *_jit, int32_t u)
{ {
jit_inc_synth_w(va_push, u); jit_inc_synth_w(va_push, u);
jit_pushargr(u); jit_pushargr(u);
@ -632,7 +632,7 @@ jit_node_t *
_jit_arg(jit_state_t *_jit) _jit_arg(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
assert(!(_jitc->function->self.call & jit_call_varargs)); assert(!(_jitc->function->self.call & jit_call_varargs));
#if __X64 #if __X64
@ -658,7 +658,7 @@ jit_node_t *
_jit_arg_f(jit_state_t *_jit) _jit_arg_f(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
assert(!(_jitc->function->self.call & jit_call_varargs)); assert(!(_jitc->function->self.call & jit_call_varargs));
#if __X64 #if __X64
@ -687,7 +687,7 @@ jit_node_t *
_jit_arg_d(jit_state_t *_jit) _jit_arg_d(jit_state_t *_jit)
{ {
jit_node_t *node; jit_node_t *node;
jit_int32_t offset; int32_t offset;
assert(_jitc->function); assert(_jitc->function);
assert(!(_jitc->function->self.call & jit_call_varargs)); assert(!(_jitc->function->self.call & jit_call_varargs));
#if __X64 #if __X64
@ -713,7 +713,7 @@ _jit_arg_d(jit_state_t *_jit)
} }
void void
_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_c(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_c, u, v); jit_inc_synth_wp(getarg_c, u, v);
@ -727,7 +727,7 @@ _jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_uc(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_uc, u, v); jit_inc_synth_wp(getarg_uc, u, v);
@ -741,7 +741,7 @@ _jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_s(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_s, u, v); jit_inc_synth_wp(getarg_s, u, v);
@ -755,7 +755,7 @@ _jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_us(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_us, u, v); jit_inc_synth_wp(getarg_us, u, v);
@ -769,7 +769,7 @@ _jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_i(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_i, u, v); jit_inc_synth_wp(getarg_i, u, v);
@ -789,7 +789,7 @@ _jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
#if __X64 && !__X64_32 #if __X64 && !__X64_32
void void
_jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_ui(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_ui, u, v); jit_inc_synth_wp(getarg_ui, u, v);
@ -801,7 +801,7 @@ _jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_l(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(getarg_l, u, v); jit_inc_synth_wp(getarg_l, u, v);
@ -814,7 +814,7 @@ _jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
#endif #endif
void void
_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargr, u, v); jit_inc_synth_wp(putargr, u, v);
@ -830,7 +830,7 @@ _jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v) _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg); assert(v->code == jit_code_arg);
jit_inc_synth_wp(putargi, u, v); jit_inc_synth_wp(putargi, u, v);
#if __X64 #if __X64
@ -848,7 +848,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
} }
void void
_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(getarg_f, u, v); jit_inc_synth_wp(getarg_f, u, v);
@ -862,7 +862,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_f(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_wp(putargr_f, u, v); jit_inc_synth_wp(putargr_f, u, v);
@ -878,7 +878,7 @@ _jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v) _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_f); assert(v->code == jit_code_arg_f);
jit_inc_synth_fp(putargi_f, u, v); jit_inc_synth_fp(putargi_f, u, v);
#if __X64 #if __X64
@ -896,7 +896,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
} }
void void
_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_getarg_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(getarg_d, u, v); jit_inc_synth_wp(getarg_d, u, v);
@ -910,7 +910,7 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
} }
void void
_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v) _jit_putargr_d(jit_state_t *_jit, int32_t u, jit_node_t *v)
{ {
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_wp(putargr_d, u, v); jit_inc_synth_wp(putargr_d, u, v);
@ -926,7 +926,7 @@ _jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
void void
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v) _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
{ {
jit_int32_t regno; int32_t regno;
assert(v->code == jit_code_arg_d); assert(v->code == jit_code_arg_d);
jit_inc_synth_dp(putargi_d, u, v); jit_inc_synth_dp(putargi_d, u, v);
#if __X64 #if __X64
@ -944,7 +944,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
} }
void void
_jit_pushargr(jit_state_t *_jit, jit_int32_t u) _jit_pushargr(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr, u); jit_inc_synth_w(pushargr, u);
@ -971,7 +971,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi(jit_state_t *_jit, jit_word_t u) _jit_pushargi(jit_state_t *_jit, jit_word_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargi, u); jit_inc_synth_w(pushargi, u);
jit_link_prepare(); jit_link_prepare();
@ -999,7 +999,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
} }
void void
_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_f(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_f, u); jit_inc_synth_w(pushargr_f, u);
@ -1035,7 +1035,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u) _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_f(pushargi_f, u); jit_inc_synth_f(pushargi_f, u);
jit_link_prepare(); jit_link_prepare();
@ -1071,7 +1071,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
} }
void void
_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u) _jit_pushargr_d(jit_state_t *_jit, int32_t u)
{ {
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_w(pushargr_d, u); jit_inc_synth_w(pushargr_d, u);
@ -1107,7 +1107,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
void void
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u) _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
{ {
jit_int32_t regno; int32_t regno;
assert(_jitc->function); assert(_jitc->function);
jit_inc_synth_d(pushargi_d, u); jit_inc_synth_d(pushargi_d, u);
jit_link_prepare(); jit_link_prepare();
@ -1143,10 +1143,10 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
} }
jit_bool_t jit_bool_t
_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno) _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, int32_t regno)
{ {
#if __X64 #if __X64
jit_int32_t spec; int32_t spec;
spec = jit_class(_rvs[regno].spec); spec = jit_class(_rvs[regno].spec);
if (spec & jit_class_arg) { if (spec & jit_class_arg) {
@ -1166,9 +1166,9 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
} }
void void
_jit_finishr(jit_state_t *_jit, jit_int32_t r0) _jit_finishr(jit_state_t *_jit, int32_t r0)
{ {
jit_int32_t reg; int32_t reg;
jit_node_t *call; jit_node_t *call;
assert(_jitc->function); assert(_jitc->function);
reg = r0; reg = r0;
@ -1204,7 +1204,7 @@ jit_node_t *
_jit_finishi(jit_state_t *_jit, jit_pointer_t i0) _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
{ {
#if __X64 #if __X64
jit_int32_t reg; int32_t reg;
#endif #endif
jit_node_t *node; jit_node_t *node;
assert(_jitc->function); assert(_jitc->function);
@ -1237,7 +1237,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
} }
void void
_jit_retval_c(jit_state_t *_jit, jit_int32_t r0) _jit_retval_c(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_c, r0); jit_inc_synth_w(retval_c, r0);
jit_extr_c(r0, JIT_RET); jit_extr_c(r0, JIT_RET);
@ -1245,7 +1245,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0) _jit_retval_uc(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_uc, r0); jit_inc_synth_w(retval_uc, r0);
jit_extr_uc(r0, JIT_RET); jit_extr_uc(r0, JIT_RET);
@ -1253,7 +1253,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_s(jit_state_t *_jit, jit_int32_t r0) _jit_retval_s(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_s, r0); jit_inc_synth_w(retval_s, r0);
jit_extr_s(r0, JIT_RET); jit_extr_s(r0, JIT_RET);
@ -1261,7 +1261,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_us(jit_state_t *_jit, jit_int32_t r0) _jit_retval_us(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_us, r0); jit_inc_synth_w(retval_us, r0);
jit_extr_us(r0, JIT_RET); jit_extr_us(r0, JIT_RET);
@ -1269,7 +1269,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_i(jit_state_t *_jit, jit_int32_t r0) _jit_retval_i(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_i, r0); jit_inc_synth_w(retval_i, r0);
#if __X32 || __X64_32 #if __X32 || __X64_32
@ -1283,7 +1283,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
#if __X64 && !__X64_32 #if __X64 && !__X64_32
void void
_jit_retval_ui(jit_state_t *_jit, jit_int32_t r0) _jit_retval_ui(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_ui, r0); jit_inc_synth_w(retval_ui, r0);
jit_extr_ui(r0, JIT_RET); jit_extr_ui(r0, JIT_RET);
@ -1291,7 +1291,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_l(jit_state_t *_jit, jit_int32_t r0) _jit_retval_l(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_l, r0); jit_inc_synth_w(retval_l, r0);
if (r0 != JIT_RET) if (r0 != JIT_RET)
@ -1301,7 +1301,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
#endif #endif
void void
_jit_retval_f(jit_state_t *_jit, jit_int32_t r0) _jit_retval_f(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_f, r0); jit_inc_synth_w(retval_f, r0);
#if __X64 #if __X64
@ -1312,7 +1312,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
} }
void void
_jit_retval_d(jit_state_t *_jit, jit_int32_t r0) _jit_retval_d(jit_state_t *_jit, int32_t r0)
{ {
jit_inc_synth_w(retval_d, r0); jit_inc_synth_w(retval_d, r0);
#if __X64 #if __X64
@ -1328,15 +1328,15 @@ _emit_code(jit_state_t *_jit)
jit_node_t *node; jit_node_t *node;
jit_node_t *temp; jit_node_t *temp;
jit_word_t word; jit_word_t word;
jit_int32_t value; int32_t value;
jit_int32_t offset; int32_t offset;
struct { struct {
jit_node_t *node; jit_node_t *node;
jit_word_t word; jit_word_t word;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
#endif #endif
jit_int32_t patch_offset; int32_t patch_offset;
} undo; } undo;
#if DEVEL_DISASSEMBLER #if DEVEL_DISASSEMBLER
jit_word_t prevw; jit_word_t prevw;
@ -2216,7 +2216,7 @@ _emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_gpr_t r0, jit_fpr_t r1)
static void static void
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node) _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
{ {
jit_int32_t flag; int32_t flag;
assert(node->flag & jit_flag_node); assert(node->flag & jit_flag_node);
if (node->code == jit_code_movi) if (node->code == jit_code_movi)
@ -2236,28 +2236,28 @@ _patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
} }
static void static void
_sse_from_x87_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _sse_from_x87_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
x87_stxi_f(CVT_OFFSET, _RBP_REGNO, r1); x87_stxi_f(CVT_OFFSET, _RBP_REGNO, r1);
sse_ldxi_f(r0, _RBP_REGNO, CVT_OFFSET); sse_ldxi_f(r0, _RBP_REGNO, CVT_OFFSET);
} }
static void static void
_sse_from_x87_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _sse_from_x87_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
x87_stxi_d(CVT_OFFSET, _RBP_REGNO, r1); x87_stxi_d(CVT_OFFSET, _RBP_REGNO, r1);
sse_ldxi_d(r0, _RBP_REGNO, CVT_OFFSET); sse_ldxi_d(r0, _RBP_REGNO, CVT_OFFSET);
} }
static void static void
_x87_from_sse_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_from_sse_f(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
sse_stxi_f(CVT_OFFSET, _RBP_REGNO, r1); sse_stxi_f(CVT_OFFSET, _RBP_REGNO, r1);
x87_ldxi_f(r0, _RBP_REGNO, CVT_OFFSET); x87_ldxi_f(r0, _RBP_REGNO, CVT_OFFSET);
} }
static void static void
_x87_from_sse_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1) _x87_from_sse_d(jit_state_t *_jit, int32_t r0, jit_int32_t r1)
{ {
sse_stxi_d(CVT_OFFSET, _RBP_REGNO, r1); sse_stxi_d(CVT_OFFSET, _RBP_REGNO, r1);
x87_ldxi_d(r0, _RBP_REGNO, CVT_OFFSET); x87_ldxi_d(r0, _RBP_REGNO, CVT_OFFSET);

View file

@ -154,41 +154,41 @@ typedef enum {
typedef struct { typedef struct {
/* x87 present */ /* x87 present */
jit_uint32_t fpu : 1; uint32_t fpu : 1;
/* cmpxchg8b instruction */ /* cmpxchg8b instruction */
jit_uint32_t cmpxchg8b : 1; uint32_t cmpxchg8b : 1;
/* cmov and fcmov branchless conditional mov */ /* cmov and fcmov branchless conditional mov */
jit_uint32_t cmov : 1; uint32_t cmov : 1;
/* mmx registers/instructions available */ /* mmx registers/instructions available */
jit_uint32_t mmx : 1; uint32_t mmx : 1;
/* sse registers/instructions available */ /* sse registers/instructions available */
jit_uint32_t sse : 1; uint32_t sse : 1;
/* sse2 registers/instructions available */ /* sse2 registers/instructions available */
jit_uint32_t sse2 : 1; uint32_t sse2 : 1;
/* sse3 instructions available */ /* sse3 instructions available */
jit_uint32_t sse3 : 1; uint32_t sse3 : 1;
/* pcmulqdq instruction */ /* pcmulqdq instruction */
jit_uint32_t pclmulqdq : 1; uint32_t pclmulqdq : 1;
/* ssse3 suplemental sse3 instructions available */ /* ssse3 suplemental sse3 instructions available */
jit_uint32_t ssse3 : 1; uint32_t ssse3 : 1;
/* fused multiply/add using ymm state */ /* fused multiply/add using ymm state */
jit_uint32_t fma : 1; uint32_t fma : 1;
/* cmpxchg16b instruction */ /* cmpxchg16b instruction */
jit_uint32_t cmpxchg16b : 1; uint32_t cmpxchg16b : 1;
/* sse4.1 instructions available */ /* sse4.1 instructions available */
jit_uint32_t sse4_1 : 1; uint32_t sse4_1 : 1;
/* sse4.2 instructions available */ /* sse4.2 instructions available */
jit_uint32_t sse4_2 : 1; uint32_t sse4_2 : 1;
/* movbe instruction available */ /* movbe instruction available */
jit_uint32_t movbe : 1; uint32_t movbe : 1;
/* popcnt instruction available */ /* popcnt instruction available */
jit_uint32_t popcnt : 1; uint32_t popcnt : 1;
/* aes instructions available */ /* aes instructions available */
jit_uint32_t aes : 1; uint32_t aes : 1;
/* avx instructions available */ /* avx instructions available */
jit_uint32_t avx : 1; uint32_t avx : 1;
/* lahf/sahf available in 64 bits mode */ /* lahf/sahf available in 64 bits mode */
jit_uint32_t lahf : 1; uint32_t lahf : 1;
} jit_cpu_t; } jit_cpu_t;
/* /*