mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-06 23:50:18 +02:00
* check/all.tst, check/lightning.c: Only declare or use 64 bit interfaces on 64 bit builds. * check/fib.tst: Use simpler logic to not need preprocessor conditionals for 32 or 64 bit. * include/lightning.h: Only declare 64 bit macros on a 64 bit build. Code using lightning must know about wordsize and the jit generation limitations, also, this way it generates a compile time failure, not a runtime assertion. * include/lightning/jit_x86.h: Correct typo in macro name. * lib/jit_arm.c, lib/jit_arm-cpu.c, lib/jit_mips.c, lib/jit_mips-cpu.c, lib/jit_ppc.c, lib/jit_ppc-cpu.c, lib/jit_x86.c, lib/jit_x86-cpu.c: Correct wrong code to get current jit function pointer. * lib/lightning.c: Move call to the simplify() optimization to after register liveness is known. Previous code did work by accident but now with proper test cases the problem was noticed. * lib/jit_disasm.c: Always cast bfd_vma to long long when passing it as printf argument.
404 lines
7 KiB
Scilab
404 lines
7 KiB
Scilab
.disasm // only disassemble
|
|
.code
|
|
prolog
|
|
allocai 32 $buf
|
|
arg $c
|
|
arg $uc
|
|
arg $s
|
|
arg $us
|
|
arg $i
|
|
#if __WORDSIZE == 64
|
|
arg $ui
|
|
arg $l
|
|
#endif
|
|
getarg_c %r0 $c
|
|
getarg_uc %r0 $uc
|
|
getarg_s %r0 $s
|
|
getarg_us %r0 $us
|
|
getarg_i %r0 $i
|
|
#if __WORDSIZE == 64
|
|
getarg_ui %r0 $ui
|
|
getarg_l %r0 $l
|
|
#endif
|
|
addr %r0 %r1 %r2
|
|
addi %r0 %r1 2
|
|
addxr %r0 %r1 %r2
|
|
addxi %r0 %r1 2
|
|
addcr %r0 %r1 %r2
|
|
addci %r0 %r1 2
|
|
subr %r0 %r1 %r2
|
|
subi %r0 %r1 2
|
|
subxr %r0 %r1 %r2
|
|
subxi %r0 %r1 2
|
|
subcr %r0 %r1 %r2
|
|
subci %r0 %r1 2
|
|
mulr %r0 %r1 %r2
|
|
muli %r0 %r1 2
|
|
divr %r0 %r1 %r2
|
|
divi %r0 %r1 2
|
|
divr_u %r0 %r1 %r2
|
|
divi_u %r0 %r1 2
|
|
remr %r0 %r1 %r2
|
|
remi %r0 %r1 2
|
|
remr_u %r0 %r1 %r2
|
|
remi_u %r0 %r1 2
|
|
andr %r0 %r1 %r2
|
|
andi %r0 %r1 2
|
|
orr %r0 %r1 %r2
|
|
ori %r0 %r1 2
|
|
xorr %r0 %r1 %r2
|
|
xori %r0 %r1 2
|
|
lshr %r0 %r1 %r2
|
|
lshi %r0 %r1 2
|
|
rshr %r0 %r1 %r2
|
|
rshi %r0 %r1 2
|
|
rshr_u %r0 %r1 %r2
|
|
rshi_u %r0 %r1 2
|
|
negr %r0 %r1
|
|
comr %r0 %r1
|
|
ltr %r0 %r1 %r2
|
|
lti %r0 %r1 2
|
|
ltr_u %r0 %r1 %r2
|
|
lti_u %r0 %r1 2
|
|
ler %r0 %r1 %r2
|
|
lei %r0 %r1 2
|
|
ler_u %r0 %r1 %r2
|
|
lei_u %r0 %r1 2
|
|
eqr %r0 %r1 %r2
|
|
eqi %r0 %r1 2
|
|
ger %r0 %r1 %r2
|
|
gei %r0 %r1 2
|
|
ger_u %r0 %r1 %r2
|
|
gei_u %r0 %r1 2
|
|
gtr %r0 %r1 %r2
|
|
gti %r0 %r1 2
|
|
gtr_u %r0 %r1 %r2
|
|
gti_u %r0 %r1 2
|
|
ner %r0 %r1 %r2
|
|
nei %r0 %r1 2
|
|
movr %r0 %r1
|
|
movi %r0 1
|
|
extr_c %r0 %r1
|
|
extr_uc %r0 %r1
|
|
extr_s %r0 %r1
|
|
extr_us %r0 %r1
|
|
#if __WORDSIZE == 64
|
|
extr_i %r0 %r1
|
|
extr_ui %r0 %r1
|
|
#endif
|
|
htonr %r0 %r1
|
|
ntohr %r0 %r1
|
|
ldr_c %r0 %r1
|
|
ldi_c %r0 0x80000000
|
|
ldr_uc %r0 %r1
|
|
ldi_uc %r0 0x80000000
|
|
ldr_s %r0 %r1
|
|
ldi_s %r0 0x80000000
|
|
ldr_us %r0 %r1
|
|
ldi_us %r0 0x80000000
|
|
ldr_i %r0 %r1
|
|
ldi_i %r0 0x80000000
|
|
#if __WORDSIZE == 64
|
|
ldr_ui %r0 %r1
|
|
ldi_ui %r0 0x80000000
|
|
ldr_l %r0 %r1
|
|
ldi_l %r0 0x80000000
|
|
#endif
|
|
ldxr_c %r0 %r1 %r2
|
|
ldxi_c %r0 %r1 1
|
|
ldxr_uc %r0 %r1 %r2
|
|
ldxi_uc %r0 %r1 1
|
|
ldxr_s %r0 %r1 %r2
|
|
ldxi_s %r0 %r1 2
|
|
ldxr_us %r0 %r1 %r2
|
|
ldxi_us %r0 %r1 2
|
|
ldxr_i %r0 %r1 %r2
|
|
ldxi_i %r0 %r1 4
|
|
#if __WORDSIZE == 64
|
|
ldxr_ui %r0 %r1 %r2
|
|
ldxi_ui %r0 %r1 4
|
|
ldxr_l %r0 %r1 %r2
|
|
ldxi_l %r0 %r1 8
|
|
#endif
|
|
str_c %r1 %r0
|
|
sti_c 0x80000000 %r1
|
|
str_s %r1 %r0
|
|
sti_s 0x80000000 %r1
|
|
str_i %r1 %r0
|
|
sti_i 0x80000000 %r1
|
|
#if __WORDSIZE == 64
|
|
str_l %r1 %r0
|
|
sti_l 0x80000000 %r1
|
|
#endif
|
|
stxr_c %r2 %r1 %r0
|
|
stxi_c 1 %r1 %r0
|
|
stxr_s %r2 %r1 %r0
|
|
stxi_s 2 %r1 %r0
|
|
stxr_i %r2 %r1 %r0
|
|
stxi_i 4 %r1 %r0
|
|
#if __WORDSIZE == 64
|
|
stxr_l %r2 %r1 %r0
|
|
stxi_l 8 %r1 %r0
|
|
#endif
|
|
cond:
|
|
bltr cond %r0 %r1
|
|
condi:
|
|
blti condi %r0 1
|
|
condu:
|
|
bltr_u condu %r0 %r1
|
|
condiu:
|
|
blti_u condiu %r0 1
|
|
bler cond %r0 %r1
|
|
blei condi %r0 1
|
|
bler_u condu %r0 %r1
|
|
blei_u condiu %r0 1
|
|
bool:
|
|
beqr bool %r0 %r1
|
|
booli:
|
|
beqi booli %r0 1
|
|
bger cond %r0 %r1
|
|
bgei condi %r0 1
|
|
bger_u condu %r0 %r1
|
|
bgei_u condiu %r0 1
|
|
bgtr cond %r0 %r1
|
|
bgti condi %r0 1
|
|
bgtr_u condu %r0 %r1
|
|
bgti_u condiu %r0 1
|
|
bner bool %r0 %r1
|
|
bnei booli %r0 1
|
|
mask:
|
|
bmsr mask %r0 %r1
|
|
maski:
|
|
bmsi maski %r0 1
|
|
bmcr mask %r0 %r1
|
|
bmci maski %r0 1
|
|
as:
|
|
boaddr as %r0 %r1
|
|
asi:
|
|
boaddi asi %r0 1
|
|
asu:
|
|
boaddr_u as %r0 %r1
|
|
boaddi_u asi %r0 1
|
|
bxaddr as %r0 %r1
|
|
bxaddi asi %r0 1
|
|
bxaddr_u as %r0 %r1
|
|
bxaddi_u asi %r0 1
|
|
bosubr as %r0 %r1
|
|
bosubi asi %r0 1
|
|
bosubr_u as %r0 %r1
|
|
bosubi_u asi %r0 1
|
|
bxsubr as %r0 %r1
|
|
bxsubi asi %r0 1
|
|
bxsubr_u as %r0 %r1
|
|
bxsubi_u asi %r0 1
|
|
label:
|
|
jmpr %r0
|
|
jmpi label
|
|
callr %r0
|
|
calli label
|
|
prepare 0
|
|
pushargr %r0
|
|
finishr %r0
|
|
prepare 1
|
|
pushargi 1
|
|
finishi 0x80000000
|
|
ret
|
|
retr %r1
|
|
reti 2
|
|
retval_c %r1
|
|
retval_uc %r1
|
|
retval_s %r1
|
|
retval_us %r1
|
|
retval_i %r1
|
|
#if __WORDSIZE == 64
|
|
retval_ui %r1
|
|
retval_l %r1
|
|
#endif
|
|
arg_f $f
|
|
getarg_f %f1 $f
|
|
addr_f %f0 %f1 %f2
|
|
addi_f %f0 %f1 0.5
|
|
subr_f %f0 %f1 %f2
|
|
subi_f %f0 %f1 0.5
|
|
mulr_f %f0 %f1 %f2
|
|
muli_f %f0 %f1 0.5
|
|
divr_f %f0 %f1 %f2
|
|
divi_f %f0 %f1 0.5
|
|
negr_f %f0 %f1
|
|
absr_f %f0 %f1
|
|
sqrtr_f %f0 %f1
|
|
ltr_f %r0 %f0 %f1
|
|
lti_f %r0 %f0 0.5
|
|
ler_f %r0 %f0 %f1
|
|
lei_f %r0 %f0 0.5
|
|
eqr_f %r0 %f0 %f1
|
|
eqi_f %r0 %f0 0.5
|
|
ger_f %r0 %f0 %f1
|
|
gei_f %r0 %f0 0.5
|
|
gtr_f %r0 %f0 %f1
|
|
gti_f %r0 %f0 0.5
|
|
ner_f %r0 %f0 %f1
|
|
nei_f %r0 %f0 0.5
|
|
unltr_f %r0 %f0 %f1
|
|
unlti_f %r0 %f0 0.5
|
|
unler_f %r0 %f0 %f1
|
|
unlei_f %r0 %f0 0.5
|
|
uneqr_f %r0 %f0 %f1
|
|
uneqi_f %r0 %f0 0.5
|
|
unger_f %r0 %f0 %f1
|
|
ungei_f %r0 %f0 0.5
|
|
ungtr_f %r0 %f0 %f1
|
|
ungti_f %r0 %f0 0.5
|
|
ltgtr_f %r0 %f0 %f1
|
|
ltgti_f %r0 %f0 0.5
|
|
ordr_f %r0 %f0 %f1
|
|
ordi_f %r0 %f0 0.5
|
|
unordr_f %r0 %f0 %f1
|
|
unordi_f %r0 %f0 0.5
|
|
truncr_f_i %r0 %f0
|
|
#if __WORDSIZE == 64
|
|
truncr_f_l %r0 %f0
|
|
#endif
|
|
extr_f %f0 %r0
|
|
extr_d_f %f0 %f1
|
|
movr_f %f0 %f1
|
|
movi_f %f0 1.5
|
|
ldr_f %f0 %r0
|
|
ldi_f %f0 0x80000000
|
|
ldxr_f %f0 %r0 %r1
|
|
ldxi_f %f0 %r0 4
|
|
str_f %r0 %f0
|
|
sti_f 0x80000000 %f0
|
|
stxr_f %r1 %r0 %f0
|
|
stxi_f 4 %r0 %f0
|
|
ord:
|
|
bltr_f ord %f0 %f1
|
|
ordi:
|
|
blti_f ordi %f0 0.5
|
|
bler_f ord %f0 %f1
|
|
blei_f ordi %f0 0.5
|
|
beqr_f ord %f0 %f1
|
|
beqi_f ordi %f0 0.5
|
|
bger_f ord %f0 %f1
|
|
bgei_f ordi %f0 0.5
|
|
bgtr_f ord %f0 %f1
|
|
bgti_f ordi %f0 0.5
|
|
bner_f ord %f0 %f1
|
|
bnei_f ordi %f0 0.5
|
|
unord:
|
|
bunltr_f unord %f0 %f1
|
|
unordi:
|
|
bunlti_f unordi %f0 0.5
|
|
bunler_f unord %f0 %f1
|
|
bunlei_f unordi %f0 0.5
|
|
buneqr_f unord %f0 %f1
|
|
buneqi_f unordi %f0 0.5
|
|
bunger_f unord %f0 %f1
|
|
bungei_f unordi %f0 0.5
|
|
bungtr_f unord %f0 %f1
|
|
bungti_f unordi %f0 0.5
|
|
bltgtr_f unord %f0 %f1
|
|
bltgti_f unordi %f0 0.5
|
|
bordr_f unord %f0 %f1
|
|
bordi_f unordi %f0 0.5
|
|
bunordr_f unord %f0 %f1
|
|
bunordi_f unordi %f0 0.5
|
|
prepare 0
|
|
pushargr_f %f1
|
|
pushargi_f 0.5
|
|
finishi 0x80000000
|
|
retr_f %f1
|
|
reti_f 0.5
|
|
retval_f %f1
|
|
arg_d $f
|
|
getarg_d %f1 $f
|
|
addr_d %f0 %f1 %f2
|
|
addi_d %f0 %f1 0.5
|
|
subr_d %f0 %f1 %f2
|
|
subi_d %f0 %f1 0.5
|
|
mulr_d %f0 %f1 %f2
|
|
muli_d %f0 %f1 0.5
|
|
divr_d %f0 %f1 %f2
|
|
divi_d %f0 %f1 0.5
|
|
negr_d %f0 %f1
|
|
absr_d %f0 %f1
|
|
sqrtr_d %f0 %f1
|
|
ltr_d %r0 %f0 %f1
|
|
lti_d %r0 %f0 0.5
|
|
ler_d %r0 %f0 %f1
|
|
lei_d %r0 %f0 0.5
|
|
eqr_d %r0 %f0 %f1
|
|
eqi_d %r0 %f0 0.5
|
|
ger_d %r0 %f0 %f1
|
|
gei_d %r0 %f0 0.5
|
|
gtr_d %r0 %f0 %f1
|
|
gti_d %r0 %f0 0.5
|
|
ner_d %r0 %f0 %f1
|
|
nei_d %r0 %f0 0.5
|
|
unltr_d %r0 %f0 %f1
|
|
unlti_d %r0 %f0 0.5
|
|
unler_d %r0 %f0 %f1
|
|
unlei_d %r0 %f0 0.5
|
|
uneqr_d %r0 %f0 %f1
|
|
uneqi_d %r0 %f0 0.5
|
|
unger_d %r0 %f0 %f1
|
|
ungei_d %r0 %f0 0.5
|
|
ungtr_d %r0 %f0 %f1
|
|
ungti_d %r0 %f0 0.5
|
|
ltgtr_d %r0 %f0 %f1
|
|
ltgti_d %r0 %f0 0.5
|
|
ordr_d %r0 %f0 %f1
|
|
ordi_d %r0 %f0 0.5
|
|
unordr_d %r0 %f0 %f1
|
|
unordi_d %r0 %f0 0.5
|
|
truncr_d_i %r0 %f0
|
|
#if __WORDSIZE == 64
|
|
truncr_d_l %r0 %f0
|
|
#endif
|
|
extr_d %f0 %r0
|
|
extr_f_d %f0 %f1
|
|
movr_d %f0 %f1
|
|
movi_d %f0 1.5
|
|
ldr_d %f0 %r0
|
|
ldi_d %f0 0x80000000
|
|
ldxr_d %f0 %r0 %r1
|
|
ldxi_d %f0 %r0 8
|
|
str_d %r0 %f0
|
|
sti_d 0x80000000 %f0
|
|
stxr_d %r1 %r0 %f0
|
|
stxi_d 8 %r0 %f0
|
|
bltr_d ord %f0 %f1
|
|
blti_d ordi %f0 0.5
|
|
bler_d ord %f0 %f1
|
|
blei_d ordi %f0 0.5
|
|
beqr_d ord %f0 %f1
|
|
beqi_d ordi %f0 0.5
|
|
bger_d ord %f0 %f1
|
|
bgei_d ordi %f0 0.5
|
|
bgtr_d ord %f0 %f1
|
|
bgti_d ordi %f0 0.5
|
|
bner_d ord %f0 %f1
|
|
bnei_d ordi %f0 0.5
|
|
bunltr_d unord %f0 %f1
|
|
bunlti_d unordi %f0 0.5
|
|
bunler_d unord %f0 %f1
|
|
bunlei_d unordi %f0 0.5
|
|
buneqr_d unord %f0 %f1
|
|
buneqi_d unordi %f0 0.5
|
|
bunger_d unord %f0 %f1
|
|
bungei_d unordi %f0 0.5
|
|
bungtr_d unord %f0 %f1
|
|
bungti_d unordi %f0 0.5
|
|
bltgtr_d unord %f0 %f1
|
|
bltgti_d unordi %f0 0.5
|
|
bordr_d unord %f0 %f1
|
|
bordi_d unordi %f0 0.5
|
|
bunordr_d unord %f0 %f1
|
|
bunordi_d unordi %f0 0.5
|
|
prepare 0
|
|
pushargr_d %f1
|
|
pushargi_d 0.5
|
|
finishi 0x80000000
|
|
retr_d %f1
|
|
reti_d 0.5
|
|
retval_d %f1
|