mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-22 11:34:09 +02:00
Replace jit_int32_t, etc with stdint types
This commit is contained in:
parent
d567faf657
commit
f3f71941ac
39 changed files with 6885 additions and 6885 deletions
|
@ -60,7 +60,7 @@ main(int argc, char *argv[])
|
|||
void (*code)(void);
|
||||
jit_node_t *jmp, *pass;
|
||||
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;
|
||||
jit_node_t *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8,
|
||||
*a9, *a10, *a11, *a12, *a13, *a14, *a15, *a16;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#define mmap_fd -1
|
||||
#endif
|
||||
|
||||
jit_uint8_t *data;
|
||||
uint8_t *data;
|
||||
jit_state_t *_jit;
|
||||
jit_word_t data_length;
|
||||
jit_word_t note_length;
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
jit_uint8_t *ptr;
|
||||
uint8_t *ptr;
|
||||
jit_state_t *_jit;
|
||||
jit_word_t length;
|
||||
#if defined(__sgi)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -66,65 +66,65 @@
|
|||
# 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 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,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t);
|
||||
static void _osvvv(jit_state_t*,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)
|
||||
static void _osvv_(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t);
|
||||
static void _osvv_(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_int32_t);
|
||||
# define os_vv(Op,Sz,Rn,Rm) _os_vv(_jit,Op,Sz,Rn,Rm)
|
||||
static void _os_vv(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t);
|
||||
static void _os_vv(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_int32_t);
|
||||
# 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_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 addr_f(r0,r1,r2) FADDS(r0,r1,r2)
|
||||
# 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 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 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 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 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 negr_f(r0,r1) FNEGS(r0,r1)
|
||||
# define sqrtr_f(r0,r1) FSQRTS(r0,r1)
|
||||
# define extr_f(r0,r1) SCVTFS(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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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 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)
|
||||
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 lti_f(r0,r1,i0) fcci(CC_MI,r0,r1,i0)
|
||||
# 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 unlei_f(r0,r1,i0) fcci(CC_LE,r0,r1,i0)
|
||||
# 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)
|
||||
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 ungei_f(r0,r1,i0) fcci(CC_PL,r0,r1,i0)
|
||||
# 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 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)
|
||||
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 ordi_f(r0,r1,i0) fcci(CC_VC,r0,r1,i0)
|
||||
# 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 fbccr(cc,i0,r0,r1) _fbccr(_jit,cc,i0,r0,r1)
|
||||
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)
|
||||
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 blti_f(i0,r0,i1) fbcci(BCC_MI,i0,r0,i1)
|
||||
# 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 bunlei_f(i0,r0,i1) fbcci(BCC_LE,i0,r0,i1)
|
||||
# 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)
|
||||
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 bungei_f(i0,r0,i1) fbcci(BCC_PL,i0,r0,i1)
|
||||
# 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 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)
|
||||
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 bordi_f(i0,r0,i1) fbcci(BCC_VC,i0,r0,i1)
|
||||
# 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 addr_d(r0,r1,r2) FADDD(r0,r1,r2)
|
||||
# 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 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 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 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 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 negr_d(r0,r1) FNEGD(r0,r1)
|
||||
# define sqrtr_d(r0,r1) FSQRTD(r0,r1)
|
||||
# define extr_d(r0,r1) SCVTFD(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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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 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)
|
||||
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 lti_d(r0,r1,i0) dcci(CC_MI,r0,r1,i0)
|
||||
# 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 unlei_d(r0,r1,i0) dcci(CC_LE,r0,r1,i0)
|
||||
# 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)
|
||||
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 ungei_d(r0,r1,i0) dcci(CC_PL,r0,r1,i0)
|
||||
# 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 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)
|
||||
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 ordi_d(r0,r1,i0) dcci(CC_VC,r0,r1,i0)
|
||||
# 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 dbccr(cc,i0,r0,r1) _dbccr(_jit,cc,i0,r0,r1)
|
||||
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)
|
||||
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 blti_d(i0,r0,i1) dbcci(BCC_MI,i0,r0,i1)
|
||||
# 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 bunlei_d(i0,r0,i1) dbcci(BCC_LE,i0,r0,i1)
|
||||
# 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)
|
||||
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 bungei_d(i0,r0,i1) dbcci(BCC_PL,i0,r0,i1)
|
||||
# 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 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)
|
||||
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 bordi_d(i0,r0,i1) dbcci(BCC_VC,i0,r0,i1)
|
||||
# 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 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
|
||||
|
||||
#if CODE
|
||||
static void
|
||||
_osvvv(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Sz,
|
||||
jit_int32_t Rd, jit_int32_t Rn, jit_int32_t Rm)
|
||||
_osvvv(jit_state_t *_jit, int32_t Op, jit_int32_t Sz,
|
||||
int32_t Rd, jit_int32_t Rn, jit_int32_t Rm)
|
||||
{
|
||||
instr_t i;
|
||||
assert(!(Rd & ~0x1f));
|
||||
|
@ -334,8 +334,8 @@ _osvvv(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Sz,
|
|||
}
|
||||
|
||||
static void
|
||||
_osvv_(jit_state_t *_jit, jit_int32_t Op,
|
||||
jit_int32_t Sz, jit_int32_t Rd, jit_int32_t Rn)
|
||||
_osvv_(jit_state_t *_jit, int32_t Op,
|
||||
int32_t Sz, jit_int32_t Rd, jit_int32_t Rn)
|
||||
{
|
||||
instr_t i;
|
||||
assert(!(Rd & ~0x1f));
|
||||
|
@ -350,8 +350,8 @@ _osvv_(jit_state_t *_jit, jit_int32_t Op,
|
|||
}
|
||||
|
||||
static void
|
||||
_os_vv(jit_state_t *_jit, jit_int32_t Op,
|
||||
jit_int32_t Sz, jit_int32_t Rn, jit_int32_t Rm)
|
||||
_os_vv(jit_state_t *_jit, int32_t Op,
|
||||
int32_t Sz, jit_int32_t Rn, jit_int32_t Rm)
|
||||
{
|
||||
instr_t i;
|
||||
assert(!(Rn & ~0x1f));
|
||||
|
@ -368,9 +368,9 @@ _os_vv(jit_state_t *_jit, jit_int32_t Op,
|
|||
#define fopi(name) \
|
||||
static void \
|
||||
_##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); \
|
||||
name##r_f(r0, r1, rn(reg)); \
|
||||
jit_unget_reg(reg); \
|
||||
|
@ -378,9 +378,9 @@ _##name##i_f(jit_state_t *_jit, \
|
|||
#define dopi(name) \
|
||||
static void \
|
||||
_##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); \
|
||||
name##r_d(r0, r1, rn(reg)); \
|
||||
jit_unget_reg(reg); \
|
||||
|
@ -388,10 +388,10 @@ _##name##i_d(jit_state_t *_jit, \
|
|||
#define fbopi(name) \
|
||||
static jit_word_t \
|
||||
_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_int32_t reg = jit_get_reg(jit_class_fpr| \
|
||||
int32_t reg = jit_get_reg(jit_class_fpr| \
|
||||
jit_class_nospill); \
|
||||
movi_f(rn(reg), i1); \
|
||||
word = b##name##r_f(i0, r0, rn(reg)); \
|
||||
|
@ -401,10 +401,10 @@ _b##name##i_f(jit_state_t *_jit, \
|
|||
#define dbopi(name) \
|
||||
static jit_word_t \
|
||||
_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_int32_t reg = jit_get_reg(jit_class_fpr| \
|
||||
int32_t reg = jit_get_reg(jit_class_fpr| \
|
||||
jit_class_nospill); \
|
||||
movi_d(rn(reg), i1); \
|
||||
word = b##name##r_d(i0, r0, rn(reg)); \
|
||||
|
@ -413,14 +413,14 @@ _b##name##i_d(jit_state_t *_jit, \
|
|||
}
|
||||
|
||||
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);
|
||||
extr_i(r0, r0);
|
||||
}
|
||||
|
||||
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);
|
||||
extr_i(r0, r0);
|
||||
|
@ -433,9 +433,9 @@ fopi(mul)
|
|||
fopi(div)
|
||||
|
||||
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);
|
||||
ldr_i(rn(reg), r1);
|
||||
FMOVSW(r0, rn(reg));
|
||||
|
@ -443,9 +443,9 @@ _ldr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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);
|
||||
ldi_i(rn(reg), i0);
|
||||
FMOVSW(r0, rn(reg));
|
||||
|
@ -453,9 +453,9 @@ _ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
|
|||
}
|
||||
|
||||
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);
|
||||
ldxr_i(rn(reg), r1, r2);
|
||||
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
|
||||
_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);
|
||||
ldxi_i(rn(reg), r1, i0);
|
||||
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
|
||||
_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);
|
||||
FMOVWS(rn(reg), r1);
|
||||
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
|
||||
_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);
|
||||
FMOVWS(rn(reg), r0);
|
||||
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
|
||||
_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);
|
||||
FMOVWS(rn(reg), r2);
|
||||
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
|
||||
_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);
|
||||
FMOVWS(rn(reg), r1);
|
||||
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
|
||||
_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)
|
||||
FMOVS(r0, r1);
|
||||
}
|
||||
|
||||
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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} u;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
u.f = i0;
|
||||
if (u.i == 0)
|
||||
FMOVSW(r0, WZR_REGNO);
|
||||
|
@ -540,18 +540,18 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
|
|||
}
|
||||
|
||||
static void
|
||||
_fccr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
_fccr(jit_state_t *_jit, int32_t cc,
|
||||
int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
{
|
||||
FCMPES(r1, r2);
|
||||
CSET(r0, cc);
|
||||
}
|
||||
|
||||
static void
|
||||
_fcci(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float32_t i0)
|
||||
_fcci(jit_state_t *_jit, int32_t cc,
|
||||
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);
|
||||
movi_f(rn(reg), i0);
|
||||
fccr(cc, r0, r1, rn(reg));
|
||||
|
@ -559,7 +559,7 @@ _fcci(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
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;
|
||||
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)
|
||||
|
||||
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;
|
||||
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)
|
||||
|
||||
static jit_word_t
|
||||
_fbccr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_fbccr(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
jit_word_t w, d;
|
||||
FCMPES(r0, r1);
|
||||
|
@ -597,11 +597,11 @@ _fbccr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_fbcci(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_float32_t i1)
|
||||
_fbcci(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_float32_t i1)
|
||||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
|
||||
movi_f(rn(reg), i1);
|
||||
w = fbccr(cc, i0, r0, rn(reg));
|
||||
|
@ -610,7 +610,7 @@ _fbcci(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
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;
|
||||
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)
|
||||
|
||||
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;
|
||||
FCMPES(r0, r1);
|
||||
|
@ -650,9 +650,9 @@ dopi(mul)
|
|||
dopi(div)
|
||||
|
||||
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);
|
||||
ldr_l(rn(reg), r1);
|
||||
FMOVDX(r0, rn(reg));
|
||||
|
@ -660,9 +660,9 @@ _ldr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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);
|
||||
ldi_l(rn(reg), i0);
|
||||
FMOVDX(r0, rn(reg));
|
||||
|
@ -670,9 +670,9 @@ _ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
|
|||
}
|
||||
|
||||
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);
|
||||
ldxr_l(rn(reg), r1, r2);
|
||||
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
|
||||
_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);
|
||||
ldxi_l(rn(reg), r1, i0);
|
||||
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
|
||||
_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);
|
||||
FMOVXD(rn(reg), r1);
|
||||
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
|
||||
_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);
|
||||
FMOVXD(rn(reg), r0);
|
||||
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
|
||||
_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);
|
||||
FMOVXD(rn(reg), r2);
|
||||
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
|
||||
_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);
|
||||
FMOVXD(rn(reg), r1);
|
||||
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
|
||||
_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)
|
||||
FMOVD(r0, r1);
|
||||
}
|
||||
|
||||
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 {
|
||||
jit_int64_t l;
|
||||
int64_t l;
|
||||
jit_float64_t d;
|
||||
} u;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
u.d = i0;
|
||||
if (u.l == 0)
|
||||
FMOVDX(r0, XZR_REGNO);
|
||||
|
@ -756,18 +756,18 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0)
|
|||
}
|
||||
|
||||
static void
|
||||
_dccr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
_dccr(jit_state_t *_jit, int32_t cc,
|
||||
int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
{
|
||||
FCMPED(r1, r2);
|
||||
CSET(r0, cc);
|
||||
}
|
||||
|
||||
static void
|
||||
_dcci(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float64_t i0)
|
||||
_dcci(jit_state_t *_jit, int32_t cc,
|
||||
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);
|
||||
movi_d(rn(reg), i0);
|
||||
dccr(cc, r0, r1, rn(reg));
|
||||
|
@ -775,7 +775,7 @@ _dcci(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
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;
|
||||
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)
|
||||
|
||||
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;
|
||||
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)
|
||||
|
||||
static jit_word_t
|
||||
_dbccr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_dbccr(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
jit_word_t w, d;
|
||||
FCMPED(r0, r1);
|
||||
|
@ -813,11 +813,11 @@ _dbccr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_dbcci(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_float64_t i1)
|
||||
_dbcci(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_float64_t i1)
|
||||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
|
||||
movi_d(rn(reg), i1);
|
||||
w = dbccr(cc, i0, r0, rn(reg));
|
||||
|
@ -826,7 +826,7 @@ _dbcci(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
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;
|
||||
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)
|
||||
|
||||
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;
|
||||
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)
|
||||
|
||||
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 lt_code;
|
||||
jit_int32_t rg0, rg1;
|
||||
int32_t rg0, rg1;
|
||||
|
||||
assert(_jitc->function->self.call & jit_call_varargs);
|
||||
|
||||
|
|
132
jit/aarch64.c
132
jit/aarch64.c
|
@ -31,17 +31,17 @@ typedef struct jit_va_list {
|
|||
jit_pointer_t stack;
|
||||
jit_pointer_t gptop;
|
||||
jit_pointer_t fptop;
|
||||
jit_int32_t gpoff;
|
||||
jit_int32_t fpoff;
|
||||
int32_t gpoff;
|
||||
int32_t fpoff;
|
||||
|
||||
jit_int64_t x0;
|
||||
jit_int64_t x1;
|
||||
jit_int64_t x2;
|
||||
jit_int64_t x3;
|
||||
jit_int64_t x4;
|
||||
jit_int64_t x5;
|
||||
jit_int64_t x6;
|
||||
jit_int64_t x7;
|
||||
int64_t x0;
|
||||
int64_t x1;
|
||||
int64_t x2;
|
||||
int64_t x3;
|
||||
int64_t x4;
|
||||
int64_t x5;
|
||||
int64_t x6;
|
||||
int64_t x7;
|
||||
|
||||
jit_qreg_t q0;
|
||||
jit_qreg_t q1;
|
||||
|
@ -155,7 +155,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -175,7 +175,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
_jitc->function->self.aoff = 0;
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -194,8 +194,8 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
switch (length) {
|
||||
|
@ -213,13 +213,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
r0 = jit_get_reg(jit_class_gpr);
|
||||
|
@ -258,7 +258,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_RET != u)
|
||||
|
@ -278,7 +278,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (u != JIT_FRET)
|
||||
|
@ -299,7 +299,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (u != JIT_FRET)
|
||||
|
@ -372,7 +372,7 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_pushargr(u);
|
||||
|
@ -383,7 +383,7 @@ jit_node_t *
|
|||
_jit_arg(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
assert(!(_jitc->function->self.call & jit_call_varargs));
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi))
|
||||
|
@ -402,7 +402,7 @@ jit_node_t *
|
|||
_jit_arg_f(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
assert(!(_jitc->function->self.call & jit_call_varargs));
|
||||
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_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
assert(!(_jitc->function->self.call & jit_call_varargs));
|
||||
if (jit_arg_f_reg_p(_jitc->function->self.argf))
|
||||
|
@ -437,7 +437,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_wp(putargi, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
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
|
||||
_jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
||||
_jit_pushargr(jit_state_t *_jit, int32_t u)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargr, u);
|
||||
|
@ -651,7 +651,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargi, u);
|
||||
jit_link_prepare();
|
||||
|
@ -670,7 +670,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_f, u);
|
||||
|
@ -689,7 +689,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_f(pushargi_f, u);
|
||||
jit_link_prepare();
|
||||
|
@ -708,7 +708,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_d, u);
|
||||
|
@ -727,7 +727,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_d(pushargi_d, u);
|
||||
jit_link_prepare();
|
||||
|
@ -746,9 +746,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (spec & jit_class_arg) {
|
||||
regno = JIT_RA0 - regno;
|
||||
|
@ -765,7 +765,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
|
|||
}
|
||||
|
||||
void
|
||||
_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
|
||||
_jit_finishr(jit_state_t *_jit, int32_t r0)
|
||||
{
|
||||
jit_node_t *node;
|
||||
assert(_jitc->function);
|
||||
|
@ -800,7 +800,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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_extr_c(r0, JIT_RET);
|
||||
|
@ -808,7 +808,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_uc(r0, JIT_RET);
|
||||
|
@ -816,7 +816,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_s(r0, JIT_RET);
|
||||
|
@ -824,7 +824,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_us(r0, JIT_RET);
|
||||
|
@ -832,7 +832,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_i(r0, JIT_RET);
|
||||
|
@ -840,7 +840,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_ui(r0, JIT_RET);
|
||||
|
@ -848,7 +848,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_RET)
|
||||
|
@ -857,7 +857,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_FRET)
|
||||
|
@ -866,7 +866,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_FRET)
|
||||
|
@ -881,16 +881,16 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_word_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_uint8_t *data;
|
||||
uint8_t *data;
|
||||
jit_word_t word;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
#endif
|
||||
jit_int32_t const_offset;
|
||||
jit_int32_t patch_offset;
|
||||
int32_t const_offset;
|
||||
int32_t patch_offset;
|
||||
} undo;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
|
@ -1536,25 +1536,25 @@ jit_flush(void *fptr, void *tptr)
|
|||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
@ -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
|
||||
_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);
|
||||
if (node->code == jit_code_movi)
|
||||
|
|
766
jit/alpha-cpu.c
766
jit/alpha-cpu.c
File diff suppressed because it is too large
Load diff
434
jit/alpha-fpu.c
434
jit/alpha-fpu.c
File diff suppressed because it is too large
Load diff
122
jit/alpha.c
122
jit/alpha.c
|
@ -25,9 +25,9 @@
|
|||
# define I_DISP 0
|
||||
# define F_DISP 0
|
||||
#else
|
||||
# define C_DISP 8 - sizeof(jit_int8_t)
|
||||
# define S_DISP 8 - sizeof(jit_int16_t)
|
||||
# define I_DISP 8 - sizeof(jit_int32_t)
|
||||
# define C_DISP 8 - sizeof(int8_t)
|
||||
# define S_DISP 8 - sizeof(int16_t)
|
||||
# define I_DISP 8 - sizeof(int32_t)
|
||||
# define F_DISP 8 - sizeof(jit_float32_t)
|
||||
#endif
|
||||
|
||||
|
@ -155,7 +155,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -175,7 +175,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
_jitc->function->self.aoff = -8;
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -194,8 +194,8 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
assert(_jitc->function != NULL);
|
||||
switch (length) {
|
||||
|
@ -213,13 +213,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -246,7 +246,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_RET != u)
|
||||
|
@ -266,7 +266,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (u != JIT_FRET)
|
||||
|
@ -287,7 +287,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (u != JIT_FRET)
|
||||
|
@ -347,9 +347,9 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
jit_ldxi(reg, u, offsetof(jit_va_list_t, base));
|
||||
|
@ -364,7 +364,7 @@ jit_node_t *
|
|||
_jit_arg(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function != NULL);
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi))
|
||||
offset = _jitc->function->self.argi++;
|
||||
|
@ -382,7 +382,7 @@ jit_node_t *
|
|||
_jit_arg_f(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function != NULL);
|
||||
if (jit_arg_f_reg_p(_jitc->function->self.argi))
|
||||
offset = _jitc->function->self.argi++;
|
||||
|
@ -400,7 +400,7 @@ jit_node_t *
|
|||
_jit_arg_d(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function != NULL);
|
||||
if (jit_arg_f_reg_p(_jitc->function->self.argi))
|
||||
offset = _jitc->function->self.argi++;
|
||||
|
@ -415,7 +415,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_wp(putargi, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
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
|
||||
_jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
||||
_jit_pushargr(jit_state_t *_jit, int32_t u)
|
||||
{
|
||||
assert(_jitc->function != NULL);
|
||||
jit_inc_synth_w(pushargr, u);
|
||||
|
@ -627,9 +627,9 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargi, u);
|
||||
jit_link_prepare();
|
||||
|
@ -648,7 +648,7 @@ _jit_pushargi(jit_state_t *_jit, jit_int64_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_f, u);
|
||||
|
@ -667,7 +667,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function != NULL);
|
||||
jit_inc_synth_f(pushargi_f, u);
|
||||
jit_link_prepare();
|
||||
|
@ -686,7 +686,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_d, u);
|
||||
|
@ -705,7 +705,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function != NULL);
|
||||
jit_inc_synth_d(pushargi_d, u);
|
||||
jit_link_prepare();
|
||||
|
@ -724,9 +724,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
|
||||
_jit_finishr(jit_state_t *_jit, int32_t r0)
|
||||
{
|
||||
jit_node_t *call;
|
||||
assert(_jitc->function != NULL);
|
||||
|
@ -777,7 +777,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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_extr_c(r0, JIT_RET);
|
||||
|
@ -785,7 +785,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_uc(r0, JIT_RET);
|
||||
|
@ -793,7 +793,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_s(r0, JIT_RET);
|
||||
|
@ -801,7 +801,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_us(r0, JIT_RET);
|
||||
|
@ -809,7 +809,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_i(r0, JIT_RET);
|
||||
|
@ -817,7 +817,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_ui(r0, JIT_RET);
|
||||
|
@ -825,7 +825,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_RET)
|
||||
|
@ -834,7 +834,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_FRET)
|
||||
|
@ -843,7 +843,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_FRET)
|
||||
|
@ -858,16 +858,16 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_word_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_uint8_t *data;
|
||||
uint8_t *data;
|
||||
jit_word_t word;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
#endif
|
||||
jit_int32_t const_offset;
|
||||
jit_int32_t patch_offset;
|
||||
int32_t const_offset;
|
||||
int32_t patch_offset;
|
||||
} undo;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
|
@ -1505,25 +1505,25 @@ jit_flush(void *fptr, void *tptr)
|
|||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
@ -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
|
||||
_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);
|
||||
if (node->code == jit_code_movi)
|
||||
|
|
536
jit/arm-cpu.c
536
jit/arm-cpu.c
File diff suppressed because it is too large
Load diff
348
jit/arm-swf.c
348
jit/arm-swf.c
|
@ -50,98 +50,98 @@ extern int __aeabi_fcmpun(float, float);
|
|||
extern int __aeabi_dcmpun(double, double);
|
||||
# define swf_ff(i0,r0,r1) _swf_ff(_jit,i0,r0,r1)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_d(r0,r1) swf_dd(sqrt,r0,r1)
|
||||
# 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_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)
|
||||
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_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_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)
|
||||
|
@ -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_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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_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)
|
||||
|
@ -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_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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_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)
|
||||
|
@ -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_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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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
|
||||
|
||||
#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) \
|
||||
do { \
|
||||
jit_word_t d; \
|
||||
jit_int32_t reg; \
|
||||
int32_t reg; \
|
||||
if (!jit_exchange_p()) { \
|
||||
if (jit_thumb_p()) \
|
||||
d = (((jit_word_t)function - _jit->pc.w) >> 1) - 2; \
|
||||
|
@ -561,7 +561,7 @@ __aeabi_dcmpun(double u, double v)
|
|||
|
||||
static void
|
||||
_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();
|
||||
if (jit_fpr_p(r1))
|
||||
|
@ -578,7 +578,7 @@ _swf_ff(jit_state_t *_jit, float(*i0)(float),
|
|||
|
||||
static void
|
||||
_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();
|
||||
if (jit_fpr_p(r1)) {
|
||||
|
@ -611,7 +611,7 @@ _swf_dd(jit_state_t *_jit, double (*i0)(double),
|
|||
|
||||
static void
|
||||
_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();
|
||||
if (jit_fpr_p(r1))
|
||||
|
@ -632,7 +632,7 @@ _swf_fff(jit_state_t *_jit, float (*i0)(float, float),
|
|||
|
||||
static void
|
||||
_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();
|
||||
if (jit_fpr_p(r1)) {
|
||||
|
@ -677,10 +677,10 @@ _swf_ddd(jit_state_t *_jit, double (*i0)(double, double),
|
|||
|
||||
static void
|
||||
_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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_get_reg_args();
|
||||
|
@ -699,10 +699,10 @@ _swf_fff_(jit_state_t *_jit, float (*i0)(float, float),
|
|||
}
|
||||
|
||||
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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
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
|
||||
_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 {
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_get_reg_args();
|
||||
|
@ -762,10 +762,10 @@ _swf_ddd_(jit_state_t *_jit, double (*i0)(double, double),
|
|||
}
|
||||
|
||||
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 {
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
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
|
||||
_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();
|
||||
if (jit_fpr_p(r1))
|
||||
|
@ -820,7 +820,7 @@ _swf_iff(jit_state_t *_jit, int (*i0)(float, float),
|
|||
|
||||
static void
|
||||
_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();
|
||||
if (jit_fpr_p(r1)) {
|
||||
|
@ -854,10 +854,10 @@ _swf_idd(jit_state_t *_jit, int (*i0)(double, double),
|
|||
|
||||
static void
|
||||
_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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_get_reg_args();
|
||||
|
@ -874,10 +874,10 @@ _swf_iff_(jit_state_t *_jit, int (*i0)(float, float),
|
|||
|
||||
static void
|
||||
_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 {
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_get_reg_args();
|
||||
|
@ -903,7 +903,7 @@ _swf_idd_(jit_state_t *_jit, int (*i0)(double, double),
|
|||
|
||||
static void
|
||||
_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_get_reg_args();
|
||||
|
@ -948,7 +948,7 @@ _swf_iunff(jit_state_t *_jit, int (*i0)(float, float),
|
|||
|
||||
static void
|
||||
_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_get_reg_args();
|
||||
|
@ -1025,11 +1025,11 @@ _swf_iundd(jit_state_t *_jit, int (*i0)(double, double),
|
|||
|
||||
static void
|
||||
_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;
|
||||
union {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_get_reg_args();
|
||||
|
@ -1069,11 +1069,11 @@ _swf_iunff_(jit_state_t *_jit, int (*i0)(float, float),
|
|||
|
||||
static void
|
||||
_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;
|
||||
union {
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_get_reg_args();
|
||||
|
@ -1131,7 +1131,7 @@ _swf_iundd_(jit_state_t *_jit, int (*i0)(double, double),
|
|||
|
||||
static jit_word_t
|
||||
_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_get_reg_args();
|
||||
|
@ -1164,7 +1164,7 @@ _swf_bff(jit_state_t *_jit, int (*i0)(float, float), int cc,
|
|||
|
||||
static jit_word_t
|
||||
_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_get_reg_args();
|
||||
|
@ -1213,10 +1213,10 @@ _swf_bdd(jit_state_t *_jit, int (*i0)(double, double), int cc,
|
|||
|
||||
static jit_word_t
|
||||
_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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
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
|
||||
_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;
|
||||
union {
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_get_reg_args();
|
||||
|
@ -1292,7 +1292,7 @@ _swf_bdd_(jit_state_t *_jit, int (*i0)(double, double), int cc,
|
|||
|
||||
static jit_word_t
|
||||
_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_get_reg_args();
|
||||
|
@ -1362,7 +1362,7 @@ _swf_bunff(jit_state_t *_jit, int eq,
|
|||
|
||||
static jit_word_t
|
||||
_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_get_reg_args();
|
||||
|
@ -1464,10 +1464,10 @@ _swf_bundd(jit_state_t *_jit, int eq,
|
|||
|
||||
static jit_word_t
|
||||
_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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_word_t w, d, j0, j1;
|
||||
|
@ -1533,11 +1533,11 @@ _swf_bunff_(jit_state_t *_jit, int eq,
|
|||
|
||||
static jit_word_t
|
||||
_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;
|
||||
union {
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_get_reg_args();
|
||||
|
@ -1619,7 +1619,7 @@ _swf_bundd_(jit_state_t *_jit, int eq,
|
|||
}
|
||||
|
||||
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();
|
||||
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
|
||||
_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();
|
||||
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
|
||||
_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();
|
||||
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
|
||||
_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();
|
||||
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
|
||||
_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
|
||||
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
|
||||
_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
|
||||
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
|
||||
_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 (jit_fpr_p(r1)) {
|
||||
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
|
||||
_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 (jit_fpr_p(r1)) {
|
||||
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
|
||||
_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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
data.f = i0;
|
||||
if (jit_fpr_p(r0)) {
|
||||
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
|
||||
_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 {
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
data.d = i0;
|
||||
|
@ -1938,9 +1938,9 @@ _swf_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0)
|
|||
}
|
||||
|
||||
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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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(r0) && !jit_thumb_p() && jit_armv5e_p() &&
|
||||
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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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(r0) && !jit_thumb_p() && jit_armv5e_p() &&
|
||||
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
|
||||
_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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
xori(r0, r0, 1);
|
||||
}
|
||||
|
||||
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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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_thumb_p() && jit_armv5e_p() &&
|
||||
(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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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() &&
|
||||
(rg0 = jit_get_reg_pair()) != JIT_NOREG) {
|
||||
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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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_thumb_p() && jit_armv5e_p() &&
|
||||
(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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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_thumb_p() && jit_armv5e_p() &&
|
||||
((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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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_thumb_p() && jit_armv5e_p() &&
|
||||
(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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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_thumb_p() && jit_armv5e_p() &&
|
||||
(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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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_thumb_p() && jit_armv5e_p() &&
|
||||
(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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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_thumb_p() && jit_armv5e_p() &&
|
||||
((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
|
||||
_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);
|
||||
|
||||
|
|
418
jit/arm-vfp.c
418
jit/arm-vfp.c
File diff suppressed because it is too large
Load diff
140
jit/arm.c
140
jit/arm.c
|
@ -50,8 +50,8 @@
|
|||
* Types
|
||||
*/
|
||||
typedef union _jit_thumb_t {
|
||||
jit_int32_t i;
|
||||
jit_int16_t s[2];
|
||||
int32_t i;
|
||||
int16_t s[2];
|
||||
} jit_thumb_t;
|
||||
|
||||
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)
|
||||
static jit_node_t *_jit_make_arg_d(jit_state_t*,jit_node_t*);
|
||||
#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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
static void _flush_consts(jit_state_t*);
|
||||
#define invalidate_consts() _invalidate_consts(_jit)
|
||||
|
@ -206,7 +206,7 @@ jit_get_cpu(void)
|
|||
void
|
||||
_jit_init(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
static jit_bool_t first = 1;
|
||||
|
||||
_jitc->reglen = jit_size(_rvs) - 1;
|
||||
|
@ -229,7 +229,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -255,7 +255,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
_jitc->function->self.aoff = 0;
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -274,8 +274,8 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
switch (length) {
|
||||
|
@ -293,13 +293,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -326,7 +326,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_RET != u)
|
||||
|
@ -346,7 +346,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (jit_cpu.abi) {
|
||||
|
@ -378,7 +378,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (jit_cpu.abi) {
|
||||
|
@ -438,7 +438,7 @@ _jit_arg_register_p(jit_state_t *_jit, jit_node_t *u)
|
|||
static jit_node_t *
|
||||
_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))
|
||||
offset = _jitc->function->self.argi++;
|
||||
else {
|
||||
|
@ -458,7 +458,7 @@ _jit_make_arg(jit_state_t *_jit, jit_node_t *node)
|
|||
jit_node_t *
|
||||
_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_arg_f_reg_p(_jitc->function->self.argf)) {
|
||||
offset = _jitc->function->self.argf++;
|
||||
|
@ -487,7 +487,7 @@ done:
|
|||
jit_node_t *
|
||||
_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_arg_d_reg_p(_jitc->function->self.argf)) {
|
||||
if (_jitc->function->self.argf & 1)
|
||||
|
@ -550,7 +550,7 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_pushargr(u);
|
||||
|
@ -579,7 +579,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_wp(putargi, u, v);
|
||||
if (jit_swf_p()) {
|
||||
|
@ -686,7 +686,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
if (jit_cpu.abi) {
|
||||
|
@ -764,7 +764,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
if (jit_cpu.abi) {
|
||||
|
@ -842,7 +842,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
void
|
||||
_jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
||||
_jit_pushargr(jit_state_t *_jit, int32_t u)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargr, u);
|
||||
|
@ -861,7 +861,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargi, u);
|
||||
jit_link_prepare();
|
||||
|
@ -880,7 +880,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_f, u);
|
||||
|
@ -908,7 +908,7 @@ done:
|
|||
void
|
||||
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_f(pushargi_f, u);
|
||||
jit_link_prepare();
|
||||
|
@ -943,7 +943,7 @@ done:
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_d, u);
|
||||
|
@ -979,7 +979,7 @@ done:
|
|||
void
|
||||
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_d(pushargi_d, u);
|
||||
jit_link_prepare();
|
||||
|
@ -1015,9 +1015,9 @@ done:
|
|||
}
|
||||
|
||||
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);
|
||||
if (spec & jit_class_arg) {
|
||||
regno = JIT_RA0 - regno;
|
||||
|
@ -1034,7 +1034,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
|
|||
}
|
||||
|
||||
void
|
||||
_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
|
||||
_jit_finishr(jit_state_t *_jit, int32_t r0)
|
||||
{
|
||||
jit_node_t *node;
|
||||
assert(_jitc->function);
|
||||
|
@ -1069,7 +1069,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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_extr_c(r0, JIT_RET);
|
||||
|
@ -1077,7 +1077,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_uc(r0, JIT_RET);
|
||||
|
@ -1085,7 +1085,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_s(r0, JIT_RET);
|
||||
|
@ -1093,7 +1093,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_us(r0, JIT_RET);
|
||||
|
@ -1101,7 +1101,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_RET)
|
||||
|
@ -1110,7 +1110,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (jit_cpu.abi) {
|
||||
|
@ -1123,7 +1123,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (jit_cpu.abi) {
|
||||
|
@ -1141,21 +1141,21 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *node;
|
||||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_int32_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t value;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_uint8_t *data;
|
||||
uint8_t *data;
|
||||
jit_word_t word;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
#endif
|
||||
jit_uword_t thumb;
|
||||
#if DISASSEMBLER
|
||||
jit_int32_t info_offset;
|
||||
int32_t info_offset;
|
||||
#endif
|
||||
jit_int32_t const_offset;
|
||||
jit_int32_t patch_offset;
|
||||
int32_t const_offset;
|
||||
int32_t patch_offset;
|
||||
} undo;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
|
@ -1974,7 +1974,7 @@ _emit_code(jit_state_t *_jit)
|
|||
if (!jit_thumb_p() &&
|
||||
(node->code == jit_code_movi || node->code == jit_code_calli)) {
|
||||
/* calculate where to patch word */
|
||||
value = *(jit_int32_t *)word;
|
||||
value = *(int32_t *)word;
|
||||
assert((value & 0x0f700000) == ARM_LDRI);
|
||||
/* offset may become negative (-4) if last instruction
|
||||
* before unconditional branch and data following
|
||||
|
@ -2016,19 +2016,19 @@ jit_flush(void *fptr, void *tptr)
|
|||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
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())
|
||||
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
|
||||
_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())
|
||||
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));
|
||||
}
|
||||
|
||||
static jit_int32_t
|
||||
static int32_t
|
||||
_jit_get_reg_pair(jit_state_t *_jit)
|
||||
{
|
||||
/* 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
|
||||
_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);
|
||||
switch (reg) {
|
||||
|
@ -2119,14 +2119,14 @@ _must_align_p(jit_state_t *_jit, jit_node_t *node)
|
|||
}
|
||||
|
||||
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 d;
|
||||
jit_word_t base;
|
||||
jit_int32_t *data;
|
||||
jit_int32_t size;
|
||||
jit_int32_t offset;
|
||||
int32_t *data;
|
||||
int32_t size;
|
||||
int32_t offset;
|
||||
|
||||
assert(!jit_thumb_p());
|
||||
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 */
|
||||
if ((data = (jit_int32_t *)_jitc->consts.data)) {
|
||||
if ((data = (int32_t *)_jitc->consts.data)) {
|
||||
w = (jit_word_t)data;
|
||||
/* maximum backwards offset */
|
||||
base = (_jit->pc.w + 8) - 4092;
|
||||
|
@ -2196,7 +2196,7 @@ static void
|
|||
_flush_consts(jit_state_t *_jit)
|
||||
{
|
||||
jit_word_t word;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
/* if no forward constants */
|
||||
if (!_jitc->consts.length)
|
||||
|
@ -2243,8 +2243,8 @@ _invalidate_consts(jit_state_t *_jit)
|
|||
static void
|
||||
_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
|
||||
{
|
||||
jit_int32_t flag;
|
||||
jit_int32_t kind;
|
||||
int32_t flag;
|
||||
int32_t kind;
|
||||
|
||||
assert(node->flag & jit_flag_node);
|
||||
if (node->code == jit_code_movi) {
|
||||
|
|
14
jit/arm.h
14
jit/arm.h
|
@ -105,18 +105,18 @@ typedef enum {
|
|||
} jit_reg_t;
|
||||
|
||||
typedef struct {
|
||||
jit_uint32_t version : 4;
|
||||
jit_uint32_t extend : 1;
|
||||
uint32_t version : 4;
|
||||
uint32_t extend : 1;
|
||||
/* only generate thumb instructions for thumb2 */
|
||||
jit_uint32_t thumb : 1;
|
||||
jit_uint32_t vfp : 3;
|
||||
jit_uint32_t neon : 1;
|
||||
jit_uint32_t abi : 2;
|
||||
uint32_t thumb : 1;
|
||||
uint32_t vfp : 3;
|
||||
uint32_t neon : 1;
|
||||
uint32_t abi : 2;
|
||||
/* use strt+offset instead of str.w?
|
||||
* on special cases it causes a SIGILL at least on qemu, probably
|
||||
* due to some memory ordering constraint not being respected, so,
|
||||
* disable by default */
|
||||
jit_uint32_t ldrt_strt : 1;
|
||||
uint32_t ldrt_strt : 1;
|
||||
} jit_cpu_t;
|
||||
|
||||
/*
|
||||
|
|
804
jit/hppa-cpu.c
804
jit/hppa-cpu.c
File diff suppressed because it is too large
Load diff
262
jit/hppa-fpu.c
262
jit/hppa-fpu.c
|
@ -28,44 +28,44 @@
|
|||
#endif
|
||||
|
||||
#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)
|
||||
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;
|
||||
#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)
|
||||
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 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,
|
||||
jit_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;
|
||||
static void _f45(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
|
||||
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)
|
||||
static void _f46(jit_state_t*,jit_int32_t,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
|
||||
static void _f46(jit_state_t*,int32_t,jit_int32_t,
|
||||
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 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)
|
||||
static void _f47_48(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
|
||||
static void _f47_48(jit_state_t*,int32_t,
|
||||
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 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 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,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
|
||||
static void _f49_52(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_int32_t,
|
||||
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)
|
||||
static void _f53(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
|
||||
static void _f53(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,
|
||||
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)
|
||||
static void _f54(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,
|
||||
jit_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;
|
||||
static void _f54(jit_state_t*,int32_t,jit_int32_t,jit_int32_t,
|
||||
int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
|
||||
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_S(r,t) FABS_(0,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_d(r0,r1) FSQRT_D(r1,r0)
|
||||
#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)
|
||||
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_d_f(r0,r1) FCNVFF_D_S(r1,r0)
|
||||
#define truncr_f(r0,r1) truncr_f_i(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_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 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 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_d(r0,r1) FABS_D(r1,r0)
|
||||
#define addr_f(r0,r1,r2) FADD_S(r1,r2,r0)
|
||||
#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 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 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 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 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 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 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 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 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 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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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 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)
|
||||
|
@ -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 ldr_f(r0,r1) FLDWI(0,r1,r0)
|
||||
#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 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 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 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 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
|
||||
# define stxr_f(r0,r1,r2) FSTW(r2,r1,r0)
|
||||
# define stxr_d(r0,r1,r2) FSTD(r2,r1,r0)
|
||||
#else
|
||||
# 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)
|
||||
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
|
||||
#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 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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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 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)
|
||||
|
@ -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 bunordi_d(i0,r0,i1) bcmpi_d(FCMP_UNORD,i0,r0,i1)
|
||||
#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
|
||||
|
||||
#if CODE
|
||||
static void
|
||||
_f39(jit_state_t *_jit, jit_int32_t o,
|
||||
jit_int32_t b, jit_int32_t x, jit_int32_t t)
|
||||
_f39(jit_state_t *_jit, int32_t o,
|
||||
int32_t b, jit_int32_t x, jit_int32_t t)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
assert(!(b & ~0x1f));
|
||||
|
@ -504,8 +504,8 @@ _f39(jit_state_t *_jit, jit_int32_t o,
|
|||
}
|
||||
|
||||
static void
|
||||
_f40(jit_state_t *_jit, jit_int32_t o,
|
||||
jit_int32_t b, jit_int32_t x, jit_int32_t r)
|
||||
_f40(jit_state_t *_jit, int32_t o,
|
||||
int32_t b, jit_int32_t x, jit_int32_t r)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
assert(!(b & ~0x1f));
|
||||
|
@ -515,8 +515,8 @@ _f40(jit_state_t *_jit, jit_int32_t o,
|
|||
}
|
||||
|
||||
static void
|
||||
_f41(jit_state_t *_jit, jit_int32_t o,
|
||||
jit_int32_t b, jit_int32_t x, jit_int32_t t)
|
||||
_f41(jit_state_t *_jit, int32_t o,
|
||||
int32_t b, jit_int32_t x, jit_int32_t t)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
assert(!(b & ~0x1f));
|
||||
|
@ -526,8 +526,8 @@ _f41(jit_state_t *_jit, jit_int32_t o,
|
|||
}
|
||||
|
||||
static void
|
||||
_f42(jit_state_t *_jit, jit_int32_t o,
|
||||
jit_int32_t b, jit_int32_t i, jit_int32_t r)
|
||||
_f42(jit_state_t *_jit, int32_t o,
|
||||
int32_t b, jit_int32_t i, jit_int32_t r)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
assert(!(b & ~0x1f));
|
||||
|
@ -537,9 +537,9 @@ _f42(jit_state_t *_jit, jit_int32_t o,
|
|||
}
|
||||
|
||||
static void
|
||||
_f45(jit_state_t *_jit, jit_int32_t o,
|
||||
jit_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)
|
||||
_f45(jit_state_t *_jit, int32_t o,
|
||||
int32_t r, jit_int32_t a, jit_int32_t b, jit_int32_t fmt,
|
||||
int32_t c, jit_int32_t d, jit_int32_t e, jit_int32_t t)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
assert(!(r & ~0x1f));
|
||||
|
@ -554,9 +554,9 @@ _f45(jit_state_t *_jit, jit_int32_t o,
|
|||
}
|
||||
|
||||
static void
|
||||
_f46(jit_state_t *_jit, jit_int32_t o, jit_int32_t r,
|
||||
jit_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)
|
||||
_f46(jit_state_t *_jit, int32_t o, jit_int32_t r,
|
||||
int32_t a, jit_int32_t s, jit_int32_t df, jit_int32_t sf,
|
||||
int32_t b, jit_int32_t c, jit_int32_t d, jit_int32_t t)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
assert(!(r & ~0x1f));
|
||||
|
@ -573,9 +573,9 @@ _f46(jit_state_t *_jit, jit_int32_t o, jit_int32_t r,
|
|||
}
|
||||
|
||||
static void
|
||||
_f47_48(jit_state_t *_jit, jit_int32_t o,
|
||||
jit_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)
|
||||
_f47_48(jit_state_t *_jit, int32_t o,
|
||||
int32_t r2, jit_int32_t r1, jit_int32_t y, jit_int32_t fmt,
|
||||
int32_t a, jit_int32_t b, jit_int32_t c, jit_int32_t t)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
assert(!(r2 & ~0x1f));
|
||||
|
@ -590,10 +590,10 @@ _f47_48(jit_state_t *_jit, jit_int32_t o,
|
|||
}
|
||||
|
||||
static void
|
||||
_f49_52(jit_state_t *_jit, jit_int32_t o,
|
||||
jit_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,
|
||||
jit_int32_t u, jit_int32_t c, jit_int32_t d, jit_int32_t t)
|
||||
_f49_52(jit_state_t *_jit, int32_t o,
|
||||
int32_t r1, jit_int32_t r2, jit_int32_t y,
|
||||
int32_t v, jit_int32_t f, jit_int32_t a, jit_int32_t b,
|
||||
int32_t u, jit_int32_t c, jit_int32_t d, jit_int32_t t)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
assert(!(r1 & ~0x1f));
|
||||
|
@ -612,8 +612,8 @@ _f49_52(jit_state_t *_jit, jit_int32_t o,
|
|||
}
|
||||
|
||||
static void
|
||||
_f53(jit_state_t *_jit, 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)
|
||||
_f53(jit_state_t *_jit, int32_t o, jit_int32_t r1, jit_int32_t r2,
|
||||
int32_t ta, jit_int32_t ra, jit_int32_t f, jit_int32_t tm)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
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
|
||||
_f54(jit_state_t *_jit, 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,
|
||||
jit_int32_t d, jit_int32_t e, jit_int32_t g, jit_int32_t t)
|
||||
_f54(jit_state_t *_jit, int32_t o, jit_int32_t r1, jit_int32_t r2,
|
||||
int32_t a, jit_int32_t b, jit_int32_t f, jit_int32_t c,
|
||||
int32_t d, jit_int32_t e, jit_int32_t g, jit_int32_t t)
|
||||
{
|
||||
assert(!(o & ~0x3f));
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
FCNVXT_S_S(r1, 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
|
||||
_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);
|
||||
FCNVXT_D_S(r1, 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
|
||||
_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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
if (_jitc->no_data) {
|
||||
data.f = *i0;
|
||||
|
@ -708,14 +708,14 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
|
|||
}
|
||||
|
||||
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 {
|
||||
jit_int32_t ii[2];
|
||||
int32_t ii[2];
|
||||
jit_word_t w;
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
data.d = *i0;
|
||||
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) \
|
||||
static void \
|
||||
_##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_int32_t reg = jit_get_reg(jit_class_fpr); \
|
||||
int32_t reg = jit_get_reg(jit_class_fpr); \
|
||||
movi_##type(rn(reg), i0); \
|
||||
name##r_##type(r0, r1, rn(reg)); \
|
||||
jit_unget_reg(reg); \
|
||||
|
@ -759,7 +759,7 @@ dopi(div)
|
|||
|
||||
static void
|
||||
_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);
|
||||
FCMP_S_(r1, r2, c);
|
||||
|
@ -769,9 +769,9 @@ _cmpr_f(jit_state_t *_jit, jit_word_t c,
|
|||
|
||||
static void
|
||||
_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);
|
||||
cmpr_f(c, r0, r1, rn(reg));
|
||||
jit_unget_reg(reg);
|
||||
|
@ -779,7 +779,7 @@ _cmpi_f(jit_state_t *_jit, jit_word_t c,
|
|||
|
||||
static void
|
||||
_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);
|
||||
FCMP_D_(r1, r2, c);
|
||||
|
@ -789,18 +789,18 @@ _cmpr_d(jit_state_t *_jit, jit_word_t c,
|
|||
|
||||
static void
|
||||
_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);
|
||||
cmpr_d(c, r0, r1, rn(reg));
|
||||
jit_unget_reg(reg);
|
||||
}
|
||||
|
||||
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));
|
||||
if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 6))
|
||||
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
|
||||
_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)
|
||||
FLDWI(i0, r1, r0);
|
||||
/* |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
|
||||
_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));
|
||||
if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 14))
|
||||
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
|
||||
_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)
|
||||
FLDDI(i0, r1, r0);
|
||||
/* |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
|
||||
_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));
|
||||
if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 6))
|
||||
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
|
||||
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);
|
||||
addr(rn(reg), r0, r1);
|
||||
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
|
||||
_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);
|
||||
addr(rn(reg), r0, r1);
|
||||
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
|
||||
|
||||
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)
|
||||
FSTWI(r1, i0, r0);
|
||||
/* |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
|
||||
_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));
|
||||
if (i0 >= -8192 && i0 <= 8191 && !(re_assemble_16(i0) & 14))
|
||||
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
|
||||
_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)
|
||||
FSTDI(r1, i0, r0);
|
||||
/* |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
|
||||
_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;
|
||||
FCMP_S_(r0, r1, c);
|
||||
|
@ -972,10 +972,10 @@ _bcmpr_f(jit_state_t *_jit, jit_word_t c,
|
|||
|
||||
static jit_word_t
|
||||
_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_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
|
||||
movi_f(rn(reg), i1);
|
||||
FCMP_S_(r0, rn(reg), c);
|
||||
|
@ -989,7 +989,7 @@ _bcmpi_f(jit_state_t *_jit, jit_word_t c,
|
|||
|
||||
static jit_word_t
|
||||
_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;
|
||||
FCMP_D_(r0, r1, c);
|
||||
|
@ -1002,10 +1002,10 @@ _bcmpr_d(jit_state_t *_jit, jit_word_t c,
|
|||
|
||||
static jit_word_t
|
||||
_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_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
|
||||
movi_d(rn(reg), i1);
|
||||
FCMP_D_(r0, rn(reg), c);
|
||||
|
@ -1018,9 +1018,9 @@ _bcmpi_d(jit_state_t *_jit, jit_word_t c,
|
|||
}
|
||||
|
||||
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);
|
||||
|
||||
|
|
96
jit/hppa.c
96
jit/hppa.c
|
@ -141,7 +141,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -161,7 +161,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
_jitc->function->self.aoff = alloca_offset;
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -180,10 +180,10 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
switch (length) {
|
||||
case 0: case 1:
|
||||
|
@ -208,13 +208,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -240,7 +240,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_movr(JIT_RET, u);
|
||||
|
@ -258,7 +258,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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_movr_f(JIT_FRET, u);
|
||||
|
@ -276,7 +276,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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_movr_d(JIT_FRET, u);
|
||||
|
@ -330,7 +330,7 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_pushargr(u);
|
||||
|
@ -341,7 +341,7 @@ jit_node_t *
|
|||
_jit_arg(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
_jitc->function->self.size -= sizeof(jit_word_t);
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi))
|
||||
|
@ -358,7 +358,7 @@ jit_node_t *
|
|||
_jit_arg_f(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
_jitc->function->self.size -= sizeof(jit_word_t);
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi))
|
||||
|
@ -375,7 +375,7 @@ jit_node_t *
|
|||
_jit_arg_d(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (_jitc->function->self.argi & 1) {
|
||||
++_jitc->function->self.argi;
|
||||
|
@ -399,7 +399,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_wp(putargi, u, v);
|
||||
if (v->u.w >= 0)
|
||||
|
@ -488,7 +488,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
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
|
||||
_jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
||||
_jit_pushargr(jit_state_t *_jit, int32_t u)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargr, u);
|
||||
|
@ -588,7 +588,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargi, u);
|
||||
jit_link_prepare();
|
||||
|
@ -607,7 +607,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_f, u);
|
||||
|
@ -634,7 +634,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_f(pushargi_f, u);
|
||||
jit_link_prepare();
|
||||
|
@ -663,7 +663,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_d, u);
|
||||
|
@ -700,7 +700,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_d(pushargi_d, u);
|
||||
jit_link_prepare();
|
||||
|
@ -737,9 +737,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (spec & jit_class_arg) {
|
||||
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
|
||||
_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
|
||||
_jit_finishr(jit_state_t *_jit, int32_t r0)
|
||||
{
|
||||
jit_node_t *call;
|
||||
assert(_jitc->function);
|
||||
|
@ -788,7 +788,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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_extr_c(r0, JIT_RET);
|
||||
|
@ -796,7 +796,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_uc(r0, JIT_RET);
|
||||
|
@ -804,7 +804,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_s(r0, JIT_RET);
|
||||
|
@ -812,7 +812,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_us(r0, JIT_RET);
|
||||
|
@ -820,7 +820,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_movr(r0, JIT_RET);
|
||||
|
@ -828,7 +828,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_movr_f(r0, JIT_FRET);
|
||||
|
@ -836,7 +836,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_movr_d(r0, JIT_FRET);
|
||||
|
@ -849,15 +849,15 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *node;
|
||||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_int32_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t value;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_word_t word;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
#endif
|
||||
jit_int32_t patch_offset;
|
||||
int32_t patch_offset;
|
||||
} undo;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
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
|
||||
_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);
|
||||
if (node->code == jit_code_movi)
|
||||
|
|
758
jit/ia64-cpu.c
758
jit/ia64-cpu.c
File diff suppressed because it is too large
Load diff
404
jit/ia64-fpu.c
404
jit/ia64-fpu.c
|
@ -432,298 +432,298 @@ static void F16_(jit_state_t*,jit_word_t,
|
|||
#define movr_f(r0,r1) movr_d(r0,r1)
|
||||
#define movr_d(r0,r1) MOVF(r0,r1)
|
||||
#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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_d(r0,r1) FABS(r0,r1)
|
||||
#define negr_f(r0,r1) negr_d(r0,r1)
|
||||
#define negr_d(r0,r1) FNEG(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)
|
||||
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_d_f(r0,r1) FNORM_S(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)
|
||||
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_d_i(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)
|
||||
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 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 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 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 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 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 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 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 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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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 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)
|
||||
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)
|
||||
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 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)
|
||||
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)
|
||||
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 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)
|
||||
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)
|
||||
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 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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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)
|
||||
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
|
||||
|
||||
#if CODE
|
||||
|
@ -1014,13 +1014,13 @@ F16_(jit_state_t* _jit, jit_word_t _p,
|
|||
}
|
||||
|
||||
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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
if (_jitc->no_data) {
|
||||
data.f = *i0;
|
||||
|
@ -1034,13 +1034,13 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
|
|||
}
|
||||
|
||||
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 {
|
||||
jit_word_t w;
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
if (_jitc->no_data) {
|
||||
data.d = *i0;
|
||||
|
@ -1054,7 +1054,7 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
|
|||
}
|
||||
|
||||
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) */
|
||||
if (r1 >= 120)
|
||||
|
@ -1063,7 +1063,7 @@ _movr_w_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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) */
|
||||
if (r0 >= 120)
|
||||
|
@ -1072,7 +1072,7 @@ _movr_f_w(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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;
|
||||
|
||||
|
@ -1088,7 +1088,7 @@ _movi_f_w(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
|
|||
}
|
||||
|
||||
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) */
|
||||
if (r1 >= 120)
|
||||
|
@ -1097,7 +1097,7 @@ _movr_w_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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) */
|
||||
if (r0 >= 120)
|
||||
|
@ -1106,7 +1106,7 @@ _movr_d_w(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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 {
|
||||
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) \
|
||||
static void \
|
||||
_##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_int32_t reg = jit_get_reg(jit_class_fpr); \
|
||||
int32_t reg = jit_get_reg(jit_class_fpr); \
|
||||
movi_##type(rn(reg), i0); \
|
||||
name##r_##type(r0, r1, rn(reg)); \
|
||||
jit_unget_reg(reg); \
|
||||
|
@ -1138,11 +1138,11 @@ _##name##i_##type(jit_state_t *_jit, \
|
|||
#define fpr_bopi(name, type, size) \
|
||||
static jit_word_t \
|
||||
_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_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); \
|
||||
movi_##type(rn(reg), i1); \
|
||||
word = b##name##r_##type(i0, r0, rn(reg)); \
|
||||
|
@ -1167,9 +1167,9 @@ dopi(div)
|
|||
|
||||
/* translation from gcc -O0 */
|
||||
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);
|
||||
t1 = 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
|
||||
_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);
|
||||
t1 = 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
|
||||
_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);
|
||||
SETF_SIG(rn(reg), r1);
|
||||
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
|
||||
_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);
|
||||
SETF_SIG(rn(reg), r1);
|
||||
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
|
||||
_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);
|
||||
FCVT_FX_TRUNC(rn(reg), r1);
|
||||
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
|
||||
_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);
|
||||
MOVI_p(r0, 1, PR_6);
|
||||
|
@ -1254,7 +1254,7 @@ fopi(lt)
|
|||
dopi(lt)
|
||||
|
||||
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);
|
||||
MOVI_p(r0, 1, PR_6);
|
||||
|
@ -1264,7 +1264,7 @@ fopi(le)
|
|||
dopi(le)
|
||||
|
||||
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);
|
||||
MOVI_p(r0, 1, PR_6);
|
||||
|
@ -1274,7 +1274,7 @@ fopi(eq)
|
|||
dopi(eq)
|
||||
|
||||
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);
|
||||
MOVI_p(r0, 1, PR_6);
|
||||
|
@ -1284,7 +1284,7 @@ fopi(ge)
|
|||
dopi(ge)
|
||||
|
||||
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);
|
||||
MOVI_p(r0, 1, PR_6);
|
||||
|
@ -1294,7 +1294,7 @@ fopi(gt)
|
|||
dopi(gt)
|
||||
|
||||
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);
|
||||
MOV_p(r0, GR_0, PR_6);
|
||||
|
@ -1304,7 +1304,7 @@ fopi(ne)
|
|||
dopi(ne)
|
||||
|
||||
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);
|
||||
MOV_p(r0, GR_0, PR_6);
|
||||
|
@ -1314,7 +1314,7 @@ fopi(unlt)
|
|||
dopi(unlt)
|
||||
|
||||
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);
|
||||
MOV_p(r0, GR_0, PR_6);
|
||||
|
@ -1324,7 +1324,7 @@ fopi(unle)
|
|||
dopi(unle)
|
||||
|
||||
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);
|
||||
FCMP_LT(PR_8, PR_9, r1, r2);
|
||||
|
@ -1336,7 +1336,7 @@ fopi(uneq)
|
|||
dopi(uneq)
|
||||
|
||||
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);
|
||||
MOV_p(r0, GR_0, PR_6);
|
||||
|
@ -1346,7 +1346,7 @@ fopi(unge)
|
|||
dopi(unge)
|
||||
|
||||
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);
|
||||
MOV_p(r0, GR_0, PR_6);
|
||||
|
@ -1356,7 +1356,7 @@ fopi(ungt)
|
|||
dopi(ungt)
|
||||
|
||||
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);
|
||||
FCMP_EQ(PR_8, PR_9, r1, r2);
|
||||
|
@ -1368,7 +1368,7 @@ fopi(ltgt)
|
|||
dopi(ltgt)
|
||||
|
||||
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);
|
||||
MOV_p(r0, GR_0, PR_6);
|
||||
|
@ -1378,7 +1378,7 @@ fopi(ord)
|
|||
dopi(ord)
|
||||
|
||||
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);
|
||||
MOVI_p(r0, 1, PR_6);
|
||||
|
@ -1388,9 +1388,9 @@ fopi(unord)
|
|||
dopi(unord)
|
||||
|
||||
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);
|
||||
movi(rn(reg), i0);
|
||||
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
|
||||
_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);
|
||||
addr(rn(reg), r1, r2);
|
||||
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
|
||||
_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) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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);
|
||||
movi(rn(reg), i0);
|
||||
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
|
||||
_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);
|
||||
addr(rn(reg), r1, r2);
|
||||
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
|
||||
_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) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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);
|
||||
movi(rn(reg), i0);
|
||||
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
|
||||
_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);
|
||||
addr(rn(reg), r0, r1);
|
||||
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
|
||||
_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) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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);
|
||||
movi(rn(reg), i0);
|
||||
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
|
||||
_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);
|
||||
addr(rn(reg), r0, r1);
|
||||
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
|
||||
_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) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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;
|
||||
FCMP_LT(PR_6, PR_7, r0, r1);
|
||||
|
@ -1553,7 +1553,7 @@ fbopi(lt)
|
|||
dbopi(lt)
|
||||
|
||||
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;
|
||||
FCMP_LE(PR_6, PR_7, r0, r1);
|
||||
|
@ -1566,7 +1566,7 @@ fbopi(le)
|
|||
dbopi(le)
|
||||
|
||||
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;
|
||||
FCMP_EQ(PR_6, PR_7, r0, r1);
|
||||
|
@ -1579,7 +1579,7 @@ fbopi(eq)
|
|||
dbopi(eq)
|
||||
|
||||
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;
|
||||
FCMP_LE(PR_6, PR_7, r1, r0);
|
||||
|
@ -1592,7 +1592,7 @@ fbopi(ge)
|
|||
dbopi(ge)
|
||||
|
||||
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;
|
||||
FCMP_LT(PR_6, PR_7, r1, r0);
|
||||
|
@ -1605,7 +1605,7 @@ fbopi(gt)
|
|||
dbopi(gt)
|
||||
|
||||
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;
|
||||
FCMP_EQ(PR_6, PR_7, r0, r1);
|
||||
|
@ -1618,7 +1618,7 @@ fbopi(ne)
|
|||
dbopi(ne)
|
||||
|
||||
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;
|
||||
FCMP_LE(PR_6, PR_7, r1, r0);
|
||||
|
@ -1631,7 +1631,7 @@ fbopi(unlt)
|
|||
dbopi(unlt)
|
||||
|
||||
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;
|
||||
FCMP_LT(PR_6, PR_7, r1, r0);
|
||||
|
@ -1644,7 +1644,7 @@ fbopi(unle)
|
|||
dbopi(unle)
|
||||
|
||||
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 junord, jne;
|
||||
|
@ -1672,7 +1672,7 @@ fbopi(uneq)
|
|||
dbopi(uneq)
|
||||
|
||||
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;
|
||||
FCMP_LT(PR_6, PR_7, r0, r1);
|
||||
|
@ -1685,7 +1685,7 @@ fbopi(unge)
|
|||
dbopi(unge)
|
||||
|
||||
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;
|
||||
FCMP_LE(PR_6, PR_7, r0, r1);
|
||||
|
@ -1698,7 +1698,7 @@ fbopi(ungt)
|
|||
dbopi(ungt)
|
||||
|
||||
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 jeq, junord;
|
||||
|
@ -1725,7 +1725,7 @@ fbopi(ltgt)
|
|||
dbopi(ltgt)
|
||||
|
||||
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;
|
||||
FCMP_UNORD(PR_6, PR_7, r0, r1);
|
||||
|
@ -1738,7 +1738,7 @@ fbopi(ord)
|
|||
dbopi(ord)
|
||||
|
||||
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;
|
||||
FCMP_UNORD(PR_6, PR_7, r0, r1);
|
||||
|
@ -1751,7 +1751,7 @@ fbopi(unord)
|
|||
dbopi(unord)
|
||||
|
||||
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);
|
||||
/* Load argument. */
|
||||
|
|
106
jit/ia64.c
106
jit/ia64.c
|
@ -27,9 +27,9 @@
|
|||
# define I_DISP 0
|
||||
# define F_DISP 0
|
||||
#else
|
||||
# define C_DISP 8 - sizeof(jit_int8_t)
|
||||
# define S_DISP 8 - sizeof(jit_int16_t)
|
||||
# define I_DISP 8 - sizeof(jit_int32_t)
|
||||
# define C_DISP 8 - sizeof(int8_t)
|
||||
# define S_DISP 8 - sizeof(int16_t)
|
||||
# define I_DISP 8 - sizeof(int32_t)
|
||||
# define F_DISP 8 - sizeof(jit_float32_t)
|
||||
#endif
|
||||
|
||||
|
@ -251,7 +251,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -273,7 +273,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
_jitc->function->self.aoff = _jitc->function->self.alen = 0;
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -292,8 +292,8 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
switch (length) {
|
||||
|
@ -311,13 +311,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -344,7 +344,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_movr(JIT_RET, u);
|
||||
|
@ -362,7 +362,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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_movr_f(JIT_FRET, u);
|
||||
|
@ -380,7 +380,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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_movr_d(JIT_FRET, u);
|
||||
|
@ -433,7 +433,7 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_pushargr(u);
|
||||
|
@ -444,7 +444,7 @@ jit_node_t *
|
|||
_jit_arg(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi))
|
||||
offset = _jitc->function->self.argi++;
|
||||
|
@ -462,7 +462,7 @@ jit_node_t *
|
|||
_jit_arg_f(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi)) {
|
||||
if (!(_jitc->function->self.call & jit_call_varargs))
|
||||
|
@ -485,7 +485,7 @@ jit_node_t *
|
|||
_jit_arg_d(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi)) {
|
||||
if (!(_jitc->function->self.call & jit_call_varargs))
|
||||
|
@ -505,7 +505,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_wp(putargi, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
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
|
||||
_jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
||||
_jit_pushargr(jit_state_t *_jit, int32_t u)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargr, u);
|
||||
|
@ -731,7 +731,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargi, u);
|
||||
jit_link_prepare();
|
||||
|
@ -750,7 +750,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_f, u);
|
||||
|
@ -775,7 +775,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_f(pushargi_f, u);
|
||||
jit_link_prepare();
|
||||
|
@ -800,7 +800,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_d, u);
|
||||
|
@ -824,7 +824,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_d(pushargi_d, u);
|
||||
jit_link_prepare();
|
||||
|
@ -848,14 +848,14 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
|||
}
|
||||
|
||||
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 */
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
|
||||
_jit_finishr(jit_state_t *_jit, int32_t r0)
|
||||
{
|
||||
jit_node_t *call;
|
||||
assert(_jitc->function);
|
||||
|
@ -890,7 +890,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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_extr_c(r0, JIT_RET);
|
||||
|
@ -898,7 +898,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_uc(r0, JIT_RET);
|
||||
|
@ -906,7 +906,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_s(r0, JIT_RET);
|
||||
|
@ -914,7 +914,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_us(r0, JIT_RET);
|
||||
|
@ -922,7 +922,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_i(r0, JIT_RET);
|
||||
|
@ -930,7 +930,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_ui(r0, JIT_RET);
|
||||
|
@ -938,7 +938,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_movr(r0, JIT_RET);
|
||||
|
@ -946,7 +946,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_movr_f(r0, JIT_FRET);
|
||||
|
@ -954,7 +954,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_movr_d(r0, JIT_FRET);
|
||||
|
@ -967,15 +967,15 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *node;
|
||||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_int32_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t value;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_word_t word;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
#endif
|
||||
jit_int32_t patch_offset;
|
||||
int32_t patch_offset;
|
||||
jit_word_t prolog_offset;
|
||||
} undo;
|
||||
#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
|
||||
_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);
|
||||
if (node->code == jit_code_movi)
|
||||
|
|
156
jit/jit.c
156
jit/jit.c
|
@ -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)
|
||||
static jit_bool_t
|
||||
_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)
|
||||
static jit_bool_t
|
||||
_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)
|
||||
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)
|
||||
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)
|
||||
static void
|
||||
|
@ -154,13 +154,13 @@ _simplify(jit_state_t *_jit);
|
|||
#define jit_reg_static 0
|
||||
#define jit_reg_change 1
|
||||
#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,
|
||||
jit_int32_t regno);
|
||||
int32_t regno);
|
||||
|
||||
#define spill_reglive_p(node, regno) _spill_reglive_p(_jit, node, regno)
|
||||
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)
|
||||
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)
|
||||
static void
|
||||
_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
|
||||
|
@ -196,11 +196,11 @@ finish_jit(void)
|
|||
jit_finish_size();
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_get_reg(jit_state_t *_jit, jit_int32_t regspec)
|
||||
int32_t
|
||||
_jit_get_reg(jit_state_t *_jit, int32_t regspec)
|
||||
{
|
||||
jit_int32_t spec;
|
||||
jit_int32_t regno;
|
||||
int32_t spec;
|
||||
int32_t regno;
|
||||
|
||||
spec = regspec & ~(jit_class_chk|jit_class_nospill);
|
||||
if (spec & jit_class_named) {
|
||||
|
@ -311,7 +311,7 @@ fail:
|
|||
}
|
||||
|
||||
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);
|
||||
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_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);
|
||||
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
|
||||
_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);
|
||||
}
|
||||
|
||||
|
@ -389,7 +389,7 @@ jit_regset_set(jit_regset_t *u, jit_regset_t *v)
|
|||
}
|
||||
|
||||
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));
|
||||
|
||||
|
@ -436,7 +436,7 @@ jit_regset_set_p(jit_regset_t *u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (bit < 64)
|
||||
|
@ -450,7 +450,7 @@ jit_regset_clrbit(jit_regset_t *set, jit_int32_t bit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (bit < 64)
|
||||
|
@ -464,7 +464,7 @@ jit_regset_setbit(jit_regset_t *set, jit_int32_t bit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (bit < 64)
|
||||
|
@ -477,7 +477,7 @@ jit_regset_tstbit(jit_regset_t *set, jit_int32_t bit)
|
|||
}
|
||||
|
||||
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);
|
||||
for (; offset < 64; offset++) {
|
||||
|
@ -531,7 +531,7 @@ jit_regset_set(jit_regset_t *u, jit_regset_t *v)
|
|||
}
|
||||
|
||||
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));
|
||||
|
||||
|
@ -568,7 +568,7 @@ jit_regset_set_p(jit_regset_t *u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (bit < 64)
|
||||
|
@ -578,7 +578,7 @@ jit_regset_clrbit(jit_regset_t *set, jit_int32_t bit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (bit < 64)
|
||||
|
@ -588,7 +588,7 @@ jit_regset_setbit(jit_regset_t *set, jit_int32_t bit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (bit < 64)
|
||||
|
@ -598,7 +598,7 @@ jit_regset_tstbit(jit_regset_t *set, jit_int32_t bit)
|
|||
}
|
||||
|
||||
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);
|
||||
for (; offset < 64; offset++) {
|
||||
|
@ -614,7 +614,7 @@ jit_regset_scan1(jit_regset_t *set, jit_int32_t offset)
|
|||
|
||||
#else
|
||||
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;
|
||||
assert(offset >= 0 && offset <= 63);
|
||||
|
@ -631,7 +631,7 @@ jit_regset_scan1(jit_regset_t *set, jit_int32_t offset)
|
|||
#endif
|
||||
|
||||
void
|
||||
_jit_save(jit_state_t *_jit, jit_int32_t reg)
|
||||
_jit_save(jit_state_t *_jit, int32_t reg)
|
||||
{
|
||||
reg = jit_regno(reg);
|
||||
assert(!_jitc->realize);
|
||||
|
@ -639,7 +639,7 @@ _jit_save(jit_state_t *_jit, jit_int32_t reg)
|
|||
}
|
||||
|
||||
void
|
||||
_jit_load(jit_state_t *_jit, jit_int32_t reg)
|
||||
_jit_load(jit_state_t *_jit, int32_t reg)
|
||||
{
|
||||
jit_node_t *node;
|
||||
|
||||
|
@ -656,7 +656,7 @@ _jit_load(jit_state_t *_jit, jit_int32_t reg)
|
|||
static jit_word_t
|
||||
hash_data(const void *data, jit_word_t length)
|
||||
{
|
||||
const jit_uint8_t *ptr;
|
||||
const uint8_t *ptr;
|
||||
jit_word_t i, key;
|
||||
for (i = key = 0, ptr = data; i < length; 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_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_node_t *node;
|
||||
|
@ -769,10 +769,10 @@ static void
|
|||
_new_pool(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *list;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->pool.offset >= _jitc->pool.length) {
|
||||
jit_int32_t length;
|
||||
int32_t length;
|
||||
|
||||
length = _jitc->pool.length + 16;
|
||||
jit_realloc((jit_pointer_t *)&_jitc->pool.ptr,
|
||||
|
@ -932,7 +932,7 @@ jit_new_state(void)
|
|||
jit_alloc((jit_pointer_t *)&_jitc->spill,
|
||||
_jitc->reglen * sizeof(jit_node_t*));
|
||||
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,
|
||||
_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_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_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_int32_t
|
||||
int32_t
|
||||
_jit_classify(jit_state_t *_jit, jit_code_t code)
|
||||
{
|
||||
jit_int32_t mask;
|
||||
int32_t mask;
|
||||
|
||||
switch (code) {
|
||||
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
|
||||
_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)
|
||||
instr->v.p = address;
|
||||
|
@ -1626,7 +1626,7 @@ _jit_patch_abs(jit_state_t *_jit, jit_node_t *instr, jit_pointer_t address)
|
|||
void
|
||||
_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));
|
||||
instr->flag |= jit_flag_node;
|
||||
|
@ -1659,7 +1659,7 @@ void
|
|||
_jit_optimize(jit_state_t *_jit)
|
||||
{
|
||||
jit_bool_t jump;
|
||||
jit_int32_t mask;
|
||||
int32_t mask;
|
||||
jit_node_t *node;
|
||||
jit_block_t *block;
|
||||
jit_word_t offset;
|
||||
|
@ -1809,8 +1809,8 @@ _jit_optimize(jit_state_t *_jit)
|
|||
void
|
||||
_jit_reglive(jit_state_t *_jit, jit_node_t *node)
|
||||
{
|
||||
jit_int32_t spec;
|
||||
jit_int32_t value;
|
||||
int32_t spec;
|
||||
int32_t value;
|
||||
jit_block_t *block;
|
||||
|
||||
switch (node->code) {
|
||||
|
@ -1895,7 +1895,7 @@ _jit_reglive(jit_state_t *_jit, jit_node_t *node)
|
|||
}
|
||||
|
||||
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
|
||||
jit_size_prepare();
|
||||
|
@ -1915,7 +1915,7 @@ _jit_regarg_set(jit_state_t *_jit, jit_node_t *node, jit_int32_t value)
|
|||
}
|
||||
|
||||
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
|
||||
jit_size_collect(node);
|
||||
|
@ -1958,7 +1958,7 @@ _jit_realize(jit_state_t *_jit)
|
|||
void
|
||||
_jit_dataset(jit_state_t *_jit)
|
||||
{
|
||||
jit_uint8_t *ptr;
|
||||
uint8_t *ptr;
|
||||
jit_node_t *node;
|
||||
jit_word_t offset;
|
||||
#if defined(__sgi)
|
||||
|
@ -2184,21 +2184,21 @@ fail:
|
|||
}
|
||||
|
||||
void
|
||||
_jit_frame(jit_state_t *_jit, jit_int32_t frame)
|
||||
_jit_frame(jit_state_t *_jit, int32_t frame)
|
||||
{
|
||||
jit_trampoline(frame, 1);
|
||||
}
|
||||
|
||||
void
|
||||
_jit_tramp(jit_state_t *_jit, jit_int32_t frame)
|
||||
_jit_tramp(jit_state_t *_jit, int32_t frame)
|
||||
{
|
||||
jit_trampoline(frame, 0);
|
||||
}
|
||||
|
||||
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
|
||||
* 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_regset_t *live, jit_regset_t *mask, jit_bool_t recurse)
|
||||
{
|
||||
jit_int32_t spec;
|
||||
jit_int32_t regno;
|
||||
int32_t spec;
|
||||
int32_t regno;
|
||||
jit_regset_t ztmp;
|
||||
jit_regset_t zmask;
|
||||
unsigned long value;
|
||||
|
@ -2477,7 +2477,7 @@ _thread_jumps(jit_state_t *_jit)
|
|||
jit_node_t *prev;
|
||||
jit_node_t *node;
|
||||
jit_node_t *next;
|
||||
jit_int32_t mask;
|
||||
int32_t mask;
|
||||
|
||||
for (prev = node = _jitc->head; node;) {
|
||||
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 *prev;
|
||||
jit_word_t word;
|
||||
jit_int32_t spec;
|
||||
jit_int32_t regno;
|
||||
int32_t spec;
|
||||
int32_t regno;
|
||||
|
||||
if (jump) {
|
||||
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
|
||||
_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;
|
||||
jit_int32_t right;
|
||||
int32_t regno;
|
||||
int32_t right;
|
||||
jit_value_t *value;
|
||||
|
||||
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
|
||||
_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_int32_t spec;
|
||||
jit_int32_t regno;
|
||||
jit_int32_t offset;
|
||||
int32_t spec;
|
||||
int32_t regno;
|
||||
int32_t offset;
|
||||
|
||||
regno = jit_regno(node->u.w);
|
||||
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)
|
||||
{
|
||||
jit_value_t *value;
|
||||
jit_int32_t regno;
|
||||
jit_int32_t right;
|
||||
int32_t regno;
|
||||
int32_t right;
|
||||
|
||||
regno = jit_regno(node->u.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)
|
||||
{
|
||||
jit_value_t *value;
|
||||
jit_int32_t regno;
|
||||
jit_int32_t right;
|
||||
jit_int32_t offset;
|
||||
int32_t regno;
|
||||
int32_t right;
|
||||
int32_t offset;
|
||||
|
||||
regno = jit_regno(node->w.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
|
||||
* multiple ones by moving the save node */
|
||||
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 *temp;
|
||||
|
@ -3078,8 +3078,8 @@ _simplify(jit_state_t *_jit)
|
|||
jit_node_t *prev;
|
||||
jit_node_t *node;
|
||||
jit_node_t *next;
|
||||
jit_int32_t info;
|
||||
jit_int32_t regno;
|
||||
int32_t info;
|
||||
int32_t regno;
|
||||
|
||||
for (prev = NULL, node = _jitc->head; node; prev = node, 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_callr: case jit_code_calli:
|
||||
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);
|
||||
break;
|
||||
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,
|
||||
jit_int32_t regno)
|
||||
int32_t regno)
|
||||
{
|
||||
jit_int32_t value;
|
||||
int32_t value;
|
||||
|
||||
for (; node != link; node = node->next) {
|
||||
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
|
||||
* here, by simulating jit generation */
|
||||
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)) {
|
||||
bmp_zero();
|
||||
|
@ -3260,10 +3260,10 @@ _patch_registers(jit_state_t *_jit)
|
|||
jit_node_t *prev;
|
||||
jit_node_t *node;
|
||||
jit_node_t *next;
|
||||
jit_int32_t info;
|
||||
jit_int32_t spec;
|
||||
jit_int32_t regno;
|
||||
jit_int32_t value;
|
||||
int32_t info;
|
||||
int32_t spec;
|
||||
int32_t regno;
|
||||
int32_t value;
|
||||
|
||||
_jitc->function = NULL;
|
||||
|
||||
|
@ -3376,9 +3376,9 @@ _patch_registers(jit_state_t *_jit)
|
|||
|
||||
static void
|
||||
_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) {
|
||||
value = jit_classify(node->code);
|
||||
|
|
910
jit/mips-cpu.c
910
jit/mips-cpu.c
File diff suppressed because it is too large
Load diff
552
jit/mips-fpu.c
552
jit/mips-fpu.c
File diff suppressed because it is too large
Load diff
116
jit/mips.c
116
jit/mips.c
|
@ -41,9 +41,9 @@
|
|||
# define S_DISP 0
|
||||
# define I_DISP 0
|
||||
#else
|
||||
# define C_DISP STACK_SLOT - sizeof(jit_int8_t)
|
||||
# define S_DISP STACK_SLOT - sizeof(jit_int16_t)
|
||||
# define I_DISP STACK_SLOT - sizeof(jit_int32_t)
|
||||
# define C_DISP STACK_SLOT - sizeof(int8_t)
|
||||
# define S_DISP STACK_SLOT - sizeof(int16_t)
|
||||
# define I_DISP STACK_SLOT - sizeof(int32_t)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -169,7 +169,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -188,7 +188,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
_jitc->function->self.aoff = _jitc->function->self.alen = 0;
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -207,8 +207,8 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
switch (length) {
|
||||
|
@ -226,13 +226,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -259,7 +259,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_RET != u)
|
||||
|
@ -279,7 +279,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_FRET != u)
|
||||
|
@ -300,7 +300,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_FRET != u)
|
||||
|
@ -345,7 +345,7 @@ _jit_arg_register_p(jit_state_t *_jit, jit_node_t *u)
|
|||
static jit_node_t *
|
||||
_jit_make_arg(jit_state_t *_jit, jit_node_t *node)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
#if NEW_ABI
|
||||
if (jit_arg_reg_p(_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 *
|
||||
_jit_make_arg_f(jit_state_t *_jit, jit_node_t *node)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
#if NEW_ABI
|
||||
if (jit_arg_reg_p(_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 *
|
||||
_jit_make_arg_d(jit_state_t *_jit, jit_node_t *node)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
#if NEW_ABI
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi)) {
|
||||
offset = _jitc->function->self.argi++;
|
||||
|
@ -490,7 +490,7 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_pushargr(u);
|
||||
|
@ -519,7 +519,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_wp(putargi, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
#if NEW_ABI
|
||||
|
@ -715,7 +715,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
#if NEW_ABI
|
||||
|
@ -791,7 +791,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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_link_prepare();
|
||||
|
@ -822,7 +822,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
#if !NEW_ABI
|
||||
jit_word_t offset;
|
||||
#endif
|
||||
|
@ -858,7 +858,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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
|
||||
jit_word_t offset;
|
||||
|
@ -899,7 +899,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
#if !NEW_ABI
|
||||
jit_word_t offset;
|
||||
#endif
|
||||
|
@ -944,7 +944,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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
|
||||
jit_bool_t adjust;
|
||||
|
@ -992,7 +992,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
#if !NEW_ABI
|
||||
jit_bool_t adjust;
|
||||
jit_word_t offset;
|
||||
|
@ -1044,9 +1044,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
|
||||
_jit_finishr(jit_state_t *_jit, int32_t r0)
|
||||
{
|
||||
jit_node_t *call;
|
||||
assert(_jitc->function);
|
||||
|
@ -1112,31 +1112,31 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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 (r0 != JIT_RET)
|
||||
|
@ -1148,13 +1148,13 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
|
||||
#if __WORDSIZE == 64
|
||||
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);
|
||||
}
|
||||
|
||||
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)
|
||||
jit_movr(r0, JIT_RET);
|
||||
|
@ -1162,14 +1162,14 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
|
|||
#endif
|
||||
|
||||
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)
|
||||
jit_movr_f(r0, JIT_FRET);
|
||||
}
|
||||
|
||||
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)
|
||||
jit_movr_d(r0, JIT_FRET);
|
||||
|
@ -1181,15 +1181,15 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *node;
|
||||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_int32_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t value;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_word_t word;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
#endif
|
||||
jit_int32_t patch_offset;
|
||||
int32_t patch_offset;
|
||||
} undo;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
|
@ -1883,25 +1883,25 @@ jit_flush(void *fptr, void *tptr)
|
|||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
@ -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
|
||||
_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);
|
||||
if (node->code == jit_code_movi)
|
||||
|
|
802
jit/ppc-cpu.c
802
jit/ppc-cpu.c
File diff suppressed because it is too large
Load diff
382
jit/ppc-fpu.c
382
jit/ppc-fpu.c
|
@ -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 movr_f(r0,r1) movr_d(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)
|
||||
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)
|
||||
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_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_i(r0,r1) truncr_d_i(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
|
||||
# define truncr_d(r0,r1) truncr_d_i(r0,r1)
|
||||
# else
|
||||
# define truncr_d(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)
|
||||
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
|
||||
# define extr_d_f(r0,r1) FRSP(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_d(r0,r1,r2) FADD(r0,r1,r2)
|
||||
# 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)
|
||||
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 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 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 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 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 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 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 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 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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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 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)
|
||||
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)
|
||||
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 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)
|
||||
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)
|
||||
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 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)
|
||||
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)
|
||||
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 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)
|
||||
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)
|
||||
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)
|
||||
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
|
||||
|
||||
#if CODE
|
||||
|
@ -430,20 +430,20 @@ _FXFL(jit_state_t *_jit, int o, int m, int b, int x, int r)
|
|||
}
|
||||
|
||||
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)
|
||||
FMR(r0,r1);
|
||||
}
|
||||
|
||||
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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
if (_jitc->no_data) {
|
||||
data.f = *i0;
|
||||
|
@ -458,14 +458,14 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
|
|||
}
|
||||
|
||||
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 {
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
jit_word_t w;
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
if (_jitc->no_data) {
|
||||
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) */
|
||||
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
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
rshi(rn(reg), r1, 31);
|
||||
/* 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
|
||||
_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);
|
||||
FCTIWZ(rn(reg), r1);
|
||||
/* 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
|
||||
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);
|
||||
FCTIDZ(rn(reg), r1);
|
||||
/* 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) \
|
||||
static void \
|
||||
_##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_int32_t reg = jit_get_reg(jit_class_fpr); \
|
||||
int32_t reg = jit_get_reg(jit_class_fpr); \
|
||||
movi_##type(rn(reg), i0); \
|
||||
name##r_##type(r0, r1, rn(reg)); \
|
||||
jit_unget_reg(reg); \
|
||||
|
@ -545,11 +545,11 @@ _##name##i_##type(jit_state_t *_jit, \
|
|||
# define fpr_bopi(name, type, size) \
|
||||
static jit_word_t \
|
||||
_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_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); \
|
||||
movi_##type(rn(reg), i1); \
|
||||
word = b##name##r_##type(i0, r0, rn(reg)); \
|
||||
|
@ -573,7 +573,7 @@ fopi(div)
|
|||
dopi(div)
|
||||
|
||||
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);
|
||||
MFCR(r0);
|
||||
|
@ -583,7 +583,7 @@ fopi(lt)
|
|||
dopi(lt)
|
||||
|
||||
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);
|
||||
CREQV(CR_GT, CR_GT, CR_UN);
|
||||
|
@ -594,7 +594,7 @@ fopi(le)
|
|||
dopi(le)
|
||||
|
||||
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);
|
||||
MFCR(r0);
|
||||
|
@ -604,7 +604,7 @@ fopi(eq)
|
|||
dopi(eq)
|
||||
|
||||
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);
|
||||
CREQV(CR_LT, CR_LT, CR_UN);
|
||||
|
@ -615,7 +615,7 @@ fopi(ge)
|
|||
dopi(ge)
|
||||
|
||||
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);
|
||||
MFCR(r0);
|
||||
|
@ -625,7 +625,7 @@ fopi(gt)
|
|||
dopi(gt)
|
||||
|
||||
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);
|
||||
CRNOT(CR_EQ, CR_EQ);
|
||||
|
@ -636,7 +636,7 @@ fopi(ne)
|
|||
dopi(ne)
|
||||
|
||||
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);
|
||||
CROR(CR_LT, CR_LT, CR_UN);
|
||||
|
@ -647,7 +647,7 @@ fopi(unlt)
|
|||
dopi(unlt)
|
||||
|
||||
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);
|
||||
CRNOT(CR_GT, CR_GT);
|
||||
|
@ -658,7 +658,7 @@ fopi(unle)
|
|||
dopi(unle)
|
||||
|
||||
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);
|
||||
CROR(CR_EQ, CR_EQ, CR_UN);
|
||||
|
@ -669,7 +669,7 @@ fopi(uneq)
|
|||
dopi(uneq)
|
||||
|
||||
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);
|
||||
CRNOT(CR_LT, CR_LT);
|
||||
|
@ -680,7 +680,7 @@ fopi(unge)
|
|||
dopi(unge)
|
||||
|
||||
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);
|
||||
CROR(CR_GT, CR_GT, CR_UN);
|
||||
|
@ -691,7 +691,7 @@ fopi(ungt)
|
|||
dopi(ungt)
|
||||
|
||||
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);
|
||||
CROR(CR_GT, CR_GT, CR_LT);
|
||||
|
@ -702,7 +702,7 @@ fopi(ltgt)
|
|||
dopi(ltgt)
|
||||
|
||||
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);
|
||||
CRNOT(CR_UN, CR_UN);
|
||||
|
@ -713,7 +713,7 @@ fopi(ord)
|
|||
dopi(ord)
|
||||
|
||||
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);
|
||||
MFCR(r0);
|
||||
|
@ -723,7 +723,7 @@ fopi(unord)
|
|||
dopi(unord)
|
||||
|
||||
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;
|
||||
FCMPO(CR_0, r0, r1);
|
||||
|
@ -736,7 +736,7 @@ fbopi(lt)
|
|||
dbopi(lt)
|
||||
|
||||
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;
|
||||
FCMPO(CR_0, r0, r1);
|
||||
|
@ -750,7 +750,7 @@ fbopi(le)
|
|||
dbopi(le)
|
||||
|
||||
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;
|
||||
FCMPO(CR_0, r0, r1);
|
||||
|
@ -763,7 +763,7 @@ fbopi(eq)
|
|||
dbopi(eq)
|
||||
|
||||
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;
|
||||
FCMPO(CR_0, r0, r1);
|
||||
|
@ -777,7 +777,7 @@ fbopi(ge)
|
|||
dbopi(ge)
|
||||
|
||||
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;
|
||||
FCMPO(CR_0, r0, r1);
|
||||
|
@ -790,7 +790,7 @@ fbopi(gt)
|
|||
dbopi(gt)
|
||||
|
||||
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;
|
||||
FCMPO(CR_0, r0, r1);
|
||||
|
@ -803,7 +803,7 @@ fbopi(ne)
|
|||
dbopi(ne)
|
||||
|
||||
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;
|
||||
FCMPU(CR_0, r0, r1);
|
||||
|
@ -817,7 +817,7 @@ fbopi(unlt)
|
|||
dbopi(unlt)
|
||||
|
||||
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;
|
||||
FCMPU(CR_0, r0, r1);
|
||||
|
@ -830,7 +830,7 @@ fbopi(unle)
|
|||
dbopi(unle)
|
||||
|
||||
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;
|
||||
FCMPU(CR_0, r0, r1);
|
||||
|
@ -844,7 +844,7 @@ fbopi(uneq)
|
|||
dbopi(uneq)
|
||||
|
||||
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;
|
||||
FCMPU(CR_0, r0, r1);
|
||||
|
@ -857,7 +857,7 @@ fbopi(unge)
|
|||
dbopi(unge)
|
||||
|
||||
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;
|
||||
FCMPU(CR_0, r0, r1);
|
||||
|
@ -871,7 +871,7 @@ fbopi(ungt)
|
|||
dbopi(ungt)
|
||||
|
||||
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;
|
||||
FCMPU(CR_0, r0, r1);
|
||||
|
@ -885,7 +885,7 @@ fbopi(ltgt)
|
|||
dbopi(ltgt)
|
||||
|
||||
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;
|
||||
FCMPU(CR_0, r0, r1);
|
||||
|
@ -898,7 +898,7 @@ fbopi(ord)
|
|||
dbopi(ord)
|
||||
|
||||
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;
|
||||
FCMPU(CR_0, r0, r1);
|
||||
|
@ -911,16 +911,16 @@ fbopi(unord)
|
|||
dbopi(unord)
|
||||
|
||||
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_int32_t reg;
|
||||
int32_t reg;
|
||||
jit_word_t lo, hi;
|
||||
if (can_sign_extend_short_p(i0))
|
||||
LFS(r0, _R0_REGNO, i0);
|
||||
else if (can_sign_extend_int_p(i0)) {
|
||||
hi = (jit_int16_t)((i0 >> 16) + ((jit_uint16_t)i0 >> 15));
|
||||
lo = (jit_int16_t)(i0 - (hi << 16));
|
||||
hi = (int16_t)((i0 >> 16) + ((uint16_t)i0 >> 15));
|
||||
lo = (int16_t)(i0 - (hi << 16));
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr);
|
||||
LIS(rn(reg), hi);
|
||||
|
@ -937,16 +937,16 @@ _ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
|
|||
}
|
||||
|
||||
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_int32_t reg;
|
||||
int32_t reg;
|
||||
jit_word_t lo, hi;
|
||||
if (can_sign_extend_short_p(i0))
|
||||
LFD(r0, _R0_REGNO, i0);
|
||||
else if (can_sign_extend_int_p(i0)) {
|
||||
hi = (jit_int16_t)((i0 >> 16) + ((jit_uint16_t)i0 >> 15));
|
||||
lo = (jit_int16_t)(i0 - (hi << 16));
|
||||
hi = (int16_t)((i0 >> 16) + ((uint16_t)i0 >> 15));
|
||||
lo = (int16_t)(i0 - (hi << 16));
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr);
|
||||
LIS(rn(reg), hi);
|
||||
|
@ -963,9 +963,9 @@ _ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
|
|||
}
|
||||
|
||||
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 (r2 != _R0_REGNO)
|
||||
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
|
||||
_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 (r2 != _R0_REGNO)
|
||||
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
|
||||
_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)
|
||||
ldr_f(r0, r1);
|
||||
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
|
||||
_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)
|
||||
ldr_d(r0, r1);
|
||||
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
|
||||
_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_int32_t reg;
|
||||
int32_t reg;
|
||||
jit_word_t lo, hi;
|
||||
if (can_sign_extend_short_p(i0))
|
||||
STFS(r0, _R0_REGNO, i0);
|
||||
else if (can_sign_extend_int_p(i0)) {
|
||||
hi = (jit_int16_t)((i0 >> 16) + ((jit_uint16_t)i0 >> 15));
|
||||
lo = (jit_int16_t)(i0 - (hi << 16));
|
||||
hi = (int16_t)((i0 >> 16) + ((uint16_t)i0 >> 15));
|
||||
lo = (int16_t)(i0 - (hi << 16));
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr);
|
||||
LIS(rn(reg), hi);
|
||||
|
@ -1073,16 +1073,16 @@ _sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_int32_t reg;
|
||||
int32_t reg;
|
||||
jit_word_t lo, hi;
|
||||
if (can_sign_extend_short_p(i0))
|
||||
STFD(r0, _R0_REGNO, i0);
|
||||
else if (can_sign_extend_int_p(i0)) {
|
||||
hi = (jit_int16_t)((i0 >> 16) + ((jit_uint16_t)i0 >> 15));
|
||||
lo = (jit_int16_t)(i0 - (hi << 16));
|
||||
hi = (int16_t)((i0 >> 16) + ((uint16_t)i0 >> 15));
|
||||
lo = (int16_t)(i0 - (hi << 16));
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
if ((inv = reg == _R0)) reg = jit_get_reg(jit_class_gpr);
|
||||
LIS(rn(reg), hi);
|
||||
|
@ -1099,9 +1099,9 @@ _sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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 (r1 != _R0_REGNO)
|
||||
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
|
||||
_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 (r1 != _R0_REGNO)
|
||||
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
|
||||
_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)
|
||||
str_f(r0, r1);
|
||||
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
|
||||
_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)
|
||||
str_d(r0, r1);
|
||||
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
|
||||
_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. */
|
||||
ldr_d(r0, r1);
|
||||
|
|
114
jit/ppc.c
114
jit/ppc.c
|
@ -25,9 +25,9 @@
|
|||
# define I_DISP 0
|
||||
# define F_DISP 0
|
||||
#else
|
||||
# define C_DISP (__WORDSIZE >> 3) - sizeof(jit_int8_t)
|
||||
# define S_DISP (__WORDSIZE >> 3) - sizeof(jit_int16_t)
|
||||
# define I_DISP (__WORDSIZE >> 3) - sizeof(jit_int32_t)
|
||||
# define C_DISP (__WORDSIZE >> 3) - sizeof(int8_t)
|
||||
# define S_DISP (__WORDSIZE >> 3) - sizeof(int16_t)
|
||||
# define I_DISP (__WORDSIZE >> 3) - sizeof(int32_t)
|
||||
# define F_DISP (__WORDSIZE >> 3) - sizeof(jit_float32_t)
|
||||
#endif
|
||||
|
||||
|
@ -145,7 +145,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -166,7 +166,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
_jitc->function->self.aoff = alloca_offset - 8;
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -185,8 +185,8 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
switch (length) {
|
||||
|
@ -204,13 +204,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
r0 = jit_get_reg(jit_class_gpr);
|
||||
|
@ -241,7 +241,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_RET != u)
|
||||
|
@ -261,7 +261,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_RET != u)
|
||||
|
@ -282,7 +282,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_FRET != u)
|
||||
|
@ -341,7 +341,7 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_pushargr(u);
|
||||
|
@ -352,7 +352,7 @@ jit_node_t *
|
|||
_jit_arg(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi))
|
||||
offset = _jitc->function->self.argi++;
|
||||
|
@ -369,7 +369,7 @@ jit_node_t *
|
|||
_jit_arg_f(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_f_reg_p(_jitc->function->self.argf))
|
||||
offset = _jitc->function->self.argf++;
|
||||
|
@ -393,7 +393,7 @@ jit_node_t *
|
|||
_jit_arg_d(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_f_reg_p(_jitc->function->self.argf))
|
||||
offset = _jitc->function->self.argf++;
|
||||
|
@ -414,7 +414,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
assert(v->code == jit_code_arg);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
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
|
||||
_jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
||||
_jit_pushargr(jit_state_t *_jit, int32_t u)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargr, u);
|
||||
|
@ -634,7 +634,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargi, u);
|
||||
jit_link_prepare();
|
||||
|
@ -653,7 +653,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_f, u);
|
||||
|
@ -699,7 +699,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_f(pushargi_f, u);
|
||||
jit_link_prepare();
|
||||
|
@ -745,7 +745,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_d, u);
|
||||
|
@ -796,7 +796,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_d(pushargi_d, u);
|
||||
jit_link_prepare();
|
||||
|
@ -852,9 +852,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (spec & jit_class_arg) {
|
||||
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
|
||||
_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
|
||||
_jit_finishr(jit_state_t *_jit, int32_t r0)
|
||||
{
|
||||
jit_node_t *call;
|
||||
assert(_jitc->function);
|
||||
|
@ -905,7 +905,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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_extr_c(r0, JIT_RET);
|
||||
|
@ -913,7 +913,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_uc(r0, JIT_RET);
|
||||
|
@ -921,7 +921,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_s(r0, JIT_RET);
|
||||
|
@ -929,7 +929,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_us(r0, JIT_RET);
|
||||
|
@ -937,7 +937,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
#if __WORDSIZE == 32
|
||||
|
@ -951,7 +951,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
|
||||
#if __WORDSIZE == 64
|
||||
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_extr_ui(r0, JIT_RET);
|
||||
|
@ -959,7 +959,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_RET)
|
||||
|
@ -969,7 +969,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
|
|||
#endif
|
||||
|
||||
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_retval_d(r0);
|
||||
|
@ -977,7 +977,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_FRET)
|
||||
|
@ -991,8 +991,8 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *node;
|
||||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_int32_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t value;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_word_t word;
|
||||
|
@ -1691,7 +1691,7 @@ jit_flush(void *fptr, void *tptr)
|
|||
}
|
||||
|
||||
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
|
||||
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
|
||||
_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
|
||||
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
|
||||
_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);
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
|
@ -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
|
||||
_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);
|
||||
if (node->code == jit_code_movi)
|
||||
|
|
202
jit/private.h
202
jit/private.h
|
@ -55,7 +55,7 @@
|
|||
# define JIT_RET _RAX
|
||||
# if __X32
|
||||
# define JIT_FRET _ST0
|
||||
typedef jit_uint32_t jit_regset_t;
|
||||
typedef uint32_t jit_regset_t;
|
||||
# else
|
||||
# if __CYGWIN__
|
||||
# define JIT_RA0 _RCX
|
||||
|
@ -64,7 +64,7 @@ typedef jit_uint32_t jit_regset_t;
|
|||
# endif
|
||||
# define JIT_FA0 _XMM0
|
||||
# define JIT_FRET _XMM0
|
||||
typedef jit_uint64_t jit_regset_t;
|
||||
typedef uint64_t jit_regset_t;
|
||||
# endif
|
||||
#elif defined(__mips__)
|
||||
# define JIT_RA0 _A0
|
||||
|
@ -72,7 +72,7 @@ typedef jit_uint64_t jit_regset_t;
|
|||
# define JIT_SP _SP
|
||||
# define JIT_RET _V0
|
||||
# define JIT_FRET _F0
|
||||
typedef jit_uint64_t jit_regset_t;
|
||||
typedef uint64_t jit_regset_t;
|
||||
#elif defined(__arm__)
|
||||
# define JIT_RA0 _R0
|
||||
# define JIT_FA0 _D0
|
||||
|
@ -83,24 +83,24 @@ typedef jit_uint64_t jit_regset_t;
|
|||
# else
|
||||
# define JIT_FRET _R0
|
||||
# endif
|
||||
typedef jit_uint64_t jit_regset_t;
|
||||
typedef uint64_t jit_regset_t;
|
||||
#elif defined(__ppc__) || defined(__powerpc__)
|
||||
# define JIT_RA0 _R3
|
||||
# define JIT_FA0 _F1
|
||||
# define JIT_SP _R1
|
||||
# define JIT_RET _R3
|
||||
# define JIT_FRET _F1
|
||||
typedef jit_uint64_t jit_regset_t;
|
||||
typedef uint64_t jit_regset_t;
|
||||
#elif defined(__sparc__)
|
||||
# define JIT_SP _SP
|
||||
# define JIT_RET _I0
|
||||
# define JIT_FRET _F0
|
||||
# if __WORDSIZE == 32
|
||||
typedef jit_uint64_t jit_regset_t;
|
||||
typedef uint64_t jit_regset_t;
|
||||
# else
|
||||
typedef struct {
|
||||
jit_uint64_t rl;
|
||||
jit_uint64_t rh;
|
||||
uint64_t rl;
|
||||
uint64_t rh;
|
||||
} jit_regset_t;
|
||||
# endif
|
||||
#elif defined(__ia64__)
|
||||
|
@ -108,38 +108,38 @@ typedef struct {
|
|||
# define JIT_RET _R8
|
||||
# define JIT_FRET _F8
|
||||
typedef struct {
|
||||
jit_uint64_t rl;
|
||||
jit_uint64_t rh;
|
||||
jit_uint64_t fl;
|
||||
jit_uint64_t fh;
|
||||
uint64_t rl;
|
||||
uint64_t rh;
|
||||
uint64_t fl;
|
||||
uint64_t fh;
|
||||
} jit_regset_t;
|
||||
#elif defined(__hppa__)
|
||||
# define JIT_SP _R30
|
||||
# define JIT_RET _R28
|
||||
# define JIT_FRET _F4
|
||||
typedef jit_uint64_t jit_regset_t;
|
||||
typedef uint64_t jit_regset_t;
|
||||
#elif defined(__aarch64__)
|
||||
# define JIT_RA0 _R0
|
||||
# define JIT_FA0 _V0
|
||||
# define JIT_SP _SP
|
||||
# define JIT_RET _R0
|
||||
# define JIT_FRET _V0
|
||||
typedef jit_uint64_t jit_regset_t;
|
||||
typedef uint64_t jit_regset_t;
|
||||
#elif defined(__s390__) || defined(__s390x__)
|
||||
# define JIT_SP _R15
|
||||
# define JIT_RET _R2
|
||||
# define JIT_FRET _F0
|
||||
typedef jit_uint32_t jit_regset_t;
|
||||
typedef uint32_t jit_regset_t;
|
||||
#elif defined(__alpha__)
|
||||
# define JIT_SP _SP
|
||||
# define JIT_RET _V0
|
||||
# define JIT_FRET _F0
|
||||
typedef jit_uint64_t jit_regset_t;
|
||||
typedef uint64_t jit_regset_t;
|
||||
#endif
|
||||
|
||||
#define jit_data(u,v,w) _jit_data(_jit,u,v,w)
|
||||
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]))
|
||||
|
||||
|
@ -278,7 +278,7 @@ extern void
|
|||
jit_regset_set(jit_regset_t*, jit_regset_t*);
|
||||
|
||||
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
|
||||
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*);
|
||||
|
||||
extern void
|
||||
jit_regset_clrbit(jit_regset_t*, jit_int32_t);
|
||||
jit_regset_clrbit(jit_regset_t*, int32_t);
|
||||
|
||||
extern void
|
||||
jit_regset_setbit(jit_regset_t*, jit_int32_t);
|
||||
jit_regset_setbit(jit_regset_t*, int32_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
|
||||
# define jit_regset_new(set) \
|
||||
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)
|
||||
#endif
|
||||
extern unsigned long
|
||||
jit_regset_scan1(jit_regset_t*, jit_int32_t);
|
||||
jit_regset_scan1(jit_regset_t*, int32_t);
|
||||
|
||||
#define jit_reglive_setup() \
|
||||
do { \
|
||||
|
@ -353,11 +353,11 @@ typedef struct jit_data_info jit_data_info_t;
|
|||
union jit_data {
|
||||
struct {
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
jit_int32_t l;
|
||||
jit_int32_t h;
|
||||
int32_t l;
|
||||
int32_t h;
|
||||
#else
|
||||
jit_int32_t h;
|
||||
jit_int32_t l;
|
||||
int32_t h;
|
||||
int32_t l;
|
||||
#endif
|
||||
} q;
|
||||
jit_word_t w;
|
||||
|
@ -368,7 +368,7 @@ union jit_data {
|
|||
};
|
||||
|
||||
struct jit_note {
|
||||
jit_uint8_t *code;
|
||||
uint8_t *code;
|
||||
char *name;
|
||||
jit_line_t *lines;
|
||||
jit_word_t length;
|
||||
|
@ -377,16 +377,16 @@ struct jit_note {
|
|||
|
||||
struct jit_line {
|
||||
char *file;
|
||||
jit_int32_t *linenos;
|
||||
jit_int32_t *offsets;
|
||||
int32_t *linenos;
|
||||
int32_t *offsets;
|
||||
jit_word_t length;
|
||||
};
|
||||
|
||||
struct jit_node {
|
||||
jit_node_t *next;
|
||||
jit_code_t code;
|
||||
jit_uint16_t flag;
|
||||
jit_uint16_t offset; /* Used if DEVEL_DISASSEMBLER */
|
||||
uint16_t flag;
|
||||
uint16_t offset; /* Used if DEVEL_DISASSEMBLER */
|
||||
jit_data_t u;
|
||||
jit_data_t v;
|
||||
jit_data_t w;
|
||||
|
@ -401,7 +401,7 @@ struct jit_block {
|
|||
};
|
||||
|
||||
struct jit_value {
|
||||
jit_int32_t kind;
|
||||
int32_t kind;
|
||||
jit_code_t code;
|
||||
jit_data_t base;
|
||||
jit_data_t disp;
|
||||
|
@ -424,76 +424,76 @@ struct jit_data_info {
|
|||
|
||||
struct jit_function {
|
||||
struct {
|
||||
jit_int32_t argi;
|
||||
jit_int32_t argf;
|
||||
jit_int32_t size;
|
||||
jit_int32_t aoff;
|
||||
jit_int32_t alen;
|
||||
jit_int32_t call;
|
||||
jit_int32_t argn; /* for debug output */
|
||||
int32_t argi;
|
||||
int32_t argf;
|
||||
int32_t size;
|
||||
int32_t aoff;
|
||||
int32_t alen;
|
||||
int32_t call;
|
||||
int32_t argn; /* for debug output */
|
||||
} self;
|
||||
struct {
|
||||
jit_int32_t argi;
|
||||
jit_int32_t argf;
|
||||
jit_int32_t size;
|
||||
jit_int32_t call;
|
||||
int32_t argi;
|
||||
int32_t argf;
|
||||
int32_t size;
|
||||
int32_t call;
|
||||
} call;
|
||||
jit_node_t *prolog;
|
||||
jit_node_t *epilog;
|
||||
jit_int32_t *regoff;
|
||||
int32_t *regoff;
|
||||
jit_regset_t regset;
|
||||
jit_int32_t stack;
|
||||
int32_t stack;
|
||||
|
||||
/* Helper for common jit generation pattern, used in GNU Smalltalk
|
||||
* and possibly others, where a static frame layout is required or
|
||||
* assumed. */
|
||||
jit_int32_t frame;
|
||||
jit_uint32_t define_frame : 1;
|
||||
jit_uint32_t assume_frame : 1;
|
||||
int32_t frame;
|
||||
uint32_t define_frame : 1;
|
||||
uint32_t assume_frame : 1;
|
||||
|
||||
/* alloca offset offset */
|
||||
jit_int32_t aoffoff;
|
||||
int32_t aoffoff;
|
||||
/* uses allocar flag */
|
||||
jit_uint32_t allocar : 1;
|
||||
uint32_t allocar : 1;
|
||||
|
||||
/* varargs state offsets */
|
||||
jit_int32_t vaoff; /* offset of jit_va_list */
|
||||
jit_int32_t vagp; /* first gp va argument */
|
||||
jit_int32_t vafp; /* first fp va argument */
|
||||
int32_t vaoff; /* offset of jit_va_list */
|
||||
int32_t vagp; /* first gp va argument */
|
||||
int32_t vafp; /* first fp va argument */
|
||||
};
|
||||
|
||||
/* data used only during jit generation */
|
||||
struct jit_compiler {
|
||||
#if __ia64__
|
||||
struct {
|
||||
jit_uint64_t i : 41;
|
||||
jit_uint64_t t : 4;
|
||||
uint64_t i : 41;
|
||||
uint64_t t : 4;
|
||||
} inst[3];
|
||||
jit_regset_t regs; /* changed regs since last stop */
|
||||
jit_int32_t pred; /* changed preds last stop */
|
||||
jit_int32_t ioff; /* offset in inst vector */
|
||||
jit_int32_t rout; /* first output register */
|
||||
jit_int32_t breg; /* base register for prolog/epilog */
|
||||
int32_t pred; /* changed preds last stop */
|
||||
int32_t ioff; /* offset in inst vector */
|
||||
int32_t rout; /* first output register */
|
||||
int32_t breg; /* base register for prolog/epilog */
|
||||
#endif
|
||||
#if __mips__ || __ia64__ || __alpha__ || (__sparc__ && __WORDSIZE == 64)
|
||||
jit_int32_t carry;
|
||||
int32_t carry;
|
||||
#define jit_carry _jitc->carry
|
||||
#endif
|
||||
jit_node_t *head;
|
||||
jit_node_t *tail;
|
||||
jit_node_t *prepare; /* inside prepare/finish* block */
|
||||
jit_uint32_t realize : 1; /* jit_realize() called? */
|
||||
jit_uint32_t dataset : 1; /* jit_dataset() called? */
|
||||
jit_uint32_t done : 1; /* emit state finished */
|
||||
jit_uint32_t emit : 1; /* emit state entered */
|
||||
jit_uint32_t again : 1; /* start over emiting function */
|
||||
jit_uint32_t synth : 8; /* emiting synthesized instructions */
|
||||
uint32_t realize : 1; /* jit_realize() called? */
|
||||
uint32_t dataset : 1; /* jit_dataset() called? */
|
||||
uint32_t done : 1; /* emit state finished */
|
||||
uint32_t emit : 1; /* emit state entered */
|
||||
uint32_t again : 1; /* start over emiting function */
|
||||
uint32_t synth : 8; /* emiting synthesized instructions */
|
||||
#if DEBUG
|
||||
jit_uint32_t getreg : 1;
|
||||
uint32_t getreg : 1;
|
||||
#endif
|
||||
jit_uint32_t no_data : 1;
|
||||
jit_uint32_t no_note : 1;
|
||||
jit_int32_t reglen; /* number of registers */
|
||||
uint32_t no_data : 1;
|
||||
uint32_t no_note : 1;
|
||||
int32_t reglen; /* number of registers */
|
||||
jit_regset_t regarg; /* cannot allocate */
|
||||
jit_regset_t regsav; /* automatic spill only once */
|
||||
jit_regset_t reglive; /* known live registers at some point */
|
||||
|
@ -503,17 +503,17 @@ struct jit_compiler {
|
|||
jit_word_t length;
|
||||
} blockmask; /* mask of visited basic blocks */
|
||||
struct {
|
||||
jit_uint8_t *end;
|
||||
uint8_t *end;
|
||||
} code;
|
||||
struct {
|
||||
jit_uint8_t *ptr;
|
||||
uint8_t *ptr;
|
||||
jit_node_t **table; /* very simple hash table */
|
||||
jit_word_t size; /* number of vectors in table */
|
||||
jit_word_t count; /* number of hash table entries */
|
||||
jit_word_t offset; /* offset in bytes in ptr */
|
||||
} data;
|
||||
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 */
|
||||
struct {
|
||||
jit_block_t *ptr;
|
||||
|
@ -544,11 +544,11 @@ struct jit_compiler {
|
|||
jit_word_t size;
|
||||
jit_node_t *name;
|
||||
jit_node_t *note;
|
||||
jit_uint8_t *base;
|
||||
uint8_t *base;
|
||||
} note;
|
||||
#if __arm__
|
||||
/* prevent using thumb instructions that set flags? */
|
||||
jit_uint32_t no_set_flags : 1;
|
||||
uint32_t no_set_flags : 1;
|
||||
# if DISASSEMBLER
|
||||
struct {
|
||||
jit_data_info_t *ptr;
|
||||
|
@ -565,11 +565,11 @@ struct jit_compiler {
|
|||
* test cases start with a "jmpi main" call. */
|
||||
jit_uword_t thumb;
|
||||
struct {
|
||||
jit_uint8_t *data; /* pointer to code */
|
||||
uint8_t *data; /* pointer to code */
|
||||
jit_word_t size; /* size data */
|
||||
jit_word_t offset; /* pending patches */
|
||||
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];
|
||||
} consts;
|
||||
#elif __powerpc__ || __ia64__
|
||||
|
@ -589,25 +589,25 @@ struct jit_compiler {
|
|||
/* Global flag for code buffer heuristic size computation */
|
||||
jit_word_t mult;
|
||||
/* Pointer to code to prevent miscalculation if reallocating buffer */
|
||||
jit_uint8_t *cptr;
|
||||
uint8_t *cptr;
|
||||
#endif
|
||||
};
|
||||
|
||||
#define _jitc _jit->comp
|
||||
struct jit_state {
|
||||
union {
|
||||
jit_uint8_t *uc;
|
||||
jit_uint16_t *us;
|
||||
jit_uint32_t *ui;
|
||||
jit_uint64_t *ul;
|
||||
uint8_t *uc;
|
||||
uint16_t *us;
|
||||
uint32_t *ui;
|
||||
uint64_t *ul;
|
||||
jit_word_t w;
|
||||
} pc;
|
||||
struct {
|
||||
jit_uint8_t *ptr;
|
||||
uint8_t *ptr;
|
||||
jit_word_t length;
|
||||
} code;
|
||||
struct {
|
||||
jit_uint8_t *ptr;
|
||||
uint8_t *ptr;
|
||||
jit_word_t length;
|
||||
} data;
|
||||
struct {
|
||||
|
@ -616,8 +616,8 @@ struct jit_state {
|
|||
} note;
|
||||
jit_compiler_t *comp;
|
||||
/* Flags to know if user did set the code and data buffers */
|
||||
jit_uint32_t user_code : 1;
|
||||
jit_uint32_t user_data : 1;
|
||||
uint32_t user_code : 1;
|
||||
uint32_t user_data : 1;
|
||||
};
|
||||
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
extern jit_int32_t
|
||||
_jit_get_reg(jit_state_t*, jit_int32_t);
|
||||
extern int32_t
|
||||
_jit_get_reg(jit_state_t*, int32_t);
|
||||
|
||||
#define jit_unget_reg(r) _jit_unget_reg(_jit,r)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
extern void
|
||||
_jit_optimize(jit_state_t*);
|
||||
|
||||
#define jit_classify(code) _jit_classify(_jit, code)
|
||||
extern jit_int32_t
|
||||
extern int32_t
|
||||
_jit_classify(jit_state_t*, jit_code_t);
|
||||
|
||||
#define jit_regarg_p(n, r) _jit_regarg_p(_jit, n, r)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_finish_debug(void);
|
||||
|
@ -721,7 +721,7 @@ extern void jit_finish_debug(void);
|
|||
extern void jit_init_note(void);
|
||||
extern void jit_finish_note(void);
|
||||
#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)
|
||||
extern void _jit_annotate(jit_state_t*);
|
||||
|
||||
|
|
758
jit/s390-cpu.c
758
jit/s390-cpu.c
File diff suppressed because it is too large
Load diff
324
jit/s390-fpu.c
324
jit/s390-fpu.c
|
@ -286,66 +286,66 @@
|
|||
# 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)
|
||||
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)
|
||||
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)
|
||||
static void _fr(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t);
|
||||
static void _fr(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_int32_t);
|
||||
# define dr(cc,r0,r1,r2) _dr(_jit,cc,r0,r1,r2)
|
||||
static void _dr(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_int32_t);
|
||||
static void _dr(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_int32_t);
|
||||
# define fi(cc,r0,r1,i0) _fi(_jit,cc,r0,r1,i0)
|
||||
static void _fi(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_float32_t*);
|
||||
static void _fi(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_float32_t*);
|
||||
# define di(cc,r0,r1,i0) _di(_jit,cc,r0,r1,i0)
|
||||
static void _di(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_float64_t*);
|
||||
static void _di(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_float64_t*);
|
||||
# define bfr(cc,i0,r0,r1) _bfr(_jit,cc,i0,r0,r1)
|
||||
static void _bfr(jit_state_t*,jit_int32_t,
|
||||
jit_word_t,jit_int32_t,jit_int32_t);
|
||||
static void _bfr(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_int32_t);
|
||||
# define bdr(cc,i0,r0,r1) _bdr(_jit,cc,i0,r0,r1)
|
||||
static void _bdr(jit_state_t*,jit_int32_t,
|
||||
jit_word_t,jit_int32_t,jit_int32_t);
|
||||
static void _bdr(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_int32_t);
|
||||
# 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,
|
||||
jit_word_t,jit_int32_t,jit_int32_t);
|
||||
static jit_word_t _bfr_p(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_int32_t);
|
||||
# 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,
|
||||
jit_word_t,jit_int32_t,jit_int32_t);
|
||||
static jit_word_t _bdr_p(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_int32_t);
|
||||
# define bfi(cc,i0,r0,i1) _bfi(_jit,cc,i0,r0,i1)
|
||||
static void _bfi(jit_state_t*,jit_int32_t,
|
||||
jit_word_t,jit_int32_t,jit_float32_t*);
|
||||
static void _bfi(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_float32_t*);
|
||||
# define bdi(cc,i0,r0,i1) _bdi(_jit,cc,i0,r0,i1)
|
||||
static void _bdi(jit_state_t*,jit_int32_t,
|
||||
jit_word_t,jit_int32_t,jit_float64_t*);
|
||||
static void _bdi(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_float64_t*);
|
||||
# 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,
|
||||
jit_word_t,jit_int32_t,jit_float32_t*);
|
||||
static jit_word_t _bfi_p(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_float32_t*);
|
||||
# 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,
|
||||
jit_word_t,jit_int32_t,jit_float64_t*);
|
||||
static jit_word_t _bdi_p(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_float64_t*);
|
||||
# define buneqr(db,i0,r0,r1) _buneqr(_jit,db,i0,r0,r1)
|
||||
static jit_word_t _buneqr(jit_state_t*,jit_int32_t,
|
||||
jit_word_t,jit_int32_t,jit_int32_t);
|
||||
static jit_word_t _buneqr(jit_state_t*,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)
|
||||
static jit_word_t _buneqi(jit_state_t*,jit_int32_t,
|
||||
jit_word_t,jit_int32_t,jit_word_t);
|
||||
static jit_word_t _buneqi(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_word_t);
|
||||
# define bltgtr(db,i0,r0,r1) _bltgtr(_jit,db,i0,r0,r1)
|
||||
static jit_word_t _bltgtr(jit_state_t*,jit_int32_t,
|
||||
jit_word_t,jit_int32_t,jit_int32_t);
|
||||
static jit_word_t _bltgtr(jit_state_t*,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)
|
||||
static jit_word_t _bltgti(jit_state_t*,jit_int32_t,
|
||||
jit_word_t,jit_int32_t,jit_word_t);
|
||||
static jit_word_t _bltgti(jit_state_t*,int32_t,
|
||||
jit_word_t,int32_t,jit_word_t);
|
||||
# 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)
|
||||
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)
|
||||
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)
|
||||
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_d(r0,r1) LPDBR(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_f_d(r0,r1) LDEBR(r0,r1)
|
||||
# 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 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 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 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 rsbr_f(r0,r1,r2) subr_f(r0,r2,r1)
|
||||
# define rsbi_f(r0,r1,i0) fp(rsb,r0,r1,i0)
|
||||
# define rsbr_d(r0,r1,r2) subr_d(r0,r2,r1)
|
||||
# define rsbi_d(r0,r1,i0) dp(rsb,r0,r1,i0)
|
||||
# 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 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 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 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 ldr_f(r0,r1) LE(r0,0,0,r1)
|
||||
# define ldr_d(r0,r1) LD(r0,0,0,r1)
|
||||
# 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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_d(r0,r1) STD(r1,0,0,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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_d(r0,r1,r2) dr(CC_L,r0,r1,r2)
|
||||
# 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_d(r0,r1,i0) di(CC_NH,r0,r1,i0)
|
||||
# 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)
|
||||
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_d(r0,r1,i0) dp(uneq,r0,r1,i0)
|
||||
# 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_d(r0,r1,i0) di(CC_NLE,r0,r1,i0)
|
||||
# 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)
|
||||
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_d(r0,r1,i0) dp(ltgt,r0,r1,i0)
|
||||
# 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_d_p(i0,r0,i1) bdi_p(CC_O,i0,r0,i1)
|
||||
# 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
|
||||
|
||||
#if CODE
|
||||
static void
|
||||
_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);
|
||||
movi_f(rn(reg), i0);
|
||||
switch (code) {
|
||||
|
@ -622,9 +622,9 @@ _fp(jit_state_t *_jit, jit_code_t code,
|
|||
|
||||
static void
|
||||
_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);
|
||||
movi_d(rn(reg), i0);
|
||||
switch (code) {
|
||||
|
@ -641,8 +641,8 @@ _dp(jit_state_t *_jit, jit_code_t code,
|
|||
}
|
||||
|
||||
static void
|
||||
_fr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
_fr(jit_state_t *_jit, int32_t cc,
|
||||
int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
{
|
||||
jit_word_t w;
|
||||
LGHI(r0, 1);
|
||||
|
@ -654,8 +654,8 @@ _fr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static void
|
||||
_dr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
_dr(jit_state_t *_jit, int32_t cc,
|
||||
int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
{
|
||||
jit_word_t w;
|
||||
LGHI(r0, 1);
|
||||
|
@ -667,10 +667,10 @@ _dr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static void
|
||||
_fi(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0)
|
||||
_fi(jit_state_t *_jit, int32_t cc,
|
||||
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);
|
||||
movi_f(rn(reg), i0);
|
||||
fr(cc, r0, r1, rn(reg));
|
||||
|
@ -678,10 +678,10 @@ _fi(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static void
|
||||
_di(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0)
|
||||
_di(jit_state_t *_jit, int32_t cc,
|
||||
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);
|
||||
movi_d(rn(reg), i0);
|
||||
dr(cc, r0, r1, rn(reg));
|
||||
|
@ -690,8 +690,8 @@ _di(jit_state_t *_jit, jit_int32_t cc,
|
|||
|
||||
|
||||
static void
|
||||
_bfr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_bfr(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
jit_word_t d;
|
||||
CEBR(r0, r1);
|
||||
|
@ -705,8 +705,8 @@ _bfr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static void
|
||||
_bdr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_bdr(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
jit_word_t d;
|
||||
CDBR(r0, r1);
|
||||
|
@ -720,8 +720,8 @@ _bdr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_bfr_p(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_bfr_p(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
jit_word_t w;
|
||||
CEBR(r0, r1);
|
||||
|
@ -731,8 +731,8 @@ _bfr_p(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_bdr_p(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_bdr_p(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
jit_word_t w;
|
||||
CDBR(r0, r1);
|
||||
|
@ -742,10 +742,10 @@ _bdr_p(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static void
|
||||
_bfi(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_float32_t *i1)
|
||||
_bfi(jit_state_t *_jit, int32_t cc,
|
||||
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);
|
||||
movi_f(rn(reg), i1);
|
||||
bfr(cc, i0, r0, rn(reg));
|
||||
|
@ -753,10 +753,10 @@ _bfi(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static void
|
||||
_bdi(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_float64_t *i1)
|
||||
_bdi(jit_state_t *_jit, int32_t cc,
|
||||
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);
|
||||
movi_d(rn(reg), i1);
|
||||
bdr(cc, i0, r0, rn(reg));
|
||||
|
@ -764,11 +764,11 @@ _bdi(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_bfi_p(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_float32_t *i1)
|
||||
_bfi_p(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_float32_t *i1)
|
||||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
|
||||
movi_f(rn(reg), i1);
|
||||
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
|
||||
_bdi_p(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_float64_t *i1)
|
||||
_bdi_p(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_float64_t *i1)
|
||||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
|
||||
movi_d(rn(reg), i1);
|
||||
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
|
||||
_buneqr(jit_state_t *_jit, jit_int32_t db,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_buneqr(jit_state_t *_jit, int32_t db,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
jit_word_t unord, ne, w;
|
||||
if (db) CDBR(r0, r1);
|
||||
|
@ -808,11 +808,11 @@ _buneqr(jit_state_t *_jit, jit_int32_t db,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_buneqi(jit_state_t *_jit, jit_int32_t db,
|
||||
jit_word_t i0, jit_int32_t r0, jit_word_t i1)
|
||||
_buneqi(jit_state_t *_jit, int32_t db,
|
||||
jit_word_t i0, int32_t r0, jit_word_t i1)
|
||||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
|
||||
if (db)
|
||||
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
|
||||
_bltgtr(jit_state_t *_jit, jit_int32_t db,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_bltgtr(jit_state_t *_jit, int32_t db,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
jit_word_t unord, eq, w;
|
||||
if (db) CDBR(r0, r1);
|
||||
|
@ -842,11 +842,11 @@ _bltgtr(jit_state_t *_jit, jit_int32_t db,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_bltgti(jit_state_t *_jit, jit_int32_t db,
|
||||
jit_word_t i0, jit_int32_t r0, jit_word_t i1)
|
||||
_bltgti(jit_state_t *_jit, int32_t db,
|
||||
jit_word_t i0, int32_t r0, jit_word_t i1)
|
||||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
|
||||
if (db)
|
||||
movi_d(rn(reg), (jit_float64_t *)i1);
|
||||
|
@ -858,22 +858,22 @@ _bltgti(jit_state_t *_jit, jit_int32_t db,
|
|||
}
|
||||
|
||||
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)
|
||||
LER(r0, r1);
|
||||
}
|
||||
|
||||
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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
if (*(jit_int32_t *)i0 == 0)
|
||||
if (*(int32_t *)i0 == 0)
|
||||
LZER(r0);
|
||||
else if (_jitc->no_data) {
|
||||
data.f = *i0;
|
||||
|
@ -888,26 +888,26 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
|
|||
}
|
||||
|
||||
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)
|
||||
LDR(r0, r1);
|
||||
}
|
||||
|
||||
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 {
|
||||
#if __WORDSIZE == 32
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
#else
|
||||
jit_int64_t l;
|
||||
int64_t l;
|
||||
#endif
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
if (*(jit_int64_t *)i0 == 0)
|
||||
if (*(int64_t *)i0 == 0)
|
||||
LZDR(r0);
|
||||
else if (_jitc->no_data) {
|
||||
data.d = *i0;
|
||||
|
@ -929,7 +929,7 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
|
|||
}
|
||||
|
||||
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)
|
||||
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
|
||||
_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)
|
||||
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
|
||||
_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) {
|
||||
reg = jit_get_reg(jit_class_fpr);
|
||||
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
|
||||
_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) {
|
||||
reg = jit_get_reg(jit_class_fpr);
|
||||
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
|
||||
_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)
|
||||
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
|
||||
_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)
|
||||
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
|
||||
_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) {
|
||||
reg = jit_get_reg(jit_class_fpr);
|
||||
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
|
||||
_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) {
|
||||
reg = jit_get_reg(jit_class_fpr);
|
||||
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
|
||||
_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);
|
||||
movi(rn(reg), i0);
|
||||
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
|
||||
_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);
|
||||
movi(rn(reg), i0);
|
||||
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
|
||||
_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);
|
||||
movr(rn(reg), r1);
|
||||
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
|
||||
_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);
|
||||
movr(rn(reg), r1);
|
||||
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
|
||||
_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))
|
||||
LE(r0, i0, 0, r1);
|
||||
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
|
||||
_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))
|
||||
LD(r0, i0, 0, r1);
|
||||
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
|
||||
_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);
|
||||
movi(rn(reg), i0);
|
||||
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
|
||||
_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);
|
||||
movi(rn(reg), i0);
|
||||
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
|
||||
_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);
|
||||
movr(rn(reg), r0);
|
||||
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
|
||||
_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);
|
||||
movr(rn(reg), r0);
|
||||
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
|
||||
_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))
|
||||
STE(r1, i0, 0, r0);
|
||||
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
|
||||
_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))
|
||||
STD(r1, i0, 0, r0);
|
||||
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
|
||||
_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;
|
||||
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
|
||||
_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;
|
||||
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
|
||||
_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;
|
||||
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
|
||||
_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;
|
||||
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
|
||||
_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;
|
||||
jit_int32_t rg1;
|
||||
jit_int32_t rg2;
|
||||
int32_t rg0;
|
||||
int32_t rg1;
|
||||
int32_t rg2;
|
||||
jit_word_t ge_code;
|
||||
jit_word_t lt_code;
|
||||
|
||||
|
|
134
jit/s390.c
134
jit/s390.c
|
@ -73,11 +73,11 @@ type = struct __va_list_tag {
|
|||
* Prototypes
|
||||
*/
|
||||
#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)
|
||||
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)
|
||||
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 patch(instr, node) _patch(_jit, instr, node)
|
||||
static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
|
||||
|
@ -147,7 +147,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -169,7 +169,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
_jitc->function->self.aoff = -8;
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -188,8 +188,8 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
switch (length) {
|
||||
|
@ -207,13 +207,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -240,7 +240,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_movr(JIT_RET, u);
|
||||
|
@ -258,7 +258,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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_movr_f(JIT_FRET, u);
|
||||
|
@ -276,7 +276,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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_movr_d(JIT_FRET, u);
|
||||
|
@ -344,7 +344,7 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_pushargr(u);
|
||||
|
@ -355,7 +355,7 @@ jit_node_t *
|
|||
_jit_arg(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi))
|
||||
offset = _jitc->function->self.argi++;
|
||||
|
@ -373,7 +373,7 @@ jit_node_t *
|
|||
_jit_arg_f(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_f_reg_p(_jitc->function->self.argf))
|
||||
offset = _jitc->function->self.argf++;
|
||||
|
@ -391,7 +391,7 @@ jit_node_t *
|
|||
_jit_arg_d(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_f_reg_p(_jitc->function->self.argf))
|
||||
offset = _jitc->function->self.argf++;
|
||||
|
@ -406,7 +406,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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
|
||||
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();
|
||||
}
|
||||
|
||||
#if __WORDSIZE == 64
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_wp(putargi, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
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
|
||||
_jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
||||
_jit_pushargr(jit_state_t *_jit, int32_t u)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargr, u);
|
||||
|
@ -646,7 +646,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargi, u);
|
||||
jit_link_prepare();
|
||||
|
@ -665,7 +665,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_f, u);
|
||||
|
@ -688,7 +688,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_f(pushargi_f, u);
|
||||
jit_link_prepare();
|
||||
|
@ -711,7 +711,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_d, u);
|
||||
|
@ -730,7 +730,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_d(pushargi_d, u);
|
||||
jit_link_prepare();
|
||||
|
@ -749,9 +749,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (spec & jit_class_arg) {
|
||||
regno = _R2 - regno;
|
||||
|
@ -767,7 +767,7 @@ _jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
|
|||
}
|
||||
|
||||
void
|
||||
_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
|
||||
_jit_finishr(jit_state_t *_jit, int32_t r0)
|
||||
{
|
||||
jit_node_t *call;
|
||||
assert(_jitc->function);
|
||||
|
@ -802,7 +802,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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_extr_c(r0, JIT_RET);
|
||||
|
@ -810,7 +810,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_uc(r0, JIT_RET);
|
||||
|
@ -818,7 +818,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_s(r0, JIT_RET);
|
||||
|
@ -826,7 +826,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_us(r0, JIT_RET);
|
||||
|
@ -834,7 +834,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
#if __WORDSIZE == 64
|
||||
|
@ -847,7 +847,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
|
||||
#if __WORDSIZE == 64
|
||||
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_extr_ui(r0, JIT_RET);
|
||||
|
@ -855,7 +855,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_movr(r0, JIT_RET);
|
||||
|
@ -864,7 +864,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
|
|||
#endif
|
||||
|
||||
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_movr_f(r0, JIT_FRET);
|
||||
|
@ -872,7 +872,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_movr_d(r0, JIT_FRET);
|
||||
|
@ -885,15 +885,15 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *node;
|
||||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_int32_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t value;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_word_t word;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
#endif
|
||||
jit_int32_t patch_offset;
|
||||
int32_t patch_offset;
|
||||
} undo;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
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));
|
||||
}
|
||||
|
||||
static jit_int32_t
|
||||
static int32_t
|
||||
_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
|
||||
* require a odd based register pair. Search for the best
|
||||
* match to avoid spills or at least a valid operation.
|
||||
|
@ -1638,9 +1638,9 @@ _jit_get_reg_pair(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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;
|
||||
switch (r1) {
|
||||
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);
|
||||
}
|
||||
|
||||
static jit_int32_t
|
||||
_jit_get_reg_but_zero(jit_state_t *_jit, jit_int32_t flags)
|
||||
static int32_t
|
||||
_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);
|
||||
if (reg == _R0) {
|
||||
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
|
||||
_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);
|
||||
if (node->code == jit_code_movi)
|
||||
|
|
574
jit/sparc-cpu.c
574
jit/sparc-cpu.c
File diff suppressed because it is too large
Load diff
302
jit/sparc-fpu.c
302
jit/sparc-fpu.c
|
@ -92,7 +92,7 @@
|
|||
# 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)
|
||||
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 FITOD(rs2, rd) FPop1(rd, 0, 200, 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 CPop2(rd, rs1, opc, rs2) f3f(rd, 55, rs1, opf, rs2)
|
||||
# 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
|
||||
# define truncr_f(r0, r1) truncr_f_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)
|
||||
# endif
|
||||
# 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
|
||||
# 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
|
||||
# if __WORDSIZE == 32
|
||||
# define extr_d_f(r0, r1) FDTOS(r1, r0)
|
||||
# else
|
||||
# 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
|
||||
# define movi_f(r0, i0) _movi_f(_jit, r0, i0)
|
||||
# if __WORDSIZE == 32
|
||||
# define movr_f(r0, r1) FMOVS(r1, r0)
|
||||
# else
|
||||
# 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
|
||||
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
|
||||
# define negr_f(r0, r1) FNEGS(r1, r0)
|
||||
# define absr_f(r0, r1) FABSS(r1, r0)
|
||||
# define sqrtr_f(r0, r1) FSQRTS(r1, r0)
|
||||
# else
|
||||
# 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)
|
||||
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)
|
||||
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
|
||||
# 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)
|
||||
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
|
||||
# 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
|
||||
# if __WORDSIZE == 32
|
||||
# define extr_f_d(r0, r1) FSTOD(r1, r0)
|
||||
# else
|
||||
# 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
|
||||
# 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
|
||||
# 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)
|
||||
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)
|
||||
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
|
||||
# define movr_d(r0, r1) FMOVD(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
|
||||
# define sqrtr_d(r0, r1) FSQRTD(r1, r0)
|
||||
# define fop1f(op, r0, r1, i0) _fop1f(_jit, op, r0, r1, i0)
|
||||
static void _fop1f(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_float32_t*);
|
||||
static void _fop1f(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_float32_t*);
|
||||
# define rfop1f(op, r0, r1, i0) _rfop1f(_jit, op, r0, r1, i0)
|
||||
static void _rfop1f(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_float32_t*);
|
||||
static void _rfop1f(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_float32_t*);
|
||||
# define fop1d(op, r0, r1, i0) _fop1d(_jit, op, r0, r1, i0)
|
||||
static void _fop1d(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_float64_t*);
|
||||
static void _fop1d(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_float64_t*);
|
||||
# define rfop1d(op, r0, r1, i0) _rfop1d(_jit, op, r0, r1, i0)
|
||||
static void _rfop1d(jit_state_t*,jit_int32_t,
|
||||
jit_int32_t,jit_int32_t,jit_float64_t*);
|
||||
static void _rfop1d(jit_state_t*,int32_t,
|
||||
int32_t,jit_int32_t,jit_float64_t*);
|
||||
# if __WORDSIZE == 32
|
||||
# define addr_f(r0, r1, r2) FADDS(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)
|
||||
# else
|
||||
# define fop2f(op, r0, r1, r2) _fop2f(_jit, op, r0, r1, r2)
|
||||
static void _fop2f(jit_state_t*, jit_int32_t,
|
||||
jit_int32_t, jit_int32_t, jit_int32_t);
|
||||
static void _fop2f(jit_state_t*, int32_t,
|
||||
int32_t, jit_int32_t, jit_int32_t);
|
||||
# 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 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 divi_d(r0, r1, i0) fop1d(SPARC_FDIVD, r0, r1, i0)
|
||||
#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)
|
||||
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 lti_f(r0, r1, i0) fcw(SPARC_FBL, r0, r1, i0)
|
||||
# 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 unordi_f(r0, r1, i0) fcw(SPARC_FBU, r0, r1, i0)
|
||||
#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)
|
||||
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 lti_d(r0, r1, i0) dcw(SPARC_FBL, r0, r1, i0)
|
||||
# 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)
|
||||
# else
|
||||
# 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
|
||||
# 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
|
||||
# define ldxr_f(r0, r1, r2) LDF(r1, r2, r0)
|
||||
# else
|
||||
# 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
|
||||
# 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
|
||||
# define str_f(r0, r1) STF(r1, r0, 0)
|
||||
# else
|
||||
# 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
|
||||
# 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
|
||||
# define stxr_f(r0, r1, r2) STF(r2, r1, r0)
|
||||
# else
|
||||
# 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
|
||||
# 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 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 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 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 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)
|
||||
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)
|
||||
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 blti_f(i0, r0, i1) fbw(SPARC_FBL, i0, r0, i1)
|
||||
# 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 dbr(cc, i0, r0, r1) _dbr(_jit, cc, i0, r0, r1)
|
||||
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)
|
||||
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 blti_d(i0, r0, i1) dbw(SPARC_FBL, i0, r0, i1)
|
||||
# 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 bunordi_d(i0, r0, i1) dbw(SPARC_FBU, i0, r0, i1)
|
||||
# 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
|
||||
|
||||
#if CODE
|
||||
static void
|
||||
_f3f(jit_state_t *_jit, jit_int32_t rd,
|
||||
jit_int32_t op3, jit_int32_t rs1, jit_int32_t opf, jit_int32_t rs2)
|
||||
_f3f(jit_state_t *_jit, int32_t rd,
|
||||
int32_t op3, jit_int32_t rs1, jit_int32_t opf, jit_int32_t rs2)
|
||||
{
|
||||
jit_instr_t v;
|
||||
# if __WORDSIZE == 64
|
||||
|
@ -499,9 +499,9 @@ _f3f(jit_state_t *_jit, jit_int32_t rd,
|
|||
|
||||
# if __WORDSIZE == 64
|
||||
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 (single_precision_p(r0)) {
|
||||
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
|
||||
_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(r1))
|
||||
FNEGS(r1, r0);
|
||||
|
@ -563,9 +563,9 @@ _negr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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(r1))
|
||||
FABSS(r1, r0);
|
||||
|
@ -594,9 +594,9 @@ _absr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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(r1))
|
||||
FSQRTS(r1, r0);
|
||||
|
@ -627,9 +627,9 @@ _sqrtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
|
||||
# if __WORDSIZE == 64
|
||||
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)) {
|
||||
reg = jit_get_reg(CLASS_SNG);
|
||||
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
|
||||
|
||||
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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
if (_jitc->no_data) {
|
||||
data.f = *i0;
|
||||
|
@ -665,9 +665,9 @@ _movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
|
|||
|
||||
# if __WORDSIZE == 64
|
||||
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)) {
|
||||
reg = jit_get_reg(CLASS_SNG);
|
||||
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
|
||||
|
||||
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 {
|
||||
# if __WORDSIZE == 32
|
||||
jit_int32_t i[2];
|
||||
int32_t i[2];
|
||||
# else
|
||||
jit_word_t w;
|
||||
# endif
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
if (_jitc->no_data) {
|
||||
data.d = *i0;
|
||||
|
@ -714,7 +714,7 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
|
|||
|
||||
# if __WORDSIZE == 32
|
||||
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(!(r1 & 1));
|
||||
|
@ -725,7 +725,7 @@ _movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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(!(r1 & 1));
|
||||
|
@ -735,7 +735,7 @@ _negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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(!(r1 & 1));
|
||||
|
@ -748,9 +748,9 @@ _absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
# if __WORDSIZE == 64
|
||||
# define single_rrr(NAME, CODE) \
|
||||
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)) { \
|
||||
mask |= 1; \
|
||||
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
|
||||
_fop2f(jit_state_t *_jit, jit_int32_t op,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
_fop2f(jit_state_t *_jit, int32_t op,
|
||||
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)) {
|
||||
mask |= 1;
|
||||
t0 = jit_get_reg(CLASS_SNG);
|
||||
|
@ -858,12 +858,12 @@ _fop2f(jit_state_t *_jit, jit_int32_t op,
|
|||
# endif
|
||||
|
||||
static void
|
||||
_fop1f(jit_state_t *_jit, jit_int32_t op,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0)
|
||||
_fop1f(jit_state_t *_jit, int32_t op,
|
||||
int32_t r0, jit_int32_t r1, jit_float32_t *i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
# if __WORDSIZE == 64
|
||||
jit_int32_t x0, t0, x1, t1, mask = 0;
|
||||
int32_t x0, t0, x1, t1, mask = 0;
|
||||
# endif
|
||||
reg = jit_get_reg(CLASS_SNG);
|
||||
movi_f(rn(reg), i0);
|
||||
|
@ -903,12 +903,12 @@ _fop1f(jit_state_t *_jit, jit_int32_t op,
|
|||
}
|
||||
|
||||
static void
|
||||
_rfop1f(jit_state_t *_jit, jit_int32_t op,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0)
|
||||
_rfop1f(jit_state_t *_jit, int32_t op,
|
||||
int32_t r0, jit_int32_t r1, jit_float32_t *i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
# if __WORDSIZE == 64
|
||||
jit_int32_t x0, t0, x1, t1, mask = 0;
|
||||
int32_t x0, t0, x1, t1, mask = 0;
|
||||
# endif
|
||||
reg = jit_get_reg(CLASS_SNG);
|
||||
movi_f(rn(reg), i0);
|
||||
|
@ -948,10 +948,10 @@ _rfop1f(jit_state_t *_jit, jit_int32_t op,
|
|||
}
|
||||
|
||||
static void
|
||||
_fop1d(jit_state_t *_jit, jit_int32_t op,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0)
|
||||
_fop1d(jit_state_t *_jit, int32_t op,
|
||||
int32_t r0, jit_int32_t r1, jit_float64_t *i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(CLASS_DBL);
|
||||
movi_d(rn(reg), i0);
|
||||
FPop1(r0, r1, op, rn(reg));
|
||||
|
@ -959,10 +959,10 @@ _fop1d(jit_state_t *_jit, jit_int32_t op,
|
|||
}
|
||||
|
||||
static void
|
||||
_rfop1d(jit_state_t *_jit, jit_int32_t op,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0)
|
||||
_rfop1d(jit_state_t *_jit, int32_t op,
|
||||
int32_t r0, jit_int32_t r1, jit_float64_t *i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(CLASS_DBL);
|
||||
movi_d(rn(reg), i0);
|
||||
FPop1(r0, rn(reg), op, r1);
|
||||
|
@ -970,7 +970,7 @@ _rfop1d(jit_state_t *_jit, jit_int32_t op,
|
|||
}
|
||||
|
||||
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);
|
||||
# if __WORDSIZE == 32
|
||||
|
@ -979,7 +979,7 @@ _extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
# else
|
||||
ldxi_d(r0, _FP_REGNO, BIAS(-8));
|
||||
if (!single_precision_p(r0)) {
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(CLASS_SNG);
|
||||
movr_d(rn(reg), r0);
|
||||
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
|
||||
_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);
|
||||
# if __WORDSIZE == 64
|
||||
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
|
||||
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);
|
||||
# if __WORDSIZE == 64
|
||||
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
|
||||
|
||||
static void
|
||||
_fcr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
_fcr(jit_state_t *_jit, int32_t cc,
|
||||
int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
{
|
||||
# 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)) {
|
||||
mask |= 1;
|
||||
t0 = jit_get_reg(CLASS_SNG);
|
||||
|
@ -1067,12 +1067,12 @@ _fcr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static void
|
||||
_fcw(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float32_t *i0)
|
||||
_fcw(jit_state_t *_jit, int32_t cc,
|
||||
int32_t r0, jit_int32_t r1, jit_float32_t *i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
# if __WORDSIZE == 64
|
||||
jit_int32_t x0, t0, mask = 0;
|
||||
int32_t x0, t0, mask = 0;
|
||||
if (!single_precision_p(r1)) {
|
||||
mask |= 1;
|
||||
t0 = jit_get_reg(CLASS_SNG);
|
||||
|
@ -1098,8 +1098,8 @@ _fcw(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static void
|
||||
_dcr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
_dcr(jit_state_t *_jit, int32_t cc,
|
||||
int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
{
|
||||
FCMPD(r1, r2);
|
||||
FBa(cc, 3);
|
||||
|
@ -1108,10 +1108,10 @@ _dcr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static void
|
||||
_dcw(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0)
|
||||
_dcw(jit_state_t *_jit, int32_t cc,
|
||||
int32_t r0, jit_int32_t r1, jit_float64_t *i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(CLASS_DBL);
|
||||
movi_d(rn(reg), i0);
|
||||
FCMPD(r1, rn(reg));
|
||||
|
@ -1123,9 +1123,9 @@ _dcw(jit_state_t *_jit, jit_int32_t cc,
|
|||
|
||||
# if __WORDSIZE == 64
|
||||
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)) {
|
||||
reg = jit_get_reg(CLASS_SNG);
|
||||
LDF(r1, 0, rn(reg));
|
||||
|
@ -1138,9 +1138,9 @@ _ldr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
# endif
|
||||
|
||||
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 __WORDSIZE == 64
|
||||
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
|
||||
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)) {
|
||||
reg = jit_get_reg(CLASS_SNG);
|
||||
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
|
||||
|
||||
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 __WORDSIZE == 64
|
||||
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
|
||||
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)) {
|
||||
reg = jit_get_reg(CLASS_SNG);
|
||||
movr_d(rn(reg), r1);
|
||||
|
@ -1218,9 +1218,9 @@ _str_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
# endif
|
||||
|
||||
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 __WORDSIZE == 64
|
||||
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
|
||||
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)) {
|
||||
reg = jit_get_reg(CLASS_SNG);
|
||||
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
|
||||
|
||||
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 __WORDSIZE == 64
|
||||
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
|
||||
_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);
|
||||
# if __WORDSIZE == 32
|
||||
|
@ -1297,9 +1297,9 @@ _extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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);
|
||||
# if __WORDSIZE == 64
|
||||
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
|
||||
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);
|
||||
FDTOX(r1, 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
|
||||
|
||||
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))
|
||||
LDDFI(0, i0, r0);
|
||||
else {
|
||||
|
@ -1342,9 +1342,9 @@ _ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
|
|||
}
|
||||
|
||||
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))
|
||||
LDDFI(r1, i0, r0);
|
||||
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
|
||||
_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))
|
||||
STDFI(r0, 0, i0);
|
||||
else {
|
||||
|
@ -1370,9 +1370,9 @@ _sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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))
|
||||
STDFI(r1, r0, i0);
|
||||
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
|
||||
_fbr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0,jit_int32_t r1)
|
||||
_fbr(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0,jit_int32_t r1)
|
||||
{
|
||||
# if __WORDSIZE == 64
|
||||
jit_int32_t x0, t0, x1, t1, mask = 0;
|
||||
int32_t x0, t0, x1, t1, mask = 0;
|
||||
# endif
|
||||
jit_word_t w;
|
||||
# if __WORDSIZE == 64
|
||||
|
@ -1425,13 +1425,13 @@ _fbr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_fbw(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_float32_t *i1)
|
||||
_fbw(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_float32_t *i1)
|
||||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
# if __WORDSIZE == 64
|
||||
jit_int32_t x0, t0, mask = 0;
|
||||
int32_t x0, t0, mask = 0;
|
||||
if (!single_precision_p(r0)) {
|
||||
mask |= 1;
|
||||
t0 = jit_get_reg(CLASS_SNG);
|
||||
|
@ -1458,8 +1458,8 @@ _fbw(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_dbr(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_dbr(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
jit_word_t w;
|
||||
FCMPD(r0, r1);
|
||||
|
@ -1470,11 +1470,11 @@ _dbr(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_dbw(jit_state_t *_jit, jit_int32_t cc,
|
||||
jit_word_t i0, jit_int32_t r0, jit_float64_t *i1)
|
||||
_dbw(jit_state_t *_jit, int32_t cc,
|
||||
jit_word_t i0, int32_t r0, jit_float64_t *i1)
|
||||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(CLASS_DBL);
|
||||
movi_d(rn(reg), i1);
|
||||
FCMPD(r0, rn(reg));
|
||||
|
@ -1486,7 +1486,7 @@ _dbw(jit_state_t *_jit, jit_int32_t cc,
|
|||
}
|
||||
|
||||
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);
|
||||
|
||||
|
|
118
jit/sparc.c
118
jit/sparc.c
|
@ -168,7 +168,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -194,7 +194,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
# endif
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -213,8 +213,8 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
switch (length) {
|
||||
|
@ -232,13 +232,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -265,7 +265,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_RET != u)
|
||||
|
@ -285,7 +285,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_FRET != u)
|
||||
|
@ -306,7 +306,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_FRET != u)
|
||||
|
@ -371,7 +371,7 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_pushargr(u);
|
||||
|
@ -382,7 +382,7 @@ jit_node_t *
|
|||
_jit_arg(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
if (jit_arg_reg_p(_jitc->function->self.argi))
|
||||
offset = _jitc->function->self.argi++;
|
||||
|
@ -404,7 +404,7 @@ jit_node_t *
|
|||
_jit_arg_f(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
# if __WORDSIZE == 64
|
||||
jit_bool_t inc;
|
||||
# endif
|
||||
|
@ -435,7 +435,7 @@ jit_node_t *
|
|||
_jit_arg_d(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
# if __WORDSIZE == 64
|
||||
jit_bool_t inc;
|
||||
# endif
|
||||
|
@ -469,7 +469,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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
|
||||
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();
|
||||
}
|
||||
|
||||
# if __WORDSIZE == 64
|
||||
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);
|
||||
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);
|
||||
else
|
||||
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();
|
||||
}
|
||||
|
||||
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);
|
||||
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
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_wp(putargi, u, v);
|
||||
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
|
||||
_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(_jitc->function);
|
||||
|
@ -618,7 +618,7 @@ _jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
# if __WORDSIZE == 32
|
||||
|
@ -672,7 +672,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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(_jitc->function);
|
||||
|
@ -705,9 +705,9 @@ _jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_wp(putargr_d, u, v);
|
||||
# if __WORDSIZE == 32
|
||||
|
@ -748,9 +748,9 @@ void
|
|||
_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
|
||||
{
|
||||
# if __WORDSIZE == 32
|
||||
jit_int32_t gpr;
|
||||
int32_t gpr;
|
||||
# endif
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(v->code == jit_code_arg_d);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
# if __WORDSIZE == 32
|
||||
|
@ -795,7 +795,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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_link_prepare();
|
||||
|
@ -818,7 +818,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
jit_inc_synth_w(pushargi, u);
|
||||
jit_link_prepare();
|
||||
if (jit_arg_reg_p(_jitc->function->call.argi)) {
|
||||
|
@ -841,7 +841,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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_link_prepare();
|
||||
|
@ -884,7 +884,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_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_link_prepare();
|
||||
# if __WORDSIZE == 32
|
||||
|
@ -933,7 +933,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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_link_prepare();
|
||||
|
@ -984,7 +984,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_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_link_prepare();
|
||||
# if __WORDSIZE == 32
|
||||
|
@ -1041,9 +1041,9 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
|
||||
_jit_finishr(jit_state_t *_jit, int32_t r0)
|
||||
{
|
||||
jit_node_t *call;
|
||||
assert(_jitc->function);
|
||||
|
@ -1100,7 +1100,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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_extr_c(r0, _O0);
|
||||
|
@ -1108,7 +1108,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_uc(r0, _O0);
|
||||
|
@ -1116,7 +1116,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_s(r0, _O0);
|
||||
|
@ -1124,7 +1124,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_us(r0, _O0);
|
||||
|
@ -1132,7 +1132,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
# if __WORDSIZE == 32
|
||||
|
@ -1146,7 +1146,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
|
||||
# if __WORDSIZE == 64
|
||||
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);
|
||||
if (r0 != _O0)
|
||||
|
@ -1155,7 +1155,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != _O0)
|
||||
|
@ -1165,7 +1165,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
|
|||
# endif
|
||||
|
||||
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);
|
||||
if (r0 != JIT_FRET)
|
||||
|
@ -1174,7 +1174,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_FRET)
|
||||
|
@ -1188,15 +1188,15 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *node;
|
||||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_int32_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t value;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_word_t word;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
#endif
|
||||
jit_int32_t patch_offset;
|
||||
int32_t patch_offset;
|
||||
} undo;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
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
|
||||
_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);
|
||||
if (node->code == jit_code_movi)
|
||||
|
|
942
jit/x86-cpu.c
942
jit/x86-cpu.c
File diff suppressed because it is too large
Load diff
508
jit/x86-sse.c
508
jit/x86-sse.c
File diff suppressed because it is too large
Load diff
370
jit/x86-x87.c
370
jit/x86-x87.c
|
@ -38,7 +38,7 @@
|
|||
# define fldcwm(md, rb, ri, ms) x87rx(015, md, rb, ri, ms)
|
||||
# define fstcwm(md, rb, ri, ms) _fstcwm(_jit, md, rb, ri, ms)
|
||||
static void
|
||||
_fstcwm(jit_state_t*, 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 fstsm(md, rb, ri, ms) x87rx(012, 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 fildqm(md, rb, ri, ms) x87rx(075, md, rb,ri, ms)
|
||||
static void
|
||||
_x87rx(jit_state_t*, jit_int32_t, jit_int32_t,
|
||||
jit_int32_t, jit_int32_t, jit_int32_t);
|
||||
_x87rx(jit_state_t*, int32_t, jit_int32_t,
|
||||
int32_t, jit_int32_t, jit_int32_t);
|
||||
# define x87ri(cc,r0) _x87ri(_jit,cc,r0)
|
||||
# define fchs_() x87ri(014, 0)
|
||||
# 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 fucomir(r0) x87ri(035, 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 fmulr(r0, r1) x87rri(001, 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 fdivrr(r0, r1) x87rri(007, 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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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_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_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)
|
||||
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)
|
||||
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_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)
|
||||
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)
|
||||
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_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_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_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_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
|
||||
# define x87_truncr_f_l(r0, r1) _x87_truncr_d_l(_jit, r0, r1)
|
||||
# define x87_truncr_d_l(r0, r1) _x87_truncr_d_l(_jit, r0, r1)
|
||||
static void _x87_truncr_d_l(jit_state_t*, jit_int32_t, jit_int32_t);
|
||||
static void _x87_truncr_d_l(jit_state_t*, int32_t, jit_int32_t);
|
||||
# endif
|
||||
# define x87_extr_f(r0, r1) _x87_extr_d(_jit, r0, r1)
|
||||
# define x87_extr_d(r0, r1) _x87_extr_d(_jit, r0, r1)
|
||||
# define x87_extr_f_d(r0, r1) x87_movr_d(r0, r1)
|
||||
# define x87_extr_d_f(r0, r1) x87_movr_d(r0, r1)
|
||||
static void _x87_extr_d(jit_state_t*, 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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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)
|
||||
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)
|
||||
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_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_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)
|
||||
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)
|
||||
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_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_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_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_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_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)
|
||||
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)
|
||||
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_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_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_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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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_blti_f(i0, r0, i1) _x87_blti_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_blti_f(jit_state_t*, jit_word_t, 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_blei_f(i0, r0, i1) _x87_blei_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_blei_f(jit_state_t*, jit_word_t, 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_beqi_f(i0, r0, i1) _x87_beqi_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_beqi_f(jit_state_t*, jit_word_t, 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_bgei_f(i0, r0, i1) _x87_bgei_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bgei_f(jit_state_t*, jit_word_t, 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_bgti_f(i0, r0, i1) _x87_bgti_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bgti_f(jit_state_t*, jit_word_t, 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_bnei_f(i0, r0, i1) _x87_bnei_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bnei_f(jit_state_t*, jit_word_t, 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_bunlti_f(i0, r0, i1) _x87_bunlti_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bunlti_f(jit_state_t*, jit_word_t, 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_bunlei_f(i0, r0, i1) _x87_bunlei_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bunlei_f(jit_state_t*, jit_word_t, 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_buneqi_f(i0, r0, i1) _x87_buneqi_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_buneqi_f(jit_state_t*, jit_word_t, 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_bungei_f(i0, r0, i1) _x87_bungei_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bungei_f(jit_state_t*, jit_word_t, 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_bungti_f(i0, r0, i1) _x87_bungti_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bungti_f(jit_state_t*, jit_word_t, 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_bltgti_f(i0, r0, i1) _x87_bltgti_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bltgti_f(jit_state_t*, jit_word_t, 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_bordi_f(i0, r0, i1) _x87_bordi_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bordi_f(jit_state_t*, jit_word_t, 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_bunordi_f(i0, r0, i1) _x87_bunordi_f(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bunordi_f(jit_state_t*, jit_word_t, 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_blti_d(i0, r0, i1) _x87_blti_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_blti_d(jit_state_t*, jit_word_t, 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_blei_d(i0, r0, i1) _x87_blei_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_blei_d(jit_state_t*, jit_word_t, 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)
|
||||
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)
|
||||
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_bgei_d(i0, r0, i1) _x87_bgei_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bgei_d(jit_state_t*, jit_word_t, 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_bgti_d(i0, r0, i1) _x87_bgti_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bgti_d(jit_state_t*, jit_word_t, 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)
|
||||
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)
|
||||
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_bunlti_d(i0, r0, i1) _x87_bunlti_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bunlti_d(jit_state_t*, jit_word_t, 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_bunlei_d(i0, r0, i1) _x87_bunlei_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bunlei_d(jit_state_t*, jit_word_t, 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_buneqi_d(i0, r0, i1) _x87_buneqi_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_buneqi_d(jit_state_t*, jit_word_t, 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_bungei_d(i0, r0, i1) _x87_bungei_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bungei_d(jit_state_t*, jit_word_t, 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_bungti_d(i0, r0, i1) _x87_bungti_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bungti_d(jit_state_t*, jit_word_t, 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_bltgti_d(i0, r0, i1) _x87_bltgti_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bltgti_d(jit_state_t*, jit_word_t, 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_bordi_d(i0, r0, i1) _x87_bordi_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bordi_d(jit_state_t*, jit_word_t, 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_bunordi_d(i0, r0, i1) _x87_bunordi_d(_jit, i0, r0, i1)
|
||||
static jit_word_t
|
||||
_x87_bunordi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
|
||||
_x87_bunordi_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
|
||||
#endif
|
||||
|
||||
#if CODE
|
||||
# define fpr_opi(name, type, size) \
|
||||
static void \
|
||||
_x87_##name##i_##type(jit_state_t *_jit, \
|
||||
jit_int32_t r0, jit_int32_t r1, \
|
||||
int32_t r0, jit_int32_t r1, \
|
||||
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)); \
|
||||
x87_movi_##type(rn(reg), i0); \
|
||||
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) \
|
||||
static jit_word_t \
|
||||
_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_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); \
|
||||
assert(jit_x87_reg_p(reg)); \
|
||||
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)
|
||||
|
||||
static void
|
||||
_fstcwm(jit_state_t *_jit, jit_int32_t md,
|
||||
jit_int32_t rb, jit_int32_t ri, jit_int32_t ms)
|
||||
_fstcwm(jit_state_t *_jit, int32_t md,
|
||||
int32_t rb, jit_int32_t ri, jit_int32_t ms)
|
||||
{
|
||||
ic(0x9b);
|
||||
rex(0, 1, rb, ri, _NOREG);
|
||||
|
@ -432,8 +432,8 @@ _fstcwm(jit_state_t *_jit, jit_int32_t md,
|
|||
}
|
||||
|
||||
static void
|
||||
_x87rx(jit_state_t *_jit, jit_int32_t code, jit_int32_t md,
|
||||
jit_int32_t rb, jit_int32_t ri, jit_int32_t ms)
|
||||
_x87rx(jit_state_t *_jit, int32_t code, jit_int32_t md,
|
||||
int32_t rb, jit_int32_t ri, jit_int32_t ms)
|
||||
{
|
||||
rex(0, 1, rb, ri, _NOREG);
|
||||
ic(0xd8 | (code >> 3));
|
||||
|
@ -441,14 +441,14 @@ _x87rx(jit_state_t *_jit, jit_int32_t code, jit_int32_t md,
|
|||
}
|
||||
|
||||
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));
|
||||
mrm(0x03, (code & 7), r0);
|
||||
}
|
||||
|
||||
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)
|
||||
x87ri(code | 040, r0);
|
||||
|
@ -465,7 +465,7 @@ fopi(mul)
|
|||
fopi(div)
|
||||
|
||||
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 (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)
|
||||
|
||||
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 (r2 == _ST0_REGNO)
|
||||
|
@ -535,7 +535,7 @@ dopi(sub)
|
|||
dopi(rsb)
|
||||
|
||||
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 (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)
|
||||
|
||||
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 (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)
|
||||
|
||||
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 (r1 == _ST0_REGNO)
|
||||
|
@ -622,7 +622,7 @@ _x87_absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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 (r1 == _ST0_REGNO)
|
||||
|
@ -641,7 +641,7 @@ _x87_negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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 (r1 == _ST0_REGNO)
|
||||
|
@ -660,7 +660,7 @@ _x87_sqrtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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)
|
||||
/* 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
|
||||
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);
|
||||
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
|
||||
|
||||
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);
|
||||
# if __X32
|
||||
|
@ -711,11 +711,11 @@ _x87_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
static void
|
||||
_x87cmp(jit_state_t *_jit, jit_int32_t code,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
_x87cmp(jit_state_t *_jit, int32_t code,
|
||||
int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
{
|
||||
jit_bool_t rc;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
if ((rc = reg8_p(r0)))
|
||||
reg = r0;
|
||||
else {
|
||||
|
@ -735,12 +735,12 @@ _x87cmp(jit_state_t *_jit, jit_int32_t code,
|
|||
}
|
||||
|
||||
static void
|
||||
_x87cmp2(jit_state_t *_jit, jit_int32_t code,
|
||||
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
_x87cmp2(jit_state_t *_jit, int32_t code,
|
||||
int32_t r0, jit_int32_t r1, jit_int32_t r2)
|
||||
{
|
||||
jit_bool_t rc;
|
||||
jit_int32_t reg;
|
||||
jit_int32_t f1, f2;
|
||||
int32_t reg;
|
||||
int32_t f1, f2;
|
||||
if (r2 == _ST0_REGNO) f1 = r2, f2 = r1;
|
||||
else f1 = r1, f2 = r2;
|
||||
if ((rc = reg8_p(r0)))
|
||||
|
@ -762,8 +762,8 @@ _x87cmp2(jit_state_t *_jit, jit_int32_t code,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_x87jcc(jit_state_t *_jit, jit_int32_t code,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_x87jcc(jit_state_t *_jit, int32_t code,
|
||||
jit_word_t i0, int32_t r0, jit_int32_t r1)
|
||||
{
|
||||
if (r0 == _ST0_REGNO)
|
||||
fucomir(r1);
|
||||
|
@ -776,10 +776,10 @@ _x87jcc(jit_state_t *_jit, jit_int32_t code,
|
|||
}
|
||||
|
||||
static jit_word_t
|
||||
_x87jcc2(jit_state_t *_jit, jit_int32_t code,
|
||||
jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
|
||||
_x87jcc2(jit_state_t *_jit, int32_t code,
|
||||
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;
|
||||
else f0 = r0, f1 = r1;
|
||||
if (f0 == _ST0_REGNO)
|
||||
|
@ -822,13 +822,13 @@ fbopi(ord)
|
|||
fbopi(unord)
|
||||
|
||||
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 {
|
||||
jit_int32_t i;
|
||||
int32_t i;
|
||||
jit_float32_t f;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
data.f = *i0;
|
||||
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
|
||||
_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);
|
||||
fstpr(r0 + 1);
|
||||
}
|
||||
|
||||
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)) {
|
||||
fldsm(i0, _NOREG, _NOREG, _SCL1);
|
||||
fstpr(r0 + 1);
|
||||
|
@ -884,10 +884,10 @@ _x87_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
|
|||
}
|
||||
|
||||
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
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
addr(rn(reg), r1, r2);
|
||||
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
|
||||
_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)) {
|
||||
fldsm(i0, r1, _NOREG, _SCL1);
|
||||
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
|
||||
_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)
|
||||
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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
addr(rn(reg), r0, r1);
|
||||
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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
#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
|
||||
_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 (r1 == _ST0)
|
||||
|
@ -1012,14 +1012,14 @@ _x87_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
|
|||
}
|
||||
|
||||
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 {
|
||||
jit_int32_t ii[2];
|
||||
int32_t ii[2];
|
||||
jit_word_t w;
|
||||
jit_float64_t d;
|
||||
} data;
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
|
||||
data.d = *i0;
|
||||
if (data.d == 0.0 && !(data.ii[1] & 0x80000000))
|
||||
|
@ -1062,11 +1062,11 @@ dopi(lt)
|
|||
dopi(le)
|
||||
|
||||
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_word_t jp_code;
|
||||
jit_int32_t reg, f1, f2;
|
||||
int32_t reg, f1, f2;
|
||||
if (r2 == _ST0_REGNO) f1 = r2, f2 = r1;
|
||||
else f1 = r1, f2 = r2;
|
||||
if ((rc = reg8_p(r0)))
|
||||
|
@ -1095,11 +1095,11 @@ dopi(ge)
|
|||
dopi(gt)
|
||||
|
||||
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_word_t jp_code;
|
||||
jit_int32_t reg, f1, f2;
|
||||
int32_t reg, f1, f2;
|
||||
if (r2 == _ST0_REGNO) f1 = r2, f2 = r1;
|
||||
else f1 = r1, f2 = r2;
|
||||
if ((rc = reg8_p(r0)))
|
||||
|
@ -1131,7 +1131,7 @@ dopi(unge)
|
|||
dopi(ungt)
|
||||
|
||||
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)
|
||||
movi(r0, 1);
|
||||
|
@ -1144,16 +1144,16 @@ dopi(ord)
|
|||
dopi(unord)
|
||||
|
||||
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);
|
||||
fstpr(r0 + 1);
|
||||
}
|
||||
|
||||
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)) {
|
||||
fldlm(i0, _NOREG, _NOREG, _SCL1);
|
||||
fstpr(r0 + 1);
|
||||
|
@ -1167,10 +1167,10 @@ _x87_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
|
|||
}
|
||||
|
||||
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
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
addr(rn(reg), r1, r2);
|
||||
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
|
||||
_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)) {
|
||||
fldlm(i0, r1, _NOREG, _SCL1);
|
||||
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
|
||||
_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)
|
||||
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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
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
|
||||
_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
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
addr(rn(reg), r0, r1);
|
||||
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
|
||||
_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)) {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
#if __X64_32
|
||||
|
@ -1281,9 +1281,9 @@ dbopi(lt)
|
|||
dbopi(le)
|
||||
|
||||
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;
|
||||
if (r1 == _ST0_REGNO) f0 = r1, f1 = r0;
|
||||
else f0 = r0, f1 = r1;
|
||||
|
@ -1304,9 +1304,9 @@ dbopi(ge)
|
|||
dbopi(gt)
|
||||
|
||||
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 jz_code;
|
||||
if (r1 == _ST0_REGNO) f0 = r1, f1 = r0;
|
||||
|
|
268
jit/x86.c
268
jit/x86.c
|
@ -66,17 +66,17 @@
|
|||
typedef jit_pointer_t jit_va_list_t;
|
||||
#else
|
||||
typedef struct jit_va_list {
|
||||
jit_int32_t gpoff;
|
||||
jit_int32_t fpoff;
|
||||
int32_t gpoff;
|
||||
int32_t fpoff;
|
||||
jit_pointer_t over;
|
||||
jit_pointer_t save;
|
||||
/* Declared explicitly as int64 for the x32 abi */
|
||||
jit_int64_t rdi;
|
||||
jit_int64_t rsi;
|
||||
jit_int64_t rdx;
|
||||
jit_int64_t rcx;
|
||||
jit_int64_t r8;
|
||||
jit_int64_t r9;
|
||||
int64_t rdi;
|
||||
int64_t rsi;
|
||||
int64_t rdx;
|
||||
int64_t rcx;
|
||||
int64_t r8;
|
||||
int64_t r9;
|
||||
jit_float64_t xmm0;
|
||||
jit_float64_t _up0;
|
||||
jit_float64_t xmm1;
|
||||
|
@ -102,13 +102,13 @@ typedef struct jit_va_list {
|
|||
#define patch(instr, node) _patch(_jit, instr, node)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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
|
||||
# include "x86-cpu.c"
|
||||
|
@ -235,75 +235,75 @@ jit_get_cpu(void)
|
|||
{
|
||||
union {
|
||||
struct {
|
||||
jit_uint32_t sse3 : 1;
|
||||
jit_uint32_t pclmulqdq : 1;
|
||||
jit_uint32_t dtes64 : 1; /* amd reserved */
|
||||
jit_uint32_t monitor : 1;
|
||||
jit_uint32_t ds_cpl : 1; /* amd reserved */
|
||||
jit_uint32_t vmx : 1; /* amd reserved */
|
||||
jit_uint32_t smx : 1; /* amd reserved */
|
||||
jit_uint32_t est : 1; /* amd reserved */
|
||||
jit_uint32_t tm2 : 1; /* amd reserved */
|
||||
jit_uint32_t ssse3 : 1;
|
||||
jit_uint32_t cntx_id : 1; /* amd reserved */
|
||||
jit_uint32_t __reserved0 : 1;
|
||||
jit_uint32_t fma : 1;
|
||||
jit_uint32_t cmpxchg16b : 1;
|
||||
jit_uint32_t xtpr : 1; /* amd reserved */
|
||||
jit_uint32_t pdcm : 1; /* amd reserved */
|
||||
jit_uint32_t __reserved1 : 1;
|
||||
jit_uint32_t pcid : 1; /* amd reserved */
|
||||
jit_uint32_t dca : 1; /* amd reserved */
|
||||
jit_uint32_t sse4_1 : 1;
|
||||
jit_uint32_t sse4_2 : 1;
|
||||
jit_uint32_t x2apic : 1; /* amd reserved */
|
||||
jit_uint32_t movbe : 1; /* amd reserved */
|
||||
jit_uint32_t popcnt : 1;
|
||||
jit_uint32_t tsc : 1; /* amd reserved */
|
||||
jit_uint32_t aes : 1;
|
||||
jit_uint32_t xsave : 1;
|
||||
jit_uint32_t osxsave : 1;
|
||||
jit_uint32_t avx : 1;
|
||||
jit_uint32_t __reserved2 : 1; /* amd F16C */
|
||||
jit_uint32_t __reserved3 : 1;
|
||||
jit_uint32_t __alwayszero : 1; /* amd RAZ */
|
||||
uint32_t sse3 : 1;
|
||||
uint32_t pclmulqdq : 1;
|
||||
uint32_t dtes64 : 1; /* amd reserved */
|
||||
uint32_t monitor : 1;
|
||||
uint32_t ds_cpl : 1; /* amd reserved */
|
||||
uint32_t vmx : 1; /* amd reserved */
|
||||
uint32_t smx : 1; /* amd reserved */
|
||||
uint32_t est : 1; /* amd reserved */
|
||||
uint32_t tm2 : 1; /* amd reserved */
|
||||
uint32_t ssse3 : 1;
|
||||
uint32_t cntx_id : 1; /* amd reserved */
|
||||
uint32_t __reserved0 : 1;
|
||||
uint32_t fma : 1;
|
||||
uint32_t cmpxchg16b : 1;
|
||||
uint32_t xtpr : 1; /* amd reserved */
|
||||
uint32_t pdcm : 1; /* amd reserved */
|
||||
uint32_t __reserved1 : 1;
|
||||
uint32_t pcid : 1; /* amd reserved */
|
||||
uint32_t dca : 1; /* amd reserved */
|
||||
uint32_t sse4_1 : 1;
|
||||
uint32_t sse4_2 : 1;
|
||||
uint32_t x2apic : 1; /* amd reserved */
|
||||
uint32_t movbe : 1; /* amd reserved */
|
||||
uint32_t popcnt : 1;
|
||||
uint32_t tsc : 1; /* amd reserved */
|
||||
uint32_t aes : 1;
|
||||
uint32_t xsave : 1;
|
||||
uint32_t osxsave : 1;
|
||||
uint32_t avx : 1;
|
||||
uint32_t __reserved2 : 1; /* amd F16C */
|
||||
uint32_t __reserved3 : 1;
|
||||
uint32_t __alwayszero : 1; /* amd RAZ */
|
||||
} bits;
|
||||
jit_uword_t cpuid;
|
||||
} ecx;
|
||||
union {
|
||||
struct {
|
||||
jit_uint32_t fpu : 1;
|
||||
jit_uint32_t vme : 1;
|
||||
jit_uint32_t de : 1;
|
||||
jit_uint32_t pse : 1;
|
||||
jit_uint32_t tsc : 1;
|
||||
jit_uint32_t msr : 1;
|
||||
jit_uint32_t pae : 1;
|
||||
jit_uint32_t mce : 1;
|
||||
jit_uint32_t cmpxchg8b : 1;
|
||||
jit_uint32_t apic : 1;
|
||||
jit_uint32_t __reserved0 : 1;
|
||||
jit_uint32_t sep : 1;
|
||||
jit_uint32_t mtrr : 1;
|
||||
jit_uint32_t pge : 1;
|
||||
jit_uint32_t mca : 1;
|
||||
jit_uint32_t cmov : 1;
|
||||
jit_uint32_t pat : 1;
|
||||
jit_uint32_t pse36 : 1;
|
||||
jit_uint32_t psn : 1; /* amd reserved */
|
||||
jit_uint32_t clfsh : 1;
|
||||
jit_uint32_t __reserved1 : 1;
|
||||
jit_uint32_t ds : 1; /* amd reserved */
|
||||
jit_uint32_t acpi : 1; /* amd reserved */
|
||||
jit_uint32_t mmx : 1;
|
||||
jit_uint32_t fxsr : 1;
|
||||
jit_uint32_t sse : 1;
|
||||
jit_uint32_t sse2 : 1;
|
||||
jit_uint32_t ss : 1; /* amd reserved */
|
||||
jit_uint32_t htt : 1;
|
||||
jit_uint32_t tm : 1; /* amd reserved */
|
||||
jit_uint32_t __reserved2 : 1;
|
||||
jit_uint32_t pbe : 1; /* amd reserved */
|
||||
uint32_t fpu : 1;
|
||||
uint32_t vme : 1;
|
||||
uint32_t de : 1;
|
||||
uint32_t pse : 1;
|
||||
uint32_t tsc : 1;
|
||||
uint32_t msr : 1;
|
||||
uint32_t pae : 1;
|
||||
uint32_t mce : 1;
|
||||
uint32_t cmpxchg8b : 1;
|
||||
uint32_t apic : 1;
|
||||
uint32_t __reserved0 : 1;
|
||||
uint32_t sep : 1;
|
||||
uint32_t mtrr : 1;
|
||||
uint32_t pge : 1;
|
||||
uint32_t mca : 1;
|
||||
uint32_t cmov : 1;
|
||||
uint32_t pat : 1;
|
||||
uint32_t pse36 : 1;
|
||||
uint32_t psn : 1; /* amd reserved */
|
||||
uint32_t clfsh : 1;
|
||||
uint32_t __reserved1 : 1;
|
||||
uint32_t ds : 1; /* amd reserved */
|
||||
uint32_t acpi : 1; /* amd reserved */
|
||||
uint32_t mmx : 1;
|
||||
uint32_t fxsr : 1;
|
||||
uint32_t sse : 1;
|
||||
uint32_t sse2 : 1;
|
||||
uint32_t ss : 1; /* amd reserved */
|
||||
uint32_t htt : 1;
|
||||
uint32_t tm : 1; /* amd reserved */
|
||||
uint32_t __reserved2 : 1;
|
||||
uint32_t pbe : 1; /* amd reserved */
|
||||
} bits;
|
||||
jit_uword_t cpuid;
|
||||
} edx;
|
||||
|
@ -379,7 +379,7 @@ void
|
|||
_jit_init(jit_state_t *_jit)
|
||||
{
|
||||
#if __X32
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
static jit_bool_t first = 1;
|
||||
#endif
|
||||
|
||||
|
@ -400,7 +400,7 @@ _jit_init(jit_state_t *_jit)
|
|||
void
|
||||
_jit_prolog(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
|
||||
if (_jitc->function)
|
||||
jit_epilog();
|
||||
|
@ -421,7 +421,7 @@ _jit_prolog(jit_state_t *_jit)
|
|||
_jitc->function->self.aoff = CVT_OFFSET;
|
||||
_jitc->function->self.call = jit_call_default;
|
||||
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
|
||||
* by rewriting as:
|
||||
|
@ -440,8 +440,8 @@ _jit_prolog(jit_state_t *_jit)
|
|||
jit_regset_new(&_jitc->function->regset);
|
||||
}
|
||||
|
||||
jit_int32_t
|
||||
_jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
||||
int32_t
|
||||
_jit_allocai(jit_state_t *_jit, int32_t length)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
switch (length) {
|
||||
|
@ -467,13 +467,13 @@ _jit_allocai(jit_state_t *_jit, jit_int32_t length)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_ww(allocar, u, v);
|
||||
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;
|
||||
}
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -500,7 +500,7 @@ _jit_ret(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
/* movr(%ret, %ret) would be optimized out */
|
||||
|
@ -522,7 +522,7 @@ _jit_reti(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_FRET != u)
|
||||
|
@ -543,7 +543,7 @@ _jit_reti_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
if (JIT_FRET != u)
|
||||
|
@ -621,7 +621,7 @@ _jit_ellipsis(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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_pushargr(u);
|
||||
|
@ -632,7 +632,7 @@ jit_node_t *
|
|||
_jit_arg(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
assert(!(_jitc->function->self.call & jit_call_varargs));
|
||||
#if __X64
|
||||
|
@ -658,7 +658,7 @@ jit_node_t *
|
|||
_jit_arg_f(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
assert(!(_jitc->function->self.call & jit_call_varargs));
|
||||
#if __X64
|
||||
|
@ -687,7 +687,7 @@ jit_node_t *
|
|||
_jit_arg_d(jit_state_t *_jit)
|
||||
{
|
||||
jit_node_t *node;
|
||||
jit_int32_t offset;
|
||||
int32_t offset;
|
||||
assert(_jitc->function);
|
||||
assert(!(_jitc->function->self.call & jit_call_varargs));
|
||||
#if __X64
|
||||
|
@ -713,7 +713,7 @@ _jit_arg_d(jit_state_t *_jit)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_wp(putargi, u, v);
|
||||
#if __X64
|
||||
|
@ -848,7 +848,7 @@ _jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_fp(putargi_f, u, v);
|
||||
#if __X64
|
||||
|
@ -896,7 +896,7 @@ _jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
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);
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
jit_inc_synth_dp(putargi_d, u, v);
|
||||
#if __X64
|
||||
|
@ -944,7 +944,7 @@ _jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
|
|||
}
|
||||
|
||||
void
|
||||
_jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
||||
_jit_pushargr(jit_state_t *_jit, int32_t u)
|
||||
{
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargr, u);
|
||||
|
@ -971,7 +971,7 @@ _jit_pushargr(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_w(pushargi, u);
|
||||
jit_link_prepare();
|
||||
|
@ -999,7 +999,7 @@ _jit_pushargi(jit_state_t *_jit, jit_word_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_f, u);
|
||||
|
@ -1035,7 +1035,7 @@ _jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_f(pushargi_f, u);
|
||||
jit_link_prepare();
|
||||
|
@ -1071,7 +1071,7 @@ _jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
|
|||
}
|
||||
|
||||
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);
|
||||
jit_inc_synth_w(pushargr_d, u);
|
||||
|
@ -1107,7 +1107,7 @@ _jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
|
|||
void
|
||||
_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
int32_t regno;
|
||||
assert(_jitc->function);
|
||||
jit_inc_synth_d(pushargi_d, u);
|
||||
jit_link_prepare();
|
||||
|
@ -1143,10 +1143,10 @@ _jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
|
|||
}
|
||||
|
||||
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
|
||||
jit_int32_t spec;
|
||||
int32_t spec;
|
||||
|
||||
spec = jit_class(_rvs[regno].spec);
|
||||
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
|
||||
_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;
|
||||
assert(_jitc->function);
|
||||
reg = r0;
|
||||
|
@ -1204,7 +1204,7 @@ jit_node_t *
|
|||
_jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
||||
{
|
||||
#if __X64
|
||||
jit_int32_t reg;
|
||||
int32_t reg;
|
||||
#endif
|
||||
jit_node_t *node;
|
||||
assert(_jitc->function);
|
||||
|
@ -1237,7 +1237,7 @@ _jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
|
|||
}
|
||||
|
||||
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_extr_c(r0, JIT_RET);
|
||||
|
@ -1245,7 +1245,7 @@ _jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_uc(r0, JIT_RET);
|
||||
|
@ -1253,7 +1253,7 @@ _jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_s(r0, JIT_RET);
|
||||
|
@ -1261,7 +1261,7 @@ _jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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_extr_us(r0, JIT_RET);
|
||||
|
@ -1269,7 +1269,7 @@ _jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
#if __X32 || __X64_32
|
||||
|
@ -1283,7 +1283,7 @@ _jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
|
|||
|
||||
#if __X64 && !__X64_32
|
||||
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_extr_ui(r0, JIT_RET);
|
||||
|
@ -1291,7 +1291,7 @@ _jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
if (r0 != JIT_RET)
|
||||
|
@ -1301,7 +1301,7 @@ _jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
|
|||
#endif
|
||||
|
||||
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);
|
||||
#if __X64
|
||||
|
@ -1312,7 +1312,7 @@ _jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
|
|||
}
|
||||
|
||||
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);
|
||||
#if __X64
|
||||
|
@ -1328,15 +1328,15 @@ _emit_code(jit_state_t *_jit)
|
|||
jit_node_t *node;
|
||||
jit_node_t *temp;
|
||||
jit_word_t word;
|
||||
jit_int32_t value;
|
||||
jit_int32_t offset;
|
||||
int32_t value;
|
||||
int32_t offset;
|
||||
struct {
|
||||
jit_node_t *node;
|
||||
jit_word_t word;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
jit_word_t prevw;
|
||||
#endif
|
||||
jit_int32_t patch_offset;
|
||||
int32_t patch_offset;
|
||||
} undo;
|
||||
#if DEVEL_DISASSEMBLER
|
||||
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
|
||||
_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);
|
||||
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
|
||||
_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);
|
||||
sse_ldxi_f(r0, _RBP_REGNO, CVT_OFFSET);
|
||||
}
|
||||
|
||||
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);
|
||||
sse_ldxi_d(r0, _RBP_REGNO, CVT_OFFSET);
|
||||
}
|
||||
|
||||
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);
|
||||
x87_ldxi_f(r0, _RBP_REGNO, CVT_OFFSET);
|
||||
}
|
||||
|
||||
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);
|
||||
x87_ldxi_d(r0, _RBP_REGNO, CVT_OFFSET);
|
||||
|
|
36
jit/x86.h
36
jit/x86.h
|
@ -154,41 +154,41 @@ typedef enum {
|
|||
|
||||
typedef struct {
|
||||
/* x87 present */
|
||||
jit_uint32_t fpu : 1;
|
||||
uint32_t fpu : 1;
|
||||
/* cmpxchg8b instruction */
|
||||
jit_uint32_t cmpxchg8b : 1;
|
||||
uint32_t cmpxchg8b : 1;
|
||||
/* cmov and fcmov branchless conditional mov */
|
||||
jit_uint32_t cmov : 1;
|
||||
uint32_t cmov : 1;
|
||||
/* mmx registers/instructions available */
|
||||
jit_uint32_t mmx : 1;
|
||||
uint32_t mmx : 1;
|
||||
/* sse registers/instructions available */
|
||||
jit_uint32_t sse : 1;
|
||||
uint32_t sse : 1;
|
||||
/* sse2 registers/instructions available */
|
||||
jit_uint32_t sse2 : 1;
|
||||
uint32_t sse2 : 1;
|
||||
/* sse3 instructions available */
|
||||
jit_uint32_t sse3 : 1;
|
||||
uint32_t sse3 : 1;
|
||||
/* pcmulqdq instruction */
|
||||
jit_uint32_t pclmulqdq : 1;
|
||||
uint32_t pclmulqdq : 1;
|
||||
/* ssse3 suplemental sse3 instructions available */
|
||||
jit_uint32_t ssse3 : 1;
|
||||
uint32_t ssse3 : 1;
|
||||
/* fused multiply/add using ymm state */
|
||||
jit_uint32_t fma : 1;
|
||||
uint32_t fma : 1;
|
||||
/* cmpxchg16b instruction */
|
||||
jit_uint32_t cmpxchg16b : 1;
|
||||
uint32_t cmpxchg16b : 1;
|
||||
/* sse4.1 instructions available */
|
||||
jit_uint32_t sse4_1 : 1;
|
||||
uint32_t sse4_1 : 1;
|
||||
/* sse4.2 instructions available */
|
||||
jit_uint32_t sse4_2 : 1;
|
||||
uint32_t sse4_2 : 1;
|
||||
/* movbe instruction available */
|
||||
jit_uint32_t movbe : 1;
|
||||
uint32_t movbe : 1;
|
||||
/* popcnt instruction available */
|
||||
jit_uint32_t popcnt : 1;
|
||||
uint32_t popcnt : 1;
|
||||
/* aes instructions available */
|
||||
jit_uint32_t aes : 1;
|
||||
uint32_t aes : 1;
|
||||
/* avx instructions available */
|
||||
jit_uint32_t avx : 1;
|
||||
uint32_t avx : 1;
|
||||
/* lahf/sahf available in 64 bits mode */
|
||||
jit_uint32_t lahf : 1;
|
||||
uint32_t lahf : 1;
|
||||
} jit_cpu_t;
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue