mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-19 11:10:25 +02:00
Provide some type safety for jit_gpr_t and jit_fpr_t
This commit is contained in:
parent
cacdeeee4b
commit
99b4fd2d79
22 changed files with 265 additions and 350 deletions
146
jit/x86-cpu.c
146
jit/x86-cpu.c
|
@ -272,9 +272,9 @@ get_temp_gpr(jit_state_t *_jit)
|
|||
_jit->temp_gpr_saved = 1;
|
||||
#if __X32
|
||||
pushr(_jit, _RBP_REGNO);
|
||||
return _RBP;
|
||||
return JIT_GPR(_RBP);
|
||||
#else
|
||||
return _R8;
|
||||
return JIT_GPR(_R8);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -504,7 +504,7 @@ alui(jit_state_t *_jit, int32_t code, int32_t r0, jit_word_t i0)
|
|||
ii(_jit, i0);
|
||||
}
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
alur(_jit, code, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -709,7 +709,7 @@ addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
movi(_jit, r0, i0);
|
||||
iaddr(_jit, r0, r1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
iaddr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -735,7 +735,7 @@ addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
iaddi(_jit, r0, i0);
|
||||
}
|
||||
else if (r0 == r1) {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
iaddr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -764,7 +764,7 @@ addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
iaddxi(_jit, r0, i0);
|
||||
}
|
||||
else if (r0 == r1) {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
iaddxr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -809,7 +809,7 @@ subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
movi(_jit, r0, -i0);
|
||||
iaddr(_jit, r0, r1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
isubr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -820,7 +820,7 @@ static void
|
|||
subcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
|
||||
{
|
||||
if (r0 == r2 && r0 != r1) {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(reg), r0);
|
||||
movr(_jit, r0, r1);
|
||||
isubr(_jit, r0, rn(reg));
|
||||
|
@ -838,7 +838,7 @@ subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
if (can_sign_extend_int_p(i0)) {
|
||||
isubi(_jit, r0, i0);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
isubr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -849,7 +849,7 @@ static void
|
|||
subxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
|
||||
{
|
||||
if (r0 == r2 && r0 != r1) {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(reg), r0);
|
||||
movr(_jit, r0, r1);
|
||||
isubxr(_jit, r0, rn(reg));
|
||||
|
@ -867,7 +867,7 @@ subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
if (can_sign_extend_int_p(i0)) {
|
||||
isubxi(_jit, r0, i0);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
imovi(_jit, rn(reg), i0);
|
||||
isubxr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -887,7 +887,7 @@ rotshr(jit_state_t *_jit, int32_t code,
|
|||
int32_t r0, int32_t r1, int32_t r2)
|
||||
{
|
||||
if (r0 == _RCX_REGNO) {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(reg), r1);
|
||||
if (r2 != _RCX_REGNO)
|
||||
movr(_jit, _RCX_REGNO, r2);
|
||||
|
@ -1004,7 +1004,7 @@ imuli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
ii(_jit, i0);
|
||||
}
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
imulr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1132,7 +1132,7 @@ iqmuli(jit_state_t *_jit, int32_t r0, int32_t r1,
|
|||
ixorr(_jit, r0, r0);
|
||||
ixorr(_jit, r1, r1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
if (sign)
|
||||
qmulr(_jit, r0, r1, r2, rn(reg));
|
||||
|
@ -1172,9 +1172,9 @@ divremr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2,
|
|||
|
||||
int tmp_divisor = 0;
|
||||
if (r2 == _RAX_REGNO || r2 == _RDX_REGNO) {
|
||||
int32_t tmp = get_temp_gpr(_jit);
|
||||
movr(_jit, tmp, r2);
|
||||
r2 = tmp;
|
||||
jit_gpr_t tmp = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(tmp), r2);
|
||||
r2 = rn(tmp);
|
||||
tmp_divisor = 1;
|
||||
}
|
||||
|
||||
|
@ -1206,10 +1206,10 @@ static void
|
|||
divremi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0,
|
||||
jit_bool_t sign, jit_bool_t divide)
|
||||
{
|
||||
int32_t r2 = get_temp_gpr(_jit);
|
||||
movi(_jit, r2, i0);
|
||||
jit_gpr_t tmp = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(tmp), i0);
|
||||
|
||||
divremr(_jit, r0, r1, r2, sign, divide);
|
||||
divremr(_jit, r0, r1, rn(tmp), sign, divide);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1272,9 +1272,9 @@ iqdivr(jit_state_t *_jit, int32_t r0, int32_t r1,
|
|||
|
||||
int tmp_divisor = 0;
|
||||
if (r3 == _RAX_REGNO || r3 == _RDX_REGNO) {
|
||||
int32_t tmp = get_temp_gpr(_jit);
|
||||
movr(_jit, tmp, r3);
|
||||
r3 = tmp;
|
||||
jit_gpr_t tmp = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(tmp), r3);
|
||||
r3 = rn(tmp);
|
||||
tmp_divisor = 1;
|
||||
}
|
||||
|
||||
|
@ -1323,7 +1323,7 @@ static void
|
|||
iqdivi(jit_state_t *_jit, int32_t r0, int32_t r1,
|
||||
int32_t r2, jit_word_t i0, jit_bool_t sign)
|
||||
{
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
if (sign)
|
||||
qdivr(_jit, r0, r1, r2, rn(reg));
|
||||
|
@ -1378,7 +1378,7 @@ andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
if (can_sign_extend_int_p(i0)) {
|
||||
iandi(_jit, r0, i0);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
iandr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1419,7 +1419,7 @@ ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
movi(_jit, r0, i0);
|
||||
iorr(_jit, r0, r1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
iorr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1456,7 +1456,7 @@ xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
movi(_jit, r0, i0);
|
||||
ixorr(_jit, r0, r1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ixorr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1475,7 +1475,7 @@ cr(jit_state_t *_jit, int32_t code, int32_t r0, int32_t r1, int32_t r2)
|
|||
imovi(_jit, r0, 0);
|
||||
cc(_jit, code, r0);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
ixorr(_jit, rn(reg), rn(reg));
|
||||
icmpr(_jit, r1, r2);
|
||||
cc(_jit, code, rn(reg));
|
||||
|
@ -1496,7 +1496,7 @@ ci(jit_state_t *_jit, int32_t code, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
imovi(_jit, r0, 0);
|
||||
cc(_jit, code, r0);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
ixorr(_jit, rn(reg), rn(reg));
|
||||
icmpi(_jit, r1, i0);
|
||||
cc(_jit, code, rn(reg));
|
||||
|
@ -1517,7 +1517,7 @@ ci0(jit_state_t *_jit, int32_t code, int32_t r0, int32_t r1)
|
|||
imovi(_jit, r0, 0);
|
||||
cc(_jit, code, r0);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
ixorr(_jit, rn(reg), rn(reg));
|
||||
testr(_jit, r1, r1);
|
||||
cc(_jit, code, rn(reg));
|
||||
|
@ -1532,7 +1532,7 @@ extr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
|
|||
if (reg8_p(r1)) {
|
||||
movcr(_jit, r0, r1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(reg), r1);
|
||||
movcr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1545,7 +1545,7 @@ extr_uc(jit_state_t *_jit, int32_t r0, int32_t r1)
|
|||
if (reg8_p(r1)) {
|
||||
movcr_u(_jit, r0, r1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(reg), r1);
|
||||
movcr_u(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1626,7 +1626,7 @@ ldi_c(jit_state_t *_jit, int32_t r0, jit_word_t i0)
|
|||
ic(_jit, 0xbe);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldr_c(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1651,7 +1651,7 @@ ldi_uc(jit_state_t *_jit, int32_t r0, jit_word_t i0)
|
|||
ic(_jit, 0xb6);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldr_uc(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1676,7 +1676,7 @@ ldi_s(jit_state_t *_jit, int32_t r0, jit_word_t i0)
|
|||
ic(_jit, 0xbf);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldr_s(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1701,7 +1701,7 @@ ldi_us(jit_state_t *_jit, int32_t r0, jit_word_t i0)
|
|||
ic(_jit, 0xb7);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldr_us(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1733,7 +1733,7 @@ ldi_i(jit_state_t *_jit, int32_t r0, jit_word_t i0)
|
|||
#endif
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldr_i(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1758,7 +1758,7 @@ ldi_ui(jit_state_t *_jit, int32_t r0, jit_word_t i0)
|
|||
ic(_jit, 0x63);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldr_ui(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1782,7 +1782,7 @@ ldi_l(jit_state_t *_jit, int32_t r0, jit_word_t i0)
|
|||
ic(_jit, 0x8b);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldr_l(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1814,7 +1814,7 @@ ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
ic(_jit, 0xbe);
|
||||
rx(_jit, r0, i0, r1, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldxr_c(_jit, r0, r1, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1844,7 +1844,7 @@ ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
ic(_jit, 0xb6);
|
||||
rx(_jit, r0, i0, r1, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldxr_uc(_jit, r0, r1, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1874,7 +1874,7 @@ ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
ic(_jit, 0xbf);
|
||||
rx(_jit, r0, i0, r1, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldxr_s(_jit, r0, r1, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1904,7 +1904,7 @@ ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
ic(_jit, 0xb7);
|
||||
rx(_jit, r0, i0, r1, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldxr_us(_jit, r0, r1, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1936,7 +1936,7 @@ ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
#endif
|
||||
rx(_jit, r0, i0, r1, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldxr_i(_jit, r0, r1, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1967,7 +1967,7 @@ ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
ic(_jit, 0x8b);
|
||||
rx(_jit, r0, i0, r1, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldxr_ui(_jit, r0, r1, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -1991,7 +1991,7 @@ ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
|
|||
ic(_jit, 0x8b);
|
||||
rx(_jit, r0, i0, r1, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
ldxr_l(_jit, r0, r1, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2008,7 +2008,7 @@ str_c(jit_state_t *_jit, int32_t r0, int32_t r1)
|
|||
ic(_jit, 0x88);
|
||||
rx(_jit, r1, 0, r0, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(reg), r1);
|
||||
rex(_jit, 0, 0, rn(reg), _NOREG, r0);
|
||||
ic(_jit, 0x88);
|
||||
|
@ -2026,7 +2026,7 @@ sti_c(jit_state_t *_jit, jit_word_t i0, int32_t r0)
|
|||
ic(_jit, 0x88);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(reg), r0);
|
||||
rex(_jit, 0, 0, rn(reg), _NOREG, _NOREG);
|
||||
ic(_jit, 0x88);
|
||||
|
@ -2034,7 +2034,7 @@ sti_c(jit_state_t *_jit, jit_word_t i0, int32_t r0)
|
|||
unget_temp_gpr(_jit);
|
||||
}
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
str_c(_jit, rn(reg), r0);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2059,7 +2059,7 @@ sti_s(jit_state_t *_jit, jit_word_t i0, int32_t r0)
|
|||
ic(_jit, 0x89);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
str_s(_jit, rn(reg), r0);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2082,7 +2082,7 @@ sti_i(jit_state_t *_jit, jit_word_t i0, int32_t r0)
|
|||
ic(_jit, 0x89);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
str_i(_jit, rn(reg), r0);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2106,7 +2106,7 @@ sti_l(jit_state_t *_jit, jit_word_t i0, int32_t r0)
|
|||
ic(_jit, 0x89);
|
||||
rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
str_l(_jit, rn(reg), r0);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2118,7 +2118,7 @@ static void
|
|||
stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
|
||||
{
|
||||
#if __X64_32
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
addr(_jit, rn(reg), r0, r1);
|
||||
str_c(_jit, rn(reg), r2);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2128,7 +2128,7 @@ stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
|
|||
ic(_jit, 0x88);
|
||||
rx(_jit, r2, 0, r0, r1, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(reg), r2);
|
||||
rex(_jit, 0, 0, rn(reg), r1, r0);
|
||||
ic(_jit, 0x88);
|
||||
|
@ -2147,7 +2147,7 @@ stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
|
|||
ic(_jit, 0x88);
|
||||
rx(_jit, r1, i0, r0, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movr(_jit, rn(reg), r1);
|
||||
rex(_jit, 0, 0, rn(reg), _NOREG, r0);
|
||||
ic(_jit, 0x88);
|
||||
|
@ -2155,7 +2155,7 @@ stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
|
|||
unget_temp_gpr(_jit);
|
||||
}
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
stxr_c(_jit, rn(reg), r0, r1);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2166,7 +2166,7 @@ static void
|
|||
stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
|
||||
{
|
||||
#if __X64_32
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
addr(_jit, rn(reg), r0, r1);
|
||||
str_s(_jit, rn(reg), r2);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2187,7 +2187,7 @@ stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
|
|||
ic(_jit, 0x89);
|
||||
rx(_jit, r1, i0, r0, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
stxr_s(_jit, rn(reg), r0, r1);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2198,7 +2198,7 @@ static void
|
|||
stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
|
||||
{
|
||||
#if __X64_32
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
addr(_jit, rn(reg), r0, r1);
|
||||
str_i(rn(reg), r2);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2217,7 +2217,7 @@ stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
|
|||
ic(_jit, 0x89);
|
||||
rx(_jit, r1, i0, r0, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
stxr_i(_jit, rn(reg), r0, r1);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2241,7 +2241,7 @@ stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
|
|||
ic(_jit, 0x89);
|
||||
rx(_jit, r1, i0, r0, _NOREG, _SCL1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i0);
|
||||
stxr_l(_jit, rn(reg), r0, r1);
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2438,7 +2438,7 @@ bmsi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
if (can_zero_extend_int_p(i1)) {
|
||||
testi(_jit, r0, i1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
testr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2459,7 +2459,7 @@ bmci(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
if (can_zero_extend_int_p(i1)) {
|
||||
testi(_jit, r0, i1);
|
||||
} else {
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
testr(_jit, r0, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2481,7 +2481,7 @@ boaddi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
iaddi(_jit, r0, i1);
|
||||
return jo(_jit);
|
||||
}
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
unget_temp_gpr(_jit);
|
||||
return boaddr(_jit, r0, rn(reg));
|
||||
|
@ -2501,7 +2501,7 @@ boaddi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
iaddi(_jit, r0, i1);
|
||||
return jc(_jit);
|
||||
}
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
unget_temp_gpr(_jit);
|
||||
return boaddr_u(_jit, r0, rn(reg));
|
||||
|
@ -2521,7 +2521,7 @@ bxaddi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
iaddi(_jit, r0, i1);
|
||||
return jno(_jit);
|
||||
}
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
unget_temp_gpr(_jit);
|
||||
return bxaddr(_jit, r0, rn(reg));
|
||||
|
@ -2541,7 +2541,7 @@ bxaddi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
iaddi(_jit, r0, i1);
|
||||
return jnc(_jit);
|
||||
}
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
unget_temp_gpr(_jit);
|
||||
return bxaddr_u(_jit, r0, rn(reg));
|
||||
|
@ -2561,7 +2561,7 @@ bosubi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
isubi(_jit, r0, i1);
|
||||
return jo(_jit);
|
||||
}
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
unget_temp_gpr(_jit);
|
||||
return bosubr(_jit, r0, rn(reg));
|
||||
|
@ -2581,7 +2581,7 @@ bosubi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
isubi(_jit, r0, i1);
|
||||
return jc(_jit);
|
||||
}
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
unget_temp_gpr(_jit);
|
||||
return bosubr_u(_jit, r0, rn(reg));
|
||||
|
@ -2601,7 +2601,7 @@ bxsubi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
isubi(_jit, r0, i1);
|
||||
return jno(_jit);
|
||||
}
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
unget_temp_gpr(_jit);
|
||||
return bxsubr(_jit, r0, rn(reg));
|
||||
|
@ -2621,7 +2621,7 @@ bxsubi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
|
|||
isubi(_jit, r0, i1);
|
||||
return jnc(_jit);
|
||||
}
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
movi(_jit, rn(reg), i1);
|
||||
unget_temp_gpr(_jit);
|
||||
return bxsubr_u(_jit, r0, rn(reg));
|
||||
|
@ -2646,7 +2646,7 @@ calli(jit_state_t *_jit, jit_word_t i0)
|
|||
}
|
||||
else
|
||||
{
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
jit_patch_there(_jit, mov_addr(_jit, rn(reg)), (void*)i0);
|
||||
callr(_jit, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
@ -2672,7 +2672,7 @@ jmpi(jit_state_t *_jit, jit_word_t i0)
|
|||
}
|
||||
else
|
||||
{
|
||||
int32_t reg = get_temp_gpr(_jit);
|
||||
jit_gpr_t reg = get_temp_gpr(_jit);
|
||||
jit_patch_there(_jit, mov_addr(_jit, rn(reg)), (void*)i0);
|
||||
jmpr(_jit, rn(reg));
|
||||
unget_temp_gpr(_jit);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue