summaryrefslogtreecommitdiff
path: root/libguile
diff options
context:
space:
mode:
Diffstat (limited to 'libguile')
-rw-r--r--libguile/Makefile.am4
-rw-r--r--libguile/lightning/.gitattributes1
-rw-r--r--libguile/lightning/.gitignore35
-rw-r--r--libguile/lightning/.gitlab-ci.yml9
-rw-r--r--libguile/lightning/ChangeLog4025
-rw-r--r--libguile/lightning/ChangeLog.lightning4018
-rw-r--r--libguile/lightning/README3
-rw-r--r--libguile/lightning/README.md37
-rw-r--r--libguile/lightning/TODO28
-rw-r--r--libguile/lightning/include/lightning.h1096
-rw-r--r--libguile/lightning/include/lightning/jit_private.h740
-rw-r--r--libguile/lightning/include/lightning/jit_x86.h199
-rw-r--r--libguile/lightning/jit.h519
-rw-r--r--libguile/lightning/jit/aarch64-cpu.c (renamed from libguile/lightning/lib/jit_aarch64-cpu.c)574
-rw-r--r--libguile/lightning/jit/aarch64-fpu.c (renamed from libguile/lightning/lib/jit_aarch64-fpu.c)298
-rw-r--r--libguile/lightning/jit/aarch64.c (renamed from libguile/lightning/lib/jit_aarch64.c)146
-rw-r--r--libguile/lightning/jit/aarch64.h (renamed from libguile/lightning/include/lightning/jit_aarch64.h)0
-rw-r--r--libguile/lightning/jit/alpha-cpu.c (renamed from libguile/lightning/lib/jit_alpha-cpu.c)780
-rw-r--r--libguile/lightning/jit/alpha-fpu.c (renamed from libguile/lightning/lib/jit_alpha-fpu.c)434
-rw-r--r--libguile/lightning/jit/alpha.c (renamed from libguile/lightning/lib/jit_alpha.c)134
-rw-r--r--libguile/lightning/jit/alpha.h (renamed from libguile/lightning/include/lightning/jit_alpha.h)0
-rw-r--r--libguile/lightning/jit/arm-cpu.c (renamed from libguile/lightning/lib/jit_arm-cpu.c)546
-rw-r--r--libguile/lightning/jit/arm-swf.c (renamed from libguile/lightning/lib/jit_arm-swf.c)352
-rw-r--r--libguile/lightning/jit/arm-vfp.c (renamed from libguile/lightning/lib/jit_arm-vfp.c)418
-rw-r--r--libguile/lightning/jit/arm.c (renamed from libguile/lightning/lib/jit_arm.c)160
-rw-r--r--libguile/lightning/jit/arm.h (renamed from libguile/lightning/include/lightning/jit_arm.h)18
-rw-r--r--libguile/lightning/jit/endian.h110
-rw-r--r--libguile/lightning/jit/hppa-cpu.c (renamed from libguile/lightning/lib/jit_hppa-cpu.c)810
-rw-r--r--libguile/lightning/jit/hppa-fpu.c (renamed from libguile/lightning/lib/jit_hppa-fpu.c)262
-rw-r--r--libguile/lightning/jit/hppa.c (renamed from libguile/lightning/lib/jit_hppa.c)111
-rw-r--r--libguile/lightning/jit/hppa.h (renamed from libguile/lightning/include/lightning/jit_hppa.h)0
-rw-r--r--libguile/lightning/jit/ia64-cpu.c (renamed from libguile/lightning/lib/jit_ia64-cpu.c)772
-rw-r--r--libguile/lightning/jit/ia64-fpu.c (renamed from libguile/lightning/lib/jit_ia64-fpu.c)404
-rw-r--r--libguile/lightning/jit/ia64.c (renamed from libguile/lightning/lib/jit_ia64.c)125
-rw-r--r--libguile/lightning/jit/ia64.h (renamed from libguile/lightning/include/lightning/jit_ia64.h)0
-rw-r--r--libguile/lightning/jit/jit.c490
-rw-r--r--libguile/lightning/jit/mips-cpu.c (renamed from libguile/lightning/lib/jit_mips-cpu.c)928
-rw-r--r--libguile/lightning/jit/mips-fpu.c (renamed from libguile/lightning/lib/jit_mips-fpu.c)552
-rw-r--r--libguile/lightning/jit/mips.c (renamed from libguile/lightning/lib/jit_mips.c)132
-rw-r--r--libguile/lightning/jit/mips.h (renamed from libguile/lightning/include/lightning/jit_mips.h)0
-rw-r--r--libguile/lightning/jit/ppc-cpu.c (renamed from libguile/lightning/lib/jit_ppc-cpu.c)822
-rw-r--r--libguile/lightning/jit/ppc-fpu.c (renamed from libguile/lightning/lib/jit_ppc-fpu.c)382
-rw-r--r--libguile/lightning/jit/ppc.c (renamed from libguile/lightning/lib/jit_ppc.c)126
-rw-r--r--libguile/lightning/jit/ppc.h (renamed from libguile/lightning/include/lightning/jit_ppc.h)0
-rw-r--r--libguile/lightning/jit/s390-cpu.c (renamed from libguile/lightning/lib/jit_s390-cpu.c)766
-rw-r--r--libguile/lightning/jit/s390-fpu.c (renamed from libguile/lightning/lib/jit_s390-fpu.c)324
-rw-r--r--libguile/lightning/jit/s390.c (renamed from libguile/lightning/lib/jit_s390.c)149
-rw-r--r--libguile/lightning/jit/s390.h (renamed from libguile/lightning/include/lightning/jit_s390.h)0
-rw-r--r--libguile/lightning/jit/sparc-cpu.c (renamed from libguile/lightning/lib/jit_sparc-cpu.c)584
-rw-r--r--libguile/lightning/jit/sparc-fpu.c (renamed from libguile/lightning/lib/jit_sparc-fpu.c)302
-rw-r--r--libguile/lightning/jit/sparc.c (renamed from libguile/lightning/lib/jit_sparc.c)130
-rw-r--r--libguile/lightning/jit/sparc.h (renamed from libguile/lightning/include/lightning/jit_sparc.h)0
-rw-r--r--libguile/lightning/jit/x86-cpu.c2762
-rw-r--r--libguile/lightning/jit/x86-sse.c1036
-rw-r--r--libguile/lightning/jit/x86-x87.c (renamed from libguile/lightning/lib/jit_x86-x87.c)376
-rw-r--r--libguile/lightning/jit/x86.c832
-rw-r--r--libguile/lightning/jit/x86.h215
-rw-r--r--libguile/lightning/lib/jit_aarch64-sz.c402
-rw-r--r--libguile/lightning/lib/jit_alpha-sz.c402
-rw-r--r--libguile/lightning/lib/jit_arm-sz.c808
-rw-r--r--libguile/lightning/lib/jit_hppa-sz.c402
-rw-r--r--libguile/lightning/lib/jit_ia64-sz.c402
-rw-r--r--libguile/lightning/lib/jit_memory.c126
-rw-r--r--libguile/lightning/lib/jit_mips-sz.c1210
-rw-r--r--libguile/lightning/lib/jit_names.c230
-rw-r--r--libguile/lightning/lib/jit_note.c417
-rw-r--r--libguile/lightning/lib/jit_ppc-sz.c1622
-rw-r--r--libguile/lightning/lib/jit_print.c370
-rw-r--r--libguile/lightning/lib/jit_rewind.c195
-rw-r--r--libguile/lightning/lib/jit_s390-sz.c804
-rw-r--r--libguile/lightning/lib/jit_size.c79
-rw-r--r--libguile/lightning/lib/jit_sparc-sz.c803
-rw-r--r--libguile/lightning/lib/jit_x86-cpu.c3861
-rw-r--r--libguile/lightning/lib/jit_x86-sse.c1569
-rw-r--r--libguile/lightning/lib/jit_x86-sz.c1610
-rw-r--r--libguile/lightning/lib/jit_x86.c2264
-rw-r--r--libguile/lightning/lib/lightning.c3391
-rw-r--r--libguile/lightning/lightning.am115
-rw-r--r--libguile/lightning/lightning.texi1760
-rw-r--r--libguile/lightning/tests/Makefile24
-rw-r--r--libguile/lightning/tests/absr_d.c30
-rw-r--r--libguile/lightning/tests/absr_f.c30
-rw-r--r--libguile/lightning/tests/addi.c29
-rw-r--r--libguile/lightning/tests/addr.c29
-rw-r--r--libguile/lightning/tests/addr_d.c30
-rw-r--r--libguile/lightning/tests/addr_f.c30
-rw-r--r--libguile/lightning/tests/addx.c65
-rw-r--r--libguile/lightning/tests/andi.c35
-rw-r--r--libguile/lightning/tests/andr.c51
-rw-r--r--libguile/lightning/tests/beqi.c31
-rw-r--r--libguile/lightning/tests/beqr.c34
-rw-r--r--libguile/lightning/tests/beqr_d.c37
-rw-r--r--libguile/lightning/tests/beqr_f.c37
-rw-r--r--libguile/lightning/tests/bgei.c31
-rw-r--r--libguile/lightning/tests/bgei_u.c31
-rw-r--r--libguile/lightning/tests/bger.c33
-rw-r--r--libguile/lightning/tests/bger_d.c36
-rw-r--r--libguile/lightning/tests/bger_f.c36
-rw-r--r--libguile/lightning/tests/bger_u.c33
-rw-r--r--libguile/lightning/tests/bgti.c31
-rw-r--r--libguile/lightning/tests/bgti_u.c31
-rw-r--r--libguile/lightning/tests/bgtr.c33
-rw-r--r--libguile/lightning/tests/bgtr_d.c36
-rw-r--r--libguile/lightning/tests/bgtr_f.c36
-rw-r--r--libguile/lightning/tests/bgtr_u.c33
-rw-r--r--libguile/lightning/tests/blei.c31
-rw-r--r--libguile/lightning/tests/blei_u.c31
-rw-r--r--libguile/lightning/tests/bler.c33
-rw-r--r--libguile/lightning/tests/bler_d.c36
-rw-r--r--libguile/lightning/tests/bler_f.c36
-rw-r--r--libguile/lightning/tests/bler_u.c33
-rw-r--r--libguile/lightning/tests/bltgtr_d.c38
-rw-r--r--libguile/lightning/tests/bltgtr_f.c38
-rw-r--r--libguile/lightning/tests/blti.c31
-rw-r--r--libguile/lightning/tests/blti_u.c31
-rw-r--r--libguile/lightning/tests/bltr.c33
-rw-r--r--libguile/lightning/tests/bltr_d.c36
-rw-r--r--libguile/lightning/tests/bltr_f.c36
-rw-r--r--libguile/lightning/tests/bltr_u.c33
-rw-r--r--libguile/lightning/tests/bmci.c32
-rw-r--r--libguile/lightning/tests/bmcr.c37
-rw-r--r--libguile/lightning/tests/bmsi.c32
-rw-r--r--libguile/lightning/tests/bmsr.c37
-rw-r--r--libguile/lightning/tests/bnei.c31
-rw-r--r--libguile/lightning/tests/bner.c33
-rw-r--r--libguile/lightning/tests/bner_d.c38
-rw-r--r--libguile/lightning/tests/bner_f.c38
-rw-r--r--libguile/lightning/tests/boaddi.c43
-rw-r--r--libguile/lightning/tests/boaddi_u.c43
-rw-r--r--libguile/lightning/tests/boaddr.c52
-rw-r--r--libguile/lightning/tests/boaddr_u.c52
-rw-r--r--libguile/lightning/tests/bordr_d.c38
-rw-r--r--libguile/lightning/tests/bordr_f.c38
-rw-r--r--libguile/lightning/tests/bosubi.c43
-rw-r--r--libguile/lightning/tests/bosubi_u.c39
-rw-r--r--libguile/lightning/tests/bosubr.c49
-rw-r--r--libguile/lightning/tests/bosubr_u.c48
-rw-r--r--libguile/lightning/tests/bswapr_ui.c32
-rw-r--r--libguile/lightning/tests/bswapr_ul.c31
-rw-r--r--libguile/lightning/tests/bswapr_us.c28
-rw-r--r--libguile/lightning/tests/buneqr_d.c37
-rw-r--r--libguile/lightning/tests/buneqr_f.c37
-rw-r--r--libguile/lightning/tests/bunger_d.c36
-rw-r--r--libguile/lightning/tests/bunger_f.c36
-rw-r--r--libguile/lightning/tests/bungtr_d.c36
-rw-r--r--libguile/lightning/tests/bungtr_f.c36
-rw-r--r--libguile/lightning/tests/bunler_d.c36
-rw-r--r--libguile/lightning/tests/bunler_f.c36
-rw-r--r--libguile/lightning/tests/bunltr_d.c36
-rw-r--r--libguile/lightning/tests/bunltr_f.c36
-rw-r--r--libguile/lightning/tests/bunordr_d.c38
-rw-r--r--libguile/lightning/tests/bunordr_f.c38
-rw-r--r--libguile/lightning/tests/bxaddi.c42
-rw-r--r--libguile/lightning/tests/bxaddi_u.c42
-rw-r--r--libguile/lightning/tests/bxaddr.c51
-rw-r--r--libguile/lightning/tests/bxaddr_u.c51
-rw-r--r--libguile/lightning/tests/bxsubi.c42
-rw-r--r--libguile/lightning/tests/bxsubi_u.c38
-rw-r--r--libguile/lightning/tests/bxsubr.c48
-rw-r--r--libguile/lightning/tests/bxsubr_u.c47
-rw-r--r--libguile/lightning/tests/comr.c45
-rw-r--r--libguile/lightning/tests/divr.c63
-rw-r--r--libguile/lightning/tests/divr_d.c30
-rw-r--r--libguile/lightning/tests/divr_f.c30
-rw-r--r--libguile/lightning/tests/divr_u.c58
-rw-r--r--libguile/lightning/tests/extr_c.c31
-rw-r--r--libguile/lightning/tests/extr_d.c29
-rw-r--r--libguile/lightning/tests/extr_d_f.c30
-rw-r--r--libguile/lightning/tests/extr_f.c29
-rw-r--r--libguile/lightning/tests/extr_f_d.c30
-rw-r--r--libguile/lightning/tests/extr_i.c34
-rw-r--r--libguile/lightning/tests/extr_s.c32
-rw-r--r--libguile/lightning/tests/extr_uc.c31
-rw-r--r--libguile/lightning/tests/extr_ui.c33
-rw-r--r--libguile/lightning/tests/extr_us.c31
-rw-r--r--libguile/lightning/tests/jmpi.c21
-rw-r--r--libguile/lightning/tests/jmpr.c27
-rw-r--r--libguile/lightning/tests/ldi_c.c22
-rw-r--r--libguile/lightning/tests/ldi_d.c22
-rw-r--r--libguile/lightning/tests/ldi_f.c22
-rw-r--r--libguile/lightning/tests/ldi_i.c22
-rw-r--r--libguile/lightning/tests/ldi_l.c24
-rw-r--r--libguile/lightning/tests/ldi_s.c22
-rw-r--r--libguile/lightning/tests/ldi_uc.c22
-rw-r--r--libguile/lightning/tests/ldi_ui.c24
-rw-r--r--libguile/lightning/tests/ldi_us.c22
-rw-r--r--libguile/lightning/tests/ldr_c.c31
-rw-r--r--libguile/lightning/tests/ldr_d.c31
-rw-r--r--libguile/lightning/tests/ldr_f.c31
-rw-r--r--libguile/lightning/tests/ldr_i.c31
-rw-r--r--libguile/lightning/tests/ldr_l.c33
-rw-r--r--libguile/lightning/tests/ldr_s.c31
-rw-r--r--libguile/lightning/tests/ldr_uc.c31
-rw-r--r--libguile/lightning/tests/ldr_ui.c33
-rw-r--r--libguile/lightning/tests/ldr_us.c31
-rw-r--r--libguile/lightning/tests/ldxi_c.c31
-rw-r--r--libguile/lightning/tests/ldxi_d.c31
-rw-r--r--libguile/lightning/tests/ldxi_f.c31
-rw-r--r--libguile/lightning/tests/ldxi_i.c31
-rw-r--r--libguile/lightning/tests/ldxi_l.c33
-rw-r--r--libguile/lightning/tests/ldxi_s.c31
-rw-r--r--libguile/lightning/tests/ldxi_uc.c31
-rw-r--r--libguile/lightning/tests/ldxi_ui.c33
-rw-r--r--libguile/lightning/tests/ldxi_us.c31
-rw-r--r--libguile/lightning/tests/ldxr_c.c31
-rw-r--r--libguile/lightning/tests/ldxr_d.c31
-rw-r--r--libguile/lightning/tests/ldxr_f.c31
-rw-r--r--libguile/lightning/tests/ldxr_i.c31
-rw-r--r--libguile/lightning/tests/ldxr_l.c33
-rw-r--r--libguile/lightning/tests/ldxr_s.c31
-rw-r--r--libguile/lightning/tests/ldxr_uc.c31
-rw-r--r--libguile/lightning/tests/ldxr_ui.c33
-rw-r--r--libguile/lightning/tests/ldxr_us.c31
-rw-r--r--libguile/lightning/tests/lshi.c31
-rw-r--r--libguile/lightning/tests/lshr.c72
-rw-r--r--libguile/lightning/tests/mov_addr.c23
-rw-r--r--libguile/lightning/tests/movi_d.c20
-rw-r--r--libguile/lightning/tests/movi_f.c20
-rw-r--r--libguile/lightning/tests/mulr.c67
-rw-r--r--libguile/lightning/tests/mulr_d.c30
-rw-r--r--libguile/lightning/tests/mulr_f.c30
-rw-r--r--libguile/lightning/tests/negr.c43
-rw-r--r--libguile/lightning/tests/negr_d.c30
-rw-r--r--libguile/lightning/tests/negr_f.c30
-rw-r--r--libguile/lightning/tests/nop.c24
-rw-r--r--libguile/lightning/tests/ori.c35
-rw-r--r--libguile/lightning/tests/orr.c51
-rw-r--r--libguile/lightning/tests/pushpop.c44
-rw-r--r--libguile/lightning/tests/qdivr.c69
-rw-r--r--libguile/lightning/tests/qdivr_u.c67
-rw-r--r--libguile/lightning/tests/qmulr.c82
-rw-r--r--libguile/lightning/tests/qmulr_u.c70
-rw-r--r--libguile/lightning/tests/remr.c63
-rw-r--r--libguile/lightning/tests/remr_u.c59
-rw-r--r--libguile/lightning/tests/rshi.c32
-rw-r--r--libguile/lightning/tests/rshi_u.c32
-rw-r--r--libguile/lightning/tests/rshr.c66
-rw-r--r--libguile/lightning/tests/rshr_u.c65
-rw-r--r--libguile/lightning/tests/sqrtr_d.c29
-rw-r--r--libguile/lightning/tests/sqrtr_f.c29
-rw-r--r--libguile/lightning/tests/sti_c.c35
-rw-r--r--libguile/lightning/tests/sti_d.c35
-rw-r--r--libguile/lightning/tests/sti_f.c35
-rw-r--r--libguile/lightning/tests/sti_i.c35
-rw-r--r--libguile/lightning/tests/sti_l.c37
-rw-r--r--libguile/lightning/tests/sti_s.c35
-rw-r--r--libguile/lightning/tests/str_c.c35
-rw-r--r--libguile/lightning/tests/str_d.c35
-rw-r--r--libguile/lightning/tests/str_f.c35
-rw-r--r--libguile/lightning/tests/str_i.c35
-rw-r--r--libguile/lightning/tests/str_l.c37
-rw-r--r--libguile/lightning/tests/str_s.c35
-rw-r--r--libguile/lightning/tests/stxi_c.c37
-rw-r--r--libguile/lightning/tests/stxi_d.c37
-rw-r--r--libguile/lightning/tests/stxi_f.c37
-rw-r--r--libguile/lightning/tests/stxi_i.c37
-rw-r--r--libguile/lightning/tests/stxi_l.c39
-rw-r--r--libguile/lightning/tests/stxi_s.c37
-rw-r--r--libguile/lightning/tests/stxr_c.c37
-rw-r--r--libguile/lightning/tests/stxr_d.c37
-rw-r--r--libguile/lightning/tests/stxr_f.c37
-rw-r--r--libguile/lightning/tests/stxr_i.c37
-rw-r--r--libguile/lightning/tests/stxr_l.c39
-rw-r--r--libguile/lightning/tests/stxr_s.c37
-rw-r--r--libguile/lightning/tests/subr.c29
-rw-r--r--libguile/lightning/tests/subr_d.c30
-rw-r--r--libguile/lightning/tests/subr_f.c30
-rw-r--r--libguile/lightning/tests/subx.c65
-rw-r--r--libguile/lightning/tests/test.h42
-rw-r--r--libguile/lightning/tests/truncr_d_i.c34
-rw-r--r--libguile/lightning/tests/truncr_d_l.c36
-rw-r--r--libguile/lightning/tests/truncr_f_i.c34
-rw-r--r--libguile/lightning/tests/truncr_f_l.c36
-rw-r--r--libguile/lightning/tests/xori.c35
-rw-r--r--libguile/lightning/tests/xorr.c51
275 files changed, 24933 insertions, 33108 deletions
diff --git a/libguile/Makefile.am b/libguile/Makefile.am
index 5b2516973..12d106292 100644
--- a/libguile/Makefile.am
+++ b/libguile/Makefile.am
@@ -1,6 +1,6 @@
## Process this file with Automake to create Makefile.in
##
-## Copyright (C) 1998-2004, 2006-2014, 2016-2018
+## Copyright (C) 1998-2004, 2006-2014, 2016-2019
## Free Software Foundation, Inc.
##
## This file is part of GUILE.
@@ -41,7 +41,7 @@ AM_CPPFLAGS = -DBUILDING_LIBGUILE=1 -I$(top_srcdir) -I$(top_builddir) \
$(LIBFFI_CFLAGS)
if ENABLE_JIT
-AM_CPPFLAGS += -I$(top_srcdir)/libguile/lightning/include
+AM_CPPFLAGS += -I$(top_srcdir)/libguile/lightning
endif
AM_CFLAGS = $(GCC_CFLAGS) $(CFLAG_VISIBILITY)
diff --git a/libguile/lightning/.gitattributes b/libguile/lightning/.gitattributes
deleted file mode 100644
index e8495d51e..000000000
--- a/libguile/lightning/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-ChangeLog merge=merge-changelog
diff --git a/libguile/lightning/.gitignore b/libguile/lightning/.gitignore
index 62ca42aa8..d2a82cf1f 100644
--- a/libguile/lightning/.gitignore
+++ b/libguile/lightning/.gitignore
@@ -1,33 +1,4 @@
+*.o
+*
-autom4te.cache
-aclocal.m4
-depcomp
-INSTALL
-Makefile
-Makefile.in
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.sub
-configure
-install-sh
-libtool
-lightning-*.tar.*
-ltmain.sh
-missing
-size
-stamp-h1
-test-driver
-check/.deps
-doc/.deps
-lib/.deps
-m4/libtool.m4
-m4/lt~obsolete.m4
-m4/ltoptions.m4
-m4/ltsugar.m4
-m4/ltversion.m4
-doc/mdate-sh
-doc/texinfo.tex
-lightning.pc
+/lightning.info
+/tests/test-*
diff --git a/libguile/lightning/.gitlab-ci.yml b/libguile/lightning/.gitlab-ci.yml
new file mode 100644
index 000000000..384befa31
--- /dev/null
+++ b/libguile/lightning/.gitlab-ci.yml
@@ -0,0 +1,9 @@
+# use the official gcc image, based on debian
+# can use verions as well, like gcc:5.2
+# see https://hub.docker.com/_/gcc/
+image: gcc
+
+test:
+ stage: test
+ script:
+ - make -C tests check
diff --git a/libguile/lightning/ChangeLog b/libguile/lightning/ChangeLog
index 19b3335f5..cc7c8e9b2 100644
--- a/libguile/lightning/ChangeLog
+++ b/libguile/lightning/ChangeLog
@@ -1,4018 +1,17 @@
-2018-04-20 Paulo Andrade <pcpa@gnu.org>
+-*- text -*-
- * include/lightning/jit_private.h: Add new register classes to
- flag float registers and double only registers, required for sparc64
- where only low 32 bit fpr registers can be used for single precision
- operations.
- Add new 128 bit jit_regset_t type for sparc64 register set.
+Starting from October 30, 2018, the Lightening project no longer stores
+change logs in `ChangeLog' files. Instead, changes are detailed in the
+version control system's logs. They can be seen by downloading a copy
+of the Git repository:
- * include/lightning/jit_sparc.h, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c,
- lib/jit_sparc-sz.c, lib/jit_sparc.c: Update for 64 bits sparc.
+ $ git clone https://gitlab.com/wingo/lightening
+ $ git log
- * lib/lightning.c: Update for new jit_regset_t required for sparc64.
+Alternatively, they can be seen on the web, using the Gitweb interface
+at:
-2018-02-26 Paulo Andrade <pcpa@gnu.org>
+ https://gitlab.com/wingo/lightening
- * check/lightning.c, include/lightning.h: Add the new jit_va_push
- interface. That should be called when passing a va_list to a C
- function. This is required because on Alpha a va_list is passed
- by value, and lightning does not know about data types, so, cannot
- understand it is pushing a va_list as argument.
-
- * lib/jit_names.c, lib/lightning.c: Minor changes for the new
- jit_code_va_push.
-
- * check/cva_list.c: Update only test case using jit_va_push, to
- pass a va_list to a C function.
-
- doc/body.texi: Better documentation of the varargs interface.
-
- * jit_alpha.c, jit_alpha-cpu.c: Update to properly push a
- C va_list and correctly calculate varargs offset.
-
- * lib/jit_aarch64-sz.c, lib/jit_aarch64.c, lib/jit_alpha-sz.c,
- lib/jit_arm-sz.c, lib/jit_arm.c, lib/jit_hppa-sz.c, lib/jit_hppa.c,
- lib/jit_ia64-sz.c, lib/jit_ia64.c, lib/jit_mips-sz.c, lib/jit_mips.c,
- lib/jit_ppc-sz.c, lib/jit_ppc.c, lib/jit_s390-sz.c, lib/jit_s390.c,
- lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-sz.c, lib/jit_x86.c:
- Update for the new jit_va_push interface.
-
-2018-02-22 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_alpha-cpu.c: Always set t12 to the address of the
- current function, to properly work on all systems. Previously
- the shortcut did only work on Tru64. For Linux and glibc the
- change is required.
-
-2018-02-22 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
- lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c:
- Correct wrong logic in usage of jit_live in jit_retr. The
- problem is that if a temporary is required during epilog,
- the return register might be allocated, so, jit_live must always
- be used.
-
-2018-01-31 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Avoid deep recursions when computing live
- register ranges.
-
-2018-01-31 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_mips-cpu.c: Correct frame size and varargs
- initialization for the n32 abi.
- * lib/jit_mips.c, lib/jit_mips-fpu.c: Correct 32 bit abis
- in big-endian.
-
-2017-09-13 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac: Add check for binutils 2.29 prototype to the
- disassembler function.
- * lib/jit_disasm.c: Adapt for binutils 2.29 change.
-
-2017-06-09 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_private.h, lib/lightning.c: Add a
- second pass from start when computing register live ranges.
- This should be used temporarily, and is required for certain
- loop constructs, with several consecutive blocks not referencing
- a live register.
-
-2016-05-05 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Correct wrong movr simplification,
- remove no longer needed code to set return registers live
- and update live register set when reaching a label boundary,
- but do not descend if the block has been already visited.
- The later need some tuning for complex code generation, where
- it will still have issues.
-
-2015-11-30 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Change documentation to no longer say
- it is a variant of the Fibonacci sequence, and document
- a proper implementation.
- Thanks to Jon Arintok for pointing out that the Fibonacci
- sequence generation was incorrect. It was documented, but
- still confusing.
-
- * check/fib.tst, check/fib.ok, check/bp.tst, check/bp.ok,
- doc/ifib.c, doc/rbif.c: Implement a proper Fibonacci
- sequence implementation.
-
-2015-07-03 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_mips-cpu.c: Correct definition of htonr_ul.
- Correct prolog/epilog/va* routines to work on o64 abi.
-
- * lib/jit_mips-fpu.c: Correct load of double literal
- argument when not using a data buffer.
- Remove alignment correction in vaarg_d if using the
- new mips abi.
-
- * lib/jit_mips.c: Correct code to allow creating variadic
- jit functions when using the new mips abi.
-
- * lib/jit_rewind.c: Minor adjust for rewind when using
- the new mips abi, if there are varargs arguments in
- registers.
-
-2015-06-06 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64-cpu.c: Search backward for the last output
- register used, otherwise would stop too early if a float
- argument used the slot.
- Correct offset of first va_list argument, and use proper
- va_list abi.
-
- * lib/jit_ia64-fpu.c: Add new functions to move a gpr
- to a fpr register, to counterpart the ones that move a
- fpr to a gpr. These are required to properly implement
- jit_getarg*_{f,d} on complex prototypes, or variadic
- jit functions.
-
- * lib/jit_ia64-sz.c: Update for support to jit variadic
- functions.
-
- * lib/jit_ia64.c: Implement proper abi for variadic
- jit functions.
-
-2015-06-04 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_rewind.c: New file implementing generic functions
- to "rewind", or rewrite IR code sequences.
-
- * include/lightning.h: Add several new codes, that previously
- were a function call, that would synthesize the operation.
- Now, there is a code for the operation, and a new flag to
- know an operation is synthesized.
-
- * include/lightning/jit_private.h: Add several new macros to
- help construct synthesized IR code sequences.
-
- * lib/Makefile.am: Update for lib/jit_rewind.c.
-
- * lib/jit_disasm.c: Update for a small rework on jit_node_t,
- so that --enable-devel-disassembler does not need a change
- in the layout of jit_node_t.
-
- * lib/jit_names.c: Update for the new codes.
-
- * lib/jit_print.c: Update to print more readable output, and
- flag synthesized IR code sequences.
-
- * lib/jit_aarch64-sz.c, lib/jit_aarch64.c,
- lib/jit_arm-sz.c, lib/jit_arm.c, lib/jit_x86-sz.c,
- lib/jit_x86.c: Update for new synthesized IR code sequences.
-
- * lib/jit_ppc-cpu.c, lib/jit_ppc-fpu., lib/jit_ppc-sz.c,
- lib/jit_ppc.c, lib/jit_mips-cpu.c, lib/jit_mips-fpu.c,
- lib/jit_mips-sz.c, lib/jit_mips.c, lib/jit_s390-fpu.c,
- lib/jit_s390-sz.c, lib/jit_s390.c: Update for new synthesized
- IR code sequences and correct bugs in the initial varargs
- implementation support.
-
- * lib/jit_alpha-sz.c, lib/jit_alpha.c, lib/jit_hppa-sz.c,
- lib/jit_hppa.c, lib/jit_ia64-sz.c, lib/jit_ia64.c,
- lib/jit_sparc-sz.c, lib/jit_sparc.c: Add generic, untested
- support for the new synthesized IR code sequences. Known
- most likely broken right now, and should be corrected once
- access to these hosts is available.
-
- * lib/lightning.c: Update for new IR codes, and add support
- for not yet existing instructions that change third argument.
-
- * size.c: Change to use different tables for LE and BE PowerPC.
- Correct a wrong endif for x32.
-
-2015-05-25 Paulo Andrade <pcpa@gnu.org>
-
- * check/cva_list.c: New file implementing a test to ensure
- the value returned by jit_va_start is a valid C va_list.
-
- * check/va_list.ok: New simple helper file, as now the
- va_list.tst test is enabled.
-
- * check/va_list.tst: Rewritten for an extensive variadic
- jit functions test.
-
- * check/Makefile.am: Update for the new tests.
-
- * lib/jit_arm-cpu.c, lib/jit_arm-swf.c, lib/jit_arm-vfp.c,
- lib/jit_arm.c: Correct broken software float in a previous
- commit. Note that the hard float abi implementation is known
- broken at this time, for special cases involving variadic
- functions, and should be corrected next.
-
- lib/jit_x86-cpu.c, lib/jit_x86-sz.c, lib/jit_x86.c: Correct
- the jit_va_list_t semantics to match C va_list.
-
-2015-05-24 Paulo Andrade <pcpa@gnu.org>
-
- * lib/Makefile.am: Bump library major. This is a preparation
- for a rework that was due for quite some time, but that is
- now required to properly implement variadic jit functions.
- The rework is mainly required to know at prolog parsing, if
- a function is variadic or not. This will benefit a few
- backends, and is mandatory for the hard float arm abi.
- The rework was already planned for quite some time, to
- be able to use a variable stack framesize, and for leaf
- functions optimization where applicable.
- The change will be source compatible, but will change
- some internals, and jit_code_t values, as some new will
- be added.
- The only behavior change is that, jit_arg_register_p may
- change return value on hard float arm abi, if called before
- or after jit_ellipsis. Common sense anyway, would say to
- make that call after jit_ellipsis, but documentation
- should be updated for it.
-
-2015-05-24 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: Correct base
- aarch64 varargs code.
-
-2015-05-24 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c: Clearly run check if clang is the system
- compiler.
-
-2015-05-20 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c, lib/jit_sparc.c:
- Add base support to jit vararg functions to the sparc backend.
-
-2015-05-20 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c, lib/jit_alpha.c:
- Add base support to jit vararg functions to the alpha backend.
-
-2015-05-19 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c, lib/jit_hppa.c:
- Add base support to jit vararg functions to the hppa backend.
-
-2015-05-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, lib/jit_ia64.c:
- Add base support to jit vararg functions to the ia64 backend.
-
-2015-05-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64-fpu.c, lib/jit_ia64.c: Correct movi_d_w
- and movi_f_w implementation to work when not using a
- data buffer. This causes the check varargs.tst to
- work when passing "-d" to the lightning test tool.
-
-2015-05-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64.c: Implement inline assembly cache flush,
- required on multiprocessor systems.
-
-2015-05-06 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips.c:
- Add base support to jit vararg functions to the mips backend.
- Currently only supported on the o32 abi, until access to a
- n32 system is arranged.
-
-2015-05-05 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c:
- Add base support to jit vararg functions to the PowerPC backend.
-
-2015-05-02 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_s390-cpu.c, lib/jit_s390-fpu.c, lib/jit_s390.c:
- Add base support to jit vararg functions to the s390 backend.
-
-2015-05-01 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm-cpu.c, lib/jit_arm-swf.c, lib/jit_arm-vfp.c,
- lib/jit_arm.c: Add base support to jit vararg
- functions to the arm backend.
-
-2015-04-30 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c,
- lib/jit_aarch64.c: Add base support to jit vararg
- functions to the aarch64 backend.
-
-2015-04-27 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, include/lightning/jit_private.h,
- lib/jit_names.c, lib/lightning.c: Add initial support
- for the new jit_va_start, jit_va_arg, jit_va_arg_d, and
- jit_va_end interfaces. The jit_va_start call is supposed
- to return a va_list compatible pointer, but not yet
- decided if it will be "declared" stdarg compatible,
- as for now only x86 support has been added (and should
- be compatible), but issues may arise on other backends.
-
- * check/lightning.c: Add wrappers to call the new jit_va_*
- interfaces.
-
- * lib/jit_x86-cpu.c, lib/jit_x86.c: Implement the new
- jit_va_* for x86.
-
- * lib/jit_x86-sz.c: Add fields, but not yet fully updated,
- as this is an intermediate commit.
-
- * lib/jit_aarch64-sz.c, lib/jit_aarch64.c,
- lib/jit_alpha-sz.c, lib/jit_alpha.c,
- lib/jit_arm-sz.c, lib/jit_arm.c,
- lib/jit_hppa-sz.c, lib/jit_hppa.c,
- lib/jit_ia64-sz.c, lib/jit_ia64.c,
- lib/jit_mips-sz.c, lib/jit_mips.c,
- lib/jit_ppc-sz.c, lib/jit_ppc.c,
- lib/jit_s390-sz.c, lib/jit_s390.c,
- lib/jit_sparc-sz.c, lib/jit_sparc.c: Prepare for the
- new jit_va_* interfaces. Not yet implemented, and will
- cause an assertion if used.
-
- * check/va_list.tst: Simple early test case, that works
- on x86_64, x32, ix86, cygwin, and cygwin64.
-
-2015-02-17 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, include/lightning/jit_private.h,
- lib/jit_aarch64-cpu.c, lib/jit_aarch64.c,
- lib/jit_alpha-cpu.c, lib/jit_alpha.c,
- lib/jit_arm-cpu.c, lib/jit_arm.c,
- lib/jit_hppa-cpu.c, lib/jit_hppa.c,
- lib/jit_ia64-cpu.c, lib/jit_ia64.c,
- lib/jit_mips-cpu.c, lib/jit_mips.c,
- lib/jit_ppc-cpu.c, lib/jit_ppc.c,
- lib/jit_s390-cpu.c, lib/jit_s390.c,
- lib/jit_sparc-cpu.c, lib/jit_sparc.c,
- lib/jit_x86-cpu.c, lib/jit_x86.c: Implement the new
- jit_allocar(offs, size) interface, that receives
- two integer registers arguments, allocates space
- dynamically in the stack, returns the offset in
- the first argument, and uses the second argument
- for the size in bytes of the memory to be allocated.
-
- * check/allocar.ok, check/allocar.tst: New files
- implementing test cases for the new jit_allocar
- interface.
-
- * check/Makefile.am, check/lightning.c: Update for
- the new test case and interface.
-
- * doc/body.texi: Add documentation of the new
- interface.
-
-2015-02-17 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_x86.h, lib/jit_x86-cpu.c,
- lib/jit_x86-x87.c: No longer make st(7) available.
- Need to keep one x87 slots empty to avoid exceptions.
- This has the side effect of no longer needing the
- hackish emms instruction before a function call.
-
-2015-02-16 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Remove the jit_regno_patch bitfield
- register fields before actual emit, as it is only really
- used before emit, otherwise, on special conditions it
- may consider live registers as dead during code emit.
-
-2015-02-15 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
- Correct encoding of ldxr* stxr* in the x32 abi. If the
- displacement register is negative, it would generate
- a 64 bit instruction with a 32 bit unsigned displacement.
-
- * check/ranger.tst, check/ranger.ok: New files, implementing
- a test case for negative loads and stores. This is range.tst
- converted to use registers instead of immediate offsets.
-
- check/Makefile.am: Update for the new test case.
-
-2015-02-07 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_size.c: Preventively use at least 144 bytes
- if JIT_INSTR_MAX is less than it. The logic is not
- guaranteed to be 100% precise, it is mostly heuristics
- to allocate a buffer with as close as possible size,
- but a wrong value may cause code generation to write
- past the end of the buffer.
-
-2015-02-03 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Correct the reason the bug in
- simplify_stxi was not triggered before, it was due to
- incorrectly resetting the value->code field, what was
- causing it to never properly optimize:
- stxi Im0 Rb0 Rt0
- ldxi Rt1 Rb1 Im1
- when Rb0 == Rb1, Rt0 == Rt1 and Im0 == Im1
- There was another possible issue, that has been also
- addressed in this commit, that would be the case of
- Rbn == Rtn, where no redundancy removal is possible.
-
-2015-02-03 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Correct wrong check in simplify_stxi.
- The test was incorrectly comparing the target register
- and the displacement offset. This was a time bomb bug,
- that would trigger in code like:
- stxi Im0 Rb0 Rt0
- stxi Im1 Rb1 Rt1
- if Rb0 == Rb1 && Rt0 == Rt1 && Im0 == Rt1, that is,
- the wrong check was Im0 == Rt1, instead of the supposed
- Im0 == Imm1 (that was what the code mean't to do). It
- was removing the second stxi assuming it was redundantly
- generated; as that is not uncommon pattern on
- translators generating jit.
-
-2015-02-02 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac, include/lightning/jit_private.h,
- lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
- lib/jit_disasm.c, lib/jit_hppa.c, lib/jit_ia64.c,
- lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c,
- lib/jit_s390.c, lib/jit_sparc.c, lib/jit_x86.c: Add a new
- --enable-devel-disassembler option, that should be used
- during development, or lightning debug. This option
- intermixes previous jit_print and jit_disassemble
- output, making it easier to visualize what lightning
- call was used, and what code was generated.
-
-2015-01-31 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm-cpu.c, lib/jit_arm.c: Only limit to 24 bit
- displacement non conditional jump in the same jit_state_t.
-
-2015-01-19 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Reorder documentation, making jit_frame
- and jit_tramp the lightning response to the need of
- trampolines, continuations and tail call optimizations.
- A pseudo code example of a factorial function was added.
- Also added a section for description of the available
- predicates.
-
- * doc/fact.c: New file, implementing a simple example of
- a translation of a trivial, recursive, tail call optimization
- into lightning calls. This is the conversion to functional C
- code of the example in doc/body.texi.
-
- * doc/Makefile.am: Update for the next test case.
-
-2015-01-17 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/jit_aarch64.c,
- lib/jit_alpha.c, lib/jit_arm-vfp.c, lib/jit_arm.c,
- lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c,
- lib/jit_ppc.c, lib/jit_s390.c, lib/jit_sparc.c,
- lib/jit_x86.c: Add the new jit_arg_register_p predicate.
- The predicate is expected to be used to know if an
- argument is in a register, what would need special
- handling if code that can overwrite non callee save
- registers is executed.
-
- * check/carg.c: New test case to check consistency and
- expected usage of jit_arg_register_p.
-
- * check/Makefile.am: Update for new test case.
-
-2015-01-17 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_aarch64.h,
- include/lightning/jit_alpha.h,
- include/lightning/jit_arm.h,
- include/lightning/jit_hppa.h,
- include/lightning/jit_mips.h,
- include/lightning/jit_ppc.h,
- include/lightning/jit_s390.h,
- include/lightning/jit_sparc.h,
- include/lightning/jit_x86.h,
- lib/jit_aarch64.c, lib/jit_alpha.c,
- lib/jit_arm.c, lib/jit_hppa.c,
- lib/jit_ia64.c, lib/jit_mips.c,
- lib/jit_ppc.c, lib/jit_s390.c,
- lib/jit_sparc.c, lib/jit_x86.c: Remove jit_arg_reg_p and
- jit_arg_f_reg_p from a public header, and define it only
- on port specific files where an integer offset is used
- to qualify an argument identifier. Exported code expects
- an opaque pointer (but of jit_node_t* type) to "qualify"
- an argument identifier.
- This patch, and the code review/simplification done during
- it also corrected some bugs:
- o Inconsistent jit_arg_d value of double argument after 3
- integer arguments in arm for jit_functions; tested, C
- functions were being properly called.
- o Inconsistent use of getarg_{f,d} and putarg*_{f,d} on
- s390 (32-bit) that happened to not have a proper test
- case, as it would only happen for jit functions, and
- tested, called C functions had proper arguments.
- o Corrected a "last minute" correction that did not go
- to the committed version, and would not compile on hppa,
- due to bad _jit_putargi_d prototype definition.
-
-2015-01-17 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Correct wrong/outdated information for
- hton*, pusharg* and ret*, and add missing documentation
- for rsb*, qmul*, qdvi* and putarg*.
-
-2015-01-15 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac, lib/jit_disasm.c: Rewrite workaround
- to apparent problem to initialize powerpc disassembler.
-
-2015-01-15 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/jit_aarch64.c,
- lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c,
- lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
- lib/jit_s390.c, lib/jit_sparc.c, lib/jit_x86.c:
- Implement jit_putarg*. It works as a mix of jit_getarg*
- and jit_pusharg*, in the way that the first argument is
- a register or immediate, and the second is a pointer
- returned by jit_arg*. The use of the interface is to change
- values of arguments to the current jit function.
-
- * check/put.ok, check/put.tst: New test cases exercising
- the new jit_putarg* interface.
-
- * check/Makefile.am, check/lightning.c: Update for the
- new test case and interface.
-
-2015-01-08 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_s390.h, lib/jit_s390-cpu.c,
- lib/jit_s390-fpu.c, lib/jit_s390-sz.c, lib/jit_s390.c:
- Renamed s390x* files to s390*.
-
- * check/float.tst, check/lightning.c, configure.ac,
- include/lightning.h, include/lightning/Makefile.am,
- lib/Makefile.am, lib/jit_s390.c, lib/jit_size.c,
- lib/lightning.c: Update for renamed files.
-
-2015-01-08 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, include/lightning/jit_private.h,
- include/lightning/jit_s390x.h, lib/jit_disasm.c,
- lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x-sz.c,
- lib/jit_s390x.c, lib/jit_size.c, lib/lightning.c:
- Add support for generating jit for s390 32 bit. This change
- also removed %f15 from the list of temporaries fpr registers;
- it was not being used, but if were, it would corrupt the
- stack frame because the spill address would overwrite grp
- offsets.
-
-2014-12-26 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Correct some endianess issues
- on the powerpc le backend.
-
-2014-12-26 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ppc-cpu.c: Add mcrxr instruction emulation,
- as this instruction has been phased out, and should be
- implemented as a kernel trap.
-
-2014-12-26 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm.c: Better check for need to flush constants
- before the pool being no longer reachable.
-
-2014-12-25 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h: Split jit_htonr in the new 3 interfaces
- jit_htonr_us, jit_htonr_ui and jit_htonr_ul, the later only
- available on 64 bit. The plain/untyped jit_htonr macro call
- maps to the wordsize one.
- * lib/jit_aarch64-cpu.c, lib/jit_aarch64-sz.c, lib/jit_aarch64.c,
- lib/jit_alpha-cpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c,
- lib/jit_arm-cpu.c, lib/jit_arm-sz.c, lib/jit_arm.c,
- lib/jit_hppa-cpu.c, lib/jit_hppa-sz.c, lib/jit_hppa.c,
- lib/jit_ia64-cpu.c, lib/jit_ia64-sz.c, lib/jit_ia64.c,
- lib/jit_mips-cpu.c, lib/jit_mips-sz.c, lib/jit_mips.c,
- lib/jit_ppc-cpu.c, lib/jit_ppc-sz.c, lib/jit_ppc.c,
- lib/jit_s390x-cpu.c, lib/jit_s390x-sz.c, lib/jit_s390x.c,
- lib/jit_sparc-cpu.c, lib/jit_sparc-sz.c, lib/jit_sparc.c,
- lib/jit_x86-cpu.c, lib/jit_x86-sz.c, lib/jit_x86.c:
- Update backends for the new jit_htonr*.
- * check/lightning.c, lib/jit_names.c, lib/lightning.c:
- Update for the new jit_htonr* interfaces.
- * check/Makefile.am: Update for new test cases.
- * check/hton.ok, check/hton.tst: New test cases.
-
-2014-12-24 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_private.h, include/lightning/jit_x86.h,
- lib/jit_disasm.c, lib/jit_x86-cpu.c, lib/jit_x86-sse.c,
- lib/jit_x86-sz.c, lib/jit_x86-x87.c, lib/jit_x86.c,
- size.c: Implement support for the x32 abi. Built and
- tested on Gentoo default/linux/amd64/13.0/x32 profile.
-
-2014-12-24 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_names.c: Add missing rsbi_f and rsbi_d strings.
-
-2014-12-21 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm.c: Call __clear_cache for every page.
- This should only be required for older boards or
- toolchain setup, but has been reported to be required
- for lightning at some point.
-
-2014-12-21 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm.c: Correct check to guard overflow of index
- of constants from program counter.
-
-2014-11-24 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Remove an optimization to calee save
- registers that may incorrectly remove a jit_movr under
- special conditions.
-
-2014-11-20 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c,
- lib/jit_ppc.c: Add initial powerpc le support.
-
-2014-11-20 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_disasm.c: Change thumb or arm disassemble based on
- jit code before disassembly.
-
- * lib/jit_arm-cpu.c: Correct reversed arguments to LDRD and
- STRD instructions, and correct checking for support of those.
-
- * lib/jit_arm-swf.c: Correct wrong use of LDRD and STRD and
- only use those if the register is even.
-
- * check/check.arm.swf.sh, check/check.arm4.swf.sh: New files
- to test LDRD and STRD, as well as the alternate code path
- when those are not available, in the .arm4. test case.
-
- * check/Makefile.am: Update for the new test cases.
-
-2014-11-08 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_private.h, lib/jit_aarch64.c,
- lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c,
- lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
- lib/jit_s390x.c, lib/jit_sparc.c, lib/jit_x86.c:
- Implement a private jit_flush call, that flushes
- the cache, if applicable, aligning down to the
- previous and up to the next page boundary.
-
-2014-11-08 Paulo Andrade <pcpa@gnu.org>
-
- * check/ctramp.c: New file. It just repeats the test
- of tramp.tst, but using two jit_state_t, what should
- test possible issues with two contexts, and also validate
- jit_tramp works on backends with function descriptions.
-
- * check/Makefile.am: Update for new test case.
-
-2014-11-03 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_mips.h: Do not make the t9 register
- JIT_R11 (or JIT_R7 for n32 or n64 abi) available. Previously
- it cause problems if one expects it to not be changed in a
- function call. For example, calling a jit function, where it
- really does not need to be changed.
-
-2014-10-26 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
- lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
- lib/jit_s390x.c, lib/jit_sparc.c, lib/jit_x86.c: Add an
- assertion to all code generation "drivers" to ensure
- _jitc->regarg is empty or in an expected state, after
- translation of a lightning instruction to native code.
- This change was a brute force test to find out other cases
- of a temporary not being release (like was happening with
- _bmsi and _bmci on x86), but no other case was found,
- after running make check, with assertions enabled, on all
- backends.
-
-2014-10-26 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-cpu.c: Correct a register allocation leak in
- _bmsi and _bmci.
-
-2014-10-25 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_disasm.c: Do not cause an fatal error if init_jit
- fails in the jit_init_debug call.
-
-2014-10-24 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64.c, lib/jit_ppc.c: Correct handling of function
- descriptor when first prolog is a jit_tramp prolog. The
- test case was using the same jit_context_t, so was not
- triggering this condition.
-
- * lib/jit_ppc-cpu.c: Properly handle jump displacements that
- do not fit on 24 powerpc. This required changing from previous
- "mtlr reg, blr" to "mtctr reg, bctr" to properly handle
- the logic to "hide" function descriptors, but that would
- also be required as the proper jit_jmpr when/if implementing
- optimizations to leaf functions (was working with blr because
- it is saved/reloaded in prolog/epilog).
-
-2014-10-21 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/lightning.c: Add three predicates
- to query information about labels. jit_forward_p(label)
- will return non zero if the label is "forward", that is
- need a call to jit_link(label), jit_indirect_p(label)
- that returns non zero if the label was created with the
- jit_indirect() call, and jit_target_p(label) that will
- return non zero if there is at least one jump patched
- to land at that label.
-
-2014-10-18 Paulo Andrade <pcpa@gnu.org>
-
- * check/range.ok, check/range.tst: New test case designed
- to catch incorrect code generation, usually due to incorrect
- test of immediate size. The test checks a large amount of
- encodings in "power of two" boundaries. This test exorcises
- a significant amount of code paths that was previously not
- tested.
-
- * check/Makefile.am: Add range test to make check target.
-
- * lib/jit_aarch64-cpu.c: Correct wrong address calculation
- for stxi_c, stxi_s, stxi_i and stxi_l when the offset is
- too large.
-
- * lib/jit_mips-fpu.c: Correct wrong size test to check if
- an immediate can be encoded in a float or double store.
-
- * lib/jit_s390x-cpu.c: Correct inverted encoding to stxi_s
- when the offset cannot be encoded, and fallbacks to an
- alternate encoding in 2 instructions.
-
-2014-10-17 Paulo Andrade <pcpa@gnu.org>
-
- * check/alu_rsb.ok, check/alu_rsb.tst: New files implementing
- tests for jit_rsb*.
-
- * check/Makefile.am, check/lightning.c, include/lightning.h,
- lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c, lib/jit_aarch64-sz.c,
- lib/jit_aarch64.c, lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c,
- lib/jit_alpha-sz.c, lib/jit_alpha.c, lib/jit_arm-cpu.c,
- lib/jit_arm-swf.c, lib/jit_arm-sz.c, lib/jit_arm-vfp.c,
- lib/jit_arm.c, lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c,
- lib/jit_hppa-sz.c, lib/jit_hppa.c, lib/jit_ia64-cpu.c,
- lib/jit_ia64-fpu.c, lib/jit_ia64-sz.c, lib/jit_ia64.c,
- lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips-sz.c,
- lib/jit_mips.c, lib/jit_names.c, lib/jit_ppc-cpu.c,
- lib/jit_ppc-fpu.c, lib/jit_ppc-sz.c, lib/jit_ppc.c,
- lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x-sz.c,
- lib/jit_s390x.c, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c,
- lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-cpu.c,
- lib/jit_x86-sse.c, lib/jit_x86-sz.c, lib/jit_x86-x87.c,
- lib/jit_x86.c, lib/lightning.c: Implement jit_rsb*. This
- was a missing lightning 1.x interface, that on most
- backends is synthesized, but on a few backends (hppa and ia64),
- it can generate better code as on those there is, or the
- only instruction with an immediate is in "rsb" format
- (left operand).
-
-2014-10-17 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_names.c: New file with single definition of string
- representation of lightning IR codes.
-
- * size.c: Modified to append the code name in a C comment
- after the maximum instruction size.
-
- * lib/jit_print.c: Minor change to not duplicate jit_names.c
- contents.
-
- * lib/jit_aarch64-sz.c, lib/jit_alpha-sz.c, lib/jit_arm-sz.c,
- lib/jit_hppa-sz.c, lib/jit_ia64-sz.c, lib/jit_mips-sz.c,
- lib/jit_ppc-sz.c, lib/jit_s390x-sz.c, lib/jit_sparc-sz.c,
- lib/jit_x86-sz.c: Rewritten to add string representation of
- IR codes in a C comment.
-
-2014-10-14 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64-cpu.c, lib/jit_alpha-cpu.c, lib/jit_arm-cpu.c,
- lib/jit_hppa-cpu.c, lib/jit_mips-cpu.c, lib/jit_ppc-cpu.c,
- lib/jit_sparc-cpu.c: Implement or correct the internal
- nop(count) call that receives an argument that tells the
- modulo bytes to align the code for the next instruction.
-
- * include/lightning.h, lib/lightning.c, lib/jit_aarch64.c,
- lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c, lib/jit_ia64.c,
- lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c, lib/jit_sparc.c,
- lib/jit_x86.c: Implement the new jit_align() call that receive
- an argument, that tells the modulo, in bytes, to align the
- next instruction. In most backends the only value that makes
- a difference is a value that matches sizeof(void*), as all
- other values usually are already automatically aligned in
- labels, but not guaranteed to be aligned at word size bytes.
-
- * check/align.ok, check/align.tst: New files, implementing
- a simple test for the new jit_align() interface.
-
- * check/Makefile.am, check/lightning.c, lib/jit_aarch64-sz.c,
- lib/jit_alpha-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c,
- lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c,
- lib/jit_print.c, lib/jit_s390x-sz.c, lib/jit_sparc-sz.c,
- lib/jit_x86-sz.c: Update for the new jit_code_align code and
- the jit_align() interface.
-
-2014-10-13 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/jit_size.c, size.c: Use a
- symbolic value for the last IR code.
-
-2014-10-12 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, include/lightning/jit_private.h,
- lib/jit_aarch64-cpu.c, lib/jit_alpha-cpu.c, lib/jit_arm-cpu.c,
- lib/jit_hppa-cpu.c, lib/jit_ia64-cpu.c, lib/jit_mips-cpu.c,
- lib/jit_ppc-cpu.c, lib/jit_s390x-cpu.c, lib/jit_sparc-cpu.c,
- lib/jit_x86-cpu.c, lib/lightning.c: Implement the new
- jit_frame and jit_tramp interfaces, that allow writing
- trampoline like calls, where a single dispatcher jit buffer
- is written, and later other jit buffers are created, with
- the same stack frame layout as the dispatcher. This is the
- logic that GNU Smalltalk used in lightning 1.x, and is required
- to make a sane port for lighting 2.x.
-
- * jit_ia64-cpu.c: Implement support for jit_frame and jit_tramp,
- and also correct wrong encoding for B4 instructions, that
- implement jmpr, as well as correct reverse logic in _jmpr,
- that was moving the branch register to the jump register,
- and not vice-versa.
- Also, if a stack frame is to be assumed, always assume it may
- call a function with up to 8 arguments, regardless of the
- hint frame argument.
-
- * lib/jit_arm.c: Add a new must_align_p() interface to ensure
- function prologs are always aligned. This condition was
- previously always true, somewhat by accident, but with
- jit_tramp it is not guaranteed.
-
- * jit_ia64-cpu.c: lib/jit_ppc.c: Add minor special handling
- required to implement jit_tramp, where a function descriptor
- should not be added before a prolog, as jit_tramp means omit
- prolog.
-
- * check/lightning.c: Update test driver for the new interfaces.
-
- * check/Makefile.am, check/tramp.tst, check/tramp.ok: Add
- a simple test and example of the jit_frame and jit_tramp
- usage implementing a simple Fibonacci function using a
- simulation of an interpreter stack and how it would handle
- state in language specific variables.
-
- * doc/body.texi: Add documentation for jit_frame and
- jit_tramp.
-
-2014-09-29 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
- lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c,
- lib/jit_ppc.c, lib/jit_s390x.c, lib/jit_sparc.c,
- lib/jit_x86.c, lib/lightning.c: Allow jit_jmpi on a
- target that is not a node. This may lead to hard to
- debug code generation, but is a required feature for
- certain generators, like the ones that used lightning
- 1.2x. Note that previously, but not really well
- documented, it was instructed to use:
- jit_movi(rn, addr); jit_jmpr(rn);
- but now, plain:
- jit_patch_abs(jit_jmpi(), addr);
- should also work.
-
-2014-09-24 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-sz.c: Generate information about instruction
- lengths for more precise calculation of buffer size on
- Windows x64. This change is specially important because
- the maximum instruction length is larger than other
- systems, what could cause an out of bounds write on
- special conditions without this update.
-
-2014-09-24 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c: Add workaround to conflicting global
- optind variable in cygwin binutils that have an internal
- getopt* implementation.
-
- * lib/jit_x86-cpu.c: Add a simple define ffsl ffs if building
- for 32 bit and there is no ffsl function.
-
-2014-09-24 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c: Add a hopefully temporary kludge to not use
- sprintf and sscanf returned by dlsym. This is required to pass
- the varargs test.
-
- * include/lightning/jit_private.h: Use symbolic name for first
- integer register argument, as this is different in sysv and
- win64 abi.
-
- * include/lightning/jit_x86.h: Add conditionals and definitions
- for Windows x64 (under __CYGWIN__ preprocessor conditional).
-
- * lib/jit_x86-cpu.c: Correct one instruction encoding bug, that
- was working by accident. Only use rax to rdx for some byte
- operations to work on compatibility mode (that is, to generate
- the proper encoding, instead of actually generating encoding
- for high byte registers, e.g. %bh).
- Add proper prolog and epilog for windows x64.
-
- * lib/jit_x86-sse.c: Correct a swapped rex prefix for float
- operations.
-
- * lib/jit_x86.c: Adjust to support Windows x64 abi.
-
- * check/check.x87.nodata.sh: New file, previously used but that
- was missing git.
-
-2014-09-07 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Mark all registers advertised as live, as
- per jit_callee_save_p as live whenever reaching a jump that
- cannot be tracked. This is a rethink of the previous commit,
- and is a better approach, otherwise there would not be much
- sense on relying on jit_callee_save_p if it could not be
- trusted.
-
- * check/jmpr.tst, check/jmpr.ok: New files implementing a very
- simple test case, that would actually cause an assertion on
- code before the change to only mark as live when reaching a
- jump that could not tracked, the actually advertised as callee
- save registers.
-
- check/Makefile.am: Update for new jmpr test case.
-
-2014-09-01 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Do not mark all registers in unknown state
- as live on jit_jmpr, or jit_jmpi to an absolute address. Instead,
- treat it as a function call, and only consider JIT_Vn registers
- as possibly live.
-
-2014-08-29 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Add a proper info menu entry for
- GNU lightning.
-
- * doc/version.texi: Regenerate.
-
-2014-08-16 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c,
- lib/jit_arm-cpu.c, lib/jit_arm-vfp.c,
- lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c,
- lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c,
- lib/jit_mips-cpu.c, lib/jit_mips-fpu.c,
- lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c,
- lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c,
- lib/jit_s390x.c, lib/jit_sparc-cpu.c,
- lib/jit_x86-cpu.c, lib/jit_x86-sse.c,
- lib/jit_x86-x87.c: Review generation of all branch
- instructions and always adds the jit_class_nospill
- bitfield for temporary registers that cannot be spilled
- because the reload would be after a conditional jump; the
- patch only adds an extra assertion. These conditions do
- not happen on documented lightning usage, but can happen
- if one uses the not exported jit_get_reg and jit_unget_reg
- calls and cause enough register starvation.
-
-2014-08-16 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_alpha.c: Correct wrong bitmask of most argument
- float register arguments, that were being set as callee
- save instead of argument registers class.
-
-2014-08-16 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm-sz.c: Regenerate table of known maximum
- instruction sizes for the software float fallback,
- that implements "virtual" float registers in the stack
- and operations as calls to libgcc.
-
- * size.c: Correct typo in the generated jit_arm-sz.c file.
-
-2014-08-10 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_alpha.h, lib/jit_alpha-cpu.c,
- lib/jit_alpha-fpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c:
- New files implementing a lightning Alpha port. Thanks
- to Trent Nelson and snakebit.net staff for providing access
- to an Alpha system.
-
- * check/float.tst, check/lightning.c, configure.ac,
- include/lightning.h, include/lightning/Makefile.am,
- include/lightning/jit_private.h, lib/Makefile.am,
- lib/jit_disasm.c, lib/jit_size.c, lib/lightning.c:
- Minor changes to adapt for the new Alpha port.
-
-2014-08-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Always mark JIT_RET and JIT_FRET as
- live in a function epilog. This is required because
- on some ports a complex sequence, allocating one or more
- registers, may be required to jump from a ret* to the
- epilog, and the lightning api does not have annotations
- to know if a function returns a value, or the type of
- the return value.
-
-2014-08-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Change the correct live bitmask of
- return registers after a function call in jit_update.
-
-2014-08-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Change assertions to have an int
- result and correct a bad bit mask assertion.
-
-2014-08-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64.c: Correct bad setup for assertion
- of consistency before a patch.
-
-2014-08-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_mips-cpu.c: Correct typo in the jit_bmsr
- implementation that was using the wrong test result
- register.
-
-2014-07-28 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_memory.c: Do not call free on NULL pointers.
-
- * include/lightning/jit_private.h, lib/jit_note.c,
- lib/lightning.c: Add a wrapper to memcpy and memmove
- to not actually call those functions with a zero size
- argument, and likely also a null src or dst.
-
-2014-07-27 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_private.h, lib/jit_disasm.c,
- lib/lightning.c: Remove the global jit_progname variable.
- It was being only used in jit_init_debug, that is called
- from init_jit, so, just pass an argument.
-
-2014-07-27 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Add note that jit_set_memory_functions
- should be called before init_jit, because init_jit
- itself may call the memory wrappers.
-
-2014-04-22 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm.c: Do not get confused with default settings
- if /proc is not mounted on Linux specific code path.
-
-2014-04-09 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
- include/lightning/jit_hppa.h, include/lightning/jit_ia64.h,
- include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
- include/lightning/jit_private.h, include/lightning/jit_s390x.h,
- include/lightning/jit_sparc.h, include/lightning/jit_x86.h:
- Do not add jit_regset_t, JIT_RA0, and JIT_FA0 to the installed
- header file. These types and definitions are supposed to be
- only used internally.
-
-2014-04-05 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm-cpu.c: Only adjust stack pointer in prolog if
- need stack space, that is, do not emit a nop instruction
- subtracting zero from the stack pointer.
-
-2014-04-04 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_disasm.c: Correct a crash in the doc/printf example
- on arm due to releasing the data_info information in
- jit_clear_state. This is a special case for arm only, and
- actually, only armv5 or older uses the data_info buffer,
- or when forcing arm instruction set mode besides thumb
- available.
-
-2014-12-03 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Write detailed description and examples for
- jit_get_memory_functions, jit_set_memory_functions,
- jit_get_code, jit_set_code, jit_get_data and jit_set_data.
-
-2014-12-03 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, include/lightning/jit_private.h,
- lib/lightning.c: Implement the new jit_set_data() interface,
- and the new jit_get_data() helper. Like jit_set_code(),
- jit_realize() should be called before jit_set_data().
- The most common usage should be jit_set_data(JIT_DISABLE_DATA
- | JIT_DISABLE_NOTE), to force synthesize any float/double
- constant in the stack and not generate any debug information.
-
- * lib/jit_note.c: Minor change to debug note generation as
- now it uses an alternate temporary data buffer during constants
- and debug generation to accommodate the possibility of the user
- setting an alternate data buffer.
-
- * lib/jit_hppa-fpu.c, lib/jit_s390x.c, lib/jit_s390x-cpu.c,
- lib/jit_s390x-fpu.c, lib/jit_sparc.c, lib/jit_sparc-fpu.c,
- lib/jit_x86-sse.c, lib/jit_x86-x87.c: Implement jit_set_data.
-
- * lib/jit_hppa-sz.c, lib/jit_sparc-sz.c, lib/jit_x86-sz.c,
- lib/jit_s390x-sz.c: Update for several instructions that now
- have a different maximum length due to jit_set_data.
-
- * lib/jit_mips-fpu.c: Implement jit_set_data, but missing
- validation on n32 and n64 abis (and/or big endian).
-
- * lib/jit_mips-sz.c: Update for changes in o32.
-
- * lib/jit_ppc-fpu.c: Implement jit_set_data, but missing
- validation on Darwin PPC.
-
- * lib/jit_ppc-sz.c: Update for changes in powerpc 32 and
- 64 bit.
-
- * lib/jit_ia64-fpu.c: Implement untested jit_set_data.
-
- * TODO: Add note to list ports that were not tested for the
- new jit_set_data() feature, due to no longer having access
- to them.
-
- * check/nodata.c: New file implementing a simple test exercising
- several different conditions created by jit_set_data().
-
- * check/check.nodata.sh: New file implementing a wrapper
- over the existing *.tst files, that runs all tests without
- using a data buffer for constants; only meaningful (and
- enabled) on architectures that used to store float/double
- constants on a read only data buffer.
-
- * configure.ac, check/Makefile.am: Update for the new test
- cases.
-
- * check/lightning.c: Implement the new "-d" option that
- sets an internal flag to call jit_set_data() disable
- constants and debug, that is, using only a pure code
- buffer.
-
-2014-11-03 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, include/lightning/jit_private.h,
- lib/lightning.c: Implement the new jit_set_code() interface,
- that allows instructing lightning to use an alternate code
- buffer. The new jit_realize() function should be called
- before jit_set_code(), and usually call jit_get_code()
- to query the amount of bytes expected to be required for
- the code.
-
- * lib/jit_size.c: Minor update to have less chances of
- miscalculating the code buffer by starting the counter
- with the size of the longest instruction instead of zero,
- as code emit fails if at any moment less than the longest
- instruction bytes are available.
-
- * check/setcode.c: New file implementing some basic tests
- of the new jit_set_code() interface.
-
- * check/Makefile.am: Update for newer test case.
-
-2014-06-03 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/lightning.c: Add the new
- jit_indirect() call, that returns a special label node,
- and tells lightning that the label may be the target of
- an indirect jump.
-
- * doc/body.texi: Document the new jit_indirect() call, and
- add examples of different ways to create labels and branches.
-
-2014-23-02 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86.c: Rewrite previous patch to inline save/restore
- because clobbering %ebx in x86 is treated as an error
- (jit_x86.c:239:5: error: PIC register clobbered by 'ebx' in 'asm').
-
-2014-19-02 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86.c: Rewrite incorrect inline assembly that could
- truncate a variable in a callee save register. Now it simply
- tells gcc that the register is clobbered, instead of using a
- *32 bit* swap with a temporary variable. The problem only
- happens when compiling with optimization.
-
-2014-19-02 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
- include/lightning/jit_hppa.h, include/lightning/jit_ia64.h,
- include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
- include/lightning/jit_s390x.h, include/lightning/jit_sparc.h,
- include/lightning/jit_x86.h: Change jit_regset_t to an
- unsigned type, to allow safe right shift.
-
- * lib/lightning.c: Rewrite jit_regset_scan1 to allow easier
- compiler optimization.
-
-2013-12-03 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-x87.c: Correct wrong optimization when
- loading the log(2) constant.
-
-2013-12-03 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-cpu.c: Use the emms instruction before
- calling any function. This is particularly important
- when using c99 complex functions as it can easily
- overflow the x87 stack due to the way lightning uses
- the x87 stack as a flat register file.
-
-2013-12-02 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-x87.c: Correct wrong code generation due
- to comparing the base and not the value register with
- %st(0) in stxi_f.
-
-2013-12-02 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-x87.c, lib/jit_x86.c: Use 8 bytes aligned
- stack offset for float/double x87 to/from sse move.
-
-2013-11-27 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac, lib/jit_arm-swf.c, lib/jit_arm.c: Add
- changes that should at least allow building lightning
- on Apple iOS7.
-
-2013-10-08 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ppc-cpu.c: Correct wrong shortcut for ldxi_l with
- a zero offset, that was calling ldr_i instead of ldr_l.
-
-2013-10-08 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_arm.h, lib/jit_arm-cpu.c: Do not use
- by default load/store instructions that map to ldrt/strt.
- There is already the long displacement version for positive
- offsets, and when using a (shorter) negative offset it does
- not map to ldrt/strt. At least on qemu strt may cause
- reproducible, but unexpected SIGILL.
-
-2013-10-08 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm-vfp.c: Correct wrong load/store offset
- calculation when the displacement is constant but too
- large to use an instruction with an immediate offset.
-
-2013-10-07 Paulo Andrade <pcpa@gnu.org>
-
- * check/self.c: Extend tests to validate jit_callee_save_p
- does not cause an assertion on valid arguments, and test
- extra registers defined on some backends.
-
- * configure.ac: Do not ignore environment CFLAGS when
- checking if need to test runtime configurable options,
- like use x87 when sse2 is available, arm instruction set
- instead of thumb, etc.
-
- * include/lightning/jit_arm.h: Correct wrong jit_f macro
- definition.
-
- * include/lightning/jit_ia64.h, include/lightning/jit_ppc.h:
- Correct wrong jit_r macro definition.
-
- * lib/jit_x86-x87.c, lib/jit_x86.c: Actually use the
- reserved stack space for integer to/from float conversion.
- The stack space was also changed to ensure it is 8 bytes
- aligned. Also, for Solaris x86 in 32 bit mode, an alternate
- truncr_d was implemented because for some reason it is
- failing with SIGILL if using the "fisttpl" instructions,
- that must be available on p6 or newer, but for the sake of
- making all tests pass, implement a 486 or newer sequence
- if "sun" is defined.
-
-2013-10-03 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
- lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and
- pass all test cases on Irix big endian mips using
- the 64 bit abi.
-
-2013-10-02 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_mips.h: Add proper mips abi detection.
-
-2013-09-30 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_print.c: Do not crash if calling jit_print from
- gdb before actually emitting code.
-
- * lib/lightning.c: Correct misplaced check for already
- visited blocks on conditional branches, what was preventing
- proper merge live bit masks of forward blocks.
-
-2013-09-30 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-cpu.c: Correct not properly tested case of using
- %r12 as index register, what was causing an invalid assertion.
- %r12 is mapped to the "extra" JIT_R3 register, and test cases
- only test "standard" lightning registers.
-
-2013-09-28 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64.c: Minor change to force collecting the maximum
- instruction length in the --enable-devel-get-jit-size build
- mode. The actual generated file did not change because the
- sampling was large enough that it had already collected proper
- information in the previously slightly buggy code (not forcing
- a sync of the instructions that could be combined).
-
-2013-09-27 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm.c: Correct build when disassembler is
- disabled.
-
-2013-09-25 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c: Correct some
- off by one range checks (that were only accepting values
- one less than the maximum allowed) and an invalid test
- condition check that was forcing it to always use
- indirect jumps even when reachable with an immediate
- displacement.
-
-2013-09-24 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c,
- lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c,
- lib/jit_s390x-sz.c, lib/jit_size.c, lib/jit_sparc-sz.c,
- lib/jit_x86-sz.c: New files implementing static tables
- with longest known instructions length generated to match
- a lightning instruction. These tables should make it easier
- to make it very unlikely to ever miscalculate, or by too
- much, the size of a code buffer.
-
- * lib/jit_size.c: New file that aids to either collect
- jit code size information, or use the information depending
- on build options.
-
- * size.c: New helper file that parses input for, and create
- an initial jit_$arch-sz.c file, that needs some minor edit
- for arches with multiple configurations.
-
- * configure.ac, Makefile.am: Add the new, devel mode only
- --enable-devel-get-jit-size configure option, that sets
- compile time flags to collect jit code size information,
- that will be used as input for the "noinst size program".
-
- * lib/jit_aarch64.c, lib/jit_arm.c, lib/jit_disasm.c,
- lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_memory.c,
- lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c,
- lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c: Minor
- changes for the --enable-devel-get-jit-size build mode,
- as well as the "production build mode" with jit code
- size information.
-
-2013-09-14 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/lightning.c: Add the new
- jit_pointer_p interface, that returns a boolean value
- telling if the pointer argument is inside the jit
- code buffer. This is useful to avoid the need to add
- extra labels and calls to jit_address to figure bounds
- of code buffer, and still keep internal data private.
-
-2013-09-13 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, include/lightning/jit_private.h,
- lib/jit_note.c: Change the code argument of jit_get_note
- to a jit_pointer_t and make jit_get_note a public interface.
- It was intended so since start, as a way to map an offset
- in the code to a function name, file name and line number
- mapping.
-
-2013-09-11 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Correct reversed arguments in example of
- usage in a (possibly) multi threaded, multiple jit_state_t
- environments.
-
- * include/lightning/jit_arm.h, include/lightning/jit_private.h,
- lib/jit_arm-cpu.c, lib/jit_arm.c: Make a previously, non
- documented, global state private to the related jit_state_t
- generating code.
-
-2013-09-10 Paulo Andrade <pcpa@gnu.org>
-
- * check/self.c, check/self.ok: New files implementing simple
- consistency check assertions. At first validating some macros
- that use values from different sources agree.
-
- * check/Makefile.am: Update for the new test case.
-
- * include/lightning.h, lib/lightning.c: Add the new
- jit_callee_save_p() call, that is intended to be used when
- writing complex code using lightning, so that one does not
- need to verify what backend is being used, or have access to
- private data, to query if a register is callee save or not;
- on several backends the scratch registers are actually callee
- save.
-
- * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
- include/lightning/jit_hppa.h, include/lightning/jit_mips.h,
- include/lightning/jit_ppc.h, include/lightning/jit_sparc.h,
- include/lightning/jit_x86.h: Add an explicit definition for
- JIT_R3-JIT_Rn, JIT_V3-JIT_Vn and JIT_F6-JIT_Fn when applicable.
- This allows one to write code based on "#if defined(JIT_XN)"
- and therefore, not need to check what is the current backend
- or have access to private data structures. This is particularly
- useful when writing virtual machines with several specialized,
- global registers.
-
- * lib/jit_ia64.c: Properly flag the callee save general
- purpose registers as such, so that jit_callee_save_p() works
- as intended.
-
-2013-09-10 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c, configure.ac: Conditionally use the
- code written to workaround a bug in the Hercules emulator,
- as isnan and isinf are not available at least on HP-UX ia64.
-
-2013-09-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_s390x-cpu.c: Spill/reload correct callee save
- float registers.
-
-2013-09-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_hppa-cpu.c: Correct code to call a function stored
- in a register or a patched function address.
-
-2013-09-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64-cpu.c: Correct incorrect logic when restoring
- the value of the "r2" callee save register.
-
-2013-08-29 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm-cpu.c, lib/jit_arm.c: Correct wrong test and update
- of the thumb offset information, when checking if needing to
- patch a jump from arm to thumb mode. The problem would happen when
- remapping the code buffer, and the new address being lower than
- the previous one.
-
-2013-08-26 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac: Extend FreeBSD test to also handle NetBSD.
-
- * lib/jit_x86-cpu.c: Correct wrongly defined offset type of
- ldxi_ui. Problem detected when building on NetBSD.
-
- * lib/lightning.c: Adjust code to handle NetBSD mremap,
- where arguments do not match Linux mremap.
-
-2013-08-26 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ppc.c: Correct C sequence point problem miscalculating
- the actual function address in a function descriptor. Problem
- happens with gcc 4.8.1 at least.
-
-2013-08-11 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_s390x-cpu.c: Correct code checking if immediate
- fits instruction, but using the negated value.
-
-2013-07-28 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_s390x.h, lib/jit_s390x-cpu.c,
- lib/jit_s390x-fpu.c, lib/jit_s390x.c: New files
- implementing the new s390x port.
-
- * configure.ac, include/lightning.h,
- include/lightning/Makefile.am,
- include/lightning/jit_private.h,
- lib/Makefile.am, lib/jit_disasm.c, lib/lightning.c:
- Minor adaptation for the new s390x backend.
-
- * check/float.tst: Update for the s390x result of
- truncating +Inf to integer.
-
- * check/qalu_mul.tst: Add extra test cases to better test
- high word of signed multiplication as the result is
- adjust from unsigned multiplication on s390x.
-
-2013-07-28 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c: Do not assume casting a double NaN or
- Inf to float will produce the expected float NaN or Inf.
- This is not true at least under s390x.
-
-2013-07-28 Paulo Andrade <pcpa@gnu.org>
-
- * check/check.arm.sh, check/check.sh, check/check.swf.sh,
- check/check.x87.sh: Properly check test programs output,
- not just rely on the test program self testing the results
- and not crashing.
-
-2013-07-28 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_aarch64.c: Remove unused macros left from cut&paste
- of jit_arm.c.
-
-2013-07-16 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_aarch64.h, lib/jit_aarch64-cpu.c,
- lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: New files
- implementing the new aarch64 port, as a new architecture,
- not as an expansion of the existing armv[4-7] port.
-
- * check/lightning.c: Add aarch64 support and a small
- change to recognize character constants as immediate
- values.
-
- * check/float.tst: Add aarch64 preprocessor conditionals
- to select proper expected value when converting [+-]Inf
- and NaN to integer.
-
- * include/lightning/jit_arm.h, lib/jit_arm.c: Minor changes
- to better match the new aarch64 files.
-
- * configure.ac, include/lightning.h,
- include/lightning/Makefile.am, include/lightning/jit_private.h,
- lib/Makefile.am, lib/lightning.c: Minor adjustments
- for the aarch64 port.
-
-2013-07-08 Paulo Andrade <pcpa@gnu.org>
-
- * NEWS, THANKS, configure.ac, doc/version.texi: Update for
- the 1.99a second alpha release.
-
-2013-06-25 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_mips.c: Correct cut&paste error that caused wrong
- stack offset calculation for double arguments in stack in
- the o32 abi.
- Correct typo in the __LITTLE_ENDIAN macro name, that came
- from cut&paste error in the original typo in lib/jit_ppc.c.
-
- * lib/jit_ia64.c, lib/jit_ppc.c: Correct typo in the
- __LITTLE_ENDIAN macro name.
-
-2013-06-22 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c, configure.ac, include/lightning.h,
- lib/lightning.c: Add tests and quirks to build/detect
- and/or work on Irix.
-
- * include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
- lib/jit_mips-fpu.c, lib/jit_mips.c: Adapt code to run
- in big endian mips, using the n32 abi.
-
-2013-06-18 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h: Minor extra preprocessor testing
- to "detect" byte order on x86 solaris, that now builds
- and pass all test cases.
-
-2013-06-18 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_sparc-cpu.c: Correct compiler warning of value
- used before assignment. The usage is bogus as the api
- requires always patching jumps, but the random value used
- could cause an assertion due to invalid displacement.
-
- * lib/jit_sparc.c: Always load and store double arguments
- in stack as 2 float loads or stores, for safety, as unaligned
- access is not allowed in Sparc Solaris.
-
-2013-06-14 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac: Force -mlp64 to CFLAGS on HP-UX ia64 port.
- It is the only supported mode, and expects gcc as C compiler.
-
- * include/lightning.h, lib/jit_ia64-cpu.c, lib/jit_ia64.c:
- Correct ia64 port to work on HP-UX that runs it in big endian
- mode.
-
-2013-06-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_hppa.c: Sanitize the cache synchronization inline
- assembly code that was doing twice the work and redundantly
- flushing the end address every loop iteration.
-
-2013-06-09 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac, check/Makefile.am, doc/Makefile.am: Do not
- explicitly link to -ldl, but instead autodetect the library
- with dlopen, dlsym, etc.
-
- * check/lightning.c: Add workaround to apparently buggy
- getopt in HP-UX that sets optind to the wrong index, and
- use RTLD_NEXT on HP-UX instead of RTLD_DEFAULT to dlsym
- global symbols.
-
- * include/lightning.h: Rework definitions of wordsize and
- byte order to detect proper values on HP-UX.
-
- * lib/lightning.c: Minor correction to use MAP_ANONYMOUS
- instead of MAP_ANON on HP-UX.
-
- * lib/jit_hppa.c: Float arguments must be passed on integer
- registers on HP-UX, not only for varargs functions.
- Add code to properly clear instruction cache. This was
- not required on Debian hppa port, but may have been working
- by accident.
-
- * lib/jit_hppa-cpu.c: Follow pattern of HP-UX binaries and
- use bve,n instead of bv,n to return from functions.
-
- * lib/jit_hppa-fpu.c: For some reason "fst? frX,rX,(rY)" did
- not work on the tested computer (HP-UX B.11.23 U 9000/785 HP-UX)
- so the code was changed, at first for __hpux only to add the
- base and offset register and use the instruction with an
- immediate (zero) offset.
-
-2013-06-07 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c, lib/jit_disasm.c, lib/jit_ppc-cpu.c,
- lib/jit_ppc-fpu.c, lib/jit_ppc.c, include/lightning.h,
- include/lightning/jit_ppc.h, include/lightning/jit_private.h:
- Adapt code to work on 32 bit AIX ppc using gcc. Most changes
- are basically to adapt the elf64 logic to 32 bit, as it does
- not use the same convention of 32 bit Darwin ppc.
-
- * check/stack.tst: Add a fake memcpy function to the test
- case if running under AIX, as it is not available to dlsym.
-
- * configure.ac: Check for getopt.h header, not available in
- AIX.
-
-2013-06-01 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_hppa.h, lib/jit_hppa-cpu.c,
- lib/jit_hppa-fpu.c, lib/jit_hppa.c: New files implementing
- the hppa port. Built on Debian Linux PA-RISC 2.0, 32 bit.
-
- * check/float.tst: Add preprocessor for hppa expected
- values when converting NaN and +-Inf to an integer.
-
- * check/ldst.inc: Ensure double load/store tests use an
- 8 byte aligned address by default.
-
- * lib/lightning.c: Correct a bug found during tests in
- the new port, where qmul* and qdiv* were not properly
- setting one of the result registers as modified in the
- function, what would be a problem if the only "write"
- usage were the qmul* or qdiv*.
-
- * check/varargs.tst, check/varargs.ok: Add one extra
- interleaved integer/double test to validate proper code
- generation in the extra case.
-
- * check/lightning.c, configure.ac, include/lightning.h,
- include/lightning/Makefile.am,
- include/lightning/jit_private.h, lib/Makefile.am,
- lib/jit_disasm.c: Update for the hppa port.
-
-2013-04-27 Paulo Andrade <pcpa@gnu.org>
-
- * check/varargs.tst: Correct misplaced .align directive
- that was causing the double buffer to not be aligned at
- 8 bytes.
- * lib/jit_ia64-cpu.c:
- Properly implement abi for excess arguments passed on
- stack.
- Simplify load/store with immediate displacement argument
- with zero value.
- Simplify some calls to "subi" changing to "addi" with
- a negative argument.
- Remove some #if 0'ed code, that could be useful in
- special conditions, but the most useful one would be
- to "optimize" "static" jit functions, but for the sake
- of simplicity, jit functions are implemented in a way
- that can be passed back to C code as C function pointers.
- Add an attribute to prototypes of several unused functions.
- These functions are defined for the sake of implementing all
- Itanium documented instructions, but a significant amount of
- them is not used by lightning.
- * lib/jit_ia64-fpu.c: Simplify load/store with zero immediate
- displacement and add unused attribute for functions not used
- by lightning, but required to provide macros implementing all
- Itanium documented instructions.
- * lib/jit_ia64.c: Update for the properly implemented abi
- for stack arguments.
- * lib/lightning.c: Mark an unused function as such.
-
-2013-04-27 Paulo Andrade <pcpa@gnu.org>
-
- lib/jit_ia64-cpu.c:
- Correct immediate range check of integer comparisons when
- inverting arguments.
- Correct gei_u that was not decrementing immediate when
- inverting arguments.
- Correct b?add* and b?sub* that were not properly updating
- the result register.
-
-2013-04-27 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64-cpu.c: Correct wrong mapping of 2 instructions
- in "M-, stop, M-, stop" translation, that was ignoring the
- last stop (implemented as a nop I- stop).
-
- * lib/jit_ia64-fpu.c: Properly implement fnorm.s and fnorm.d,
- as well as the proper integer to float or double conversion.
-
-2013-04-27 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64-cpu.c: Correct bogus implementation of ldr_T
- for signed integers, that was using ld1.s, ld2.s and ld4.s.
- The ".s" stands for speculative load, not sign extend.
-
- * lib/jit_ia64-fpu.c: Correct bogus implementation of ldxr_T
- for float and double. The third (actually, second) argument
- is indeed added to the base register, but the base register
- is modified. The actual M7 implementation was already correct,
- just the ldxr_f and ldxr_d implementation that was kept in
- a prototype state, misinterpreting what M7 does.
-
-2013-04-27 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64-cpu.c: Correct X2 pattern matching by preventing
- it to attempt to require a stop between the L and the X
- instruction; that is, check the registers and predicates
- before emitting the L instruction, not after.
-
- * lib/jit_ia64-fpu.c: Slightly simplify and correct
- divr_f and divrd_d implementation.
-
- * check/lightning.c: Add __ia64__ preprocessor define
- on Itanium.
-
- * check/alu.inc, check/clobber.tst, check/float.tst: Define
- several macros conditionally to __ia64__. This is required
- because __ia64__ jit generation can use way too many memory,
- due to not implementing instruction reordering to avoid
- as much as possible "stops", what causes way too many nops
- to be generated, as well as the fact that division and
- remainder requires function calls, and float division
- requires significant code to implement.
-
-2013-04-27 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h: Add new backend specific movr_w_d,
- movr_d_w and movi_d_w codes as helpers to ia64 varargs
- functions arguments.
-
- * lib/jit_ia64-cpu.c:
- Correct wrong encoding of A5 small integers.
- Correct define of "mux" instruction modifiers.
- Correct ordering of arguments and predicates of cmp_xy
- implementation with immediate arguments; like most other
- codes with an immediate, the immediate is the second, not
- the third argument.
-
- * lib/jit_ia64-fpu.c: Actual implementation of the code
- to move to/from gpr to/from fpr, to implement varargs abi.
-
- * lib/jit_ia64.c: Make fpr argument registers not allocatable
- as temporaries, no need for the extra checks when there are
- plenty registers.
-
- * lib/jit_print.c, lib/lightning.c: Minor updates for the
- new movr_w_d, movr_d_w and movi_d_w codes.
-
-2013-04-26 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c: Correct code to
- also insert a stop to break an instruction group if a
- register is written more than once in the same group.
- This may happen if a register is argument and result of
- some lightning call (not a real instruction). The most
- common case should be code in the pattern:
- movl rn=largenum
- ...
- mov rn=smallnum
- where "rn" would end up holding "largenum".
- But the problem possibly could happen in other circumstances.
-
-2013-04-26 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_ia64.h, lib/jit_ia64-cpu.c,
- lib/jit_ia64-fpu.c, lib/jit_ia64.c:
- Relocate JIT_Rn registers to the local registers, as, like
- float registers, div/rem and sqrt are implemented as function
- calls, and may overwrite non saved scratch registers.
- Change patch_at to receive a jit_code_t instead of a
- jit_node_t, so that it is easier to "inline" patches when
- some instruction requires complex code to implement, e.g.
- uneq and ltgt.
- Correct arguments to FMA and FMA like instructions that,
- due to a cut&paste error were passing the wrong argument
- to the related F- implementation function.
- Rewrite ltgt to return the proper result if one (or both)
- of the arguments is unordered.
-
-2013-04-26 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_ia64.h, include/lightning/jit_private.h,
- lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, lib/jit_ia64.c,
- lib/lightning.c: Rework code to detect need of a "stop" to
- also handle predicates, as if a predicate is written, it
- cannot be read in the same instruction group.
- Use a single jit_regset_t variable for all registers when
- checking need for a stop (increment value by 128 for
- float registers).
- Correct wrong "subi" implementation, as the code executed
- is r0=im-r1, not r0=r1-im.
- Use standard lightning 6 fpr registers, and rework to
- use callee save float registers, that may be spill/reloaded
- in prolog/epilog. This is required because some jit
- instructions implementations need to call functions; currently
- integer div/mod and float sqrt, what may change the value of
- scratch float registers.
- Rework point of "sync" of branches that need to return a
- patch'able address, because the need for a "stop" before a
- predicate read causes all branches to be the instruction
- in slot 0, as there is no template to "stop" and branch
- in the same instruction "bundle".
-
-2013-04-25 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_ia64.h, lib/jit_ia64-cpu.c,
- lib/jit_ia64-fpu.c, lib/jit_ia64.c: New files implementing
- the basic infrastructure of an Itanium port. The code
- compiles and can generate jit for basic hello world like
- functions.
-
- * check/lightning.c, configure.ac, include/lightning.h,
- include/lightning/Makefile.am, include/lightning/jit_private.h,
- lib/Makefile.am, lib/lightning.c: Update for the Itanium
- port.
-
- * lib/jit_mips-cpu.c, lib/jit_mips.c: Correct typo and
- make the jit_carry register local to the jit_state_t.
- This matches code reviewed in the Itanium port, that
- should use the same base logic to handle carry/borrow.
-
-2013-04-10 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_private.h, lib/jit_arm.c,
- lib/jit_mips-cpu.c, lib/jit_mips.c, lib/jit_ppc-cpu.c,
- lib/jit_ppc.c, lib/jit_print.c, lib/jit_sparc-cpu.c,
- lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86.c,
- lib/lightning.c: Change all jit_regset macros to take
- a pointer argument, to avoid structure copies when
- adding a port to an architecture with more than 64
- registers.
-
-2013-04-08 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm.c, lib/jit_ppc.c: Do not rely on __clear_cache
- aligning to the next page boundary the end argument. It may
- actually truncate it.
-
-2013-03-29 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_private.h, lib/jit_arm.c, lib/jit_memory.c,
- lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c,
- lib/lightning.c: Do not start over jit generation if can grow
- the code buffer with mremap without moving the base pointer.
-
-2013-03-29 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_memory.c: Implement a simple memory allocation wrapper
- to allow overriding calls to malloc/calloc/realloc/free, as well
- as ensuring all memory containing pointers is zero or points to
- allocated memory.
-
- * include/lightning.h, include/lightning/jit_private.h: Definitions
- for the memory allocation wrapper.
-
- * lib/Makefile.am: Update for new jit_memory.c file.
-
- * lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips.c, lib/jit_note.c,
- lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c:
- Use the new memory allocation wrapper code.
-
-2013-03-22 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac, include/lightning/jit_private.h, lib/lightning.c:
- Remove dependency on gmp. Only a simple bitmap was required, and
- that was not enough reason to force linking to gmp and possible
- complications caused by it.
-
-2013-03-10 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h: Add check for __powerpc__ defined
- in Linux, while Darwin defines __ppc__.
-
- * include/lightning/jit_ppc.h: Adjust register definitions
- for Darwin 32 bit and Linux 64 bit ppc usage and/or ABI.
-
- * include/lightning/jit_private.h: Add proper check for
- Linux __powerpc__ and an data definition for an workaround
- to properly handle code that starts with a jump to a "main"
- label.
-
- * lib/jit_disasm.c: Add extra disassembler initialization
- for __powerpc64__.
-
- * lib/jit_ppc-cpu.c: Add extra macros and functions, and
- correct/adapt previous ones to handle powerpc64.
-
- * lib/jit_ppc-fpu.c: Adapt for 64 bit wordsize. Basically
- add conversion from/to int32/int64 and proper handling of
- load/store offsets too large for 32 bit.
-
- * lib/jit_ppc.c: Add calls to 64 bit codes and adaptation
- for the PowerPC 64 bit Linux ABI.
-
- * lib/jit_arm.c, lib/jit_mips.c, lib/jit_sparc, lib/jit_x86.c,
- lib/lightning.c: Correct off by one error when restarting jit
- of a function due to finding too late that needs to spill/reload
- some register. Problem was found by accident on a very special
- condition during PowerPC 64 code adaptation.
-
-2013-03-08 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c: Add missing ppc preprocessor definition.
-
-2013-03-06 Paulo Andrade <pcpa@gnu.org>
-
- * check/float.tst: Comment out the int to negative infinity
- test in mips for the moment because not all Loongson agrees
- on the result.
-
- * lib/jit_disasm.c: Add a test instead of an assertion
- when loading symbols for disassembly due to a failure with
- a simple binutils build in Debian mipsel64.
-
-2013-03-06 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_private.h, lib/jit_arm-cpu.c,
- lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips-cpu.c,
- lib/jit_mips.c, lib/jit_note.c, lib/jit_ppc-cpu.c,
- lib/jit_ppc.c, lib/jit_print.c, lib/jit_sparc-cpu.c,
- lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86.c,
- lib/lightning.c: Add an extra structure for data storage
- during jit generation, and release it after generating
- jit, to reduce a bit memory usage, and also to make it
- easier to understand what data is available during
- jit runtime.
-
-2013-03-06 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Make data and code buffer readonly.
-
-2013-02-20 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Fool proof validate the examples of what
- an assembly-language programmer would write and correct the
- wrong sparc example.
-
-2013-02-19 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Add back the SPARC code generation example.
-
-2013-02-19 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c: Remove state flag to work with partial
- sparc port, by just disassembling if there was incomplete
- code generation.
-
- * jit_sparc-cpu.c: Correct wrong range check for immediate
- integer constants (off by one bit shift).
- Correct macro implementing equivalent "rd %y, rd" assembly.
- Implement qmul* and qdiv*.
-
- * jit_sparc.c: Update for qmul* and qdiv* and remove logic
- to handle incomplete code generation during sparc port.
-
-2013-02-18 Paulo Andrade <pcpa@gnu.org>
-
- * check/float.tst: Add sparc to list of known NaN and +-Inf
- to integer conversion.
-
- * check/lightning.c: Define __sparc__ to preprocessor in
- the sparc backend.
-
- * include/lightning/jit_private.h: Correct wrong definition
- of emit_stxi_d, that has lived for a long time, but would
- cause problems whenever needing to spill/reload a float
- register.
-
- * include/lightning/jit_sparc.h: Can only use %g2,%g3,%g4
- for scratch variables, as other "global" registers are
- reserved for the system, e.g. libc.
- Reorder float register naming to make it easier to
- access odd float registers, so that generating code for
- pusharg and getarg is easier for the IR.
-
- * lib/jit_mips-cpu.c, lib/jit_ppc-cpu.c: Update to match
- new code in jit_sparc-cpu.c. It must call jit_get_reg
- with jit_class_nospill if using the register to move
- an unconditional branch address to it, as the reload
- will not happen (actually could happen in the delay
- slot...)
-
- * lib/jit_sparc-cpu.c: Correct wrong macro definition for
- ldxr_s.
- Properly implement div* and implement rem. Div* needs
- to use the y register, and rem* needs to be synthesized.
- Correct b?sub* macro definitions.
-
- * lib/jit_sparc-fpu.c: Correct reversed float to/from double
- conversion.
- Correct wrong jit_get_reg call asking for a gpr and then
- using the fpr with that number.
- Correct wrong branch displacement computation for
- conditional branches.
-
- * lib/jit_sparc.c: Correct getarg_d and pushargi_d implementation.
- Add rem* entries to the switch converting IR to machine code.
-
- * lib/lightning.c: Correct a problem detected when adding
- the jit_class_nospill flag to jit_get_reg, that was caused
- when having a branch to an "epilog" node, what would cause
- the code to think all registers in unknown state were live,
- while in truth, all registers in unknown state in the
- "just after return" point are actually dead.
-
-2013-02-17 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_sparc.h, lib/jit_sparc-cpu.c,
- lib/jit_sparc-fpu.c, lib/jit_sparc.c: New files implementing
- the basic framework of the sparc port.
-
- * configure.ac, include/lightning.h, include/lightning/Makefile.am,
- include/lightning/jit_private.h, lib/jit_disasm.c: Update
- for the sparc port framework.
-
- * lib/jit_mips.c: Correct reversed retr/reti logic.
-
- * lib/jit_ppc.c: Correct misspelled __LITTLE_ENDIAN.
-
- * lib/lightning.c: Always do byte hashing in hash_data, because
- the logic to "compress" strings causes large pointers to not
- be guaranteed aligned at 4 byte boundaries.
- Update for the sparc port framework.
-
-2013-02-11 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm.c: Correct jit_pushargi_f in the arm hardfp abi.
- Most of the logic uses even numbered register numbers, so that
- a float and a double can be used in the same register, but
- the abi requires packing the float arguments, so jit_pushargi_f
- needs to allocate a temporary register to modify only the
- proper register argument (or be very smart to push two
- immediate arguments if applicable).
-
-2013-02-11 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/lightning.c: Implement the new
- jit_clear_state and jit_destroy_state calls. jit_clear_state
- releases all memory not required during jit_execution; that
- is, leaves only the mmap'ed data and code buffers allocated.
- jit_destroy_state releases the mmap'ed buffers as well as
- the jit_state_t object itself, that holds pointers to the
- code and data buffers, as well as annotation pointers (for
- disassembly or backtrace) in the data buffer.
-
- * lib/jit_note.c: Correct invalid vector offset access.
-
- * check/ccall.c, check/lightning.c, doc/ifib.c, doc/incr.c,
- doc/printf.c, doc/rfib.c, doc/rpn.c: Use the new jit_clear_state
- and jit_destroy_state calls, to demonstrate the new code to
- release all jit memory.
-
- * doc/body.texi: Add basic documentation and usage description
- of jit_clear_state and jit_destroy_state.
-
-2013-02-11 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_private.h, lib/jit_note.c, lib/lightning.c:
- Store all annotation information in the mmap'ed area reserved for
- read only data. This adds code to not allocate memory for jit_note_t
- objects, and to relocate jit_line_t objects and its contents after
- calculating annotation information. The jit_line_t objects are
- relocated because it is not possible to always calculate before
- hand data layout because note information may be extended or
- redundant entries removed, as well as allowed to be added in
- non sequential order.
- A bug was also corrected in _jit_set_note, that was causing it
- to allocate new jit_line_t objects when not needed. It was still
- working correctly, but allocating way more memory than required.
-
-2013-02-05 Paulo Andrade <pcpa@gnu.org>
-
- *include/lightning.h, lib/lightning.c: Add the new jit_live code
- to explicitly mark a register as live. It is required to avoid
- assuming functions always return a value in the gpr and fpr return
- register, and to avoid the need of some very specialized codes
- that vary too much from backend to backend, to instruct the
- optimization code the return register is live.
-
- * lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c,
- lib/jit_x86.c: Update for the new jit_live code.
-
- * check/ret.ok, check/ret.tst: New files implementing a simple
- test case that would previously fail at least in ix86/x86_64.
-
- * check/Makefile.am: Update for new "ret" test case.
-
-2013-02-05 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Validate and correct
- problems in the qmul and qdiv ppc implementation.
-
-2013-02-04 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, include/lightning/jit_private.h,
- lib/jit_arm-cpu.c, lib/jit_arm.c, lib/jit_mips-cpu.c,
- lib/jit_mips.c, lib/jit_ppc-cpu.c, lib/jit_ppc.c,
- lib/jit_x86-cpu.c, lib/jit_x86.c, lib/lightning.c:
- Implement the new qmul and qdiv instructions that return signed
- and unsigned lo/hi multiplication result and div/rem division result.
- These should be useful for jit translation of code that needs to
- know if a multiplication overflows (no branch opcode added) or if
- a division is exact (easy check if remainder is zero).
-
- * check/lightning.c, lib/jit_print.c, check/Makefile.am,
- check/all.tst: Update for the new qmul and qdiv instructions.
-
- * check/qalu.inc, check/qalu_div.ok, check/qalu_div.tst,
- check/qalu_mul.ok, check/qalu_mul.tst: New files implementing
- simple test cases for qmul and qdiv.
-
-2013-01-30 Paulo Andrade <pcpa@gnu.org>
-
- * doc/body.texi: Correct "jmpi" description that incorrectly
- told it was possible to pass any address as jump target. The
- only way to do that is "movi+jmpr".
-
-2013-01-30 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-cpu.c: Correct undefined behavior code.
- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143
-
-2013-01-29 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac: Use AC_CONFIG_HEADERS instead of AC_CONFIG_HEADER
- to have HAVE_CONFIG_H defined with latest aclocal.
-
- * include/lightning/jit_private.h, lib/lightning.c: Add new
- abstraction to use an heuristic to calculate amount of space
- required for jit generation, and code to reallocate buffer if
- did miscalculate it.
-
- * lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_x86.c:
- Update to use new code to estimate and resize of required buffer
- for jit code.
-
- * lib/jit_x86-cpu.c: Minor cosmetic change to avoid adding a
- non required rex prefix when calling a function pointer stored
- in a register.
-
-2013-01-24 Paulo Andrade <pcpa@gnu.org>
-
- * check/Makefile.am: "make debug" target should pass only
- the main test tool program as argument for running gdb
-
- * configure.ac: Add the --enable-assertions options.
-
- * doc/Makefile.am, doc/body.texi, doc/lightning.texi:
- Major rewrite of the documentation to match the current
- implementation.
-
- * doc/version.texi: Automatic date update.
-
- * doc/ifib.c, doc/incr.c, doc/printf.c, doc/rfib.c, doc/rpn.c:
- Implementation of the documentation examples, that are also
- compiled during a normal build.
-
- * doc/p-lightning.texi, doc/porting.texi, doc/toc.texi,
- doc/u-lightning.texi, doc/using.texi: These files were
- renamed in the documentation rewrite, as the documentation
- was significantly trimmed due to full removal of the porting
- chapters. Better porting documentation should be added but
- for the moment it was just removed the documentation not
- matching the implementation.
-
-2013-01-18 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_note.c: Correct bounds check and wrong code keeping
- a pointer that could be changed after a realloc call.
-
-2013-01-18 Paulo Andrade <pcpa@gnu.org>
-
- * check/3to2.tst, check/add.tst, check/allocai.tst, check/bp.tst,
- check/call.tst, check/ccall.c, check/clobber.tst, check/divi.tst,
- check/fib.tst, check/ldsti.tst, check/ldstr-c.tst, check/ldstr.tst,
- check/ldstxi-c.tst, check/ldstxi.tst, check/ldstxr-c.tst,
- check/ldstxr.tst, check/lightning.c, check/rpn.tst, check/stack.tst,
- check/varargs.tst, include/lightning.h,
- include/lightning/jit_private.h, lib/jit_arm.c, lib/jit_disasm.c,
- lib/jit_mips.c, lib/jit_note.c, lib/jit_ppc.c, lib/jit_print.c,
- lib/jit_x86.c, lib/lightning.c: Extend the "jit_note" abstraction
- with the new "jit_name" call, that receives a string argument, and
- should usually be called to mark boundaries of functions of code
- generating jit (that is, it is not expected that the language
- generating jit map its functions to jit functions).
-
-2013-01-17 Paulo Andrade <pcpa@gnu.org>
-
- * check/add.tst, check/allocai.tst, check/bp.tst, check/divi.tst,
- check/fib.tst, check/lightning.c, include/lightning/jit_arm.h,
- include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
- include/lightning/jit_private.h, include/lightning/jit_x86.h:
- Make JIT_RET, JIT_FRET and JIT_SP private. These should not be
- used in any operations due to frequently having special
- constraints (usually JIT_FRET). JIT_FP must be made available
- because it must be used as the base register to access stack
- space allocated with jit_allocai.
-
-2013-01-14 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/lightning.c: Add an extra align
- argument to the jit_data call (that should be made private),
- so that it should not align strings at 8 bytes.
- Correct the jit_note call to include the null ending byte
- when adding label/note names to the "jit data section".
-
-2013-01-11 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_note.c: New file implementing a simple string+integer
- annotation, that should be used to map filename and line number
- to offsets in the generated jit.
-
- * include/lightning.h, lib/lightning.c: Update for the new
- note code.
- Add an extra mandatory argument to init_jit, that is used
- as argument to bfd_openr.
- Change from generic void* to char* the argument to jit_note
- and add an extra integer argument, to map to filename and
- line number.
-
- * check/ccall.c, check/lightning.c, include/lightning/jit_private.h,
- lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips.c, lib/jit_ppc.c,
- lib/jit_print.c, lib/jit_x86.c: lib/Makefile.am: Update for the
- new annotation code.
-
- * configure.ac, check/Makefile.am: Update to work with latest
- automake.
-
-2013-01-09 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/jit_arm.c, jit_mips-fpu.c,
- lib/jit_mips.c, lib/jit_print.c, lib/jit_x86.c, lib/lightning.c:
- Remove the jit_code_getarg_{f,d} and jit_code_pusharg{i,r}_{f,d}
- calls, replacing them with the new, internal only, jit_movr_w_f,
- jit_mov{r,i}_f_w, jit_movr_ww_d, and jit_mov{i,r}_d_ww, that
- better describe the operation being done, and allow removing
- the hackish code to detect special conditions for arm when
- moving from/to vfp from/to a grp register pair.
- Rename jit_code_retval_{f,d} to jit_code_x86_retval_{f,d} as
- it is specific to 32 bit x86, and used to move abi return
- value in x87 register to a sse register.
-
-2013-01-05 Paulo Andrade <pcpa@gnu.org>
-
- * check/cccall.c, check/ccall.ok: New test case to validate
- interleaved calls from/to C code and jit.
-
- * check/Makefile.am: Update for the new ccall test case.
-
- * include/lightning.h, lib/lightning.c: Add the new jit_address
- call that returns the real/final address of a "note" in the
- generated jit. It requires a jit_node_t as returned by the
- jit_note call, and is only valid after calling jit_emit.
- Add an intermediate solution to properly handle arm
- soft and softfp modes that move a double to an integer register
- pair. Currently it just adds extra tests for the condition,
- but the proper solution should be to have extra lightning
- codes for these conditions, codes which should be only used
- by the backends that need it, and merged with the existing
- jit_pusharg*_{f,d}.
-
- * include/lightning/jit_private.h: Add new jit_state_t flag
- to know it finished jit_emit, so that calls to jit_address
- are valid.
-
- * lib/jit_mips.c: Correct abi implementation so that the
- new ccall test case pass. Major problem was using
- _jit->function.self.arg{i,f} as boolean values, but that
- would cause lightning.c:patch_registers() to incorrectly
- assume only one register was used as argument when calling
- jit_regarg_p(); _jit->function.self.arg{i,f} must be the
- number of registers used as arguments (in all backends).
-
- * lib/jit_x86.c: Add workaround, by marking %rax as used,
- to a special condition, when running out of registers and the
- allocator trying to spill and reload %rax, but %rax was used
- as a pointer to a function, what would cause the reload to
- destroy the return value. This condition can be better
- generalized, but the current solution is good enough.
-
- * include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c, lib/jit_ppc.c:
- Rewrite logic to handle arguments, as the original code was
- written based on a SysV pdf about the generic powerpc ABI,
- what did "invent" a new abi for the previous test cases, but
- failed in the new ccall test in Darwin PPC. Now it properly
- handles 13 float registers for arguments, as well as proper
- computation of stack offsets when running out of registers
- for arguments.
-
-2013-01-02 Paulo Andrade <pcpa@gnu.org>
-
- * check/float.tst: Correct test case to match ppc also
- converting positive infinity to 0x7fffffff.
-
- * lib/jit_arm-swf.c: Correct typos with double underscores.
-
- * lib/lightning.c: Correct remaining wrong reverse jump logic.
-
-2012-12-29 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Correct both, wrong and confusing logic
- to compute the reverse of a jump. Now it properly matches
- C semantics for "eq" (==) and "ne" (!=) and correct computation
- of reverse of "uneq" as "gt".
-
- * check/branch.tst: Update "ne" float branch check that
- previously happened to be wrongly tested with a NaN argument.
-
-2012-12-29 Paulo Andrade <pcpa@gnu.org>
-
- * check/float.ok, check/float.tst: New test cases implementing
- extensive validation of float comparison and branch code
- generation as well as integer conversion, involving NaN and
- [+-]Inf.
-
- * lib/jit_arm-swf.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
- Correct bugs found by new float test case.
-
- * lib/jit_x86.c: Correct cut&paste error added in commit to
- convert jit_arg* return value to a jit_node_t*, that would
- cause it to not properly handle double arguments in ix86.
-
- * check/Makefile.am: Update for the new test case.
-
-2012-12-28 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c, include/lightning.h, lib/jit_arm.c,
- lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c, lib/jit_x86.c,
- lib/lightning.c: Change return value of jit_arg{,_f,_d} to
- a jit_node_t* object, that should be used as argument to
- jit_getarg_{c,uc,s,us,i,ui,l,f,d}. This just requires changing
- from jit_int32_t to jit_pointer_t (or jit_node_t*) the "handle"
- for the getarg calls, with the benefit that it makes it easy
- to implement patching of the stack address of non register
- arguments, this way allowing to implement variable size stack
- frames if applicable; useful if there are too many registers and
- jit functions uses only a few callee save registers.
-
-2012-12-27 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm.c, lib/jit_mips-cpu.c, lib/jit_mips.c: Correct
- regressions when patching jit_calli for a forward function.
-
- * lib/jit_ppc-cpu.c: Correct wrong arguments to ANDI opcode
- in jit_getarg_u{c,s} implementation.
-
-2012-12-23 Paulo Andrade <pcpa@gnu.org>
-
- * check/call.ok, check/call.tst: New test cases to validate
- simple typed argument and return values in function calls.
-
- * check/lightning.c: Properly handle jit_movi of labels for
- backward and forward code labels.
-
- * check/Makefile.am: Update for new test case.
-
-2012-12-23 Paulo Andrade <pcpa@gnu.org>
-
- * check/carry.ok, check/carry.tst: New test case to validate
- carry condition handling.
-
- * check/Makefile.am: Update for new test case.
-
-2012-12-22 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Implement logic for
- jit_htonr for big endian, so that ppc (big endian) pass the
- new clobber.tst test case.
-
-2012-12-22 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm.c: Correct use of wrong argument offset
- variable in armv7l or float/double argument for varargs
- function in armv7hl.
- Correct jit_getarg* logic in software float mode to
- match expected behavior in other backends, that is, if
- a function is not called, it is safe to use a few lightning
- calls before a next jit_getarg* call, as done in the test
- case check/stack.tst. The proper solution should be to
- extend the parser in lib/lightning.c to check if there is
- some float operation that will call some (libgcc?) function,
- but software float arm should be a very uncommon backend for
- lightning, so, just load the already in place arguments
- saved to stack, assuming the register argument was clobbered
- (what should not be the case most times...).
-
-2012-12-22 Paulo Andrade <pcpa@gnu.org>
-
- * check/clobber.ok, check/clobber.tst: New test case doing
- extensive validation tests to ensure registers not used in
- a operation are not clobbered.
-
- * check/Makefile.am: Update for new test case.
-
-2012-12-21 Paulo Andrade <pcpa@gnu.org>
-
- * lib/lightning.c: Partially rewrite/revert code to compute
- initial register live state at the start of a basic block.
- The original logic was corrupted when adding optimizations
- to do as few computations as possible in jit_update. The
- reglive field must be always a known set of live registers
- at the start of a basic block. The value that was incorrect
- was the regmask field, that must be the set of registers
- that are in unknown state, because they are not known live,
- neither set (or possibly not set) in the basic block, and
- *must* store the state at the start of the basic block.
-
-2012-12-20 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_ppc.h: Correct mismatch of JIT_F{1,5}
- with enum codes, that were correct, and returned by jit_f().
-
- * lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c: Properly
- implement and better describe values when generating stack
- frames.
-
-2012-12-18 Paulo Andrade <pcpa@gnu.org>
-
- * check/stack.ok, check/stack.tst: New files to test data
- integrity on a deep chain of stack frames.
-
- * 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: Calculate _jit->function->stack
- in the emit stage, otherwise it will calculate it wrong if
- need to jit_allocai space to spill registers.
-
- * lib/lightning.c: Correct wrong offset when updating the
- "current" jit function pointer in the code that may need to
- allocate stack space to spill registers.
-
- * check/lightning.c: Correct off by one data space check.
-
- * check/Makefile.am: Update for new test case.
-
-2012-12-17 Paulo Andrade <pcpa@gnu.org>
-
- * check/fop_abs.ok, check/fop_abs.tst, check/fop_sqrt.ok,
- check/fop_sqrt.tst: New files implementing simple test cases
- for the extra float operations.
-
- * check/Makefile.am: Update for new test cases.
-
- * check/alu.inc: Add an extra macro to check for unordered
- equality on tests where it is expected to use NaN as an
- argument.
-
- * check/lightning.c: Minor change for proper/common argument
- syntax handling ommiting arguments to options.
-
-2012-12-17 Paulo Andrade <pcpa@gnu.org>
-
- * check/Makefile.am: Automatically generate pattern list
- of tests with alternate jit generation options. This should
- prevent typos and needing to change multiple places after
- a change.
-
-2012-12-14 Paulo Andrade <pcpa@gnu.org>
-
- * check/lightning.c: Remove the ".cpu name value" syntax,
- as it was not able to do proper changes before the jit
- internal data structure was initialized. Now it supports
- several getopt options to force using different jit
- generation options, effectively replacing the previous
- syntax.
-
- * check/run-test: Add simple extra logic to handle differently
- named test scripts, used to test things like x87 coprocessor
- in ix86, and arm instruction set or software float in armv7l.
-
- * configure.ac: Add some AC_RUN_IFELSE calls to figure at
- compile time if can test different code generation options,
- and update Makefile generation accordingly.
-
- * check/Makefile.am, lib/jit_arm.c, lib/jit_x86.c: Update to
- properly work with the test tool updating the jit_cpu global
- information.
-
- * check/check.arm.sh, check/check.swf.sh, check/check.x87.sh:
- New wrapper files passing -mthumb=0, mvfp=0 and -mx87=1 to
- the test tool, if applicable, so that it can validate alternate
- code generation options on test hosts that support them.
-
-2012-12-14 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-x87.c, lib/jit_x86.c: Correct test cases in ix86
- when using the x87 coprocessor instead of sse2+.
-
-2012-12-14 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, include/lightning/jit_private.h,
- lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_x86.c,
- lib/lightning.c: Make jit_ellipsis implementation not
- backend specific. It is not intended to handle va_list
- like objects at runtime, as jit_arg* and jit_getarg*
- return constant values resolved at parse time, so, effectively
- it is not possible to create printf like jit functions, as
- there is no va_start, va_arg, va_end, etc, abstraction. This
- limitation should be kept for the sake of making new ports
- easier.
-
-2012-12-14 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/lightning.c: Add two extra wrapper
- functions to avoid need for excess pointer to/from word casts.
-
- * check/lightning.c: Only need for pointer to/from word cast
- now is jit_movi, update accordingly.
-
-2012-12-13 Paulo Andrade <pcpa@gnu.org>
-
- * check/varargs.ok, check/varargs.tst: New test cases implementing
- simple varargs calls with a large amount of arguments to exercise
- excess arguments on stack.
-
- * include/lightning.h: Include config.h if HAVE_CONFIG_H is
- defined.
-
- * lib/jit_arm.c: Allocate a fpr register, not a gpr one for
- temporary when pushing varargs arguments in the stack.
-
- * lib/jit_arm-swf.c: Correct code changing the wrong offset
- in jit_absr_d and jit_negr_d in software float.
-
- * lib/jit_mips.c: Correct calculation of offsets of arguments
- on stack.
-
- * lib/jit_ppc.c: Correct bogus logic for "next" offset of arguments
- on stack and adjust for fixed offset of stack arguments.
-
-2012-12-12 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning.h, lib/jit_arm.c, lib/jit_mips.c,
- lib/jit_ppc.c, lib/jit_x86.c, lib/lightning.c: Change jit_prepare
- to no longer receive an argument. If receiving an argument, it
- should be an ABI specifier, not a boolean if varargs or not,
- and add the new jit_ellipsis call, to specify where the
- ellipsis is in the C prototype of the function being called.
- Note that currently it is not supported to define varargs
- functions and it will be ignored if calling jit_ellipsis not
- in a prepare/finish* block, but this should be addressed.
-
- * check/allocai.tst, check/alu_add.tst, check/alu_and.tst,
- check/alu_com.tst, check/alu_div.tst, check/alu_lsh.tst,
- check/alu_mul.tst, check/alu_neg.tst, check/alu_or.tst,
- check/alu_rem.tst, check/alu_rsh.tst, check/alu_sub.tst,
- check/alu_xor.tst, check/alux_add.tst, check/alux_sub.tst,
- check/bp.tst, check/branch.tst, check/cvt.tst, check/divi.tst,
- check/fib.tst, check/ldsti.tst, check/ldstr-c.tst,
- check/ldstr.tst, check/ldstxi-c.tst, check/ldstxi.tst,
- check/ldstxr-c.tst, check/ldstxr.tst, check/rpn.tst,
- check/lightning.c: Update for the change to jit_prepare and
- addition of jit_ellipsis.
-
-2012-12-11 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ppc-cpu.c: Make movr a function that checks arguments
- so that other code can safely assume it is a noop if src and dst
- are the same register.
- Implement rem{r,i}{,_u} as a div{,u}/mul/sub.
- Correct ANDIS, ORIS and XORIS calls to cast the argument to
- unsigned before the shift to avoid an assertion if the argument
- had the topmost bit set.
- Implement lshi, rshi and rshi_u as functions to test for a
- zero argument, that would otherwise trigger an assertion when
- computing the shift value.
- Do a simple implementation of bm{s,c}{r,i} with a temporary,
- "andr" of arguments and jump based on comparison with zero.
- Correct typo in ldxi_c.
-
- * lib/jit_ppc-fpu.c: Correct wrong arguments to FDIV* and STF*.
-
- * lib/jit_ppc.c: Correct wrong check for 6 instead of 8 integer
- arguments in registers. If calling a varargs function and
- passing a float or double argument, also either store the
- value in the stack or in integer registers, as varargs functions
- do not fetch it from float registers.
- Add "case" for new functions and incorrectly missing ones.
- Call libgcc's __clear_cache, that should know what to do
- if the hardware needs flushing cache before execution.
-
- * lib/lightning.c: Do a simple/trivial logic in jit_regset_scan1,
- that should make it easier for the compiler to optimize it, and
- that also corrects the previously wrong code for big endian, and
- that was causing problems in ppc due to not saving all callee save
- registers as it was not "finding" them in the regset due to the
- little endian assumption bug.
-
-2012-12-11 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac: Only default to using the builtin disassembler
- if on GNU/Linux. This should be temporary, due to requiring
- /proc/self/exe.
- Correctly check $target_cpu for powerpc.
-
- * include/lightning/jit_ppc.h: Correctly implement jit_v_num.
-
- * include/lightning/jit_private.h: Declare proper prototype
- for jit_init_debug and jit_finish_debug.
-
- * lib/jit_ppc-cpu.c: Remove code to save/restore callee save
- float registers, as it is not required since those float
- registers are not usable currently.
- Change prolog and epilog generation to, at least comparing
- code, match what gcc generates in "gcc -O0", but it is still
- failing in Darwin PPC, apparently due to the __clear_cache
- call not being enough, as frequently it will also fail to
- execute, and the code buffer is all zeroes.
-
- * lib/lightning.c: Do not fail in jit_regset_scan1 calls due
- to passing 64 as argument on computers with 64 registers.
-
-2012-12-10 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_mips-cpu.c: Correct all current test cases.
- Call the "xori" not the "XORI" macro for jit_xori implementation,
- as the XORI macro handles only 16 bit unsigned values.
- Call the "movr" macro, not the "movi" macro in the special
- case of adding or subtracting zero.
- Use the proper temporary register in the jit_andr implementation.
-
-2012-12-09 Paulo Andrade <pcpa@gnu.org>
-
- * check/alu.inc, check/alu_add.ok, check/alu_add.tst,
- check/alu_and.ok, check/alu_and.tst, check/alu_com.ok,
- check/alu_com.tst, check/alu_div.ok, check/alu_div.tst,
- check/alu_lsh.ok, check/alu_lsh.tst, check/alu_mul.ok,
- check/alu_mul.tst, check/alu_neg.ok, check/alu_neg.tst,
- check/alu_or.ok, check/alu_or.tst, check/alu_rem.ok,
- check/alu_rem.tst, check/alu_rsh.ok, check/alu_rsh.tst,
- check/alu_sub.ok, check/alu_sub.tst, check/alu_xor.ok,
- check/alu_xor.tst, check/alux_add.ok, check/alux_add.tst,
- check/alux_sub.ok, check/alux_sub.tst, check/branch.ok,
- check/branch.tst: New test cases for arithmetic and branch
- tests.
-
- * check/Makefile.am: Update for new test cases.
-
- * include/lightning/jit_private.h: Make the jit_reg_free_p
- macro shared by all backends. Previously was added for the
- arm backend, but is useful in the x86_64 backend when checking
- state of "special purpose register".
- Also add the new jit_class_named register class, that must be
- or'ed with the register value if calling jit_get_reg expecting
- an specific value, because the specific register value may be
- zero, that previously was treated as no register requested.
-
- * lib/jit_arm-cpu.c: Correct argument order for T2_MVN.
-
- * lib/jit_arm-swf.c: Call the proper function for double
- divide. The "software float" implementation just calls
- libgcc functions.
-
- * lib/jit_arm.c: Return float/double values in the float
- register if using the hard float ABI.
-
- * lib/jit_x86-cpu.c: Change the can_sign_extend_int_p macro
- to not include -0x80000000L, because there is code that
- "abuses" it and thinks it can negate the immediate value
- after calling that macro.
- Correct implementation of jit_subi that had a wrong code
- patch logic doing subtraction with reversed arguments.
- Correct REX prefix calculation in the jit_muli implementation.
- Correct logic to get/unget %*ax and %*dx registers in divremr
- and divremi.
- Correct divremi that was using the symbolic, unique %*ax
- value in on place (not using the _REGNO name suffix).
- Correct cut&paste error causing it to use "xor" instead of
- "or" in one code path of the jit_ori implementation.
- Correct several flaws when clobbering registers and/or when
- one of the arguments was %*cx in the rotshr wrapper function
- implementing most shift operations.
-
- * lib/lightning.c: No longer expect that the backend be smart
- enough to know what to do when asking for a named register
- if that register is already an argument or is live. It fails
- if it is an argument, or if register is live, fails if cannot
- spill.
- No longer incorrectly assume that eqr_{f,d} and ltgr_{f,d} are
- safe to inverse value tests in jump thread optimization.
-
-2012-12-05 Paulo Andrade <pcpa@gnu.org>
-
- * check/Makefile.am, check/cvt.ok, check/cvt.tst: Add new
- "cvt" test case to test conversion from/to int/float types.
-
- * check/lightning.c: Only define truncr_{f,d}_l in 64 bit mode.
-
- * include/lightning.h: Correct typo that caused it to define
- jit_truncr_{f,d}_l in 32 bit mode.
-
- * lib/jit_arm-cpu.c: Avoid assertion failure in the signed/unsigned
- extend opcodes generation as it shares an interface for 3 argument
- opcode generation.
-
- * lib/jit_x86-cpu.c: Correct wrong argument passed to
- jit_unget_reg in the andi implementation and wrong byte
- unsigned extend code generation.
-
- * lib/jit_x86-sse.c: Correct conversion from "word" to float or
- double as is dependent on wordsize.
-
-2012-12-05 Paulo Andrade <pcpa@gnu.org>
-
- * check/ldstr-c.ok, check/ldstr-c.tst, check/ldstxi-c.ok,
- check/ldstxi-c.tst, check/ldstxr-c.ok, check/ldstxr-c.tst:
- New test case files testing load clobbering the base and/or
- index register;
-
- * check/ldst.inc: New file with common definition for all the
- ldst* test cases.
-
- check/Makefile.am, check/ldsti.tst, check/ldstr.tst,
- check/ldstxi.tst, check/ldstxr.tst: Update for new common
- definitions file and new register clobber ldst tests.
-
-2012-12-05 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_mips-fpu.c: Correct wrong register order in stxr_{f,d}
- in the mips backend.
-
-2012-12-05 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_arm-vfp.c: Correct regression found in armv7l with
- latest test cases.
-
-2012-12-05 Paulo Andrade <pcpa@gnu.org>
-
- * check/ldstxi.tst, check/ldstxr.tst: Correct wrong argument
- order for 32 bit mode tests.
-
- * configure.ac: Correct check for ix86 target_cpu.
-
-2012-12-05 Paulo Andrade <pcpa@gnu.org>
-
- * check/ldstr.ok, check/ldstr.tst, check/ldsti.ok,
- check/ldsti.tst, check/ldstxr.ok, check/ldstxr.tst,
- check/ldstxi.ok, check/ldstxi.tst:
- New test case files exercising a very large amount of
- register combinations to verify load/store implementation.
-
- * check/Makefile.am: Update for new test cases.
-
- * lib/jit_x86-cpu.c: Correct wrong argument order when
- computing REX prefix for {ld,st}r_T codes;
-
-2012-12-04 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_mips-fpu.c, lib/jit_mips.c: Implement missing mips
- jit_sqrtr_{f,d} codes.
-
- * check/all.tst, include/lightning.h, lib/jit_print.c: Change
- declaration order and call order in all.tst of {add,sub}c and
- {add,sub}x. *c must be called before to set the carry and *x
- second to use the carry and keep it set. The wrong call order
- was causing all.tst to fail in mips, where a register is
- allocated to keep a global carry state.
-
-2012-12-04 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
- lib/jit_mips-fpu.c, lib/jit_mips.c: Correct float/double
- argument handling and make the mips backend pass the initial
- test cases.
-
- * include/lightning.h, ib/jit_print.c, lib/lightning.c:
- Add extra enum values for argument handling functions that
- could not be abstracted to the current codes, that is, when
- float values need to move from/to gpr from/to fpr. It would
- be more tempting to add such primitives, but they would have
- wordsize limitations, and it is not expected to add codes
- with one gpr argument for 64 bit and two for 32 bit.
-
- * lib/jit_ppc.c: Check _jit->function before calling jit_epilog()
- to avoid a runtime exception.
-
-2012-12-04 Paulo Andrade <pcpa@gnu.org>
-
- * include/lightning/jit_mips.h, lib/jit_mips.c: Update to
- make the mips backend compile in a qemu image.
-
- * lib/jit_ppc.c: Minor adaptations to help in having the
- ppc backend compilable.
-
-2012-12-03 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac, include/lightning/jit_private.h, lib/jit_arm-cpu.c,
- lib/jit_arm-swf.c, lib/jit_arm.c, check/Makefile.am: Correct
- implementation of the arm backend port to build and pass the
- current test cases. Tested on armv7 with softfp abi.
-
- * lib/jit_disasm.c: Rename and change prototype of static
- disassemble function as in the arm backend it is required
- to access state information stored in the jit_state_t object.
-
- * check/3to2.tst, check/add.tst: Correct test case code assuming
- JIT_RO and JIT_RET are the same, and even if they are the same,
- the logic was incorrect because it must always call jit_retval*
- to fetch a function call return before any other instruction.
- The arm backend hash a special condition if jit_retval is not
- called, because "r0" is not JIT_R0, but is JIT_RET and *also*
- the first argument for a called function, so JIT_RET must be
- only used as an argument to jit_retval.
-
-2012-12-03 Paulo Andrade <pcpa@gnu.org>
-
- * 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.
-
-2012-12-03 Paulo Andrade <pcpa@gnu.org>
-
- * configure.ac, check/Makefile.am, check/check.sh,
- doc/Makefile.am, include/lightning/Makefile.am,
- lib/Makefile.am: Correct make distcheck.
-
-2012-12-02 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_ppc.c: Assign copyright ownership to FSF.
-
- * lib/jit_x86-cpu.c: Correct integer multiplication that was
- generating code with reversed register arguments.
-
- * check/rpn.ok, check/rpn.tst: New test case file.
-
-2012-12-02 Paulo Andrade <pcpa@gnu.org>
-
- * lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
- Actually change copyright owner to FSF as avertised.
-
- * lib/jit_arm-cpu.c, lib/jit_arm-swf.c,
- lib/jit_arm-vfp.c, lib/jit_arm.c,
- lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips.c,
- lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c: New
- files implementing initial code different jit backends.
-
- * include/lightning/jit_private.h: Add extra field to the
- private jit_patch_t type, required by the arm port.
-
- * lib/Makefile.am: Update for the new backend implementation
- files.
-
-2012-12-02 Paulo Andrade <pcpa@gnu.org>
-
- * check/Makefile.am: Add proper "make clean" rule and missing
- check.sh to EXTRA_DIST.
-
-2012-12-02 Paulo Andrade <pcpa@gnu.org>
-
- * .gitignore: Update pattern of ignored files.
-
- * check/Makefile.am: Add rule to build liblightning.la dependency
- in case of running "make check" before building the library.
-
-2012-12-02 Paulo Andrade <pcpa@gnu.org>
-
- * lightning/Makefile.am, lightning/asm-common.h,
- lightning/core-common.h, lightning/fp-common.h,
- lightning/funcs-common.h, lightning/i386/Makefile.frag,
- lightning/i386/asm-32.h, lightning/i386/asm-64.h,
- lightning/i386/asm.h, lightning/i386/core-32.h,
- lightning/i386/core-64.h, lightning/i386/core.h,
- lightning/i386/fp-32.h, lightning/i386/fp-64.h,
- lightning/i386/fp.h, lightning/i386/funcs.h,
- lightning/ppc/asm.h, lightning/ppc/core.h,
- lightning/ppc/fp.h, lightning/ppc/funcs.h,
- lightning/sparc/asm.h, lightning/sparc/core.h,
- lightning/sparc/fp.h, lightning/sparc/funcs.h:
- Removed. The core logic is used in the new code, and new mips
- and arm ports will be added. At first, sparc will not be
- supported as it has not yet been ported to the new engine.
-
-2012-12-02 Paulo Andrade <pcpa@gnu.org>
-
- * tests/Makefile.am, tests/3to2.c, tests/3to2.ok, tests/add.c,
- tests/add.ok, tests/allocai.c, tests/allocai.ok, tests/bp.c,
- tests/bp.ok, tests/divi.c, tests/divi.ok, tests/fib.c, tests/fib.ok,
- tests/fibdelay.c, tests/fibdelay.ok, tests/fibit.c, tests/fibit.ok,
- tests/funcfp.c, tests/funcfp.ok, tests/incr.c, tests/incr.ok,
- tests/ldst.c, tests/ldst.ok, tests/ldxi.c, tests/ldxi.ok,
- tests/modi.c, tests/modi.ok, tests/movi.c, tests/movi.ok,
- tests/printf.c, tests/printf.ok, tests/printf2.c, tests/printf2.ok,
- tests/ret.c, tests/ret.ok, tests/rpn.c, tests/rpn.ok, tests/rpnfp.c,
- tests/rpnfp.ok, tests/sete.c, tests/sete.ok, tests/testfp.c,
- tests/testfp.ok, tests-run-test: Removed previous test suite, in
- favor of a newer one in the check subdirectory.
-
- * check/3to2.ok, check/3to2.tst, check/add.ok, check/add.tst,
- check/allocai.ok, check/allocai.tst, check/bp.ok, check/bp.tst,
- check/divi.ok, check/divi.tst, check/fib.ok, check/fib.tst:
- New sample input for the new test program, loosely matching
- several of the previous test cases.
-
- * check/Makefile.am: New test suite makefile.
-
- * check/check.sh, check/run-test: New wrapper files for the
- new test suite.
-
- * check/lightning.c: New file. The main driver of the new test
- suite, that compiles to a parser of a very simple assembly like
- language, generates jit and executes it.
-
- * check/all.tst: New file. A generic debug and sample test file
- with a directive to prevent it from being executed, and useful to
- read disassembly of all possible instructions, using a fixed set
- of registers.
-
- * include/Makefile.am, include/lightning.h,
- include/lightning/Makefile.am, include/lightning/jit_arm.h,
- include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
- include/lightning/jit_private.h, include/lightning/jit_x86.h,
- lib/Makefile.am, lib/jit_disasm.c, lib/jit_print.c,
- lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c,
- lib/jit_x86.c, lib/lightning.c: New files. These files are
- written from scratch, only by <pcpa@gnu.org>, and have now
- copyright assignment to the FSF. This is the core of the new
- lightning rework. Previously it was integrated in code with
- a garbage collector and several custom types like vectors and
- hash tables, so this first code merge with lightning converts
- that code into a library extracting only the jit bits, and at
- first only for x86_64 GNU/Linux.
-
- * lightning.h, m4/lightning.m4: Removed. These are no longer
- required in the new lightning code.
-
- .gitignore, Makefile.am, configure.ac: Update for the new
- lightning code.
-
-2012-12-02 Paulo Andrade <pcpa@gnu.org>
- * .cvsignore: Removed for extra cleanup.
-
- * build-aux: Rename directory to m4.
-
- * m4: Renamed to "default" name and for consistency with merge
- with code rework to be imported in lightning.
-
- * .gitignore, configure.ac, Makefile.am, doc/Makefile.am:
- Update for build-aux to m4 rename.
-
-2012-12-01 Paulo Andrade <pcpa@gnu.org>
-
- * opcode/Makefile.am, opcode/Makefile.in, opcode/ansidecl.h,
- opcode/bfd.h, opcode/dis-asm.h, opcode/dis-buf.c, opcode/disass.c,
- opcode/i386-dis.c, opcode/i386.h, opcode/ppc-dis.c, opcode/ppc-opc.c,
- opcode/ppc.h, opcode/sparc-dis.c, opcode/sparc-opc.c, opcode/sparc.h,
- opcode/sysdep.h: Removed. Do not bundle GNU binutils files.
-
- * aclocal.m4, configure, Makefile.in, config.h.in, doc/Makefile.in,
- lightning/Makefile.in, tests/Makefile.in: Removed. Do not maintain
- autogenerated files that also generate too much diff noise when
- regenerated in git.
-
- * build-aux/help2man, build-aux/texinfo.tex, build-aux/texi2dvi:
- Removed. Buildenvironment must have an up to date version from
- upstream installed.
-
- * build-aux/config.guess, build-aux/config.sub, build-aux/depcomp,
- build-aux/install-sh build-aux/mdate-sh build-aux/missing: Removed.
- Do not maintain a copy of automake files in git. Release tarballs
- must use an up to date version.
-
- * lightningize.in, doc/lightningize.1: Removed. Do not encourage
- bundling lightning in other packages. It should use a system package
- or a proper thirdy part subdirectory.
-
- * INSTALL: Removed. Autoreconf removes it and creates a symlink
- when regenerating files, so, avoid conflicts in git and let
- automake create the symlink.
-
- * .gitignore: Add INSTALL and autogenerated files.
-
- * configure.ac, Makefile.am: Update for removal of opcode subdir,
- auto generated files and lightningize.
-
- * tests/Makefile.am, tests/3to2.c, tests/add.c, tests/bp.c,
- tests/fib.c, tests/fibdelay.c, tests/fibit.c, tests/funcfp.c,
- tests/incr.c, tests/printf.c, tests/rpn.c, tests/rpnfp.c,
- tests/sete.c, tests/testfp.c: Update for removal of opcode subdir.
-
- * doc/Makefile.am: Update for removal of lightningize.
-
- * configure.ac, lightning/ppc/funcs.h, lightning/sparc/funcs.h,
- lightning/i386/fp.h, lightning/i386/core.h, lightning/i386/asm.h,
- tests/3to2.c, tests/add.c, tests/bp.c, tests/fib.c, tests/fibdelay.c,
- tests/fibit.c, tests/funcfp.c, tests/incr.c, tests/printf.c,
- tests/rpn.c, tests/rpnfp.c, tests/sete.c, tests/testfp.c:
- Remove LIGHTNING_CROSS, it is half supported and incomplete.
-
- * tests/3to2.c, tests/funcfp.c, tests/rpnfp.c: Remove preprocessor
- check on JIT_FPR. If no hardware registers are available, the backend
- must provide an alternative for software float.
-
- * lightning/ppc/core.h, lightning/sparc/core.h, tests/Makefile.am:
- Remove JIT_NEED_PUSH_POP. It is absolutely not trivial to implement
- properly on some backends due to stack alignment constraints, and
- whenever it is required, using jit_allocai and using a properly
- aligned stack vector, or a heap buffer, is better.
-
- * tests/push-pop.c, tests/push-pop.ok: Removed due to
- JIT_NEED_PUSH_POP no longer available.
-
-2011-02-28 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-64.h: Add jit_add{c,x}{i,r}_l, jit_mulr_{l,ul}_,
- fix jit_mul{i,r}_{l,ul}.
-
-2010-08-20 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/fp-64.h: Return patch address from jit_bXYr_{f,d}.
- Reported by Paulo César Pereira de Andrade.
- * lightning/ppc/fp.h: Likewise.
- * lightning/sparc/fp.h: Implement FP branches.
-
-2010-08-18 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/fp-64.h: Fix jp in jit_bner_{f,d}.
-
-2010-08-18 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/fp-32.h: Fix -D_ASM_SAFETY compilation.
- Reported by Paulo César Pereira de Andrade.
-
-2010-08-15 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/ldst.c: Update.
- * tests/Makefile.am: Use -ffloat-store to compile it.
-
-2010-08-15 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
- jit_ldxr_s): Move...
- * lightning/i386/core-32.h: ... here.
- * lightning/i386/core-64.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
- Use movsbq and movswq.
-
-2010-08-10 Paulo César Pereira de Andrade <pcpa@mandriva.com.br>
-
- * lightning/i386/core-32.h (jit_replace): Use MOVLrr, not MOVLir.
- (jit_movbrm): Check index register as well.
- * lightning/i386/fp-64.h: Add jit_extr_f_d and jit_extr_d_f.
- * lightning/fp-common.h: Add jit_extr_f_d and jit_extr_d_f.
-
-2010-07-28 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/Makefile.am: Add ldst test.
- * tests/Makefile.in: Regenerate.
- * tests/ldst.c: New.
- * tests/ldst.ok: New.
-
-2010-07-28 Paolo Bonzini <bonzini@gnu.org>
-
- * THANKS: Add Paulo Cesar Pereira de Andrade.
- * doc/porting.texi: Fix ordering of arguments in jit_stxi.
- * lightning/i386/core-32.h (jit_replace): Remove cmp argument.
- * lightning/i386/fp-64.h (jit_movi_f): Fix.
-
-2010-07-26 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-32.h (jit_replace): Move here (removed
- 2009-03-01).
-
-2010-07-19 Paolo Bonzini <bonzini@gnu.org>
-
- * build-aux/lightning.m4: Always set and replace lightning_frag.
- * Makefile.in: Regenerate.
- * aclocal.m4: Regenerate.
- * config.h.in: Regenerate.
- * configure: Regenerate.
- * doc/Makefile.in: Regenerate.
- * doc/lightningize.1: Regenerate.
- * doc/version.texi: Regenerate.
- * lightning/Makefile.in: Regenerate.
- * opcode/Makefile.in: Regenerate.
- * tests/Makefile.in: Regenerate.
-
-2009-03-01 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-64.h: Use Mike's macros for x86-64 too.
- * lightning/i386/core.h: Remove jit_replace.
-
- 2009-02-27 Mike Spivey <mike@comlab.ox.ac.uk>
-
- * lightning/i386/core.h: Rewrite shift-handling macros.
- * lightning/fp-common.h: Fix jit_extr_{f_d,d_f}.
-
-2009-02-17 Mike Spivey <mike@comlab.ox.ac.uk>
-
- * lightning/i386/core.h: Fix blunder in operand order.
-
-2009-02-17 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/fp-32.h: Another fix to jit_fp_btest.
-
-2009-02-17 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/fp-common.h: Define double branches if missing.
- * lightning/i386/asm.h: Define JC and JNC mnemonics.
- * lightning/i386/fp-32.h: Fix jit_fp_btest. All reported
- by Mike Spivey.
-
-2008-10-09 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/funcs.h (jit_flush_code): Subtract 1 from end.
- Reported by Eli Barzilay and Matthew Flatt.
-
-2008-08-23 Nix <nix@esperi.org.uk>
-
- * lightning/i386/Makefile.frag: fp-32.h and fp-64.h are target files.
-
-2008-07-02 Laurent Michel <ldm@engr.uconn.edu>
-
- * lightning/ppc/funcs.h (jit_flush_code): modified the computation
- of start/end. The pointer arithmetic was done without casting. It
- prevented compilation with recent gcc versions.
- * lightning/ppc/core.h (jit_pushr_i): The offset for the store was
- incorrect. Should have been 4 bytes below SP (not above).
- * lightning/ppc/core.h (jit_popr_i): The offset for the load was
- incorrect. Should have been 0 (not +8).
-
-2008-06-17 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-64.h: Forward IMULQir to IMULQirr,
- fix REXQ order for IMULQirr.
-
-2008-06-17 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core.h: Fix _rN vs. _rR.
-
-2008-06-16 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core.h: Use jit_save in jit_replace. Move JIT_R
- definition...
- * lightning/i386/core-32.h: ... here; define jit_save so that
- the core.h has no effect on the 32-bit backend.
- * lightning/i386/core-64.h: Place JIT_R1/JIT_R2 in R10/R11,
- place outgoing arguments in the right spot from the beginning,
- define jit_save, fix jit_reg8/jit_reg16.
-
-2008-06-15 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-64.h: Rewrite argument passing to
- support up to 6 arguments and generate less code.
-
-2008-06-14 Laurent Michel <ldm@thorgal.homelinux.org>
-
- * lightning/i386/core-64.h (jit_movi_l): When the operand is 0,
- the XOR should be on a quadword.
- * lightning/i386/core-64.h (jit_prolog): Keep 16-byte stack
- alignment.
- (jit_ret): Always use LEAVE.
-
-2008-06-13 Laurent Michel <ldm@thorgal.homelinux.org>
-
- * lightning/i386/core-64.h: Add (void) casts for C++ compatibility.
- * lightning/i386/asm.h: Likewise.
-
-2008-06-12 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core.h: Move JIT_V definition...
- * lightning/i386/core-32.h: ... here.
- * lightning/i386/core-64.h: ... and here. Avoid dancing between
- RSI/RDI and R12/R13, and place JIT_V1/JIT_V2 in R12/R13.
-
-2008-06-11 Paolo Bonzini <bonzini@gnu.org>
-
- * build-aux/lightning.m4: Adjust LIGHTNING_BACKENDS, don't
- use suffix support to distinguish i386/x86_64.
- * lightning/i386/Makefile.frag: Use LIGHTNING_TARGET_FILES
- to distribute *-32.h and *-64.h files now.
- * lightning/i386/asm-i386: Moved to...
- * lightning/i386/asm.h: Include the appropriate subtarget file.
- * lightning/i386/core-i386: Moved to...
- * lightning/i386/core.h: Include the appropriate subtarget file.
- * lightning/i386/fp.h: New, include the appropriate subtarget file.
- * lightning/i386/asm-32: Do not include asm-i386.h.
- * lightning/i386/asm-64.h: Likewise.
- * lightning/i386/core-32: Do not include core-i386.h.
- * lightning/i386/core-64.h: Likewise.
- * lightning/Makefile.am: Adjust for renamed files.
-
- * configure.ac: Define LIGHTNING_TARGET here.
- * opcode/disass.c: Change list of valid LIGHTNING_TARGET values.
-
- * lightningize.in: Robustify against missing subtarget files.
-
-2008-06-11 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-32.h: Use MOVLir instead of jit_movi_l
- to implement jit_movi_p.
-
-2008-06-11 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-32.h: Use separate __APPLE__ and SysV
- prolog/ret macros. Subtract 12 bytes in __APPLE__ case to
- keep stack aligned, and always use LEAVE in the epilog.
-
-2008-06-11 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-i386.h: Fix C++ incompatibility.
-
-2008-06-10 Laurent Michel <ldm@engr.uconn.edu>
-
- * lightning/i386/core-i386.h: Fix jit_replace8 for
- case when one of the operands is _EAX.
-
-2008-05-19 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/run-test: Avoid CRLF issues on mingw.
-
-2008-03-21 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-64.h: Fix jit_{ld,st}{,x}i_{i,l}.
- Remove jit_ld{,x}i_ul.
- * lightning/core-common.h: Make jit_ld{,x}{i,r}_ul
- always a synonym of the _l variant.
- * doc/porting.texi: Document this.
-
-2008-03-19 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-64.h: Fix uses of jit_qop_.
-
-2008-03-19 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-64.h: Add boolean operations.
-
-2008-03-19 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-64.h: Add LEAQmr.
-
-2008-03-19 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-64.h: Misc bugfixes.
-
-2008-03-19 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-i386.c: Remove jit_ldr_i, jit_ldxr_i.
- * lightning/i386/core-32.h: Add jit_ldr_i, jit_ldxr_i.
- * lightning/i386/core-64.h: Add jit_ld{r,xr,i,xi}_{ui,l,ul};
- move jit_ldr_i, jit_ldxr_i, jit_str_l, jit_stxr_l with others.
-
-2008-03-19 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/asm-common.h: Add _s32P.
-
-2008-03-19 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-64.h: Implement long mul/div/mod.
-
-2008-03-19 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-i386.h: Cast memory address to long for JCCim.
-
-2008-03-15 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/asm-common.h: Add underscores around __unused__
- attribute.
-
-2008-03-15 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/core.h: Avoid some "value computed is not used"
- warnings.
- * lightnings/tests/allocai.c: Silence other warnings.
-
-2008-03-14 Paolo Bonzini <bonzini@gnu.org>
-
- * lightningize.in: Fix some problems (not all).
-
-2008-03-14 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-32.h: Avoid some "value computed is not used"
- warnings; reported by Sam Steingold.
-
-2008-03-08 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-32.h: Fix stxr_c(_EAX, _EBX, _ESI).
-
-2008-02-13 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-32.h: Avoid redefinition of _r1, reported by
- Sam Steingold.
- * lightning/i386/asm-64.h: Likewise.
-
-2008-02-08 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-i386.h: Don't define _VOID, reported
- by Reini Urban.
-
-2008-02-03 Paolo Bonzini <bonzini@gnu.org>
-
- * build-aux/lightning.m4: Add --with-lightning-prefix option, suggested
- by Sam Steingold.
-
-2008-01-14 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-64.h: Use CALLsr, not CALLLsr.
-
-2008-01-13 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-i386.h: Move jit_calli and jit_callr...
- * lightning/i386/core-32.h: ... here.
- * lightning/i386/core-64.h: Redefine them.
-
-2008-01-05 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/fp-32.h: Fix sub(a,0,a).
- * lightning/tests/3to2.c: Add new testcases.
- * lightning/tests/3to2.ok: Add new testcases.
-
-2008-01-02 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/fp-32.h: Fix sub(a,b,a) with a ~= JIT_FPR0.
- * lightning/tests/3to2.c: New.
- * lightning/tests/3to2.ok: New.
-
-2007-11-07 Paolo Bonzini <bonzini@gnu.org>
-
- * opcode/Makefile.am: Fix AM_CPPFLAGS.
-
-2007-08-12 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-i386.h: Improve encoding of set* instructions.
- * lightning/i386/core-64.h: Fix jit_bra_l.
- * tests/sete.c: New.
- * tests/sete.ok: New.
-
-2007-06-29 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/bp.c: Upgrade to GPL/LGPLv3.
- * lightning/i386/asm-32.h: Upgrade to GPL/LGPLv3.
- * lightning/i386/asm-64.h: Upgrade to GPL/LGPLv3.
- * lightning/i386/core-32.h: Upgrade to GPL/LGPLv3.
- * lightning/i386/core-64.h: Upgrade to GPL/LGPLv3.
- * lightning/i386/fp-64.h: Upgrade to GPL/LGPLv3.
- * lightning/sparc/asm.h: Upgrade to GPL/LGPLv3.
- * lightning/sparc/core.h: Upgrade to GPL/LGPLv3.
- * lightning/sparc/fp.h: Upgrade to GPL/LGPLv3.
- * lightning/sparc/funcs.h: Upgrade to GPL/LGPLv3.
- * lightning/i386/asm-i386.h: Upgrade to GPL/LGPLv3.
- * lightning/i386/core-i386.h: Upgrade to GPL/LGPLv3.
- * lightning/i386/fp-32.h: Upgrade to GPL/LGPLv3.
- * lightning/i386/funcs.h: Upgrade to GPL/LGPLv3.
- * lightning/ppc/asm.h: Upgrade to GPL/LGPLv3.
- * lightning/ppc/core.h: Upgrade to GPL/LGPLv3.
- * lightning/ppc/fp.h: Upgrade to GPL/LGPLv3.
- * lightning/ppc/funcs.h: Upgrade to GPL/LGPLv3.
- * lightning.h: Upgrade to GPL/LGPLv3.
- * tests/add.c: Upgrade to GPL/LGPLv3.
- * tests/fib.c: Upgrade to GPL/LGPLv3.
- * tests/testfp.c: Upgrade to GPL/LGPLv3.
- * tests/fibdelay.c: Upgrade to GPL/LGPLv3.
- * tests/fibit.c: Upgrade to GPL/LGPLv3.
- * tests/funcfp.c: Upgrade to GPL/LGPLv3.
- * tests/incr.c: Upgrade to GPL/LGPLv3.
- * tests/printf.c: Upgrade to GPL/LGPLv3.
- * tests/printf2.c: Upgrade to GPL/LGPLv3.
- * tests/rpn.c: Upgrade to GPL/LGPLv3.
- * tests/rpnfp.c: Upgrade to GPL/LGPLv3.
- * lightning/asm-common.h: Upgrade to GPL/LGPLv3.
- * lightning/core-common.h: Upgrade to GPL/LGPLv3.
- * lightning/fp-common.h: Upgrade to GPL/LGPLv3.
- * lightning/funcs-common.h: Upgrade to GPL/LGPLv3.
- * opcode/dis-buf.c: Upgrade to GPL/LGPLv3.
- * opcode/disass.c: Upgrade to GPL/LGPLv3.
- * opcode/i386-dis.c: Upgrade to GPL/LGPLv3.
- * opcode/sparc-dis.c: Upgrade to GPL/LGPLv3.
- * opcode/sparc-opc.c: Upgrade to GPL/LGPLv3.
- * lightningize.in: Upgrade to GPL/LGPLv3.
- * opcode/bfd.h: Upgrade to GPL/LGPLv3.
- * opcode/i386.h: Upgrade to GPL/LGPLv3.
- * opcode/sparc.h: Upgrade to GPL/LGPLv3.
-
-2007-01-26 Thomas Girard <thomas.g.girard@free.fr>
-
- * lightning/Makefile.am: Add clean-local target.
-
-2006-12-02 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-i386.h: Add CVTTS?2SIL.
- * lightning/i386/asm-64.h: Add CVTTS?2SIQ.
- * lightning/i386/fp-64.h: Use it.
-
- * lightning/Makefile.am: Place files in nodist_lightning_HEADERS.
-
-2006-11-23 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/core-common.h: Add casts in "*i_p" variants.
- * lightning/i386/asm-32.h: Add _r1.
- * lightning/i386/asm-64.h: Likewise, and add SSE instructions.
- * lightning/i386/asm-i386.h: Merge SSE instructions from Gwenole.
- Use short form for 16-bit AX instructions. Remove _r1
- * lightning/i386/core-64.h: Add FP ABI support in its infancy.
- * lightning/i386/core-i386.h: Move jit_arg_f and jit_arg_d...
- * lightning/i386/core-32.h: ... and jit_prepare_f and jit_prepare_d...
- * lightning/i386/fp-32.h: ... here.
- * lightning/i386/fp-64.h: Write the code.
- * lightning/sparc/fp.h: Fix jit_extr_{f_d,d_f} register order.
-
-2006-11-22 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-i386.h: Move x86-64 instructions...
- * lightning/i386/asm-64.h: ... here.
- * lightning/i386/fp-32.h: Fix bugfixes worked around in froofyJIT.
- Add JIT_FPRET.
- * lightning/sparc/fp.h: Likewise.
- * lightning/ppc/fp.h: Likewise.
- * lightning/fp-common.h: Adjust for JIT_FPRET.
- * tests/funcfp.c: Adjust for JIT_FPRET.
- * tests/rpnfp.c: Adjust for JIT_FPRET.
-
-2006-11-20 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-i386.h: Add an underscore to macros without
- a parameter.
-
-2006-11-20 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core-i386.h: Move jit_movip, jit_check8, jit_reg8,
- jit_reg16, jit_movbrm...
- * lightning/i386/core-32.h: ... here.
- * lightning/i386/core-64.h: Redefine them. Fix other bugs.
-
- * tests/printf.c: Do not do a varargs call.
-
-2006-11-20 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-i386.h: Check in rewrite from Basilisk II.
- * lightning/i386/asm-32.h: Adjust.
- * lightning/i386/asm-64.h: Adjust.
- * lightning/i386/fp-32.h: Adjust.
-
- * lightning/i386/core-32.h: Adjust. Add jit_{ld,ldx,st,stx}i*.
- * lightning/i386/core-64.h: Adjust. Add jit_{ld,ldx,st,stx}i*.
- * lightning/i386/core-i386.h: Adjust. Remove these patterns.
-
-2006-11-20 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm-i386.h: Merge 64-bit cleanliness changes from
- mzscheme.
- Add SSE.
- * lightning/i386/asm-64.h: Likewise.
-
-2006-11-20 Paolo Bonzini <bonzini@gnu.org>
- Ludovic Courtes <ludo@chbouib.org>
-
- * lightning/i386/core-32.h: Disable jit_push and jit_pop if stack not
- needed.
- * lightning/i386/core-64.h: Disable jit_push and jit_pop if stack not
- needed.
- * lightning/sparc/core.h: Merge final implementation of jit_pushr and
- jit_popr.
- * lightning/ppc/core.h: Fix implementation of jit_pushr and jit_popr to
- work (more or less) across function calls.
-
- * tests/push-pop.c, tests/push-pop.ok: New test.
- * tests/Makefile.am: Run it.
-
-2006-11-20 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/asm-common.h: Make 64-bit safe.
- * lightning/i386/funcs.h: Make 64-bit safe.
-
- * lightning/i386/asm-64.h: More merge from mzscheme.
- * lightning/i386/asm-i386.h: More merge from mzscheme.
- * lightning/i386/core-32.h: More merge from mzscheme.
- * lightning/i386/core-64.h: More merge from mzscheme.
- * lightning/i386/core-i386.h: More merge from mzscheme.
-
- * tests/rpnfp.c, tests/testfp.c, tests/funcfp.c: Skip if no
- floating-point support.
-
-2006-11-04 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/rpn.c: Remove pushr/popr.
-
-2006-11-04 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/core.h: Implement jit_allocai, define JIT_FP to be R1.
- * lightning/ppc/funcs.h: Store frame size into _jitl. Store R1 before
- the STMW, so that the offset is unchanged when we patch the STMW.
- * lightning/i386/core.h: Define JIT_FP to be EBP.
- * lightning/i386/core-32.h: Implement jit_allocai, put LEAVE in the
- epilog if jit_allocai was used.
- * lightning/i386/core-64.h: Implement jit_allocai, put LEAVE in the
- epilog if jit_allocai was used.
-
-2006-11-04 Ludovic Courtes <ludo@chbouib.org>
-
- * lightning/sparc/core.h: Implement jit_allocai.
- * tests/allocai.c: New.
- * tests/Makefile.am: Point to new tests.
-
-2006-11-03 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/core.h: Fix jit_bms using BNE rather than BGT.
- "AND." does signed comparisons.
-
-2006-10-31 Paolo Bonzini <bonzini@gnu.org>
-
- * doc/porting.texi: Rename JIT_FP to JIT_AP.
- * lightning/core-common.h: Likewise.
- * lightning/i386/core-i386.h: Likewise.
- * lightning/fp-common.h: Provide default versions of jit_getarg_[fd].
- * lightning/i386/fp-32.h: Don't provide jit_getarg_[fd].
- * lightning/ppc/fp.h: Likewise.
-
-2006-10-31 Ludovic Courtes <ludo@chbouib.org>
-
- * doc/using.texi (The instruction set): Clarified the use of `JIT_RET' and
- documented `jit_retval'.
- * tests/ret.c (generate_function_proxy): After `jit_finish', use
- `jit_retval_i' to move FUNC's return value into the correct register.
-
-2006-10-31 Paolo Bonzini <bonzini@gnu.org>
- Ludovic Courtes <ludo@chbouib.org>
-
- * tests/divi.c, tests/divi.ok, tests/movi.c, tests/movi.ok: New.
- * tests/ldxi.c: Ensure large pointer is generated.
- * tests/Makefile.am: Point to new tests.
- * lightning.h: Include funcs-common.h before funcs.h.
- * lightning/sparc/core.h: Fix bugs in modi/divi.
-
-2006-10-30 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/Makefile.am: Use "ln -sf".
- * lightning/core-common.h: Define jit_negr_l if necessary.
-
-2006-10-30 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm.h (MOVS*, MOVZ*): Use correct _r[124] macros.
-
-2006-10-29 Paolo Bonzini <bonzini@gnu.org>
-
- * configure.ac: Use lightning.m4 macros.
- * lightning.m4: Refactor to use common code in configure.ac. Move...
- * build-aux/lightning.m4: ... here.
- * lightningize.in: Support suffixes.
- * opcode/disass.in: Adapt to changes in configure.ac.
-
- * lightning/ppc/funcs.h: Use __APPLE__ instead of _CALL_DARWIN.
- * lightning/i386/core-32.h: Likewise.
-
-2006-10-26 Paolo Bonzini <bonzini@gnu.org>
-
- * configure.ac: Fix compilation test.
- * lightning/Makefile.am: Symlink LIGHTNING_TARGET_FILES in
- non-distribution mode.
- * lightning/i386/Makefile.frag: Use LIGHTNING_TARGET_FILES.
-
-2006-10-26 Paolo Bonzini <bonzini@gnu.org>
-
- * configure.ac: Subst cpu.
- * lightning/core-common.h: Make tests pass on i386.
- * lightning/i386/asm-32.h: Make tests pass on i386.
- * lightning/i386/asm-64.h: Make tests pass on i386.
- * lightning/i386/asm-i386.h: Make tests pass on i386.
- * lightning/i386/core-32.h: Make tests pass on i386.
- * lightning/i386/core-64.h: Make tests pass on i386.
- * lightning/i386/core-i386.h: Make tests pass on i386.
- * tests/Makefile.am: Include files from cpu directory.
-
-2006-10-26 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm.h: Move to asm-i386.h
- * lightning/i386/asm-32.h: New, from Matthew Flatt.
- * lightning/i386/asm-64.h: New, from Matthew Flatt.
- * lightning/i386/core.h: Move to core-i386.h
- * lightning/i386/core-32.h: New, from Matthew Flatt.
- * lightning/i386/core-64.h: New, from Matthew Flatt.
- * lightning/i386/fp.h: Move to fp-32.h
- * lightning/i386/fp-64.h: New, dummy.
- * lightning/i386/Makefile.frag: New.
- * lightning/Makefile.am: Support per-target Makefile fragments.
- * configure.ac: Support per-target Makefile fragments and CPU suffixes.
-
-2006-10-16 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/i386.h (jit_flush_code): Fix syntax error. :-(
-
-2006-07-06 Paolo Bonzini <bonzini@gnu.org>
- Ludovic Courtes <ludovic.courtes@laas.fr>
-
- * doc/using.texi: Clarify "Using autoconf" section
- and rename it to "Bundling lightning"
- * lightning.m4: Work also if lightning is not bundled.
-
-2006-07-06 Paolo Bonzini <bonzini@gnu.org>
- Ludovic Courtes <ludovic.courtes@laas.fr>
-
- * lightning/ppc/core.h (_jit_mod): Replace with...
- (_jit_mod_big, _jit_mod_small): ... these.
- (jit_modi_i, jit_modi_ui): Rewrite.
- * tests/modi.c, tests/modi.ok: New tests.
-
-2006-05-18 Matthew Flatt <mflatt@cs.utah.edu>
-
- * lightning/i386/asm.h: Fix test for extending the mprotect area
- towards lower addresses.
-
-2006-05-16 Bruno Haible <bruno@clisp.org>
-
- * lightning/asm-common.h: Don't use __func__ nor __FUNCTION__ if
- not compiling with GNU C.
-
-2006-02-16 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/core.h: Fix jit_ldxi_* with big displacement.
-
-2006-01-23 Paolo Bonzini <bonzini@gnu.org>
-
- * configure.ac: Fix comments in config.h.in.
-
-2005-11-25 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/sparc/fp.h: Fix header comment.
- * lightning/ppc/fp.h: Fix header comment.
-
-2005-04-27 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/asm.h (JCm, JCSm, JNCm, JNCSm): New.
-
-2004-11-26 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/funcs.h (_jit_epilog): Remove unused variable.
-
-2004-11-13 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/funcs.h [__linux__]: Include sys/mman.h.
-
-2004-11-09 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/sparc/fp.h: Fix fp-to-integer conversions.
- * lightning/ppc/testfp.c: Test fp-to-integer conversions
- of integer numbers.
- * lightning/ppc/testfp.ok: Adjust for the above.
-
-2004-11-08 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/testfp.c: Always flush code before
- testing it.
-
-2004-11-08 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/fp.h: Do not clobber f31.
-
-2004-11-08 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning.h: New name of...
- * lightning-inst.h: ... this file.
- * lightning.h.in: Removed.
-
- * opcodes/disass.c: Include config.h.
- * tests/add.c: Include config.h.
- * tests/bp.c: Include config.h.
- * tests/fib.c: Include config.h.
- * tests/fibdelay.c: Include config.h.
- * tests/fibit.c: Include config.h.
- * tests/funcfp.c: Include config.h.
- * tests/incr.c: Include config.h.
- * tests/printf.c: Include config.h.
- * tests/printf2.c: Include config.h.
- * tests/rpn.c: Include config.h.
- * tests/rpnfp.c: Include config.h.
- * tests/testfp.c: Include config.h.
-
-2004-10-12 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/fp.h: Fix bugs in conditional branches.
-
-2004-10-10 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/funcs.h: Fix pasto in jit_flush_code.
-
-2004-10-08 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/fp.h: Optimized conditional branches.
-
-2004-09-20 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/asm.h: Fix more typos.
-
-2004-09-20 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/asm.h: Fix typos, replace `26' with JIT_AUX.
-
-2004-09-20 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/fp.h: Added conditional branches.
-
-2004-09-18 Laurent Michel <ldm@thorgal.homelinux.org>
-
- * lightning/ppc/fp.h (jit_unler_d, jit_unltr_d, jit_unger_d,
- jit_ungtr_d, jit_ltgt_d, jit_uneq_d): Implemented missing tests
- to fully support testfp.
- (jit_floorr_d_i, jit_ceilr_d_i, jit_roundr_d_i, jit_truncr_d_i):
- New macros.
- * lightning/ppc/asm.h: Added missing opcodes FCTIWZ and MTFSFI.
- * lightning/ppc/funcs.h (_jit_prolog): Fixed minor mistake in
- the initialization of _jitl.nextarg_geti, relying on the
- JIT_AUX macro as well to get the register offset.
-
-2004-09-07 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/funcs.h: Fix typo.
-
-2004-09-06 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/funcfp.c: Use %g. Remove C99 variable declarations.
- * tests/testfp.c: Don't use __builtin_nan.
-
- * lightning/ppc/core.h: Add three V registers.
- * lightning/ppc/funcs.h: Adjust.
-
- * lightning/sparc/core.h: Some fixes related to FP argument passing.
- Move R0 to %g2, use %o7 for JIT_BIG2.
- * lightning/sparc/fp.h: Some fixes related to FP argument passing.
-
-2004-09-02 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/sparc/core.h: Add another V register,
- move R0 to %o7.
-
-2004-07-15 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/funcs.h: Implement jit_flush_code,
- in order to support Fedora's exec-shield.
-
-2004-07-14 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/core-common.h: Add more jit_extr_*_* macros.
- * lightning/doc/using.texi: Be clearer about the order
- of arguments in jit_extr_*_*.
- * lightning/doc/porting.texi: Add more jit_extr_*_* macros.
- * lightning/i386/fp.h: Fix typo in jit_extr_i_d.
-
-2004-07-14 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/funcs.h: Adjust offset of LR into
- stack frame if running under the Darwin ABI.
-
-2004-07-13 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/fp.h: Rename jit_exti_d to jit_extr_i_d.
-
-2004-07-13 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/core.h: Fix thinko.
-
- * lightning/i386/core.h: Fix jit_lti_ui.
- * lightning/core-common.h: Add missing macros.
-
- * lightning/ppc/fp.h: Rename jit_neg_* to jit_negr_*.
- * lightning/i386/fp.h: Rename jit_neg_* to jit_negr_*.
- * lightning/sparc/fp.h: Rename jit_neg_* to jit_negr_*.
- * lightning/fp-common.h: Rename jit_neg_* to jit_negr_*.
- * doc/porting.texi: Add undocumented macros.
-
-2004-07-12 Paolo Bonzini <bonzini@gnu.org>
-
- * doc/porting.texi: Add missing macros.
-
-2004-07-12 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/funcs.h: Don't generate trampolines.
- Separate prolog and epilog generation.
- * lightning/ppc/core.h: Generate epilog explicitly.
- Don't reserve r31 anymore.
- * lightning/core-common.h: Remove call to jit_setup_code.
-
-2004-07-09 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/lightning.h.in: Avoid preprocessor warnings.
- * lightning/lightning-inst.h: Likewise.
-
- * lightning/i386/core.h: Define JIT_R, JIT_R_NUM, JIT_V,
- JIT_V_NUM.
- * lightning/ppc/core.h: Likewise.
- * lightning/sparc/core.h: Likewise.
- * lightning/i386/fp.h: Define JIT_FPR, JIT_FPR_NUM.
- * lightning/ppc/fp.h: Likewise.
- * lightning/sparc/fp.h: Likewise.
- * lightning/core-common.h: Define fixed register names.
- * lightning/fp-common.h: Likewise for FP regs.
-
-2004-07-09 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/ppc/funcs.h: Fix location where return address
- is stored.
- * lightning/i386/asm.h: Add a trailing _ to opcodes without
- any parameter.
- * lightning/i386/core.h: Adjust for the above.
-
-2004-04-15 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/fp.h: Change "and" to "_and"
- to satisfy C++ compilers.
-
-2004-04-14 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/sparc/fp.h: Use memcpy to implement jit_movi.
- * lightning/ppc/fp.h: Use memcpy to implement jit_movi.
- Move floating-point opcodes...
- * lightning/ppc/asm.h: ... here.
-
-2004-04-14 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/core-common.h: Add jit_finishr.
- * lightning/ppc/core.h: Add jit_callr and jit_finishr.
- * lightning/i386/core.h: Add jit_callr.
- * lightning/sparc/core.h: Add jit_callr. Fix typo.
-
-2004-04-14 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core.h: Fix pasto in jit_b*_ui.
-
-2004-03-30 Laurent Michel
-
- * lightning/ppc: Implement PowerPC floating point
- (ChangeLog entry missing).
-
-2004-03-12 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/fp-common.h: Load/store macros are not the
- same for floats and doubles anywhere, but jit_retval may be.
- * lightning/i386/asm.h: Fix = mistaken for == in ESCrri.
- * lightning/i386/core.h: Fix typo in jit_prepare_[fd].
- * lightning/i386/fp.h: Rewritten.
- * tests/testfp.c: Add tests for unordered comparisons.
- * tests/testfp.ok: Add results.
-
-2004-03-15 Paolo Bonzini <bonzini@gnu.org>
-
- Merge changes from Laurent Michel.
-
- * lightning/asm-common.h: Add _jit_I_noinc.
- * lightning/core-common.h: Support jit_init,
- jit_setup_code, jit_patch_at. Return patchable IP from
- jit_movi_p.
- * lightning/funcs-common.h: Provide defaults
- for jit_setup_code, jit_start_pfx, jit_end_pfx
- * lightning/i386/core.h: Add jit_patch_at, jit_patch_movi.
- * lightning/ppc/core.h: Likewise.
- * lightning/sparc/core.h: Likewise.
- * lightning/ppc/asm.h: Fix generation of branch destination
- displacements in _FB and _BB
- * lightning/ppc/core.h: Generate trampolines in the user
- area.
- * lightning/ppc/funcs.h: Add a few casts.
- * tests/bc.c: New testcase.
-
- * lightning/i386/asm.h: Wrap into #ifndef LIGHTNING_DEBUG.
- * lightning/ppc/asm.h: Wrap into #ifndef LIGHTNING_DEBUG.
- * lightning/sparc/asm.h: Wrap into #ifndef LIGHTNING_DEBUG.
-
-
-2004-03-09 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/sparc/fp.h: Rewrite. Move macros for
- FP code generation...
- * lightning/sparc/asm.h: ... here.
- * lightning/sparc/core.h: Rename jit_prepare to
- jit_prepare_i, jit_retval to jit_retval_i.
- * lightning/ppc/core.h: Rename jit_prepare to
- jit_prepare_i, jit_retval to jit_retval_i.
- * lightning/i386/core.h: Rename jit_prepare to
- jit_prepare_i, jit_retval to jit_retval_i.
- * lightning/core-common.h: Provide backwards
- compatible synonyms for the above.
- * lightning/fp-common.h: Rewrite.
- * lightning-inst.h: Include fp unconditionally.
- * lightning.h.in: Include fp unconditionally.
- * tests/Makefile.am: Enable fp tests.
- * tests/fib.c: Use jit_retval_i.
- * tests/fibit.c: Cast codeBuffer to char *.
- * tests/funcfp.c: Use new fp macros.
- * tests/printf.c: Use jit_retval_i.
- * tests/rpnfp.c: Use new fp macros.
- * tests/testfp.c: Use new fp macros.
-
-2004-03-02 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core.h: generate correct code when
- doing lt/le/ge/etc. on ESI and EDI. Use MOVZX/MOVSX
- where possible.
- * lightning/i386/asm.h: Add macros for MOVZX/MOVSX.
- Move macros for x87 here, and add many of them.
- * lightning/i386/fp.h: Use new macros for x87.
-
-2004-02-06 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core.h: avoid generating MOV reg, reg.
- * lightning/sparc/core.h: fix several bugs.
- * lightning/ppc/core.h: fix several bugs.
- * tests/rpn.c: rewritten.
-
-2004-01-08 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/rpnfp.c: new example, suggested by Basile
- Starynkevitch.
- * tests/rpnfp.ok: new example.
-
-2003-12-12 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/add.c: new test, suggested by Steve Dekorte.
- * tests/add.c: new test.
-
-2003-11-14 Paolo Bonzini <bonzini@gnu.org>
- John Redford <eirenik@hotmail.com>
-
- * lightning/asm-common.h: change the 'pc' field of _jit to
- be a union of various data types, because ISO C99 doesn't
- permit using ++ on a = cast. Change the incremented casts of
- _jit.pc to be _jit.x.uc_pc, _jit.x.us_pc, etc.
- * all files: change all non-cast instances of _jit.pc to be
- _jit.x.pc.
- * lightning/i386/core.h: remove casts from jit_might.
-
-2003-05-25 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core.h: use JITSORRY in jit_replace
- * lightning/asm-common.h: define JITSORRY
-
-2003-05-14 Paolo Bonzini <bonzini@gnu.org>
-
- * lightning/i386/core.h: fix missing comma in several
- load/store macros.
- * lightning/core-common.h: fix long/unsigned long/pointer
- jit_pushr/jit_popr.
- * lightning/ppc/funcs.h: correctly align stack pointer
-
-No changelogs for the assemblers (lightning directory) until 1.0
-
-2003-03-27 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/printf2.c: new test
-
-2001-05-03 Paolo Bonzini <bonzini@gnu.org>
-
- * tests/printf.c: made the message platform independent
-
-2001-01-19 Paolo Bonzini <bonzini@gnu.org>
-
- * configure.in: support cross-assembling
-
- * disass/bfd.h, disass/dis-asm.h, disass/dis-buf.c,
- disass/i386-dis.c, disass/i386.h, disass/ppc-dis.c,
- disass/ppc.h, disass/ppc-opc.c, disass/sparc-dis.c,
- disass/sparc.h, disass/sparc-opc.c: new files, from GDB
-
- * disass/disass.c, disass/Makefile.am: new files
-
- * tests/fib.c, tests/fibit.c, tests/incr.c, tests/printf.c,
- tests/rpn.c, tests/testfp.c, tests/Makefile.am: support
- disassembling
+Change logs from upstream GNU Lightning are still available in
+ChangeLog.lightning.
diff --git a/libguile/lightning/ChangeLog.lightning b/libguile/lightning/ChangeLog.lightning
new file mode 100644
index 000000000..19b3335f5
--- /dev/null
+++ b/libguile/lightning/ChangeLog.lightning
@@ -0,0 +1,4018 @@
+2018-04-20 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_private.h: Add new register classes to
+ flag float registers and double only registers, required for sparc64
+ where only low 32 bit fpr registers can be used for single precision
+ operations.
+ Add new 128 bit jit_regset_t type for sparc64 register set.
+
+ * include/lightning/jit_sparc.h, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c,
+ lib/jit_sparc-sz.c, lib/jit_sparc.c: Update for 64 bits sparc.
+
+ * lib/lightning.c: Update for new jit_regset_t required for sparc64.
+
+2018-02-26 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c, include/lightning.h: Add the new jit_va_push
+ interface. That should be called when passing a va_list to a C
+ function. This is required because on Alpha a va_list is passed
+ by value, and lightning does not know about data types, so, cannot
+ understand it is pushing a va_list as argument.
+
+ * lib/jit_names.c, lib/lightning.c: Minor changes for the new
+ jit_code_va_push.
+
+ * check/cva_list.c: Update only test case using jit_va_push, to
+ pass a va_list to a C function.
+
+ doc/body.texi: Better documentation of the varargs interface.
+
+ * jit_alpha.c, jit_alpha-cpu.c: Update to properly push a
+ C va_list and correctly calculate varargs offset.
+
+ * lib/jit_aarch64-sz.c, lib/jit_aarch64.c, lib/jit_alpha-sz.c,
+ lib/jit_arm-sz.c, lib/jit_arm.c, lib/jit_hppa-sz.c, lib/jit_hppa.c,
+ lib/jit_ia64-sz.c, lib/jit_ia64.c, lib/jit_mips-sz.c, lib/jit_mips.c,
+ lib/jit_ppc-sz.c, lib/jit_ppc.c, lib/jit_s390-sz.c, lib/jit_s390.c,
+ lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-sz.c, lib/jit_x86.c:
+ Update for the new jit_va_push interface.
+
+2018-02-22 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_alpha-cpu.c: Always set t12 to the address of the
+ current function, to properly work on all systems. Previously
+ the shortcut did only work on Tru64. For Linux and glibc the
+ change is required.
+
+2018-02-22 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
+ lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c:
+ Correct wrong logic in usage of jit_live in jit_retr. The
+ problem is that if a temporary is required during epilog,
+ the return register might be allocated, so, jit_live must always
+ be used.
+
+2018-01-31 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Avoid deep recursions when computing live
+ register ranges.
+
+2018-01-31 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_mips-cpu.c: Correct frame size and varargs
+ initialization for the n32 abi.
+ * lib/jit_mips.c, lib/jit_mips-fpu.c: Correct 32 bit abis
+ in big-endian.
+
+2017-09-13 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac: Add check for binutils 2.29 prototype to the
+ disassembler function.
+ * lib/jit_disasm.c: Adapt for binutils 2.29 change.
+
+2017-06-09 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_private.h, lib/lightning.c: Add a
+ second pass from start when computing register live ranges.
+ This should be used temporarily, and is required for certain
+ loop constructs, with several consecutive blocks not referencing
+ a live register.
+
+2016-05-05 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Correct wrong movr simplification,
+ remove no longer needed code to set return registers live
+ and update live register set when reaching a label boundary,
+ but do not descend if the block has been already visited.
+ The later need some tuning for complex code generation, where
+ it will still have issues.
+
+2015-11-30 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Change documentation to no longer say
+ it is a variant of the Fibonacci sequence, and document
+ a proper implementation.
+ Thanks to Jon Arintok for pointing out that the Fibonacci
+ sequence generation was incorrect. It was documented, but
+ still confusing.
+
+ * check/fib.tst, check/fib.ok, check/bp.tst, check/bp.ok,
+ doc/ifib.c, doc/rbif.c: Implement a proper Fibonacci
+ sequence implementation.
+
+2015-07-03 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_mips-cpu.c: Correct definition of htonr_ul.
+ Correct prolog/epilog/va* routines to work on o64 abi.
+
+ * lib/jit_mips-fpu.c: Correct load of double literal
+ argument when not using a data buffer.
+ Remove alignment correction in vaarg_d if using the
+ new mips abi.
+
+ * lib/jit_mips.c: Correct code to allow creating variadic
+ jit functions when using the new mips abi.
+
+ * lib/jit_rewind.c: Minor adjust for rewind when using
+ the new mips abi, if there are varargs arguments in
+ registers.
+
+2015-06-06 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64-cpu.c: Search backward for the last output
+ register used, otherwise would stop too early if a float
+ argument used the slot.
+ Correct offset of first va_list argument, and use proper
+ va_list abi.
+
+ * lib/jit_ia64-fpu.c: Add new functions to move a gpr
+ to a fpr register, to counterpart the ones that move a
+ fpr to a gpr. These are required to properly implement
+ jit_getarg*_{f,d} on complex prototypes, or variadic
+ jit functions.
+
+ * lib/jit_ia64-sz.c: Update for support to jit variadic
+ functions.
+
+ * lib/jit_ia64.c: Implement proper abi for variadic
+ jit functions.
+
+2015-06-04 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_rewind.c: New file implementing generic functions
+ to "rewind", or rewrite IR code sequences.
+
+ * include/lightning.h: Add several new codes, that previously
+ were a function call, that would synthesize the operation.
+ Now, there is a code for the operation, and a new flag to
+ know an operation is synthesized.
+
+ * include/lightning/jit_private.h: Add several new macros to
+ help construct synthesized IR code sequences.
+
+ * lib/Makefile.am: Update for lib/jit_rewind.c.
+
+ * lib/jit_disasm.c: Update for a small rework on jit_node_t,
+ so that --enable-devel-disassembler does not need a change
+ in the layout of jit_node_t.
+
+ * lib/jit_names.c: Update for the new codes.
+
+ * lib/jit_print.c: Update to print more readable output, and
+ flag synthesized IR code sequences.
+
+ * lib/jit_aarch64-sz.c, lib/jit_aarch64.c,
+ lib/jit_arm-sz.c, lib/jit_arm.c, lib/jit_x86-sz.c,
+ lib/jit_x86.c: Update for new synthesized IR code sequences.
+
+ * lib/jit_ppc-cpu.c, lib/jit_ppc-fpu., lib/jit_ppc-sz.c,
+ lib/jit_ppc.c, lib/jit_mips-cpu.c, lib/jit_mips-fpu.c,
+ lib/jit_mips-sz.c, lib/jit_mips.c, lib/jit_s390-fpu.c,
+ lib/jit_s390-sz.c, lib/jit_s390.c: Update for new synthesized
+ IR code sequences and correct bugs in the initial varargs
+ implementation support.
+
+ * lib/jit_alpha-sz.c, lib/jit_alpha.c, lib/jit_hppa-sz.c,
+ lib/jit_hppa.c, lib/jit_ia64-sz.c, lib/jit_ia64.c,
+ lib/jit_sparc-sz.c, lib/jit_sparc.c: Add generic, untested
+ support for the new synthesized IR code sequences. Known
+ most likely broken right now, and should be corrected once
+ access to these hosts is available.
+
+ * lib/lightning.c: Update for new IR codes, and add support
+ for not yet existing instructions that change third argument.
+
+ * size.c: Change to use different tables for LE and BE PowerPC.
+ Correct a wrong endif for x32.
+
+2015-05-25 Paulo Andrade <pcpa@gnu.org>
+
+ * check/cva_list.c: New file implementing a test to ensure
+ the value returned by jit_va_start is a valid C va_list.
+
+ * check/va_list.ok: New simple helper file, as now the
+ va_list.tst test is enabled.
+
+ * check/va_list.tst: Rewritten for an extensive variadic
+ jit functions test.
+
+ * check/Makefile.am: Update for the new tests.
+
+ * lib/jit_arm-cpu.c, lib/jit_arm-swf.c, lib/jit_arm-vfp.c,
+ lib/jit_arm.c: Correct broken software float in a previous
+ commit. Note that the hard float abi implementation is known
+ broken at this time, for special cases involving variadic
+ functions, and should be corrected next.
+
+ lib/jit_x86-cpu.c, lib/jit_x86-sz.c, lib/jit_x86.c: Correct
+ the jit_va_list_t semantics to match C va_list.
+
+2015-05-24 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/Makefile.am: Bump library major. This is a preparation
+ for a rework that was due for quite some time, but that is
+ now required to properly implement variadic jit functions.
+ The rework is mainly required to know at prolog parsing, if
+ a function is variadic or not. This will benefit a few
+ backends, and is mandatory for the hard float arm abi.
+ The rework was already planned for quite some time, to
+ be able to use a variable stack framesize, and for leaf
+ functions optimization where applicable.
+ The change will be source compatible, but will change
+ some internals, and jit_code_t values, as some new will
+ be added.
+ The only behavior change is that, jit_arg_register_p may
+ change return value on hard float arm abi, if called before
+ or after jit_ellipsis. Common sense anyway, would say to
+ make that call after jit_ellipsis, but documentation
+ should be updated for it.
+
+2015-05-24 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: Correct base
+ aarch64 varargs code.
+
+2015-05-24 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c: Clearly run check if clang is the system
+ compiler.
+
+2015-05-20 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c, lib/jit_sparc.c:
+ Add base support to jit vararg functions to the sparc backend.
+
+2015-05-20 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c, lib/jit_alpha.c:
+ Add base support to jit vararg functions to the alpha backend.
+
+2015-05-19 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c, lib/jit_hppa.c:
+ Add base support to jit vararg functions to the hppa backend.
+
+2015-05-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, lib/jit_ia64.c:
+ Add base support to jit vararg functions to the ia64 backend.
+
+2015-05-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64-fpu.c, lib/jit_ia64.c: Correct movi_d_w
+ and movi_f_w implementation to work when not using a
+ data buffer. This causes the check varargs.tst to
+ work when passing "-d" to the lightning test tool.
+
+2015-05-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64.c: Implement inline assembly cache flush,
+ required on multiprocessor systems.
+
+2015-05-06 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips.c:
+ Add base support to jit vararg functions to the mips backend.
+ Currently only supported on the o32 abi, until access to a
+ n32 system is arranged.
+
+2015-05-05 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c:
+ Add base support to jit vararg functions to the PowerPC backend.
+
+2015-05-02 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_s390-cpu.c, lib/jit_s390-fpu.c, lib/jit_s390.c:
+ Add base support to jit vararg functions to the s390 backend.
+
+2015-05-01 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm-cpu.c, lib/jit_arm-swf.c, lib/jit_arm-vfp.c,
+ lib/jit_arm.c: Add base support to jit vararg
+ functions to the arm backend.
+
+2015-04-30 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c,
+ lib/jit_aarch64.c: Add base support to jit vararg
+ functions to the aarch64 backend.
+
+2015-04-27 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, include/lightning/jit_private.h,
+ lib/jit_names.c, lib/lightning.c: Add initial support
+ for the new jit_va_start, jit_va_arg, jit_va_arg_d, and
+ jit_va_end interfaces. The jit_va_start call is supposed
+ to return a va_list compatible pointer, but not yet
+ decided if it will be "declared" stdarg compatible,
+ as for now only x86 support has been added (and should
+ be compatible), but issues may arise on other backends.
+
+ * check/lightning.c: Add wrappers to call the new jit_va_*
+ interfaces.
+
+ * lib/jit_x86-cpu.c, lib/jit_x86.c: Implement the new
+ jit_va_* for x86.
+
+ * lib/jit_x86-sz.c: Add fields, but not yet fully updated,
+ as this is an intermediate commit.
+
+ * lib/jit_aarch64-sz.c, lib/jit_aarch64.c,
+ lib/jit_alpha-sz.c, lib/jit_alpha.c,
+ lib/jit_arm-sz.c, lib/jit_arm.c,
+ lib/jit_hppa-sz.c, lib/jit_hppa.c,
+ lib/jit_ia64-sz.c, lib/jit_ia64.c,
+ lib/jit_mips-sz.c, lib/jit_mips.c,
+ lib/jit_ppc-sz.c, lib/jit_ppc.c,
+ lib/jit_s390-sz.c, lib/jit_s390.c,
+ lib/jit_sparc-sz.c, lib/jit_sparc.c: Prepare for the
+ new jit_va_* interfaces. Not yet implemented, and will
+ cause an assertion if used.
+
+ * check/va_list.tst: Simple early test case, that works
+ on x86_64, x32, ix86, cygwin, and cygwin64.
+
+2015-02-17 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, include/lightning/jit_private.h,
+ lib/jit_aarch64-cpu.c, lib/jit_aarch64.c,
+ lib/jit_alpha-cpu.c, lib/jit_alpha.c,
+ lib/jit_arm-cpu.c, lib/jit_arm.c,
+ lib/jit_hppa-cpu.c, lib/jit_hppa.c,
+ lib/jit_ia64-cpu.c, lib/jit_ia64.c,
+ lib/jit_mips-cpu.c, lib/jit_mips.c,
+ lib/jit_ppc-cpu.c, lib/jit_ppc.c,
+ lib/jit_s390-cpu.c, lib/jit_s390.c,
+ lib/jit_sparc-cpu.c, lib/jit_sparc.c,
+ lib/jit_x86-cpu.c, lib/jit_x86.c: Implement the new
+ jit_allocar(offs, size) interface, that receives
+ two integer registers arguments, allocates space
+ dynamically in the stack, returns the offset in
+ the first argument, and uses the second argument
+ for the size in bytes of the memory to be allocated.
+
+ * check/allocar.ok, check/allocar.tst: New files
+ implementing test cases for the new jit_allocar
+ interface.
+
+ * check/Makefile.am, check/lightning.c: Update for
+ the new test case and interface.
+
+ * doc/body.texi: Add documentation of the new
+ interface.
+
+2015-02-17 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_x86.h, lib/jit_x86-cpu.c,
+ lib/jit_x86-x87.c: No longer make st(7) available.
+ Need to keep one x87 slots empty to avoid exceptions.
+ This has the side effect of no longer needing the
+ hackish emms instruction before a function call.
+
+2015-02-16 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Remove the jit_regno_patch bitfield
+ register fields before actual emit, as it is only really
+ used before emit, otherwise, on special conditions it
+ may consider live registers as dead during code emit.
+
+2015-02-15 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
+ Correct encoding of ldxr* stxr* in the x32 abi. If the
+ displacement register is negative, it would generate
+ a 64 bit instruction with a 32 bit unsigned displacement.
+
+ * check/ranger.tst, check/ranger.ok: New files, implementing
+ a test case for negative loads and stores. This is range.tst
+ converted to use registers instead of immediate offsets.
+
+ check/Makefile.am: Update for the new test case.
+
+2015-02-07 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_size.c: Preventively use at least 144 bytes
+ if JIT_INSTR_MAX is less than it. The logic is not
+ guaranteed to be 100% precise, it is mostly heuristics
+ to allocate a buffer with as close as possible size,
+ but a wrong value may cause code generation to write
+ past the end of the buffer.
+
+2015-02-03 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Correct the reason the bug in
+ simplify_stxi was not triggered before, it was due to
+ incorrectly resetting the value->code field, what was
+ causing it to never properly optimize:
+ stxi Im0 Rb0 Rt0
+ ldxi Rt1 Rb1 Im1
+ when Rb0 == Rb1, Rt0 == Rt1 and Im0 == Im1
+ There was another possible issue, that has been also
+ addressed in this commit, that would be the case of
+ Rbn == Rtn, where no redundancy removal is possible.
+
+2015-02-03 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Correct wrong check in simplify_stxi.
+ The test was incorrectly comparing the target register
+ and the displacement offset. This was a time bomb bug,
+ that would trigger in code like:
+ stxi Im0 Rb0 Rt0
+ stxi Im1 Rb1 Rt1
+ if Rb0 == Rb1 && Rt0 == Rt1 && Im0 == Rt1, that is,
+ the wrong check was Im0 == Rt1, instead of the supposed
+ Im0 == Imm1 (that was what the code mean't to do). It
+ was removing the second stxi assuming it was redundantly
+ generated; as that is not uncommon pattern on
+ translators generating jit.
+
+2015-02-02 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac, include/lightning/jit_private.h,
+ lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
+ lib/jit_disasm.c, lib/jit_hppa.c, lib/jit_ia64.c,
+ lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c,
+ lib/jit_s390.c, lib/jit_sparc.c, lib/jit_x86.c: Add a new
+ --enable-devel-disassembler option, that should be used
+ during development, or lightning debug. This option
+ intermixes previous jit_print and jit_disassemble
+ output, making it easier to visualize what lightning
+ call was used, and what code was generated.
+
+2015-01-31 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm-cpu.c, lib/jit_arm.c: Only limit to 24 bit
+ displacement non conditional jump in the same jit_state_t.
+
+2015-01-19 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Reorder documentation, making jit_frame
+ and jit_tramp the lightning response to the need of
+ trampolines, continuations and tail call optimizations.
+ A pseudo code example of a factorial function was added.
+ Also added a section for description of the available
+ predicates.
+
+ * doc/fact.c: New file, implementing a simple example of
+ a translation of a trivial, recursive, tail call optimization
+ into lightning calls. This is the conversion to functional C
+ code of the example in doc/body.texi.
+
+ * doc/Makefile.am: Update for the next test case.
+
+2015-01-17 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/jit_aarch64.c,
+ lib/jit_alpha.c, lib/jit_arm-vfp.c, lib/jit_arm.c,
+ lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c,
+ lib/jit_ppc.c, lib/jit_s390.c, lib/jit_sparc.c,
+ lib/jit_x86.c: Add the new jit_arg_register_p predicate.
+ The predicate is expected to be used to know if an
+ argument is in a register, what would need special
+ handling if code that can overwrite non callee save
+ registers is executed.
+
+ * check/carg.c: New test case to check consistency and
+ expected usage of jit_arg_register_p.
+
+ * check/Makefile.am: Update for new test case.
+
+2015-01-17 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_aarch64.h,
+ include/lightning/jit_alpha.h,
+ include/lightning/jit_arm.h,
+ include/lightning/jit_hppa.h,
+ include/lightning/jit_mips.h,
+ include/lightning/jit_ppc.h,
+ include/lightning/jit_s390.h,
+ include/lightning/jit_sparc.h,
+ include/lightning/jit_x86.h,
+ lib/jit_aarch64.c, lib/jit_alpha.c,
+ lib/jit_arm.c, lib/jit_hppa.c,
+ lib/jit_ia64.c, lib/jit_mips.c,
+ lib/jit_ppc.c, lib/jit_s390.c,
+ lib/jit_sparc.c, lib/jit_x86.c: Remove jit_arg_reg_p and
+ jit_arg_f_reg_p from a public header, and define it only
+ on port specific files where an integer offset is used
+ to qualify an argument identifier. Exported code expects
+ an opaque pointer (but of jit_node_t* type) to "qualify"
+ an argument identifier.
+ This patch, and the code review/simplification done during
+ it also corrected some bugs:
+ o Inconsistent jit_arg_d value of double argument after 3
+ integer arguments in arm for jit_functions; tested, C
+ functions were being properly called.
+ o Inconsistent use of getarg_{f,d} and putarg*_{f,d} on
+ s390 (32-bit) that happened to not have a proper test
+ case, as it would only happen for jit functions, and
+ tested, called C functions had proper arguments.
+ o Corrected a "last minute" correction that did not go
+ to the committed version, and would not compile on hppa,
+ due to bad _jit_putargi_d prototype definition.
+
+2015-01-17 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Correct wrong/outdated information for
+ hton*, pusharg* and ret*, and add missing documentation
+ for rsb*, qmul*, qdvi* and putarg*.
+
+2015-01-15 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac, lib/jit_disasm.c: Rewrite workaround
+ to apparent problem to initialize powerpc disassembler.
+
+2015-01-15 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/jit_aarch64.c,
+ lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c,
+ lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
+ lib/jit_s390.c, lib/jit_sparc.c, lib/jit_x86.c:
+ Implement jit_putarg*. It works as a mix of jit_getarg*
+ and jit_pusharg*, in the way that the first argument is
+ a register or immediate, and the second is a pointer
+ returned by jit_arg*. The use of the interface is to change
+ values of arguments to the current jit function.
+
+ * check/put.ok, check/put.tst: New test cases exercising
+ the new jit_putarg* interface.
+
+ * check/Makefile.am, check/lightning.c: Update for the
+ new test case and interface.
+
+2015-01-08 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_s390.h, lib/jit_s390-cpu.c,
+ lib/jit_s390-fpu.c, lib/jit_s390-sz.c, lib/jit_s390.c:
+ Renamed s390x* files to s390*.
+
+ * check/float.tst, check/lightning.c, configure.ac,
+ include/lightning.h, include/lightning/Makefile.am,
+ lib/Makefile.am, lib/jit_s390.c, lib/jit_size.c,
+ lib/lightning.c: Update for renamed files.
+
+2015-01-08 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, include/lightning/jit_private.h,
+ include/lightning/jit_s390x.h, lib/jit_disasm.c,
+ lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x-sz.c,
+ lib/jit_s390x.c, lib/jit_size.c, lib/lightning.c:
+ Add support for generating jit for s390 32 bit. This change
+ also removed %f15 from the list of temporaries fpr registers;
+ it was not being used, but if were, it would corrupt the
+ stack frame because the spill address would overwrite grp
+ offsets.
+
+2014-12-26 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Correct some endianess issues
+ on the powerpc le backend.
+
+2014-12-26 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ppc-cpu.c: Add mcrxr instruction emulation,
+ as this instruction has been phased out, and should be
+ implemented as a kernel trap.
+
+2014-12-26 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm.c: Better check for need to flush constants
+ before the pool being no longer reachable.
+
+2014-12-25 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h: Split jit_htonr in the new 3 interfaces
+ jit_htonr_us, jit_htonr_ui and jit_htonr_ul, the later only
+ available on 64 bit. The plain/untyped jit_htonr macro call
+ maps to the wordsize one.
+ * lib/jit_aarch64-cpu.c, lib/jit_aarch64-sz.c, lib/jit_aarch64.c,
+ lib/jit_alpha-cpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c,
+ lib/jit_arm-cpu.c, lib/jit_arm-sz.c, lib/jit_arm.c,
+ lib/jit_hppa-cpu.c, lib/jit_hppa-sz.c, lib/jit_hppa.c,
+ lib/jit_ia64-cpu.c, lib/jit_ia64-sz.c, lib/jit_ia64.c,
+ lib/jit_mips-cpu.c, lib/jit_mips-sz.c, lib/jit_mips.c,
+ lib/jit_ppc-cpu.c, lib/jit_ppc-sz.c, lib/jit_ppc.c,
+ lib/jit_s390x-cpu.c, lib/jit_s390x-sz.c, lib/jit_s390x.c,
+ lib/jit_sparc-cpu.c, lib/jit_sparc-sz.c, lib/jit_sparc.c,
+ lib/jit_x86-cpu.c, lib/jit_x86-sz.c, lib/jit_x86.c:
+ Update backends for the new jit_htonr*.
+ * check/lightning.c, lib/jit_names.c, lib/lightning.c:
+ Update for the new jit_htonr* interfaces.
+ * check/Makefile.am: Update for new test cases.
+ * check/hton.ok, check/hton.tst: New test cases.
+
+2014-12-24 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_private.h, include/lightning/jit_x86.h,
+ lib/jit_disasm.c, lib/jit_x86-cpu.c, lib/jit_x86-sse.c,
+ lib/jit_x86-sz.c, lib/jit_x86-x87.c, lib/jit_x86.c,
+ size.c: Implement support for the x32 abi. Built and
+ tested on Gentoo default/linux/amd64/13.0/x32 profile.
+
+2014-12-24 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_names.c: Add missing rsbi_f and rsbi_d strings.
+
+2014-12-21 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm.c: Call __clear_cache for every page.
+ This should only be required for older boards or
+ toolchain setup, but has been reported to be required
+ for lightning at some point.
+
+2014-12-21 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm.c: Correct check to guard overflow of index
+ of constants from program counter.
+
+2014-11-24 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Remove an optimization to calee save
+ registers that may incorrectly remove a jit_movr under
+ special conditions.
+
+2014-11-20 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c,
+ lib/jit_ppc.c: Add initial powerpc le support.
+
+2014-11-20 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_disasm.c: Change thumb or arm disassemble based on
+ jit code before disassembly.
+
+ * lib/jit_arm-cpu.c: Correct reversed arguments to LDRD and
+ STRD instructions, and correct checking for support of those.
+
+ * lib/jit_arm-swf.c: Correct wrong use of LDRD and STRD and
+ only use those if the register is even.
+
+ * check/check.arm.swf.sh, check/check.arm4.swf.sh: New files
+ to test LDRD and STRD, as well as the alternate code path
+ when those are not available, in the .arm4. test case.
+
+ * check/Makefile.am: Update for the new test cases.
+
+2014-11-08 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_private.h, lib/jit_aarch64.c,
+ lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c,
+ lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
+ lib/jit_s390x.c, lib/jit_sparc.c, lib/jit_x86.c:
+ Implement a private jit_flush call, that flushes
+ the cache, if applicable, aligning down to the
+ previous and up to the next page boundary.
+
+2014-11-08 Paulo Andrade <pcpa@gnu.org>
+
+ * check/ctramp.c: New file. It just repeats the test
+ of tramp.tst, but using two jit_state_t, what should
+ test possible issues with two contexts, and also validate
+ jit_tramp works on backends with function descriptions.
+
+ * check/Makefile.am: Update for new test case.
+
+2014-11-03 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_mips.h: Do not make the t9 register
+ JIT_R11 (or JIT_R7 for n32 or n64 abi) available. Previously
+ it cause problems if one expects it to not be changed in a
+ function call. For example, calling a jit function, where it
+ really does not need to be changed.
+
+2014-10-26 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
+ lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
+ lib/jit_s390x.c, lib/jit_sparc.c, lib/jit_x86.c: Add an
+ assertion to all code generation "drivers" to ensure
+ _jitc->regarg is empty or in an expected state, after
+ translation of a lightning instruction to native code.
+ This change was a brute force test to find out other cases
+ of a temporary not being release (like was happening with
+ _bmsi and _bmci on x86), but no other case was found,
+ after running make check, with assertions enabled, on all
+ backends.
+
+2014-10-26 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-cpu.c: Correct a register allocation leak in
+ _bmsi and _bmci.
+
+2014-10-25 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_disasm.c: Do not cause an fatal error if init_jit
+ fails in the jit_init_debug call.
+
+2014-10-24 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64.c, lib/jit_ppc.c: Correct handling of function
+ descriptor when first prolog is a jit_tramp prolog. The
+ test case was using the same jit_context_t, so was not
+ triggering this condition.
+
+ * lib/jit_ppc-cpu.c: Properly handle jump displacements that
+ do not fit on 24 powerpc. This required changing from previous
+ "mtlr reg, blr" to "mtctr reg, bctr" to properly handle
+ the logic to "hide" function descriptors, but that would
+ also be required as the proper jit_jmpr when/if implementing
+ optimizations to leaf functions (was working with blr because
+ it is saved/reloaded in prolog/epilog).
+
+2014-10-21 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/lightning.c: Add three predicates
+ to query information about labels. jit_forward_p(label)
+ will return non zero if the label is "forward", that is
+ need a call to jit_link(label), jit_indirect_p(label)
+ that returns non zero if the label was created with the
+ jit_indirect() call, and jit_target_p(label) that will
+ return non zero if there is at least one jump patched
+ to land at that label.
+
+2014-10-18 Paulo Andrade <pcpa@gnu.org>
+
+ * check/range.ok, check/range.tst: New test case designed
+ to catch incorrect code generation, usually due to incorrect
+ test of immediate size. The test checks a large amount of
+ encodings in "power of two" boundaries. This test exorcises
+ a significant amount of code paths that was previously not
+ tested.
+
+ * check/Makefile.am: Add range test to make check target.
+
+ * lib/jit_aarch64-cpu.c: Correct wrong address calculation
+ for stxi_c, stxi_s, stxi_i and stxi_l when the offset is
+ too large.
+
+ * lib/jit_mips-fpu.c: Correct wrong size test to check if
+ an immediate can be encoded in a float or double store.
+
+ * lib/jit_s390x-cpu.c: Correct inverted encoding to stxi_s
+ when the offset cannot be encoded, and fallbacks to an
+ alternate encoding in 2 instructions.
+
+2014-10-17 Paulo Andrade <pcpa@gnu.org>
+
+ * check/alu_rsb.ok, check/alu_rsb.tst: New files implementing
+ tests for jit_rsb*.
+
+ * check/Makefile.am, check/lightning.c, include/lightning.h,
+ lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c, lib/jit_aarch64-sz.c,
+ lib/jit_aarch64.c, lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c,
+ lib/jit_alpha-sz.c, lib/jit_alpha.c, lib/jit_arm-cpu.c,
+ lib/jit_arm-swf.c, lib/jit_arm-sz.c, lib/jit_arm-vfp.c,
+ lib/jit_arm.c, lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c,
+ lib/jit_hppa-sz.c, lib/jit_hppa.c, lib/jit_ia64-cpu.c,
+ lib/jit_ia64-fpu.c, lib/jit_ia64-sz.c, lib/jit_ia64.c,
+ lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips-sz.c,
+ lib/jit_mips.c, lib/jit_names.c, lib/jit_ppc-cpu.c,
+ lib/jit_ppc-fpu.c, lib/jit_ppc-sz.c, lib/jit_ppc.c,
+ lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x-sz.c,
+ lib/jit_s390x.c, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c,
+ lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-cpu.c,
+ lib/jit_x86-sse.c, lib/jit_x86-sz.c, lib/jit_x86-x87.c,
+ lib/jit_x86.c, lib/lightning.c: Implement jit_rsb*. This
+ was a missing lightning 1.x interface, that on most
+ backends is synthesized, but on a few backends (hppa and ia64),
+ it can generate better code as on those there is, or the
+ only instruction with an immediate is in "rsb" format
+ (left operand).
+
+2014-10-17 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_names.c: New file with single definition of string
+ representation of lightning IR codes.
+
+ * size.c: Modified to append the code name in a C comment
+ after the maximum instruction size.
+
+ * lib/jit_print.c: Minor change to not duplicate jit_names.c
+ contents.
+
+ * lib/jit_aarch64-sz.c, lib/jit_alpha-sz.c, lib/jit_arm-sz.c,
+ lib/jit_hppa-sz.c, lib/jit_ia64-sz.c, lib/jit_mips-sz.c,
+ lib/jit_ppc-sz.c, lib/jit_s390x-sz.c, lib/jit_sparc-sz.c,
+ lib/jit_x86-sz.c: Rewritten to add string representation of
+ IR codes in a C comment.
+
+2014-10-14 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64-cpu.c, lib/jit_alpha-cpu.c, lib/jit_arm-cpu.c,
+ lib/jit_hppa-cpu.c, lib/jit_mips-cpu.c, lib/jit_ppc-cpu.c,
+ lib/jit_sparc-cpu.c: Implement or correct the internal
+ nop(count) call that receives an argument that tells the
+ modulo bytes to align the code for the next instruction.
+
+ * include/lightning.h, lib/lightning.c, lib/jit_aarch64.c,
+ lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c, lib/jit_ia64.c,
+ lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c, lib/jit_sparc.c,
+ lib/jit_x86.c: Implement the new jit_align() call that receive
+ an argument, that tells the modulo, in bytes, to align the
+ next instruction. In most backends the only value that makes
+ a difference is a value that matches sizeof(void*), as all
+ other values usually are already automatically aligned in
+ labels, but not guaranteed to be aligned at word size bytes.
+
+ * check/align.ok, check/align.tst: New files, implementing
+ a simple test for the new jit_align() interface.
+
+ * check/Makefile.am, check/lightning.c, lib/jit_aarch64-sz.c,
+ lib/jit_alpha-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c,
+ lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c,
+ lib/jit_print.c, lib/jit_s390x-sz.c, lib/jit_sparc-sz.c,
+ lib/jit_x86-sz.c: Update for the new jit_code_align code and
+ the jit_align() interface.
+
+2014-10-13 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/jit_size.c, size.c: Use a
+ symbolic value for the last IR code.
+
+2014-10-12 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, include/lightning/jit_private.h,
+ lib/jit_aarch64-cpu.c, lib/jit_alpha-cpu.c, lib/jit_arm-cpu.c,
+ lib/jit_hppa-cpu.c, lib/jit_ia64-cpu.c, lib/jit_mips-cpu.c,
+ lib/jit_ppc-cpu.c, lib/jit_s390x-cpu.c, lib/jit_sparc-cpu.c,
+ lib/jit_x86-cpu.c, lib/lightning.c: Implement the new
+ jit_frame and jit_tramp interfaces, that allow writing
+ trampoline like calls, where a single dispatcher jit buffer
+ is written, and later other jit buffers are created, with
+ the same stack frame layout as the dispatcher. This is the
+ logic that GNU Smalltalk used in lightning 1.x, and is required
+ to make a sane port for lighting 2.x.
+
+ * jit_ia64-cpu.c: Implement support for jit_frame and jit_tramp,
+ and also correct wrong encoding for B4 instructions, that
+ implement jmpr, as well as correct reverse logic in _jmpr,
+ that was moving the branch register to the jump register,
+ and not vice-versa.
+ Also, if a stack frame is to be assumed, always assume it may
+ call a function with up to 8 arguments, regardless of the
+ hint frame argument.
+
+ * lib/jit_arm.c: Add a new must_align_p() interface to ensure
+ function prologs are always aligned. This condition was
+ previously always true, somewhat by accident, but with
+ jit_tramp it is not guaranteed.
+
+ * jit_ia64-cpu.c: lib/jit_ppc.c: Add minor special handling
+ required to implement jit_tramp, where a function descriptor
+ should not be added before a prolog, as jit_tramp means omit
+ prolog.
+
+ * check/lightning.c: Update test driver for the new interfaces.
+
+ * check/Makefile.am, check/tramp.tst, check/tramp.ok: Add
+ a simple test and example of the jit_frame and jit_tramp
+ usage implementing a simple Fibonacci function using a
+ simulation of an interpreter stack and how it would handle
+ state in language specific variables.
+
+ * doc/body.texi: Add documentation for jit_frame and
+ jit_tramp.
+
+2014-09-29 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
+ lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c,
+ lib/jit_ppc.c, lib/jit_s390x.c, lib/jit_sparc.c,
+ lib/jit_x86.c, lib/lightning.c: Allow jit_jmpi on a
+ target that is not a node. This may lead to hard to
+ debug code generation, but is a required feature for
+ certain generators, like the ones that used lightning
+ 1.2x. Note that previously, but not really well
+ documented, it was instructed to use:
+ jit_movi(rn, addr); jit_jmpr(rn);
+ but now, plain:
+ jit_patch_abs(jit_jmpi(), addr);
+ should also work.
+
+2014-09-24 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-sz.c: Generate information about instruction
+ lengths for more precise calculation of buffer size on
+ Windows x64. This change is specially important because
+ the maximum instruction length is larger than other
+ systems, what could cause an out of bounds write on
+ special conditions without this update.
+
+2014-09-24 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c: Add workaround to conflicting global
+ optind variable in cygwin binutils that have an internal
+ getopt* implementation.
+
+ * lib/jit_x86-cpu.c: Add a simple define ffsl ffs if building
+ for 32 bit and there is no ffsl function.
+
+2014-09-24 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c: Add a hopefully temporary kludge to not use
+ sprintf and sscanf returned by dlsym. This is required to pass
+ the varargs test.
+
+ * include/lightning/jit_private.h: Use symbolic name for first
+ integer register argument, as this is different in sysv and
+ win64 abi.
+
+ * include/lightning/jit_x86.h: Add conditionals and definitions
+ for Windows x64 (under __CYGWIN__ preprocessor conditional).
+
+ * lib/jit_x86-cpu.c: Correct one instruction encoding bug, that
+ was working by accident. Only use rax to rdx for some byte
+ operations to work on compatibility mode (that is, to generate
+ the proper encoding, instead of actually generating encoding
+ for high byte registers, e.g. %bh).
+ Add proper prolog and epilog for windows x64.
+
+ * lib/jit_x86-sse.c: Correct a swapped rex prefix for float
+ operations.
+
+ * lib/jit_x86.c: Adjust to support Windows x64 abi.
+
+ * check/check.x87.nodata.sh: New file, previously used but that
+ was missing git.
+
+2014-09-07 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Mark all registers advertised as live, as
+ per jit_callee_save_p as live whenever reaching a jump that
+ cannot be tracked. This is a rethink of the previous commit,
+ and is a better approach, otherwise there would not be much
+ sense on relying on jit_callee_save_p if it could not be
+ trusted.
+
+ * check/jmpr.tst, check/jmpr.ok: New files implementing a very
+ simple test case, that would actually cause an assertion on
+ code before the change to only mark as live when reaching a
+ jump that could not tracked, the actually advertised as callee
+ save registers.
+
+ check/Makefile.am: Update for new jmpr test case.
+
+2014-09-01 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Do not mark all registers in unknown state
+ as live on jit_jmpr, or jit_jmpi to an absolute address. Instead,
+ treat it as a function call, and only consider JIT_Vn registers
+ as possibly live.
+
+2014-08-29 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Add a proper info menu entry for
+ GNU lightning.
+
+ * doc/version.texi: Regenerate.
+
+2014-08-16 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c,
+ lib/jit_arm-cpu.c, lib/jit_arm-vfp.c,
+ lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c,
+ lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c,
+ lib/jit_mips-cpu.c, lib/jit_mips-fpu.c,
+ lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c,
+ lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c,
+ lib/jit_s390x.c, lib/jit_sparc-cpu.c,
+ lib/jit_x86-cpu.c, lib/jit_x86-sse.c,
+ lib/jit_x86-x87.c: Review generation of all branch
+ instructions and always adds the jit_class_nospill
+ bitfield for temporary registers that cannot be spilled
+ because the reload would be after a conditional jump; the
+ patch only adds an extra assertion. These conditions do
+ not happen on documented lightning usage, but can happen
+ if one uses the not exported jit_get_reg and jit_unget_reg
+ calls and cause enough register starvation.
+
+2014-08-16 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_alpha.c: Correct wrong bitmask of most argument
+ float register arguments, that were being set as callee
+ save instead of argument registers class.
+
+2014-08-16 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm-sz.c: Regenerate table of known maximum
+ instruction sizes for the software float fallback,
+ that implements "virtual" float registers in the stack
+ and operations as calls to libgcc.
+
+ * size.c: Correct typo in the generated jit_arm-sz.c file.
+
+2014-08-10 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_alpha.h, lib/jit_alpha-cpu.c,
+ lib/jit_alpha-fpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c:
+ New files implementing a lightning Alpha port. Thanks
+ to Trent Nelson and snakebit.net staff for providing access
+ to an Alpha system.
+
+ * check/float.tst, check/lightning.c, configure.ac,
+ include/lightning.h, include/lightning/Makefile.am,
+ include/lightning/jit_private.h, lib/Makefile.am,
+ lib/jit_disasm.c, lib/jit_size.c, lib/lightning.c:
+ Minor changes to adapt for the new Alpha port.
+
+2014-08-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Always mark JIT_RET and JIT_FRET as
+ live in a function epilog. This is required because
+ on some ports a complex sequence, allocating one or more
+ registers, may be required to jump from a ret* to the
+ epilog, and the lightning api does not have annotations
+ to know if a function returns a value, or the type of
+ the return value.
+
+2014-08-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Change the correct live bitmask of
+ return registers after a function call in jit_update.
+
+2014-08-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Change assertions to have an int
+ result and correct a bad bit mask assertion.
+
+2014-08-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64.c: Correct bad setup for assertion
+ of consistency before a patch.
+
+2014-08-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_mips-cpu.c: Correct typo in the jit_bmsr
+ implementation that was using the wrong test result
+ register.
+
+2014-07-28 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_memory.c: Do not call free on NULL pointers.
+
+ * include/lightning/jit_private.h, lib/jit_note.c,
+ lib/lightning.c: Add a wrapper to memcpy and memmove
+ to not actually call those functions with a zero size
+ argument, and likely also a null src or dst.
+
+2014-07-27 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_private.h, lib/jit_disasm.c,
+ lib/lightning.c: Remove the global jit_progname variable.
+ It was being only used in jit_init_debug, that is called
+ from init_jit, so, just pass an argument.
+
+2014-07-27 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Add note that jit_set_memory_functions
+ should be called before init_jit, because init_jit
+ itself may call the memory wrappers.
+
+2014-04-22 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm.c: Do not get confused with default settings
+ if /proc is not mounted on Linux specific code path.
+
+2014-04-09 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
+ include/lightning/jit_hppa.h, include/lightning/jit_ia64.h,
+ include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
+ include/lightning/jit_private.h, include/lightning/jit_s390x.h,
+ include/lightning/jit_sparc.h, include/lightning/jit_x86.h:
+ Do not add jit_regset_t, JIT_RA0, and JIT_FA0 to the installed
+ header file. These types and definitions are supposed to be
+ only used internally.
+
+2014-04-05 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm-cpu.c: Only adjust stack pointer in prolog if
+ need stack space, that is, do not emit a nop instruction
+ subtracting zero from the stack pointer.
+
+2014-04-04 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_disasm.c: Correct a crash in the doc/printf example
+ on arm due to releasing the data_info information in
+ jit_clear_state. This is a special case for arm only, and
+ actually, only armv5 or older uses the data_info buffer,
+ or when forcing arm instruction set mode besides thumb
+ available.
+
+2014-12-03 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Write detailed description and examples for
+ jit_get_memory_functions, jit_set_memory_functions,
+ jit_get_code, jit_set_code, jit_get_data and jit_set_data.
+
+2014-12-03 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, include/lightning/jit_private.h,
+ lib/lightning.c: Implement the new jit_set_data() interface,
+ and the new jit_get_data() helper. Like jit_set_code(),
+ jit_realize() should be called before jit_set_data().
+ The most common usage should be jit_set_data(JIT_DISABLE_DATA
+ | JIT_DISABLE_NOTE), to force synthesize any float/double
+ constant in the stack and not generate any debug information.
+
+ * lib/jit_note.c: Minor change to debug note generation as
+ now it uses an alternate temporary data buffer during constants
+ and debug generation to accommodate the possibility of the user
+ setting an alternate data buffer.
+
+ * lib/jit_hppa-fpu.c, lib/jit_s390x.c, lib/jit_s390x-cpu.c,
+ lib/jit_s390x-fpu.c, lib/jit_sparc.c, lib/jit_sparc-fpu.c,
+ lib/jit_x86-sse.c, lib/jit_x86-x87.c: Implement jit_set_data.
+
+ * lib/jit_hppa-sz.c, lib/jit_sparc-sz.c, lib/jit_x86-sz.c,
+ lib/jit_s390x-sz.c: Update for several instructions that now
+ have a different maximum length due to jit_set_data.
+
+ * lib/jit_mips-fpu.c: Implement jit_set_data, but missing
+ validation on n32 and n64 abis (and/or big endian).
+
+ * lib/jit_mips-sz.c: Update for changes in o32.
+
+ * lib/jit_ppc-fpu.c: Implement jit_set_data, but missing
+ validation on Darwin PPC.
+
+ * lib/jit_ppc-sz.c: Update for changes in powerpc 32 and
+ 64 bit.
+
+ * lib/jit_ia64-fpu.c: Implement untested jit_set_data.
+
+ * TODO: Add note to list ports that were not tested for the
+ new jit_set_data() feature, due to no longer having access
+ to them.
+
+ * check/nodata.c: New file implementing a simple test exercising
+ several different conditions created by jit_set_data().
+
+ * check/check.nodata.sh: New file implementing a wrapper
+ over the existing *.tst files, that runs all tests without
+ using a data buffer for constants; only meaningful (and
+ enabled) on architectures that used to store float/double
+ constants on a read only data buffer.
+
+ * configure.ac, check/Makefile.am: Update for the new test
+ cases.
+
+ * check/lightning.c: Implement the new "-d" option that
+ sets an internal flag to call jit_set_data() disable
+ constants and debug, that is, using only a pure code
+ buffer.
+
+2014-11-03 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, include/lightning/jit_private.h,
+ lib/lightning.c: Implement the new jit_set_code() interface,
+ that allows instructing lightning to use an alternate code
+ buffer. The new jit_realize() function should be called
+ before jit_set_code(), and usually call jit_get_code()
+ to query the amount of bytes expected to be required for
+ the code.
+
+ * lib/jit_size.c: Minor update to have less chances of
+ miscalculating the code buffer by starting the counter
+ with the size of the longest instruction instead of zero,
+ as code emit fails if at any moment less than the longest
+ instruction bytes are available.
+
+ * check/setcode.c: New file implementing some basic tests
+ of the new jit_set_code() interface.
+
+ * check/Makefile.am: Update for newer test case.
+
+2014-06-03 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/lightning.c: Add the new
+ jit_indirect() call, that returns a special label node,
+ and tells lightning that the label may be the target of
+ an indirect jump.
+
+ * doc/body.texi: Document the new jit_indirect() call, and
+ add examples of different ways to create labels and branches.
+
+2014-23-02 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86.c: Rewrite previous patch to inline save/restore
+ because clobbering %ebx in x86 is treated as an error
+ (jit_x86.c:239:5: error: PIC register clobbered by 'ebx' in 'asm').
+
+2014-19-02 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86.c: Rewrite incorrect inline assembly that could
+ truncate a variable in a callee save register. Now it simply
+ tells gcc that the register is clobbered, instead of using a
+ *32 bit* swap with a temporary variable. The problem only
+ happens when compiling with optimization.
+
+2014-19-02 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
+ include/lightning/jit_hppa.h, include/lightning/jit_ia64.h,
+ include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
+ include/lightning/jit_s390x.h, include/lightning/jit_sparc.h,
+ include/lightning/jit_x86.h: Change jit_regset_t to an
+ unsigned type, to allow safe right shift.
+
+ * lib/lightning.c: Rewrite jit_regset_scan1 to allow easier
+ compiler optimization.
+
+2013-12-03 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-x87.c: Correct wrong optimization when
+ loading the log(2) constant.
+
+2013-12-03 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-cpu.c: Use the emms instruction before
+ calling any function. This is particularly important
+ when using c99 complex functions as it can easily
+ overflow the x87 stack due to the way lightning uses
+ the x87 stack as a flat register file.
+
+2013-12-02 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-x87.c: Correct wrong code generation due
+ to comparing the base and not the value register with
+ %st(0) in stxi_f.
+
+2013-12-02 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-x87.c, lib/jit_x86.c: Use 8 bytes aligned
+ stack offset for float/double x87 to/from sse move.
+
+2013-11-27 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac, lib/jit_arm-swf.c, lib/jit_arm.c: Add
+ changes that should at least allow building lightning
+ on Apple iOS7.
+
+2013-10-08 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ppc-cpu.c: Correct wrong shortcut for ldxi_l with
+ a zero offset, that was calling ldr_i instead of ldr_l.
+
+2013-10-08 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_arm.h, lib/jit_arm-cpu.c: Do not use
+ by default load/store instructions that map to ldrt/strt.
+ There is already the long displacement version for positive
+ offsets, and when using a (shorter) negative offset it does
+ not map to ldrt/strt. At least on qemu strt may cause
+ reproducible, but unexpected SIGILL.
+
+2013-10-08 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm-vfp.c: Correct wrong load/store offset
+ calculation when the displacement is constant but too
+ large to use an instruction with an immediate offset.
+
+2013-10-07 Paulo Andrade <pcpa@gnu.org>
+
+ * check/self.c: Extend tests to validate jit_callee_save_p
+ does not cause an assertion on valid arguments, and test
+ extra registers defined on some backends.
+
+ * configure.ac: Do not ignore environment CFLAGS when
+ checking if need to test runtime configurable options,
+ like use x87 when sse2 is available, arm instruction set
+ instead of thumb, etc.
+
+ * include/lightning/jit_arm.h: Correct wrong jit_f macro
+ definition.
+
+ * include/lightning/jit_ia64.h, include/lightning/jit_ppc.h:
+ Correct wrong jit_r macro definition.
+
+ * lib/jit_x86-x87.c, lib/jit_x86.c: Actually use the
+ reserved stack space for integer to/from float conversion.
+ The stack space was also changed to ensure it is 8 bytes
+ aligned. Also, for Solaris x86 in 32 bit mode, an alternate
+ truncr_d was implemented because for some reason it is
+ failing with SIGILL if using the "fisttpl" instructions,
+ that must be available on p6 or newer, but for the sake of
+ making all tests pass, implement a 486 or newer sequence
+ if "sun" is defined.
+
+2013-10-03 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
+ lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and
+ pass all test cases on Irix big endian mips using
+ the 64 bit abi.
+
+2013-10-02 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_mips.h: Add proper mips abi detection.
+
+2013-09-30 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_print.c: Do not crash if calling jit_print from
+ gdb before actually emitting code.
+
+ * lib/lightning.c: Correct misplaced check for already
+ visited blocks on conditional branches, what was preventing
+ proper merge live bit masks of forward blocks.
+
+2013-09-30 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-cpu.c: Correct not properly tested case of using
+ %r12 as index register, what was causing an invalid assertion.
+ %r12 is mapped to the "extra" JIT_R3 register, and test cases
+ only test "standard" lightning registers.
+
+2013-09-28 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64.c: Minor change to force collecting the maximum
+ instruction length in the --enable-devel-get-jit-size build
+ mode. The actual generated file did not change because the
+ sampling was large enough that it had already collected proper
+ information in the previously slightly buggy code (not forcing
+ a sync of the instructions that could be combined).
+
+2013-09-27 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm.c: Correct build when disassembler is
+ disabled.
+
+2013-09-25 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c: Correct some
+ off by one range checks (that were only accepting values
+ one less than the maximum allowed) and an invalid test
+ condition check that was forcing it to always use
+ indirect jumps even when reachable with an immediate
+ displacement.
+
+2013-09-24 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c,
+ lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c,
+ lib/jit_s390x-sz.c, lib/jit_size.c, lib/jit_sparc-sz.c,
+ lib/jit_x86-sz.c: New files implementing static tables
+ with longest known instructions length generated to match
+ a lightning instruction. These tables should make it easier
+ to make it very unlikely to ever miscalculate, or by too
+ much, the size of a code buffer.
+
+ * lib/jit_size.c: New file that aids to either collect
+ jit code size information, or use the information depending
+ on build options.
+
+ * size.c: New helper file that parses input for, and create
+ an initial jit_$arch-sz.c file, that needs some minor edit
+ for arches with multiple configurations.
+
+ * configure.ac, Makefile.am: Add the new, devel mode only
+ --enable-devel-get-jit-size configure option, that sets
+ compile time flags to collect jit code size information,
+ that will be used as input for the "noinst size program".
+
+ * lib/jit_aarch64.c, lib/jit_arm.c, lib/jit_disasm.c,
+ lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_memory.c,
+ lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c,
+ lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c: Minor
+ changes for the --enable-devel-get-jit-size build mode,
+ as well as the "production build mode" with jit code
+ size information.
+
+2013-09-14 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/lightning.c: Add the new
+ jit_pointer_p interface, that returns a boolean value
+ telling if the pointer argument is inside the jit
+ code buffer. This is useful to avoid the need to add
+ extra labels and calls to jit_address to figure bounds
+ of code buffer, and still keep internal data private.
+
+2013-09-13 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, include/lightning/jit_private.h,
+ lib/jit_note.c: Change the code argument of jit_get_note
+ to a jit_pointer_t and make jit_get_note a public interface.
+ It was intended so since start, as a way to map an offset
+ in the code to a function name, file name and line number
+ mapping.
+
+2013-09-11 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Correct reversed arguments in example of
+ usage in a (possibly) multi threaded, multiple jit_state_t
+ environments.
+
+ * include/lightning/jit_arm.h, include/lightning/jit_private.h,
+ lib/jit_arm-cpu.c, lib/jit_arm.c: Make a previously, non
+ documented, global state private to the related jit_state_t
+ generating code.
+
+2013-09-10 Paulo Andrade <pcpa@gnu.org>
+
+ * check/self.c, check/self.ok: New files implementing simple
+ consistency check assertions. At first validating some macros
+ that use values from different sources agree.
+
+ * check/Makefile.am: Update for the new test case.
+
+ * include/lightning.h, lib/lightning.c: Add the new
+ jit_callee_save_p() call, that is intended to be used when
+ writing complex code using lightning, so that one does not
+ need to verify what backend is being used, or have access to
+ private data, to query if a register is callee save or not;
+ on several backends the scratch registers are actually callee
+ save.
+
+ * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
+ include/lightning/jit_hppa.h, include/lightning/jit_mips.h,
+ include/lightning/jit_ppc.h, include/lightning/jit_sparc.h,
+ include/lightning/jit_x86.h: Add an explicit definition for
+ JIT_R3-JIT_Rn, JIT_V3-JIT_Vn and JIT_F6-JIT_Fn when applicable.
+ This allows one to write code based on "#if defined(JIT_XN)"
+ and therefore, not need to check what is the current backend
+ or have access to private data structures. This is particularly
+ useful when writing virtual machines with several specialized,
+ global registers.
+
+ * lib/jit_ia64.c: Properly flag the callee save general
+ purpose registers as such, so that jit_callee_save_p() works
+ as intended.
+
+2013-09-10 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c, configure.ac: Conditionally use the
+ code written to workaround a bug in the Hercules emulator,
+ as isnan and isinf are not available at least on HP-UX ia64.
+
+2013-09-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_s390x-cpu.c: Spill/reload correct callee save
+ float registers.
+
+2013-09-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_hppa-cpu.c: Correct code to call a function stored
+ in a register or a patched function address.
+
+2013-09-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64-cpu.c: Correct incorrect logic when restoring
+ the value of the "r2" callee save register.
+
+2013-08-29 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm-cpu.c, lib/jit_arm.c: Correct wrong test and update
+ of the thumb offset information, when checking if needing to
+ patch a jump from arm to thumb mode. The problem would happen when
+ remapping the code buffer, and the new address being lower than
+ the previous one.
+
+2013-08-26 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac: Extend FreeBSD test to also handle NetBSD.
+
+ * lib/jit_x86-cpu.c: Correct wrongly defined offset type of
+ ldxi_ui. Problem detected when building on NetBSD.
+
+ * lib/lightning.c: Adjust code to handle NetBSD mremap,
+ where arguments do not match Linux mremap.
+
+2013-08-26 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ppc.c: Correct C sequence point problem miscalculating
+ the actual function address in a function descriptor. Problem
+ happens with gcc 4.8.1 at least.
+
+2013-08-11 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_s390x-cpu.c: Correct code checking if immediate
+ fits instruction, but using the negated value.
+
+2013-07-28 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_s390x.h, lib/jit_s390x-cpu.c,
+ lib/jit_s390x-fpu.c, lib/jit_s390x.c: New files
+ implementing the new s390x port.
+
+ * configure.ac, include/lightning.h,
+ include/lightning/Makefile.am,
+ include/lightning/jit_private.h,
+ lib/Makefile.am, lib/jit_disasm.c, lib/lightning.c:
+ Minor adaptation for the new s390x backend.
+
+ * check/float.tst: Update for the s390x result of
+ truncating +Inf to integer.
+
+ * check/qalu_mul.tst: Add extra test cases to better test
+ high word of signed multiplication as the result is
+ adjust from unsigned multiplication on s390x.
+
+2013-07-28 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c: Do not assume casting a double NaN or
+ Inf to float will produce the expected float NaN or Inf.
+ This is not true at least under s390x.
+
+2013-07-28 Paulo Andrade <pcpa@gnu.org>
+
+ * check/check.arm.sh, check/check.sh, check/check.swf.sh,
+ check/check.x87.sh: Properly check test programs output,
+ not just rely on the test program self testing the results
+ and not crashing.
+
+2013-07-28 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_aarch64.c: Remove unused macros left from cut&paste
+ of jit_arm.c.
+
+2013-07-16 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_aarch64.h, lib/jit_aarch64-cpu.c,
+ lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: New files
+ implementing the new aarch64 port, as a new architecture,
+ not as an expansion of the existing armv[4-7] port.
+
+ * check/lightning.c: Add aarch64 support and a small
+ change to recognize character constants as immediate
+ values.
+
+ * check/float.tst: Add aarch64 preprocessor conditionals
+ to select proper expected value when converting [+-]Inf
+ and NaN to integer.
+
+ * include/lightning/jit_arm.h, lib/jit_arm.c: Minor changes
+ to better match the new aarch64 files.
+
+ * configure.ac, include/lightning.h,
+ include/lightning/Makefile.am, include/lightning/jit_private.h,
+ lib/Makefile.am, lib/lightning.c: Minor adjustments
+ for the aarch64 port.
+
+2013-07-08 Paulo Andrade <pcpa@gnu.org>
+
+ * NEWS, THANKS, configure.ac, doc/version.texi: Update for
+ the 1.99a second alpha release.
+
+2013-06-25 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_mips.c: Correct cut&paste error that caused wrong
+ stack offset calculation for double arguments in stack in
+ the o32 abi.
+ Correct typo in the __LITTLE_ENDIAN macro name, that came
+ from cut&paste error in the original typo in lib/jit_ppc.c.
+
+ * lib/jit_ia64.c, lib/jit_ppc.c: Correct typo in the
+ __LITTLE_ENDIAN macro name.
+
+2013-06-22 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c, configure.ac, include/lightning.h,
+ lib/lightning.c: Add tests and quirks to build/detect
+ and/or work on Irix.
+
+ * include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
+ lib/jit_mips-fpu.c, lib/jit_mips.c: Adapt code to run
+ in big endian mips, using the n32 abi.
+
+2013-06-18 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h: Minor extra preprocessor testing
+ to "detect" byte order on x86 solaris, that now builds
+ and pass all test cases.
+
+2013-06-18 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_sparc-cpu.c: Correct compiler warning of value
+ used before assignment. The usage is bogus as the api
+ requires always patching jumps, but the random value used
+ could cause an assertion due to invalid displacement.
+
+ * lib/jit_sparc.c: Always load and store double arguments
+ in stack as 2 float loads or stores, for safety, as unaligned
+ access is not allowed in Sparc Solaris.
+
+2013-06-14 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac: Force -mlp64 to CFLAGS on HP-UX ia64 port.
+ It is the only supported mode, and expects gcc as C compiler.
+
+ * include/lightning.h, lib/jit_ia64-cpu.c, lib/jit_ia64.c:
+ Correct ia64 port to work on HP-UX that runs it in big endian
+ mode.
+
+2013-06-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_hppa.c: Sanitize the cache synchronization inline
+ assembly code that was doing twice the work and redundantly
+ flushing the end address every loop iteration.
+
+2013-06-09 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac, check/Makefile.am, doc/Makefile.am: Do not
+ explicitly link to -ldl, but instead autodetect the library
+ with dlopen, dlsym, etc.
+
+ * check/lightning.c: Add workaround to apparently buggy
+ getopt in HP-UX that sets optind to the wrong index, and
+ use RTLD_NEXT on HP-UX instead of RTLD_DEFAULT to dlsym
+ global symbols.
+
+ * include/lightning.h: Rework definitions of wordsize and
+ byte order to detect proper values on HP-UX.
+
+ * lib/lightning.c: Minor correction to use MAP_ANONYMOUS
+ instead of MAP_ANON on HP-UX.
+
+ * lib/jit_hppa.c: Float arguments must be passed on integer
+ registers on HP-UX, not only for varargs functions.
+ Add code to properly clear instruction cache. This was
+ not required on Debian hppa port, but may have been working
+ by accident.
+
+ * lib/jit_hppa-cpu.c: Follow pattern of HP-UX binaries and
+ use bve,n instead of bv,n to return from functions.
+
+ * lib/jit_hppa-fpu.c: For some reason "fst? frX,rX,(rY)" did
+ not work on the tested computer (HP-UX B.11.23 U 9000/785 HP-UX)
+ so the code was changed, at first for __hpux only to add the
+ base and offset register and use the instruction with an
+ immediate (zero) offset.
+
+2013-06-07 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c, lib/jit_disasm.c, lib/jit_ppc-cpu.c,
+ lib/jit_ppc-fpu.c, lib/jit_ppc.c, include/lightning.h,
+ include/lightning/jit_ppc.h, include/lightning/jit_private.h:
+ Adapt code to work on 32 bit AIX ppc using gcc. Most changes
+ are basically to adapt the elf64 logic to 32 bit, as it does
+ not use the same convention of 32 bit Darwin ppc.
+
+ * check/stack.tst: Add a fake memcpy function to the test
+ case if running under AIX, as it is not available to dlsym.
+
+ * configure.ac: Check for getopt.h header, not available in
+ AIX.
+
+2013-06-01 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_hppa.h, lib/jit_hppa-cpu.c,
+ lib/jit_hppa-fpu.c, lib/jit_hppa.c: New files implementing
+ the hppa port. Built on Debian Linux PA-RISC 2.0, 32 bit.
+
+ * check/float.tst: Add preprocessor for hppa expected
+ values when converting NaN and +-Inf to an integer.
+
+ * check/ldst.inc: Ensure double load/store tests use an
+ 8 byte aligned address by default.
+
+ * lib/lightning.c: Correct a bug found during tests in
+ the new port, where qmul* and qdiv* were not properly
+ setting one of the result registers as modified in the
+ function, what would be a problem if the only "write"
+ usage were the qmul* or qdiv*.
+
+ * check/varargs.tst, check/varargs.ok: Add one extra
+ interleaved integer/double test to validate proper code
+ generation in the extra case.
+
+ * check/lightning.c, configure.ac, include/lightning.h,
+ include/lightning/Makefile.am,
+ include/lightning/jit_private.h, lib/Makefile.am,
+ lib/jit_disasm.c: Update for the hppa port.
+
+2013-04-27 Paulo Andrade <pcpa@gnu.org>
+
+ * check/varargs.tst: Correct misplaced .align directive
+ that was causing the double buffer to not be aligned at
+ 8 bytes.
+ * lib/jit_ia64-cpu.c:
+ Properly implement abi for excess arguments passed on
+ stack.
+ Simplify load/store with immediate displacement argument
+ with zero value.
+ Simplify some calls to "subi" changing to "addi" with
+ a negative argument.
+ Remove some #if 0'ed code, that could be useful in
+ special conditions, but the most useful one would be
+ to "optimize" "static" jit functions, but for the sake
+ of simplicity, jit functions are implemented in a way
+ that can be passed back to C code as C function pointers.
+ Add an attribute to prototypes of several unused functions.
+ These functions are defined for the sake of implementing all
+ Itanium documented instructions, but a significant amount of
+ them is not used by lightning.
+ * lib/jit_ia64-fpu.c: Simplify load/store with zero immediate
+ displacement and add unused attribute for functions not used
+ by lightning, but required to provide macros implementing all
+ Itanium documented instructions.
+ * lib/jit_ia64.c: Update for the properly implemented abi
+ for stack arguments.
+ * lib/lightning.c: Mark an unused function as such.
+
+2013-04-27 Paulo Andrade <pcpa@gnu.org>
+
+ lib/jit_ia64-cpu.c:
+ Correct immediate range check of integer comparisons when
+ inverting arguments.
+ Correct gei_u that was not decrementing immediate when
+ inverting arguments.
+ Correct b?add* and b?sub* that were not properly updating
+ the result register.
+
+2013-04-27 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64-cpu.c: Correct wrong mapping of 2 instructions
+ in "M-, stop, M-, stop" translation, that was ignoring the
+ last stop (implemented as a nop I- stop).
+
+ * lib/jit_ia64-fpu.c: Properly implement fnorm.s and fnorm.d,
+ as well as the proper integer to float or double conversion.
+
+2013-04-27 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64-cpu.c: Correct bogus implementation of ldr_T
+ for signed integers, that was using ld1.s, ld2.s and ld4.s.
+ The ".s" stands for speculative load, not sign extend.
+
+ * lib/jit_ia64-fpu.c: Correct bogus implementation of ldxr_T
+ for float and double. The third (actually, second) argument
+ is indeed added to the base register, but the base register
+ is modified. The actual M7 implementation was already correct,
+ just the ldxr_f and ldxr_d implementation that was kept in
+ a prototype state, misinterpreting what M7 does.
+
+2013-04-27 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64-cpu.c: Correct X2 pattern matching by preventing
+ it to attempt to require a stop between the L and the X
+ instruction; that is, check the registers and predicates
+ before emitting the L instruction, not after.
+
+ * lib/jit_ia64-fpu.c: Slightly simplify and correct
+ divr_f and divrd_d implementation.
+
+ * check/lightning.c: Add __ia64__ preprocessor define
+ on Itanium.
+
+ * check/alu.inc, check/clobber.tst, check/float.tst: Define
+ several macros conditionally to __ia64__. This is required
+ because __ia64__ jit generation can use way too many memory,
+ due to not implementing instruction reordering to avoid
+ as much as possible "stops", what causes way too many nops
+ to be generated, as well as the fact that division and
+ remainder requires function calls, and float division
+ requires significant code to implement.
+
+2013-04-27 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h: Add new backend specific movr_w_d,
+ movr_d_w and movi_d_w codes as helpers to ia64 varargs
+ functions arguments.
+
+ * lib/jit_ia64-cpu.c:
+ Correct wrong encoding of A5 small integers.
+ Correct define of "mux" instruction modifiers.
+ Correct ordering of arguments and predicates of cmp_xy
+ implementation with immediate arguments; like most other
+ codes with an immediate, the immediate is the second, not
+ the third argument.
+
+ * lib/jit_ia64-fpu.c: Actual implementation of the code
+ to move to/from gpr to/from fpr, to implement varargs abi.
+
+ * lib/jit_ia64.c: Make fpr argument registers not allocatable
+ as temporaries, no need for the extra checks when there are
+ plenty registers.
+
+ * lib/jit_print.c, lib/lightning.c: Minor updates for the
+ new movr_w_d, movr_d_w and movi_d_w codes.
+
+2013-04-26 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c: Correct code to
+ also insert a stop to break an instruction group if a
+ register is written more than once in the same group.
+ This may happen if a register is argument and result of
+ some lightning call (not a real instruction). The most
+ common case should be code in the pattern:
+ movl rn=largenum
+ ...
+ mov rn=smallnum
+ where "rn" would end up holding "largenum".
+ But the problem possibly could happen in other circumstances.
+
+2013-04-26 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_ia64.h, lib/jit_ia64-cpu.c,
+ lib/jit_ia64-fpu.c, lib/jit_ia64.c:
+ Relocate JIT_Rn registers to the local registers, as, like
+ float registers, div/rem and sqrt are implemented as function
+ calls, and may overwrite non saved scratch registers.
+ Change patch_at to receive a jit_code_t instead of a
+ jit_node_t, so that it is easier to "inline" patches when
+ some instruction requires complex code to implement, e.g.
+ uneq and ltgt.
+ Correct arguments to FMA and FMA like instructions that,
+ due to a cut&paste error were passing the wrong argument
+ to the related F- implementation function.
+ Rewrite ltgt to return the proper result if one (or both)
+ of the arguments is unordered.
+
+2013-04-26 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_ia64.h, include/lightning/jit_private.h,
+ lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, lib/jit_ia64.c,
+ lib/lightning.c: Rework code to detect need of a "stop" to
+ also handle predicates, as if a predicate is written, it
+ cannot be read in the same instruction group.
+ Use a single jit_regset_t variable for all registers when
+ checking need for a stop (increment value by 128 for
+ float registers).
+ Correct wrong "subi" implementation, as the code executed
+ is r0=im-r1, not r0=r1-im.
+ Use standard lightning 6 fpr registers, and rework to
+ use callee save float registers, that may be spill/reloaded
+ in prolog/epilog. This is required because some jit
+ instructions implementations need to call functions; currently
+ integer div/mod and float sqrt, what may change the value of
+ scratch float registers.
+ Rework point of "sync" of branches that need to return a
+ patch'able address, because the need for a "stop" before a
+ predicate read causes all branches to be the instruction
+ in slot 0, as there is no template to "stop" and branch
+ in the same instruction "bundle".
+
+2013-04-25 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_ia64.h, lib/jit_ia64-cpu.c,
+ lib/jit_ia64-fpu.c, lib/jit_ia64.c: New files implementing
+ the basic infrastructure of an Itanium port. The code
+ compiles and can generate jit for basic hello world like
+ functions.
+
+ * check/lightning.c, configure.ac, include/lightning.h,
+ include/lightning/Makefile.am, include/lightning/jit_private.h,
+ lib/Makefile.am, lib/lightning.c: Update for the Itanium
+ port.
+
+ * lib/jit_mips-cpu.c, lib/jit_mips.c: Correct typo and
+ make the jit_carry register local to the jit_state_t.
+ This matches code reviewed in the Itanium port, that
+ should use the same base logic to handle carry/borrow.
+
+2013-04-10 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_private.h, lib/jit_arm.c,
+ lib/jit_mips-cpu.c, lib/jit_mips.c, lib/jit_ppc-cpu.c,
+ lib/jit_ppc.c, lib/jit_print.c, lib/jit_sparc-cpu.c,
+ lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86.c,
+ lib/lightning.c: Change all jit_regset macros to take
+ a pointer argument, to avoid structure copies when
+ adding a port to an architecture with more than 64
+ registers.
+
+2013-04-08 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm.c, lib/jit_ppc.c: Do not rely on __clear_cache
+ aligning to the next page boundary the end argument. It may
+ actually truncate it.
+
+2013-03-29 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_private.h, lib/jit_arm.c, lib/jit_memory.c,
+ lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c,
+ lib/lightning.c: Do not start over jit generation if can grow
+ the code buffer with mremap without moving the base pointer.
+
+2013-03-29 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_memory.c: Implement a simple memory allocation wrapper
+ to allow overriding calls to malloc/calloc/realloc/free, as well
+ as ensuring all memory containing pointers is zero or points to
+ allocated memory.
+
+ * include/lightning.h, include/lightning/jit_private.h: Definitions
+ for the memory allocation wrapper.
+
+ * lib/Makefile.am: Update for new jit_memory.c file.
+
+ * lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips.c, lib/jit_note.c,
+ lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c:
+ Use the new memory allocation wrapper code.
+
+2013-03-22 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac, include/lightning/jit_private.h, lib/lightning.c:
+ Remove dependency on gmp. Only a simple bitmap was required, and
+ that was not enough reason to force linking to gmp and possible
+ complications caused by it.
+
+2013-03-10 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h: Add check for __powerpc__ defined
+ in Linux, while Darwin defines __ppc__.
+
+ * include/lightning/jit_ppc.h: Adjust register definitions
+ for Darwin 32 bit and Linux 64 bit ppc usage and/or ABI.
+
+ * include/lightning/jit_private.h: Add proper check for
+ Linux __powerpc__ and an data definition for an workaround
+ to properly handle code that starts with a jump to a "main"
+ label.
+
+ * lib/jit_disasm.c: Add extra disassembler initialization
+ for __powerpc64__.
+
+ * lib/jit_ppc-cpu.c: Add extra macros and functions, and
+ correct/adapt previous ones to handle powerpc64.
+
+ * lib/jit_ppc-fpu.c: Adapt for 64 bit wordsize. Basically
+ add conversion from/to int32/int64 and proper handling of
+ load/store offsets too large for 32 bit.
+
+ * lib/jit_ppc.c: Add calls to 64 bit codes and adaptation
+ for the PowerPC 64 bit Linux ABI.
+
+ * lib/jit_arm.c, lib/jit_mips.c, lib/jit_sparc, lib/jit_x86.c,
+ lib/lightning.c: Correct off by one error when restarting jit
+ of a function due to finding too late that needs to spill/reload
+ some register. Problem was found by accident on a very special
+ condition during PowerPC 64 code adaptation.
+
+2013-03-08 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c: Add missing ppc preprocessor definition.
+
+2013-03-06 Paulo Andrade <pcpa@gnu.org>
+
+ * check/float.tst: Comment out the int to negative infinity
+ test in mips for the moment because not all Loongson agrees
+ on the result.
+
+ * lib/jit_disasm.c: Add a test instead of an assertion
+ when loading symbols for disassembly due to a failure with
+ a simple binutils build in Debian mipsel64.
+
+2013-03-06 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_private.h, lib/jit_arm-cpu.c,
+ lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips-cpu.c,
+ lib/jit_mips.c, lib/jit_note.c, lib/jit_ppc-cpu.c,
+ lib/jit_ppc.c, lib/jit_print.c, lib/jit_sparc-cpu.c,
+ lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86.c,
+ lib/lightning.c: Add an extra structure for data storage
+ during jit generation, and release it after generating
+ jit, to reduce a bit memory usage, and also to make it
+ easier to understand what data is available during
+ jit runtime.
+
+2013-03-06 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Make data and code buffer readonly.
+
+2013-02-20 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Fool proof validate the examples of what
+ an assembly-language programmer would write and correct the
+ wrong sparc example.
+
+2013-02-19 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Add back the SPARC code generation example.
+
+2013-02-19 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c: Remove state flag to work with partial
+ sparc port, by just disassembling if there was incomplete
+ code generation.
+
+ * jit_sparc-cpu.c: Correct wrong range check for immediate
+ integer constants (off by one bit shift).
+ Correct macro implementing equivalent "rd %y, rd" assembly.
+ Implement qmul* and qdiv*.
+
+ * jit_sparc.c: Update for qmul* and qdiv* and remove logic
+ to handle incomplete code generation during sparc port.
+
+2013-02-18 Paulo Andrade <pcpa@gnu.org>
+
+ * check/float.tst: Add sparc to list of known NaN and +-Inf
+ to integer conversion.
+
+ * check/lightning.c: Define __sparc__ to preprocessor in
+ the sparc backend.
+
+ * include/lightning/jit_private.h: Correct wrong definition
+ of emit_stxi_d, that has lived for a long time, but would
+ cause problems whenever needing to spill/reload a float
+ register.
+
+ * include/lightning/jit_sparc.h: Can only use %g2,%g3,%g4
+ for scratch variables, as other "global" registers are
+ reserved for the system, e.g. libc.
+ Reorder float register naming to make it easier to
+ access odd float registers, so that generating code for
+ pusharg and getarg is easier for the IR.
+
+ * lib/jit_mips-cpu.c, lib/jit_ppc-cpu.c: Update to match
+ new code in jit_sparc-cpu.c. It must call jit_get_reg
+ with jit_class_nospill if using the register to move
+ an unconditional branch address to it, as the reload
+ will not happen (actually could happen in the delay
+ slot...)
+
+ * lib/jit_sparc-cpu.c: Correct wrong macro definition for
+ ldxr_s.
+ Properly implement div* and implement rem. Div* needs
+ to use the y register, and rem* needs to be synthesized.
+ Correct b?sub* macro definitions.
+
+ * lib/jit_sparc-fpu.c: Correct reversed float to/from double
+ conversion.
+ Correct wrong jit_get_reg call asking for a gpr and then
+ using the fpr with that number.
+ Correct wrong branch displacement computation for
+ conditional branches.
+
+ * lib/jit_sparc.c: Correct getarg_d and pushargi_d implementation.
+ Add rem* entries to the switch converting IR to machine code.
+
+ * lib/lightning.c: Correct a problem detected when adding
+ the jit_class_nospill flag to jit_get_reg, that was caused
+ when having a branch to an "epilog" node, what would cause
+ the code to think all registers in unknown state were live,
+ while in truth, all registers in unknown state in the
+ "just after return" point are actually dead.
+
+2013-02-17 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_sparc.h, lib/jit_sparc-cpu.c,
+ lib/jit_sparc-fpu.c, lib/jit_sparc.c: New files implementing
+ the basic framework of the sparc port.
+
+ * configure.ac, include/lightning.h, include/lightning/Makefile.am,
+ include/lightning/jit_private.h, lib/jit_disasm.c: Update
+ for the sparc port framework.
+
+ * lib/jit_mips.c: Correct reversed retr/reti logic.
+
+ * lib/jit_ppc.c: Correct misspelled __LITTLE_ENDIAN.
+
+ * lib/lightning.c: Always do byte hashing in hash_data, because
+ the logic to "compress" strings causes large pointers to not
+ be guaranteed aligned at 4 byte boundaries.
+ Update for the sparc port framework.
+
+2013-02-11 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm.c: Correct jit_pushargi_f in the arm hardfp abi.
+ Most of the logic uses even numbered register numbers, so that
+ a float and a double can be used in the same register, but
+ the abi requires packing the float arguments, so jit_pushargi_f
+ needs to allocate a temporary register to modify only the
+ proper register argument (or be very smart to push two
+ immediate arguments if applicable).
+
+2013-02-11 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/lightning.c: Implement the new
+ jit_clear_state and jit_destroy_state calls. jit_clear_state
+ releases all memory not required during jit_execution; that
+ is, leaves only the mmap'ed data and code buffers allocated.
+ jit_destroy_state releases the mmap'ed buffers as well as
+ the jit_state_t object itself, that holds pointers to the
+ code and data buffers, as well as annotation pointers (for
+ disassembly or backtrace) in the data buffer.
+
+ * lib/jit_note.c: Correct invalid vector offset access.
+
+ * check/ccall.c, check/lightning.c, doc/ifib.c, doc/incr.c,
+ doc/printf.c, doc/rfib.c, doc/rpn.c: Use the new jit_clear_state
+ and jit_destroy_state calls, to demonstrate the new code to
+ release all jit memory.
+
+ * doc/body.texi: Add basic documentation and usage description
+ of jit_clear_state and jit_destroy_state.
+
+2013-02-11 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_private.h, lib/jit_note.c, lib/lightning.c:
+ Store all annotation information in the mmap'ed area reserved for
+ read only data. This adds code to not allocate memory for jit_note_t
+ objects, and to relocate jit_line_t objects and its contents after
+ calculating annotation information. The jit_line_t objects are
+ relocated because it is not possible to always calculate before
+ hand data layout because note information may be extended or
+ redundant entries removed, as well as allowed to be added in
+ non sequential order.
+ A bug was also corrected in _jit_set_note, that was causing it
+ to allocate new jit_line_t objects when not needed. It was still
+ working correctly, but allocating way more memory than required.
+
+2013-02-05 Paulo Andrade <pcpa@gnu.org>
+
+ *include/lightning.h, lib/lightning.c: Add the new jit_live code
+ to explicitly mark a register as live. It is required to avoid
+ assuming functions always return a value in the gpr and fpr return
+ register, and to avoid the need of some very specialized codes
+ that vary too much from backend to backend, to instruct the
+ optimization code the return register is live.
+
+ * lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c,
+ lib/jit_x86.c: Update for the new jit_live code.
+
+ * check/ret.ok, check/ret.tst: New files implementing a simple
+ test case that would previously fail at least in ix86/x86_64.
+
+ * check/Makefile.am: Update for new "ret" test case.
+
+2013-02-05 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Validate and correct
+ problems in the qmul and qdiv ppc implementation.
+
+2013-02-04 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, include/lightning/jit_private.h,
+ lib/jit_arm-cpu.c, lib/jit_arm.c, lib/jit_mips-cpu.c,
+ lib/jit_mips.c, lib/jit_ppc-cpu.c, lib/jit_ppc.c,
+ lib/jit_x86-cpu.c, lib/jit_x86.c, lib/lightning.c:
+ Implement the new qmul and qdiv instructions that return signed
+ and unsigned lo/hi multiplication result and div/rem division result.
+ These should be useful for jit translation of code that needs to
+ know if a multiplication overflows (no branch opcode added) or if
+ a division is exact (easy check if remainder is zero).
+
+ * check/lightning.c, lib/jit_print.c, check/Makefile.am,
+ check/all.tst: Update for the new qmul and qdiv instructions.
+
+ * check/qalu.inc, check/qalu_div.ok, check/qalu_div.tst,
+ check/qalu_mul.ok, check/qalu_mul.tst: New files implementing
+ simple test cases for qmul and qdiv.
+
+2013-01-30 Paulo Andrade <pcpa@gnu.org>
+
+ * doc/body.texi: Correct "jmpi" description that incorrectly
+ told it was possible to pass any address as jump target. The
+ only way to do that is "movi+jmpr".
+
+2013-01-30 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-cpu.c: Correct undefined behavior code.
+ http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143
+
+2013-01-29 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac: Use AC_CONFIG_HEADERS instead of AC_CONFIG_HEADER
+ to have HAVE_CONFIG_H defined with latest aclocal.
+
+ * include/lightning/jit_private.h, lib/lightning.c: Add new
+ abstraction to use an heuristic to calculate amount of space
+ required for jit generation, and code to reallocate buffer if
+ did miscalculate it.
+
+ * lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_x86.c:
+ Update to use new code to estimate and resize of required buffer
+ for jit code.
+
+ * lib/jit_x86-cpu.c: Minor cosmetic change to avoid adding a
+ non required rex prefix when calling a function pointer stored
+ in a register.
+
+2013-01-24 Paulo Andrade <pcpa@gnu.org>
+
+ * check/Makefile.am: "make debug" target should pass only
+ the main test tool program as argument for running gdb
+
+ * configure.ac: Add the --enable-assertions options.
+
+ * doc/Makefile.am, doc/body.texi, doc/lightning.texi:
+ Major rewrite of the documentation to match the current
+ implementation.
+
+ * doc/version.texi: Automatic date update.
+
+ * doc/ifib.c, doc/incr.c, doc/printf.c, doc/rfib.c, doc/rpn.c:
+ Implementation of the documentation examples, that are also
+ compiled during a normal build.
+
+ * doc/p-lightning.texi, doc/porting.texi, doc/toc.texi,
+ doc/u-lightning.texi, doc/using.texi: These files were
+ renamed in the documentation rewrite, as the documentation
+ was significantly trimmed due to full removal of the porting
+ chapters. Better porting documentation should be added but
+ for the moment it was just removed the documentation not
+ matching the implementation.
+
+2013-01-18 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_note.c: Correct bounds check and wrong code keeping
+ a pointer that could be changed after a realloc call.
+
+2013-01-18 Paulo Andrade <pcpa@gnu.org>
+
+ * check/3to2.tst, check/add.tst, check/allocai.tst, check/bp.tst,
+ check/call.tst, check/ccall.c, check/clobber.tst, check/divi.tst,
+ check/fib.tst, check/ldsti.tst, check/ldstr-c.tst, check/ldstr.tst,
+ check/ldstxi-c.tst, check/ldstxi.tst, check/ldstxr-c.tst,
+ check/ldstxr.tst, check/lightning.c, check/rpn.tst, check/stack.tst,
+ check/varargs.tst, include/lightning.h,
+ include/lightning/jit_private.h, lib/jit_arm.c, lib/jit_disasm.c,
+ lib/jit_mips.c, lib/jit_note.c, lib/jit_ppc.c, lib/jit_print.c,
+ lib/jit_x86.c, lib/lightning.c: Extend the "jit_note" abstraction
+ with the new "jit_name" call, that receives a string argument, and
+ should usually be called to mark boundaries of functions of code
+ generating jit (that is, it is not expected that the language
+ generating jit map its functions to jit functions).
+
+2013-01-17 Paulo Andrade <pcpa@gnu.org>
+
+ * check/add.tst, check/allocai.tst, check/bp.tst, check/divi.tst,
+ check/fib.tst, check/lightning.c, include/lightning/jit_arm.h,
+ include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
+ include/lightning/jit_private.h, include/lightning/jit_x86.h:
+ Make JIT_RET, JIT_FRET and JIT_SP private. These should not be
+ used in any operations due to frequently having special
+ constraints (usually JIT_FRET). JIT_FP must be made available
+ because it must be used as the base register to access stack
+ space allocated with jit_allocai.
+
+2013-01-14 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/lightning.c: Add an extra align
+ argument to the jit_data call (that should be made private),
+ so that it should not align strings at 8 bytes.
+ Correct the jit_note call to include the null ending byte
+ when adding label/note names to the "jit data section".
+
+2013-01-11 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_note.c: New file implementing a simple string+integer
+ annotation, that should be used to map filename and line number
+ to offsets in the generated jit.
+
+ * include/lightning.h, lib/lightning.c: Update for the new
+ note code.
+ Add an extra mandatory argument to init_jit, that is used
+ as argument to bfd_openr.
+ Change from generic void* to char* the argument to jit_note
+ and add an extra integer argument, to map to filename and
+ line number.
+
+ * check/ccall.c, check/lightning.c, include/lightning/jit_private.h,
+ lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips.c, lib/jit_ppc.c,
+ lib/jit_print.c, lib/jit_x86.c: lib/Makefile.am: Update for the
+ new annotation code.
+
+ * configure.ac, check/Makefile.am: Update to work with latest
+ automake.
+
+2013-01-09 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/jit_arm.c, jit_mips-fpu.c,
+ lib/jit_mips.c, lib/jit_print.c, lib/jit_x86.c, lib/lightning.c:
+ Remove the jit_code_getarg_{f,d} and jit_code_pusharg{i,r}_{f,d}
+ calls, replacing them with the new, internal only, jit_movr_w_f,
+ jit_mov{r,i}_f_w, jit_movr_ww_d, and jit_mov{i,r}_d_ww, that
+ better describe the operation being done, and allow removing
+ the hackish code to detect special conditions for arm when
+ moving from/to vfp from/to a grp register pair.
+ Rename jit_code_retval_{f,d} to jit_code_x86_retval_{f,d} as
+ it is specific to 32 bit x86, and used to move abi return
+ value in x87 register to a sse register.
+
+2013-01-05 Paulo Andrade <pcpa@gnu.org>
+
+ * check/cccall.c, check/ccall.ok: New test case to validate
+ interleaved calls from/to C code and jit.
+
+ * check/Makefile.am: Update for the new ccall test case.
+
+ * include/lightning.h, lib/lightning.c: Add the new jit_address
+ call that returns the real/final address of a "note" in the
+ generated jit. It requires a jit_node_t as returned by the
+ jit_note call, and is only valid after calling jit_emit.
+ Add an intermediate solution to properly handle arm
+ soft and softfp modes that move a double to an integer register
+ pair. Currently it just adds extra tests for the condition,
+ but the proper solution should be to have extra lightning
+ codes for these conditions, codes which should be only used
+ by the backends that need it, and merged with the existing
+ jit_pusharg*_{f,d}.
+
+ * include/lightning/jit_private.h: Add new jit_state_t flag
+ to know it finished jit_emit, so that calls to jit_address
+ are valid.
+
+ * lib/jit_mips.c: Correct abi implementation so that the
+ new ccall test case pass. Major problem was using
+ _jit->function.self.arg{i,f} as boolean values, but that
+ would cause lightning.c:patch_registers() to incorrectly
+ assume only one register was used as argument when calling
+ jit_regarg_p(); _jit->function.self.arg{i,f} must be the
+ number of registers used as arguments (in all backends).
+
+ * lib/jit_x86.c: Add workaround, by marking %rax as used,
+ to a special condition, when running out of registers and the
+ allocator trying to spill and reload %rax, but %rax was used
+ as a pointer to a function, what would cause the reload to
+ destroy the return value. This condition can be better
+ generalized, but the current solution is good enough.
+
+ * include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c, lib/jit_ppc.c:
+ Rewrite logic to handle arguments, as the original code was
+ written based on a SysV pdf about the generic powerpc ABI,
+ what did "invent" a new abi for the previous test cases, but
+ failed in the new ccall test in Darwin PPC. Now it properly
+ handles 13 float registers for arguments, as well as proper
+ computation of stack offsets when running out of registers
+ for arguments.
+
+2013-01-02 Paulo Andrade <pcpa@gnu.org>
+
+ * check/float.tst: Correct test case to match ppc also
+ converting positive infinity to 0x7fffffff.
+
+ * lib/jit_arm-swf.c: Correct typos with double underscores.
+
+ * lib/lightning.c: Correct remaining wrong reverse jump logic.
+
+2012-12-29 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Correct both, wrong and confusing logic
+ to compute the reverse of a jump. Now it properly matches
+ C semantics for "eq" (==) and "ne" (!=) and correct computation
+ of reverse of "uneq" as "gt".
+
+ * check/branch.tst: Update "ne" float branch check that
+ previously happened to be wrongly tested with a NaN argument.
+
+2012-12-29 Paulo Andrade <pcpa@gnu.org>
+
+ * check/float.ok, check/float.tst: New test cases implementing
+ extensive validation of float comparison and branch code
+ generation as well as integer conversion, involving NaN and
+ [+-]Inf.
+
+ * lib/jit_arm-swf.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
+ Correct bugs found by new float test case.
+
+ * lib/jit_x86.c: Correct cut&paste error added in commit to
+ convert jit_arg* return value to a jit_node_t*, that would
+ cause it to not properly handle double arguments in ix86.
+
+ * check/Makefile.am: Update for the new test case.
+
+2012-12-28 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c, include/lightning.h, lib/jit_arm.c,
+ lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c, lib/jit_x86.c,
+ lib/lightning.c: Change return value of jit_arg{,_f,_d} to
+ a jit_node_t* object, that should be used as argument to
+ jit_getarg_{c,uc,s,us,i,ui,l,f,d}. This just requires changing
+ from jit_int32_t to jit_pointer_t (or jit_node_t*) the "handle"
+ for the getarg calls, with the benefit that it makes it easy
+ to implement patching of the stack address of non register
+ arguments, this way allowing to implement variable size stack
+ frames if applicable; useful if there are too many registers and
+ jit functions uses only a few callee save registers.
+
+2012-12-27 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm.c, lib/jit_mips-cpu.c, lib/jit_mips.c: Correct
+ regressions when patching jit_calli for a forward function.
+
+ * lib/jit_ppc-cpu.c: Correct wrong arguments to ANDI opcode
+ in jit_getarg_u{c,s} implementation.
+
+2012-12-23 Paulo Andrade <pcpa@gnu.org>
+
+ * check/call.ok, check/call.tst: New test cases to validate
+ simple typed argument and return values in function calls.
+
+ * check/lightning.c: Properly handle jit_movi of labels for
+ backward and forward code labels.
+
+ * check/Makefile.am: Update for new test case.
+
+2012-12-23 Paulo Andrade <pcpa@gnu.org>
+
+ * check/carry.ok, check/carry.tst: New test case to validate
+ carry condition handling.
+
+ * check/Makefile.am: Update for new test case.
+
+2012-12-22 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Implement logic for
+ jit_htonr for big endian, so that ppc (big endian) pass the
+ new clobber.tst test case.
+
+2012-12-22 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm.c: Correct use of wrong argument offset
+ variable in armv7l or float/double argument for varargs
+ function in armv7hl.
+ Correct jit_getarg* logic in software float mode to
+ match expected behavior in other backends, that is, if
+ a function is not called, it is safe to use a few lightning
+ calls before a next jit_getarg* call, as done in the test
+ case check/stack.tst. The proper solution should be to
+ extend the parser in lib/lightning.c to check if there is
+ some float operation that will call some (libgcc?) function,
+ but software float arm should be a very uncommon backend for
+ lightning, so, just load the already in place arguments
+ saved to stack, assuming the register argument was clobbered
+ (what should not be the case most times...).
+
+2012-12-22 Paulo Andrade <pcpa@gnu.org>
+
+ * check/clobber.ok, check/clobber.tst: New test case doing
+ extensive validation tests to ensure registers not used in
+ a operation are not clobbered.
+
+ * check/Makefile.am: Update for new test case.
+
+2012-12-21 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/lightning.c: Partially rewrite/revert code to compute
+ initial register live state at the start of a basic block.
+ The original logic was corrupted when adding optimizations
+ to do as few computations as possible in jit_update. The
+ reglive field must be always a known set of live registers
+ at the start of a basic block. The value that was incorrect
+ was the regmask field, that must be the set of registers
+ that are in unknown state, because they are not known live,
+ neither set (or possibly not set) in the basic block, and
+ *must* store the state at the start of the basic block.
+
+2012-12-20 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_ppc.h: Correct mismatch of JIT_F{1,5}
+ with enum codes, that were correct, and returned by jit_f().
+
+ * lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c: Properly
+ implement and better describe values when generating stack
+ frames.
+
+2012-12-18 Paulo Andrade <pcpa@gnu.org>
+
+ * check/stack.ok, check/stack.tst: New files to test data
+ integrity on a deep chain of stack frames.
+
+ * 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: Calculate _jit->function->stack
+ in the emit stage, otherwise it will calculate it wrong if
+ need to jit_allocai space to spill registers.
+
+ * lib/lightning.c: Correct wrong offset when updating the
+ "current" jit function pointer in the code that may need to
+ allocate stack space to spill registers.
+
+ * check/lightning.c: Correct off by one data space check.
+
+ * check/Makefile.am: Update for new test case.
+
+2012-12-17 Paulo Andrade <pcpa@gnu.org>
+
+ * check/fop_abs.ok, check/fop_abs.tst, check/fop_sqrt.ok,
+ check/fop_sqrt.tst: New files implementing simple test cases
+ for the extra float operations.
+
+ * check/Makefile.am: Update for new test cases.
+
+ * check/alu.inc: Add an extra macro to check for unordered
+ equality on tests where it is expected to use NaN as an
+ argument.
+
+ * check/lightning.c: Minor change for proper/common argument
+ syntax handling ommiting arguments to options.
+
+2012-12-17 Paulo Andrade <pcpa@gnu.org>
+
+ * check/Makefile.am: Automatically generate pattern list
+ of tests with alternate jit generation options. This should
+ prevent typos and needing to change multiple places after
+ a change.
+
+2012-12-14 Paulo Andrade <pcpa@gnu.org>
+
+ * check/lightning.c: Remove the ".cpu name value" syntax,
+ as it was not able to do proper changes before the jit
+ internal data structure was initialized. Now it supports
+ several getopt options to force using different jit
+ generation options, effectively replacing the previous
+ syntax.
+
+ * check/run-test: Add simple extra logic to handle differently
+ named test scripts, used to test things like x87 coprocessor
+ in ix86, and arm instruction set or software float in armv7l.
+
+ * configure.ac: Add some AC_RUN_IFELSE calls to figure at
+ compile time if can test different code generation options,
+ and update Makefile generation accordingly.
+
+ * check/Makefile.am, lib/jit_arm.c, lib/jit_x86.c: Update to
+ properly work with the test tool updating the jit_cpu global
+ information.
+
+ * check/check.arm.sh, check/check.swf.sh, check/check.x87.sh:
+ New wrapper files passing -mthumb=0, mvfp=0 and -mx87=1 to
+ the test tool, if applicable, so that it can validate alternate
+ code generation options on test hosts that support them.
+
+2012-12-14 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-x87.c, lib/jit_x86.c: Correct test cases in ix86
+ when using the x87 coprocessor instead of sse2+.
+
+2012-12-14 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, include/lightning/jit_private.h,
+ lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_x86.c,
+ lib/lightning.c: Make jit_ellipsis implementation not
+ backend specific. It is not intended to handle va_list
+ like objects at runtime, as jit_arg* and jit_getarg*
+ return constant values resolved at parse time, so, effectively
+ it is not possible to create printf like jit functions, as
+ there is no va_start, va_arg, va_end, etc, abstraction. This
+ limitation should be kept for the sake of making new ports
+ easier.
+
+2012-12-14 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/lightning.c: Add two extra wrapper
+ functions to avoid need for excess pointer to/from word casts.
+
+ * check/lightning.c: Only need for pointer to/from word cast
+ now is jit_movi, update accordingly.
+
+2012-12-13 Paulo Andrade <pcpa@gnu.org>
+
+ * check/varargs.ok, check/varargs.tst: New test cases implementing
+ simple varargs calls with a large amount of arguments to exercise
+ excess arguments on stack.
+
+ * include/lightning.h: Include config.h if HAVE_CONFIG_H is
+ defined.
+
+ * lib/jit_arm.c: Allocate a fpr register, not a gpr one for
+ temporary when pushing varargs arguments in the stack.
+
+ * lib/jit_arm-swf.c: Correct code changing the wrong offset
+ in jit_absr_d and jit_negr_d in software float.
+
+ * lib/jit_mips.c: Correct calculation of offsets of arguments
+ on stack.
+
+ * lib/jit_ppc.c: Correct bogus logic for "next" offset of arguments
+ on stack and adjust for fixed offset of stack arguments.
+
+2012-12-12 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning.h, lib/jit_arm.c, lib/jit_mips.c,
+ lib/jit_ppc.c, lib/jit_x86.c, lib/lightning.c: Change jit_prepare
+ to no longer receive an argument. If receiving an argument, it
+ should be an ABI specifier, not a boolean if varargs or not,
+ and add the new jit_ellipsis call, to specify where the
+ ellipsis is in the C prototype of the function being called.
+ Note that currently it is not supported to define varargs
+ functions and it will be ignored if calling jit_ellipsis not
+ in a prepare/finish* block, but this should be addressed.
+
+ * check/allocai.tst, check/alu_add.tst, check/alu_and.tst,
+ check/alu_com.tst, check/alu_div.tst, check/alu_lsh.tst,
+ check/alu_mul.tst, check/alu_neg.tst, check/alu_or.tst,
+ check/alu_rem.tst, check/alu_rsh.tst, check/alu_sub.tst,
+ check/alu_xor.tst, check/alux_add.tst, check/alux_sub.tst,
+ check/bp.tst, check/branch.tst, check/cvt.tst, check/divi.tst,
+ check/fib.tst, check/ldsti.tst, check/ldstr-c.tst,
+ check/ldstr.tst, check/ldstxi-c.tst, check/ldstxi.tst,
+ check/ldstxr-c.tst, check/ldstxr.tst, check/rpn.tst,
+ check/lightning.c: Update for the change to jit_prepare and
+ addition of jit_ellipsis.
+
+2012-12-11 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ppc-cpu.c: Make movr a function that checks arguments
+ so that other code can safely assume it is a noop if src and dst
+ are the same register.
+ Implement rem{r,i}{,_u} as a div{,u}/mul/sub.
+ Correct ANDIS, ORIS and XORIS calls to cast the argument to
+ unsigned before the shift to avoid an assertion if the argument
+ had the topmost bit set.
+ Implement lshi, rshi and rshi_u as functions to test for a
+ zero argument, that would otherwise trigger an assertion when
+ computing the shift value.
+ Do a simple implementation of bm{s,c}{r,i} with a temporary,
+ "andr" of arguments and jump based on comparison with zero.
+ Correct typo in ldxi_c.
+
+ * lib/jit_ppc-fpu.c: Correct wrong arguments to FDIV* and STF*.
+
+ * lib/jit_ppc.c: Correct wrong check for 6 instead of 8 integer
+ arguments in registers. If calling a varargs function and
+ passing a float or double argument, also either store the
+ value in the stack or in integer registers, as varargs functions
+ do not fetch it from float registers.
+ Add "case" for new functions and incorrectly missing ones.
+ Call libgcc's __clear_cache, that should know what to do
+ if the hardware needs flushing cache before execution.
+
+ * lib/lightning.c: Do a simple/trivial logic in jit_regset_scan1,
+ that should make it easier for the compiler to optimize it, and
+ that also corrects the previously wrong code for big endian, and
+ that was causing problems in ppc due to not saving all callee save
+ registers as it was not "finding" them in the regset due to the
+ little endian assumption bug.
+
+2012-12-11 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac: Only default to using the builtin disassembler
+ if on GNU/Linux. This should be temporary, due to requiring
+ /proc/self/exe.
+ Correctly check $target_cpu for powerpc.
+
+ * include/lightning/jit_ppc.h: Correctly implement jit_v_num.
+
+ * include/lightning/jit_private.h: Declare proper prototype
+ for jit_init_debug and jit_finish_debug.
+
+ * lib/jit_ppc-cpu.c: Remove code to save/restore callee save
+ float registers, as it is not required since those float
+ registers are not usable currently.
+ Change prolog and epilog generation to, at least comparing
+ code, match what gcc generates in "gcc -O0", but it is still
+ failing in Darwin PPC, apparently due to the __clear_cache
+ call not being enough, as frequently it will also fail to
+ execute, and the code buffer is all zeroes.
+
+ * lib/lightning.c: Do not fail in jit_regset_scan1 calls due
+ to passing 64 as argument on computers with 64 registers.
+
+2012-12-10 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_mips-cpu.c: Correct all current test cases.
+ Call the "xori" not the "XORI" macro for jit_xori implementation,
+ as the XORI macro handles only 16 bit unsigned values.
+ Call the "movr" macro, not the "movi" macro in the special
+ case of adding or subtracting zero.
+ Use the proper temporary register in the jit_andr implementation.
+
+2012-12-09 Paulo Andrade <pcpa@gnu.org>
+
+ * check/alu.inc, check/alu_add.ok, check/alu_add.tst,
+ check/alu_and.ok, check/alu_and.tst, check/alu_com.ok,
+ check/alu_com.tst, check/alu_div.ok, check/alu_div.tst,
+ check/alu_lsh.ok, check/alu_lsh.tst, check/alu_mul.ok,
+ check/alu_mul.tst, check/alu_neg.ok, check/alu_neg.tst,
+ check/alu_or.ok, check/alu_or.tst, check/alu_rem.ok,
+ check/alu_rem.tst, check/alu_rsh.ok, check/alu_rsh.tst,
+ check/alu_sub.ok, check/alu_sub.tst, check/alu_xor.ok,
+ check/alu_xor.tst, check/alux_add.ok, check/alux_add.tst,
+ check/alux_sub.ok, check/alux_sub.tst, check/branch.ok,
+ check/branch.tst: New test cases for arithmetic and branch
+ tests.
+
+ * check/Makefile.am: Update for new test cases.
+
+ * include/lightning/jit_private.h: Make the jit_reg_free_p
+ macro shared by all backends. Previously was added for the
+ arm backend, but is useful in the x86_64 backend when checking
+ state of "special purpose register".
+ Also add the new jit_class_named register class, that must be
+ or'ed with the register value if calling jit_get_reg expecting
+ an specific value, because the specific register value may be
+ zero, that previously was treated as no register requested.
+
+ * lib/jit_arm-cpu.c: Correct argument order for T2_MVN.
+
+ * lib/jit_arm-swf.c: Call the proper function for double
+ divide. The "software float" implementation just calls
+ libgcc functions.
+
+ * lib/jit_arm.c: Return float/double values in the float
+ register if using the hard float ABI.
+
+ * lib/jit_x86-cpu.c: Change the can_sign_extend_int_p macro
+ to not include -0x80000000L, because there is code that
+ "abuses" it and thinks it can negate the immediate value
+ after calling that macro.
+ Correct implementation of jit_subi that had a wrong code
+ patch logic doing subtraction with reversed arguments.
+ Correct REX prefix calculation in the jit_muli implementation.
+ Correct logic to get/unget %*ax and %*dx registers in divremr
+ and divremi.
+ Correct divremi that was using the symbolic, unique %*ax
+ value in on place (not using the _REGNO name suffix).
+ Correct cut&paste error causing it to use "xor" instead of
+ "or" in one code path of the jit_ori implementation.
+ Correct several flaws when clobbering registers and/or when
+ one of the arguments was %*cx in the rotshr wrapper function
+ implementing most shift operations.
+
+ * lib/lightning.c: No longer expect that the backend be smart
+ enough to know what to do when asking for a named register
+ if that register is already an argument or is live. It fails
+ if it is an argument, or if register is live, fails if cannot
+ spill.
+ No longer incorrectly assume that eqr_{f,d} and ltgr_{f,d} are
+ safe to inverse value tests in jump thread optimization.
+
+2012-12-05 Paulo Andrade <pcpa@gnu.org>
+
+ * check/Makefile.am, check/cvt.ok, check/cvt.tst: Add new
+ "cvt" test case to test conversion from/to int/float types.
+
+ * check/lightning.c: Only define truncr_{f,d}_l in 64 bit mode.
+
+ * include/lightning.h: Correct typo that caused it to define
+ jit_truncr_{f,d}_l in 32 bit mode.
+
+ * lib/jit_arm-cpu.c: Avoid assertion failure in the signed/unsigned
+ extend opcodes generation as it shares an interface for 3 argument
+ opcode generation.
+
+ * lib/jit_x86-cpu.c: Correct wrong argument passed to
+ jit_unget_reg in the andi implementation and wrong byte
+ unsigned extend code generation.
+
+ * lib/jit_x86-sse.c: Correct conversion from "word" to float or
+ double as is dependent on wordsize.
+
+2012-12-05 Paulo Andrade <pcpa@gnu.org>
+
+ * check/ldstr-c.ok, check/ldstr-c.tst, check/ldstxi-c.ok,
+ check/ldstxi-c.tst, check/ldstxr-c.ok, check/ldstxr-c.tst:
+ New test case files testing load clobbering the base and/or
+ index register;
+
+ * check/ldst.inc: New file with common definition for all the
+ ldst* test cases.
+
+ check/Makefile.am, check/ldsti.tst, check/ldstr.tst,
+ check/ldstxi.tst, check/ldstxr.tst: Update for new common
+ definitions file and new register clobber ldst tests.
+
+2012-12-05 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_mips-fpu.c: Correct wrong register order in stxr_{f,d}
+ in the mips backend.
+
+2012-12-05 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_arm-vfp.c: Correct regression found in armv7l with
+ latest test cases.
+
+2012-12-05 Paulo Andrade <pcpa@gnu.org>
+
+ * check/ldstxi.tst, check/ldstxr.tst: Correct wrong argument
+ order for 32 bit mode tests.
+
+ * configure.ac: Correct check for ix86 target_cpu.
+
+2012-12-05 Paulo Andrade <pcpa@gnu.org>
+
+ * check/ldstr.ok, check/ldstr.tst, check/ldsti.ok,
+ check/ldsti.tst, check/ldstxr.ok, check/ldstxr.tst,
+ check/ldstxi.ok, check/ldstxi.tst:
+ New test case files exercising a very large amount of
+ register combinations to verify load/store implementation.
+
+ * check/Makefile.am: Update for new test cases.
+
+ * lib/jit_x86-cpu.c: Correct wrong argument order when
+ computing REX prefix for {ld,st}r_T codes;
+
+2012-12-04 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_mips-fpu.c, lib/jit_mips.c: Implement missing mips
+ jit_sqrtr_{f,d} codes.
+
+ * check/all.tst, include/lightning.h, lib/jit_print.c: Change
+ declaration order and call order in all.tst of {add,sub}c and
+ {add,sub}x. *c must be called before to set the carry and *x
+ second to use the carry and keep it set. The wrong call order
+ was causing all.tst to fail in mips, where a register is
+ allocated to keep a global carry state.
+
+2012-12-04 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
+ lib/jit_mips-fpu.c, lib/jit_mips.c: Correct float/double
+ argument handling and make the mips backend pass the initial
+ test cases.
+
+ * include/lightning.h, ib/jit_print.c, lib/lightning.c:
+ Add extra enum values for argument handling functions that
+ could not be abstracted to the current codes, that is, when
+ float values need to move from/to gpr from/to fpr. It would
+ be more tempting to add such primitives, but they would have
+ wordsize limitations, and it is not expected to add codes
+ with one gpr argument for 64 bit and two for 32 bit.
+
+ * lib/jit_ppc.c: Check _jit->function before calling jit_epilog()
+ to avoid a runtime exception.
+
+2012-12-04 Paulo Andrade <pcpa@gnu.org>
+
+ * include/lightning/jit_mips.h, lib/jit_mips.c: Update to
+ make the mips backend compile in a qemu image.
+
+ * lib/jit_ppc.c: Minor adaptations to help in having the
+ ppc backend compilable.
+
+2012-12-03 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac, include/lightning/jit_private.h, lib/jit_arm-cpu.c,
+ lib/jit_arm-swf.c, lib/jit_arm.c, check/Makefile.am: Correct
+ implementation of the arm backend port to build and pass the
+ current test cases. Tested on armv7 with softfp abi.
+
+ * lib/jit_disasm.c: Rename and change prototype of static
+ disassemble function as in the arm backend it is required
+ to access state information stored in the jit_state_t object.
+
+ * check/3to2.tst, check/add.tst: Correct test case code assuming
+ JIT_RO and JIT_RET are the same, and even if they are the same,
+ the logic was incorrect because it must always call jit_retval*
+ to fetch a function call return before any other instruction.
+ The arm backend hash a special condition if jit_retval is not
+ called, because "r0" is not JIT_R0, but is JIT_RET and *also*
+ the first argument for a called function, so JIT_RET must be
+ only used as an argument to jit_retval.
+
+2012-12-03 Paulo Andrade <pcpa@gnu.org>
+
+ * 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.
+
+2012-12-03 Paulo Andrade <pcpa@gnu.org>
+
+ * configure.ac, check/Makefile.am, check/check.sh,
+ doc/Makefile.am, include/lightning/Makefile.am,
+ lib/Makefile.am: Correct make distcheck.
+
+2012-12-02 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_ppc.c: Assign copyright ownership to FSF.
+
+ * lib/jit_x86-cpu.c: Correct integer multiplication that was
+ generating code with reversed register arguments.
+
+ * check/rpn.ok, check/rpn.tst: New test case file.
+
+2012-12-02 Paulo Andrade <pcpa@gnu.org>
+
+ * lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
+ Actually change copyright owner to FSF as avertised.
+
+ * lib/jit_arm-cpu.c, lib/jit_arm-swf.c,
+ lib/jit_arm-vfp.c, lib/jit_arm.c,
+ lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips.c,
+ lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c: New
+ files implementing initial code different jit backends.
+
+ * include/lightning/jit_private.h: Add extra field to the
+ private jit_patch_t type, required by the arm port.
+
+ * lib/Makefile.am: Update for the new backend implementation
+ files.
+
+2012-12-02 Paulo Andrade <pcpa@gnu.org>
+
+ * check/Makefile.am: Add proper "make clean" rule and missing
+ check.sh to EXTRA_DIST.
+
+2012-12-02 Paulo Andrade <pcpa@gnu.org>
+
+ * .gitignore: Update pattern of ignored files.
+
+ * check/Makefile.am: Add rule to build liblightning.la dependency
+ in case of running "make check" before building the library.
+
+2012-12-02 Paulo Andrade <pcpa@gnu.org>
+
+ * lightning/Makefile.am, lightning/asm-common.h,
+ lightning/core-common.h, lightning/fp-common.h,
+ lightning/funcs-common.h, lightning/i386/Makefile.frag,
+ lightning/i386/asm-32.h, lightning/i386/asm-64.h,
+ lightning/i386/asm.h, lightning/i386/core-32.h,
+ lightning/i386/core-64.h, lightning/i386/core.h,
+ lightning/i386/fp-32.h, lightning/i386/fp-64.h,
+ lightning/i386/fp.h, lightning/i386/funcs.h,
+ lightning/ppc/asm.h, lightning/ppc/core.h,
+ lightning/ppc/fp.h, lightning/ppc/funcs.h,
+ lightning/sparc/asm.h, lightning/sparc/core.h,
+ lightning/sparc/fp.h, lightning/sparc/funcs.h:
+ Removed. The core logic is used in the new code, and new mips
+ and arm ports will be added. At first, sparc will not be
+ supported as it has not yet been ported to the new engine.
+
+2012-12-02 Paulo Andrade <pcpa@gnu.org>
+
+ * tests/Makefile.am, tests/3to2.c, tests/3to2.ok, tests/add.c,
+ tests/add.ok, tests/allocai.c, tests/allocai.ok, tests/bp.c,
+ tests/bp.ok, tests/divi.c, tests/divi.ok, tests/fib.c, tests/fib.ok,
+ tests/fibdelay.c, tests/fibdelay.ok, tests/fibit.c, tests/fibit.ok,
+ tests/funcfp.c, tests/funcfp.ok, tests/incr.c, tests/incr.ok,
+ tests/ldst.c, tests/ldst.ok, tests/ldxi.c, tests/ldxi.ok,
+ tests/modi.c, tests/modi.ok, tests/movi.c, tests/movi.ok,
+ tests/printf.c, tests/printf.ok, tests/printf2.c, tests/printf2.ok,
+ tests/ret.c, tests/ret.ok, tests/rpn.c, tests/rpn.ok, tests/rpnfp.c,
+ tests/rpnfp.ok, tests/sete.c, tests/sete.ok, tests/testfp.c,
+ tests/testfp.ok, tests-run-test: Removed previous test suite, in
+ favor of a newer one in the check subdirectory.
+
+ * check/3to2.ok, check/3to2.tst, check/add.ok, check/add.tst,
+ check/allocai.ok, check/allocai.tst, check/bp.ok, check/bp.tst,
+ check/divi.ok, check/divi.tst, check/fib.ok, check/fib.tst:
+ New sample input for the new test program, loosely matching
+ several of the previous test cases.
+
+ * check/Makefile.am: New test suite makefile.
+
+ * check/check.sh, check/run-test: New wrapper files for the
+ new test suite.
+
+ * check/lightning.c: New file. The main driver of the new test
+ suite, that compiles to a parser of a very simple assembly like
+ language, generates jit and executes it.
+
+ * check/all.tst: New file. A generic debug and sample test file
+ with a directive to prevent it from being executed, and useful to
+ read disassembly of all possible instructions, using a fixed set
+ of registers.
+
+ * include/Makefile.am, include/lightning.h,
+ include/lightning/Makefile.am, include/lightning/jit_arm.h,
+ include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
+ include/lightning/jit_private.h, include/lightning/jit_x86.h,
+ lib/Makefile.am, lib/jit_disasm.c, lib/jit_print.c,
+ lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c,
+ lib/jit_x86.c, lib/lightning.c: New files. These files are
+ written from scratch, only by <pcpa@gnu.org>, and have now
+ copyright assignment to the FSF. This is the core of the new
+ lightning rework. Previously it was integrated in code with
+ a garbage collector and several custom types like vectors and
+ hash tables, so this first code merge with lightning converts
+ that code into a library extracting only the jit bits, and at
+ first only for x86_64 GNU/Linux.
+
+ * lightning.h, m4/lightning.m4: Removed. These are no longer
+ required in the new lightning code.
+
+ .gitignore, Makefile.am, configure.ac: Update for the new
+ lightning code.
+
+2012-12-02 Paulo Andrade <pcpa@gnu.org>
+ * .cvsignore: Removed for extra cleanup.
+
+ * build-aux: Rename directory to m4.
+
+ * m4: Renamed to "default" name and for consistency with merge
+ with code rework to be imported in lightning.
+
+ * .gitignore, configure.ac, Makefile.am, doc/Makefile.am:
+ Update for build-aux to m4 rename.
+
+2012-12-01 Paulo Andrade <pcpa@gnu.org>
+
+ * opcode/Makefile.am, opcode/Makefile.in, opcode/ansidecl.h,
+ opcode/bfd.h, opcode/dis-asm.h, opcode/dis-buf.c, opcode/disass.c,
+ opcode/i386-dis.c, opcode/i386.h, opcode/ppc-dis.c, opcode/ppc-opc.c,
+ opcode/ppc.h, opcode/sparc-dis.c, opcode/sparc-opc.c, opcode/sparc.h,
+ opcode/sysdep.h: Removed. Do not bundle GNU binutils files.
+
+ * aclocal.m4, configure, Makefile.in, config.h.in, doc/Makefile.in,
+ lightning/Makefile.in, tests/Makefile.in: Removed. Do not maintain
+ autogenerated files that also generate too much diff noise when
+ regenerated in git.
+
+ * build-aux/help2man, build-aux/texinfo.tex, build-aux/texi2dvi:
+ Removed. Buildenvironment must have an up to date version from
+ upstream installed.
+
+ * build-aux/config.guess, build-aux/config.sub, build-aux/depcomp,
+ build-aux/install-sh build-aux/mdate-sh build-aux/missing: Removed.
+ Do not maintain a copy of automake files in git. Release tarballs
+ must use an up to date version.
+
+ * lightningize.in, doc/lightningize.1: Removed. Do not encourage
+ bundling lightning in other packages. It should use a system package
+ or a proper thirdy part subdirectory.
+
+ * INSTALL: Removed. Autoreconf removes it and creates a symlink
+ when regenerating files, so, avoid conflicts in git and let
+ automake create the symlink.
+
+ * .gitignore: Add INSTALL and autogenerated files.
+
+ * configure.ac, Makefile.am: Update for removal of opcode subdir,
+ auto generated files and lightningize.
+
+ * tests/Makefile.am, tests/3to2.c, tests/add.c, tests/bp.c,
+ tests/fib.c, tests/fibdelay.c, tests/fibit.c, tests/funcfp.c,
+ tests/incr.c, tests/printf.c, tests/rpn.c, tests/rpnfp.c,
+ tests/sete.c, tests/testfp.c: Update for removal of opcode subdir.
+
+ * doc/Makefile.am: Update for removal of lightningize.
+
+ * configure.ac, lightning/ppc/funcs.h, lightning/sparc/funcs.h,
+ lightning/i386/fp.h, lightning/i386/core.h, lightning/i386/asm.h,
+ tests/3to2.c, tests/add.c, tests/bp.c, tests/fib.c, tests/fibdelay.c,
+ tests/fibit.c, tests/funcfp.c, tests/incr.c, tests/printf.c,
+ tests/rpn.c, tests/rpnfp.c, tests/sete.c, tests/testfp.c:
+ Remove LIGHTNING_CROSS, it is half supported and incomplete.
+
+ * tests/3to2.c, tests/funcfp.c, tests/rpnfp.c: Remove preprocessor
+ check on JIT_FPR. If no hardware registers are available, the backend
+ must provide an alternative for software float.
+
+ * lightning/ppc/core.h, lightning/sparc/core.h, tests/Makefile.am:
+ Remove JIT_NEED_PUSH_POP. It is absolutely not trivial to implement
+ properly on some backends due to stack alignment constraints, and
+ whenever it is required, using jit_allocai and using a properly
+ aligned stack vector, or a heap buffer, is better.
+
+ * tests/push-pop.c, tests/push-pop.ok: Removed due to
+ JIT_NEED_PUSH_POP no longer available.
+
+2011-02-28 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-64.h: Add jit_add{c,x}{i,r}_l, jit_mulr_{l,ul}_,
+ fix jit_mul{i,r}_{l,ul}.
+
+2010-08-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/fp-64.h: Return patch address from jit_bXYr_{f,d}.
+ Reported by Paulo César Pereira de Andrade.
+ * lightning/ppc/fp.h: Likewise.
+ * lightning/sparc/fp.h: Implement FP branches.
+
+2010-08-18 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/fp-64.h: Fix jp in jit_bner_{f,d}.
+
+2010-08-18 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/fp-32.h: Fix -D_ASM_SAFETY compilation.
+ Reported by Paulo César Pereira de Andrade.
+
+2010-08-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/ldst.c: Update.
+ * tests/Makefile.am: Use -ffloat-store to compile it.
+
+2010-08-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
+ jit_ldxr_s): Move...
+ * lightning/i386/core-32.h: ... here.
+ * lightning/i386/core-64.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
+ Use movsbq and movswq.
+
+2010-08-10 Paulo César Pereira de Andrade <pcpa@mandriva.com.br>
+
+ * lightning/i386/core-32.h (jit_replace): Use MOVLrr, not MOVLir.
+ (jit_movbrm): Check index register as well.
+ * lightning/i386/fp-64.h: Add jit_extr_f_d and jit_extr_d_f.
+ * lightning/fp-common.h: Add jit_extr_f_d and jit_extr_d_f.
+
+2010-07-28 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/Makefile.am: Add ldst test.
+ * tests/Makefile.in: Regenerate.
+ * tests/ldst.c: New.
+ * tests/ldst.ok: New.
+
+2010-07-28 Paolo Bonzini <bonzini@gnu.org>
+
+ * THANKS: Add Paulo Cesar Pereira de Andrade.
+ * doc/porting.texi: Fix ordering of arguments in jit_stxi.
+ * lightning/i386/core-32.h (jit_replace): Remove cmp argument.
+ * lightning/i386/fp-64.h (jit_movi_f): Fix.
+
+2010-07-26 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-32.h (jit_replace): Move here (removed
+ 2009-03-01).
+
+2010-07-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * build-aux/lightning.m4: Always set and replace lightning_frag.
+ * Makefile.in: Regenerate.
+ * aclocal.m4: Regenerate.
+ * config.h.in: Regenerate.
+ * configure: Regenerate.
+ * doc/Makefile.in: Regenerate.
+ * doc/lightningize.1: Regenerate.
+ * doc/version.texi: Regenerate.
+ * lightning/Makefile.in: Regenerate.
+ * opcode/Makefile.in: Regenerate.
+ * tests/Makefile.in: Regenerate.
+
+2009-03-01 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-64.h: Use Mike's macros for x86-64 too.
+ * lightning/i386/core.h: Remove jit_replace.
+
+ 2009-02-27 Mike Spivey <mike@comlab.ox.ac.uk>
+
+ * lightning/i386/core.h: Rewrite shift-handling macros.
+ * lightning/fp-common.h: Fix jit_extr_{f_d,d_f}.
+
+2009-02-17 Mike Spivey <mike@comlab.ox.ac.uk>
+
+ * lightning/i386/core.h: Fix blunder in operand order.
+
+2009-02-17 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/fp-32.h: Another fix to jit_fp_btest.
+
+2009-02-17 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/fp-common.h: Define double branches if missing.
+ * lightning/i386/asm.h: Define JC and JNC mnemonics.
+ * lightning/i386/fp-32.h: Fix jit_fp_btest. All reported
+ by Mike Spivey.
+
+2008-10-09 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/funcs.h (jit_flush_code): Subtract 1 from end.
+ Reported by Eli Barzilay and Matthew Flatt.
+
+2008-08-23 Nix <nix@esperi.org.uk>
+
+ * lightning/i386/Makefile.frag: fp-32.h and fp-64.h are target files.
+
+2008-07-02 Laurent Michel <ldm@engr.uconn.edu>
+
+ * lightning/ppc/funcs.h (jit_flush_code): modified the computation
+ of start/end. The pointer arithmetic was done without casting. It
+ prevented compilation with recent gcc versions.
+ * lightning/ppc/core.h (jit_pushr_i): The offset for the store was
+ incorrect. Should have been 4 bytes below SP (not above).
+ * lightning/ppc/core.h (jit_popr_i): The offset for the load was
+ incorrect. Should have been 0 (not +8).
+
+2008-06-17 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-64.h: Forward IMULQir to IMULQirr,
+ fix REXQ order for IMULQirr.
+
+2008-06-17 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core.h: Fix _rN vs. _rR.
+
+2008-06-16 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core.h: Use jit_save in jit_replace. Move JIT_R
+ definition...
+ * lightning/i386/core-32.h: ... here; define jit_save so that
+ the core.h has no effect on the 32-bit backend.
+ * lightning/i386/core-64.h: Place JIT_R1/JIT_R2 in R10/R11,
+ place outgoing arguments in the right spot from the beginning,
+ define jit_save, fix jit_reg8/jit_reg16.
+
+2008-06-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-64.h: Rewrite argument passing to
+ support up to 6 arguments and generate less code.
+
+2008-06-14 Laurent Michel <ldm@thorgal.homelinux.org>
+
+ * lightning/i386/core-64.h (jit_movi_l): When the operand is 0,
+ the XOR should be on a quadword.
+ * lightning/i386/core-64.h (jit_prolog): Keep 16-byte stack
+ alignment.
+ (jit_ret): Always use LEAVE.
+
+2008-06-13 Laurent Michel <ldm@thorgal.homelinux.org>
+
+ * lightning/i386/core-64.h: Add (void) casts for C++ compatibility.
+ * lightning/i386/asm.h: Likewise.
+
+2008-06-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core.h: Move JIT_V definition...
+ * lightning/i386/core-32.h: ... here.
+ * lightning/i386/core-64.h: ... and here. Avoid dancing between
+ RSI/RDI and R12/R13, and place JIT_V1/JIT_V2 in R12/R13.
+
+2008-06-11 Paolo Bonzini <bonzini@gnu.org>
+
+ * build-aux/lightning.m4: Adjust LIGHTNING_BACKENDS, don't
+ use suffix support to distinguish i386/x86_64.
+ * lightning/i386/Makefile.frag: Use LIGHTNING_TARGET_FILES
+ to distribute *-32.h and *-64.h files now.
+ * lightning/i386/asm-i386: Moved to...
+ * lightning/i386/asm.h: Include the appropriate subtarget file.
+ * lightning/i386/core-i386: Moved to...
+ * lightning/i386/core.h: Include the appropriate subtarget file.
+ * lightning/i386/fp.h: New, include the appropriate subtarget file.
+ * lightning/i386/asm-32: Do not include asm-i386.h.
+ * lightning/i386/asm-64.h: Likewise.
+ * lightning/i386/core-32: Do not include core-i386.h.
+ * lightning/i386/core-64.h: Likewise.
+ * lightning/Makefile.am: Adjust for renamed files.
+
+ * configure.ac: Define LIGHTNING_TARGET here.
+ * opcode/disass.c: Change list of valid LIGHTNING_TARGET values.
+
+ * lightningize.in: Robustify against missing subtarget files.
+
+2008-06-11 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-32.h: Use MOVLir instead of jit_movi_l
+ to implement jit_movi_p.
+
+2008-06-11 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-32.h: Use separate __APPLE__ and SysV
+ prolog/ret macros. Subtract 12 bytes in __APPLE__ case to
+ keep stack aligned, and always use LEAVE in the epilog.
+
+2008-06-11 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-i386.h: Fix C++ incompatibility.
+
+2008-06-10 Laurent Michel <ldm@engr.uconn.edu>
+
+ * lightning/i386/core-i386.h: Fix jit_replace8 for
+ case when one of the operands is _EAX.
+
+2008-05-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/run-test: Avoid CRLF issues on mingw.
+
+2008-03-21 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-64.h: Fix jit_{ld,st}{,x}i_{i,l}.
+ Remove jit_ld{,x}i_ul.
+ * lightning/core-common.h: Make jit_ld{,x}{i,r}_ul
+ always a synonym of the _l variant.
+ * doc/porting.texi: Document this.
+
+2008-03-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-64.h: Fix uses of jit_qop_.
+
+2008-03-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-64.h: Add boolean operations.
+
+2008-03-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-64.h: Add LEAQmr.
+
+2008-03-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-64.h: Misc bugfixes.
+
+2008-03-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-i386.c: Remove jit_ldr_i, jit_ldxr_i.
+ * lightning/i386/core-32.h: Add jit_ldr_i, jit_ldxr_i.
+ * lightning/i386/core-64.h: Add jit_ld{r,xr,i,xi}_{ui,l,ul};
+ move jit_ldr_i, jit_ldxr_i, jit_str_l, jit_stxr_l with others.
+
+2008-03-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/asm-common.h: Add _s32P.
+
+2008-03-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-64.h: Implement long mul/div/mod.
+
+2008-03-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-i386.h: Cast memory address to long for JCCim.
+
+2008-03-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/asm-common.h: Add underscores around __unused__
+ attribute.
+
+2008-03-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/core.h: Avoid some "value computed is not used"
+ warnings.
+ * lightnings/tests/allocai.c: Silence other warnings.
+
+2008-03-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightningize.in: Fix some problems (not all).
+
+2008-03-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-32.h: Avoid some "value computed is not used"
+ warnings; reported by Sam Steingold.
+
+2008-03-08 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-32.h: Fix stxr_c(_EAX, _EBX, _ESI).
+
+2008-02-13 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-32.h: Avoid redefinition of _r1, reported by
+ Sam Steingold.
+ * lightning/i386/asm-64.h: Likewise.
+
+2008-02-08 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-i386.h: Don't define _VOID, reported
+ by Reini Urban.
+
+2008-02-03 Paolo Bonzini <bonzini@gnu.org>
+
+ * build-aux/lightning.m4: Add --with-lightning-prefix option, suggested
+ by Sam Steingold.
+
+2008-01-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-64.h: Use CALLsr, not CALLLsr.
+
+2008-01-13 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-i386.h: Move jit_calli and jit_callr...
+ * lightning/i386/core-32.h: ... here.
+ * lightning/i386/core-64.h: Redefine them.
+
+2008-01-05 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/fp-32.h: Fix sub(a,0,a).
+ * lightning/tests/3to2.c: Add new testcases.
+ * lightning/tests/3to2.ok: Add new testcases.
+
+2008-01-02 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/fp-32.h: Fix sub(a,b,a) with a ~= JIT_FPR0.
+ * lightning/tests/3to2.c: New.
+ * lightning/tests/3to2.ok: New.
+
+2007-11-07 Paolo Bonzini <bonzini@gnu.org>
+
+ * opcode/Makefile.am: Fix AM_CPPFLAGS.
+
+2007-08-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-i386.h: Improve encoding of set* instructions.
+ * lightning/i386/core-64.h: Fix jit_bra_l.
+ * tests/sete.c: New.
+ * tests/sete.ok: New.
+
+2007-06-29 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/bp.c: Upgrade to GPL/LGPLv3.
+ * lightning/i386/asm-32.h: Upgrade to GPL/LGPLv3.
+ * lightning/i386/asm-64.h: Upgrade to GPL/LGPLv3.
+ * lightning/i386/core-32.h: Upgrade to GPL/LGPLv3.
+ * lightning/i386/core-64.h: Upgrade to GPL/LGPLv3.
+ * lightning/i386/fp-64.h: Upgrade to GPL/LGPLv3.
+ * lightning/sparc/asm.h: Upgrade to GPL/LGPLv3.
+ * lightning/sparc/core.h: Upgrade to GPL/LGPLv3.
+ * lightning/sparc/fp.h: Upgrade to GPL/LGPLv3.
+ * lightning/sparc/funcs.h: Upgrade to GPL/LGPLv3.
+ * lightning/i386/asm-i386.h: Upgrade to GPL/LGPLv3.
+ * lightning/i386/core-i386.h: Upgrade to GPL/LGPLv3.
+ * lightning/i386/fp-32.h: Upgrade to GPL/LGPLv3.
+ * lightning/i386/funcs.h: Upgrade to GPL/LGPLv3.
+ * lightning/ppc/asm.h: Upgrade to GPL/LGPLv3.
+ * lightning/ppc/core.h: Upgrade to GPL/LGPLv3.
+ * lightning/ppc/fp.h: Upgrade to GPL/LGPLv3.
+ * lightning/ppc/funcs.h: Upgrade to GPL/LGPLv3.
+ * lightning.h: Upgrade to GPL/LGPLv3.
+ * tests/add.c: Upgrade to GPL/LGPLv3.
+ * tests/fib.c: Upgrade to GPL/LGPLv3.
+ * tests/testfp.c: Upgrade to GPL/LGPLv3.
+ * tests/fibdelay.c: Upgrade to GPL/LGPLv3.
+ * tests/fibit.c: Upgrade to GPL/LGPLv3.
+ * tests/funcfp.c: Upgrade to GPL/LGPLv3.
+ * tests/incr.c: Upgrade to GPL/LGPLv3.
+ * tests/printf.c: Upgrade to GPL/LGPLv3.
+ * tests/printf2.c: Upgrade to GPL/LGPLv3.
+ * tests/rpn.c: Upgrade to GPL/LGPLv3.
+ * tests/rpnfp.c: Upgrade to GPL/LGPLv3.
+ * lightning/asm-common.h: Upgrade to GPL/LGPLv3.
+ * lightning/core-common.h: Upgrade to GPL/LGPLv3.
+ * lightning/fp-common.h: Upgrade to GPL/LGPLv3.
+ * lightning/funcs-common.h: Upgrade to GPL/LGPLv3.
+ * opcode/dis-buf.c: Upgrade to GPL/LGPLv3.
+ * opcode/disass.c: Upgrade to GPL/LGPLv3.
+ * opcode/i386-dis.c: Upgrade to GPL/LGPLv3.
+ * opcode/sparc-dis.c: Upgrade to GPL/LGPLv3.
+ * opcode/sparc-opc.c: Upgrade to GPL/LGPLv3.
+ * lightningize.in: Upgrade to GPL/LGPLv3.
+ * opcode/bfd.h: Upgrade to GPL/LGPLv3.
+ * opcode/i386.h: Upgrade to GPL/LGPLv3.
+ * opcode/sparc.h: Upgrade to GPL/LGPLv3.
+
+2007-01-26 Thomas Girard <thomas.g.girard@free.fr>
+
+ * lightning/Makefile.am: Add clean-local target.
+
+2006-12-02 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-i386.h: Add CVTTS?2SIL.
+ * lightning/i386/asm-64.h: Add CVTTS?2SIQ.
+ * lightning/i386/fp-64.h: Use it.
+
+ * lightning/Makefile.am: Place files in nodist_lightning_HEADERS.
+
+2006-11-23 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/core-common.h: Add casts in "*i_p" variants.
+ * lightning/i386/asm-32.h: Add _r1.
+ * lightning/i386/asm-64.h: Likewise, and add SSE instructions.
+ * lightning/i386/asm-i386.h: Merge SSE instructions from Gwenole.
+ Use short form for 16-bit AX instructions. Remove _r1
+ * lightning/i386/core-64.h: Add FP ABI support in its infancy.
+ * lightning/i386/core-i386.h: Move jit_arg_f and jit_arg_d...
+ * lightning/i386/core-32.h: ... and jit_prepare_f and jit_prepare_d...
+ * lightning/i386/fp-32.h: ... here.
+ * lightning/i386/fp-64.h: Write the code.
+ * lightning/sparc/fp.h: Fix jit_extr_{f_d,d_f} register order.
+
+2006-11-22 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-i386.h: Move x86-64 instructions...
+ * lightning/i386/asm-64.h: ... here.
+ * lightning/i386/fp-32.h: Fix bugfixes worked around in froofyJIT.
+ Add JIT_FPRET.
+ * lightning/sparc/fp.h: Likewise.
+ * lightning/ppc/fp.h: Likewise.
+ * lightning/fp-common.h: Adjust for JIT_FPRET.
+ * tests/funcfp.c: Adjust for JIT_FPRET.
+ * tests/rpnfp.c: Adjust for JIT_FPRET.
+
+2006-11-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-i386.h: Add an underscore to macros without
+ a parameter.
+
+2006-11-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core-i386.h: Move jit_movip, jit_check8, jit_reg8,
+ jit_reg16, jit_movbrm...
+ * lightning/i386/core-32.h: ... here.
+ * lightning/i386/core-64.h: Redefine them. Fix other bugs.
+
+ * tests/printf.c: Do not do a varargs call.
+
+2006-11-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-i386.h: Check in rewrite from Basilisk II.
+ * lightning/i386/asm-32.h: Adjust.
+ * lightning/i386/asm-64.h: Adjust.
+ * lightning/i386/fp-32.h: Adjust.
+
+ * lightning/i386/core-32.h: Adjust. Add jit_{ld,ldx,st,stx}i*.
+ * lightning/i386/core-64.h: Adjust. Add jit_{ld,ldx,st,stx}i*.
+ * lightning/i386/core-i386.h: Adjust. Remove these patterns.
+
+2006-11-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm-i386.h: Merge 64-bit cleanliness changes from
+ mzscheme.
+ Add SSE.
+ * lightning/i386/asm-64.h: Likewise.
+
+2006-11-20 Paolo Bonzini <bonzini@gnu.org>
+ Ludovic Courtes <ludo@chbouib.org>
+
+ * lightning/i386/core-32.h: Disable jit_push and jit_pop if stack not
+ needed.
+ * lightning/i386/core-64.h: Disable jit_push and jit_pop if stack not
+ needed.
+ * lightning/sparc/core.h: Merge final implementation of jit_pushr and
+ jit_popr.
+ * lightning/ppc/core.h: Fix implementation of jit_pushr and jit_popr to
+ work (more or less) across function calls.
+
+ * tests/push-pop.c, tests/push-pop.ok: New test.
+ * tests/Makefile.am: Run it.
+
+2006-11-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/asm-common.h: Make 64-bit safe.
+ * lightning/i386/funcs.h: Make 64-bit safe.
+
+ * lightning/i386/asm-64.h: More merge from mzscheme.
+ * lightning/i386/asm-i386.h: More merge from mzscheme.
+ * lightning/i386/core-32.h: More merge from mzscheme.
+ * lightning/i386/core-64.h: More merge from mzscheme.
+ * lightning/i386/core-i386.h: More merge from mzscheme.
+
+ * tests/rpnfp.c, tests/testfp.c, tests/funcfp.c: Skip if no
+ floating-point support.
+
+2006-11-04 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/rpn.c: Remove pushr/popr.
+
+2006-11-04 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/core.h: Implement jit_allocai, define JIT_FP to be R1.
+ * lightning/ppc/funcs.h: Store frame size into _jitl. Store R1 before
+ the STMW, so that the offset is unchanged when we patch the STMW.
+ * lightning/i386/core.h: Define JIT_FP to be EBP.
+ * lightning/i386/core-32.h: Implement jit_allocai, put LEAVE in the
+ epilog if jit_allocai was used.
+ * lightning/i386/core-64.h: Implement jit_allocai, put LEAVE in the
+ epilog if jit_allocai was used.
+
+2006-11-04 Ludovic Courtes <ludo@chbouib.org>
+
+ * lightning/sparc/core.h: Implement jit_allocai.
+ * tests/allocai.c: New.
+ * tests/Makefile.am: Point to new tests.
+
+2006-11-03 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/core.h: Fix jit_bms using BNE rather than BGT.
+ "AND." does signed comparisons.
+
+2006-10-31 Paolo Bonzini <bonzini@gnu.org>
+
+ * doc/porting.texi: Rename JIT_FP to JIT_AP.
+ * lightning/core-common.h: Likewise.
+ * lightning/i386/core-i386.h: Likewise.
+ * lightning/fp-common.h: Provide default versions of jit_getarg_[fd].
+ * lightning/i386/fp-32.h: Don't provide jit_getarg_[fd].
+ * lightning/ppc/fp.h: Likewise.
+
+2006-10-31 Ludovic Courtes <ludo@chbouib.org>
+
+ * doc/using.texi (The instruction set): Clarified the use of `JIT_RET' and
+ documented `jit_retval'.
+ * tests/ret.c (generate_function_proxy): After `jit_finish', use
+ `jit_retval_i' to move FUNC's return value into the correct register.
+
+2006-10-31 Paolo Bonzini <bonzini@gnu.org>
+ Ludovic Courtes <ludo@chbouib.org>
+
+ * tests/divi.c, tests/divi.ok, tests/movi.c, tests/movi.ok: New.
+ * tests/ldxi.c: Ensure large pointer is generated.
+ * tests/Makefile.am: Point to new tests.
+ * lightning.h: Include funcs-common.h before funcs.h.
+ * lightning/sparc/core.h: Fix bugs in modi/divi.
+
+2006-10-30 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/Makefile.am: Use "ln -sf".
+ * lightning/core-common.h: Define jit_negr_l if necessary.
+
+2006-10-30 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm.h (MOVS*, MOVZ*): Use correct _r[124] macros.
+
+2006-10-29 Paolo Bonzini <bonzini@gnu.org>
+
+ * configure.ac: Use lightning.m4 macros.
+ * lightning.m4: Refactor to use common code in configure.ac. Move...
+ * build-aux/lightning.m4: ... here.
+ * lightningize.in: Support suffixes.
+ * opcode/disass.in: Adapt to changes in configure.ac.
+
+ * lightning/ppc/funcs.h: Use __APPLE__ instead of _CALL_DARWIN.
+ * lightning/i386/core-32.h: Likewise.
+
+2006-10-26 Paolo Bonzini <bonzini@gnu.org>
+
+ * configure.ac: Fix compilation test.
+ * lightning/Makefile.am: Symlink LIGHTNING_TARGET_FILES in
+ non-distribution mode.
+ * lightning/i386/Makefile.frag: Use LIGHTNING_TARGET_FILES.
+
+2006-10-26 Paolo Bonzini <bonzini@gnu.org>
+
+ * configure.ac: Subst cpu.
+ * lightning/core-common.h: Make tests pass on i386.
+ * lightning/i386/asm-32.h: Make tests pass on i386.
+ * lightning/i386/asm-64.h: Make tests pass on i386.
+ * lightning/i386/asm-i386.h: Make tests pass on i386.
+ * lightning/i386/core-32.h: Make tests pass on i386.
+ * lightning/i386/core-64.h: Make tests pass on i386.
+ * lightning/i386/core-i386.h: Make tests pass on i386.
+ * tests/Makefile.am: Include files from cpu directory.
+
+2006-10-26 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm.h: Move to asm-i386.h
+ * lightning/i386/asm-32.h: New, from Matthew Flatt.
+ * lightning/i386/asm-64.h: New, from Matthew Flatt.
+ * lightning/i386/core.h: Move to core-i386.h
+ * lightning/i386/core-32.h: New, from Matthew Flatt.
+ * lightning/i386/core-64.h: New, from Matthew Flatt.
+ * lightning/i386/fp.h: Move to fp-32.h
+ * lightning/i386/fp-64.h: New, dummy.
+ * lightning/i386/Makefile.frag: New.
+ * lightning/Makefile.am: Support per-target Makefile fragments.
+ * configure.ac: Support per-target Makefile fragments and CPU suffixes.
+
+2006-10-16 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/i386.h (jit_flush_code): Fix syntax error. :-(
+
+2006-07-06 Paolo Bonzini <bonzini@gnu.org>
+ Ludovic Courtes <ludovic.courtes@laas.fr>
+
+ * doc/using.texi: Clarify "Using autoconf" section
+ and rename it to "Bundling lightning"
+ * lightning.m4: Work also if lightning is not bundled.
+
+2006-07-06 Paolo Bonzini <bonzini@gnu.org>
+ Ludovic Courtes <ludovic.courtes@laas.fr>
+
+ * lightning/ppc/core.h (_jit_mod): Replace with...
+ (_jit_mod_big, _jit_mod_small): ... these.
+ (jit_modi_i, jit_modi_ui): Rewrite.
+ * tests/modi.c, tests/modi.ok: New tests.
+
+2006-05-18 Matthew Flatt <mflatt@cs.utah.edu>
+
+ * lightning/i386/asm.h: Fix test for extending the mprotect area
+ towards lower addresses.
+
+2006-05-16 Bruno Haible <bruno@clisp.org>
+
+ * lightning/asm-common.h: Don't use __func__ nor __FUNCTION__ if
+ not compiling with GNU C.
+
+2006-02-16 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/core.h: Fix jit_ldxi_* with big displacement.
+
+2006-01-23 Paolo Bonzini <bonzini@gnu.org>
+
+ * configure.ac: Fix comments in config.h.in.
+
+2005-11-25 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/sparc/fp.h: Fix header comment.
+ * lightning/ppc/fp.h: Fix header comment.
+
+2005-04-27 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/asm.h (JCm, JCSm, JNCm, JNCSm): New.
+
+2004-11-26 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/funcs.h (_jit_epilog): Remove unused variable.
+
+2004-11-13 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/funcs.h [__linux__]: Include sys/mman.h.
+
+2004-11-09 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/sparc/fp.h: Fix fp-to-integer conversions.
+ * lightning/ppc/testfp.c: Test fp-to-integer conversions
+ of integer numbers.
+ * lightning/ppc/testfp.ok: Adjust for the above.
+
+2004-11-08 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/testfp.c: Always flush code before
+ testing it.
+
+2004-11-08 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/fp.h: Do not clobber f31.
+
+2004-11-08 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning.h: New name of...
+ * lightning-inst.h: ... this file.
+ * lightning.h.in: Removed.
+
+ * opcodes/disass.c: Include config.h.
+ * tests/add.c: Include config.h.
+ * tests/bp.c: Include config.h.
+ * tests/fib.c: Include config.h.
+ * tests/fibdelay.c: Include config.h.
+ * tests/fibit.c: Include config.h.
+ * tests/funcfp.c: Include config.h.
+ * tests/incr.c: Include config.h.
+ * tests/printf.c: Include config.h.
+ * tests/printf2.c: Include config.h.
+ * tests/rpn.c: Include config.h.
+ * tests/rpnfp.c: Include config.h.
+ * tests/testfp.c: Include config.h.
+
+2004-10-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/fp.h: Fix bugs in conditional branches.
+
+2004-10-10 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/funcs.h: Fix pasto in jit_flush_code.
+
+2004-10-08 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/fp.h: Optimized conditional branches.
+
+2004-09-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/asm.h: Fix more typos.
+
+2004-09-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/asm.h: Fix typos, replace `26' with JIT_AUX.
+
+2004-09-20 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/fp.h: Added conditional branches.
+
+2004-09-18 Laurent Michel <ldm@thorgal.homelinux.org>
+
+ * lightning/ppc/fp.h (jit_unler_d, jit_unltr_d, jit_unger_d,
+ jit_ungtr_d, jit_ltgt_d, jit_uneq_d): Implemented missing tests
+ to fully support testfp.
+ (jit_floorr_d_i, jit_ceilr_d_i, jit_roundr_d_i, jit_truncr_d_i):
+ New macros.
+ * lightning/ppc/asm.h: Added missing opcodes FCTIWZ and MTFSFI.
+ * lightning/ppc/funcs.h (_jit_prolog): Fixed minor mistake in
+ the initialization of _jitl.nextarg_geti, relying on the
+ JIT_AUX macro as well to get the register offset.
+
+2004-09-07 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/funcs.h: Fix typo.
+
+2004-09-06 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/funcfp.c: Use %g. Remove C99 variable declarations.
+ * tests/testfp.c: Don't use __builtin_nan.
+
+ * lightning/ppc/core.h: Add three V registers.
+ * lightning/ppc/funcs.h: Adjust.
+
+ * lightning/sparc/core.h: Some fixes related to FP argument passing.
+ Move R0 to %g2, use %o7 for JIT_BIG2.
+ * lightning/sparc/fp.h: Some fixes related to FP argument passing.
+
+2004-09-02 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/sparc/core.h: Add another V register,
+ move R0 to %o7.
+
+2004-07-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/funcs.h: Implement jit_flush_code,
+ in order to support Fedora's exec-shield.
+
+2004-07-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/core-common.h: Add more jit_extr_*_* macros.
+ * lightning/doc/using.texi: Be clearer about the order
+ of arguments in jit_extr_*_*.
+ * lightning/doc/porting.texi: Add more jit_extr_*_* macros.
+ * lightning/i386/fp.h: Fix typo in jit_extr_i_d.
+
+2004-07-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/funcs.h: Adjust offset of LR into
+ stack frame if running under the Darwin ABI.
+
+2004-07-13 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/fp.h: Rename jit_exti_d to jit_extr_i_d.
+
+2004-07-13 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/core.h: Fix thinko.
+
+ * lightning/i386/core.h: Fix jit_lti_ui.
+ * lightning/core-common.h: Add missing macros.
+
+ * lightning/ppc/fp.h: Rename jit_neg_* to jit_negr_*.
+ * lightning/i386/fp.h: Rename jit_neg_* to jit_negr_*.
+ * lightning/sparc/fp.h: Rename jit_neg_* to jit_negr_*.
+ * lightning/fp-common.h: Rename jit_neg_* to jit_negr_*.
+ * doc/porting.texi: Add undocumented macros.
+
+2004-07-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * doc/porting.texi: Add missing macros.
+
+2004-07-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/funcs.h: Don't generate trampolines.
+ Separate prolog and epilog generation.
+ * lightning/ppc/core.h: Generate epilog explicitly.
+ Don't reserve r31 anymore.
+ * lightning/core-common.h: Remove call to jit_setup_code.
+
+2004-07-09 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/lightning.h.in: Avoid preprocessor warnings.
+ * lightning/lightning-inst.h: Likewise.
+
+ * lightning/i386/core.h: Define JIT_R, JIT_R_NUM, JIT_V,
+ JIT_V_NUM.
+ * lightning/ppc/core.h: Likewise.
+ * lightning/sparc/core.h: Likewise.
+ * lightning/i386/fp.h: Define JIT_FPR, JIT_FPR_NUM.
+ * lightning/ppc/fp.h: Likewise.
+ * lightning/sparc/fp.h: Likewise.
+ * lightning/core-common.h: Define fixed register names.
+ * lightning/fp-common.h: Likewise for FP regs.
+
+2004-07-09 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/ppc/funcs.h: Fix location where return address
+ is stored.
+ * lightning/i386/asm.h: Add a trailing _ to opcodes without
+ any parameter.
+ * lightning/i386/core.h: Adjust for the above.
+
+2004-04-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/fp.h: Change "and" to "_and"
+ to satisfy C++ compilers.
+
+2004-04-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/sparc/fp.h: Use memcpy to implement jit_movi.
+ * lightning/ppc/fp.h: Use memcpy to implement jit_movi.
+ Move floating-point opcodes...
+ * lightning/ppc/asm.h: ... here.
+
+2004-04-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/core-common.h: Add jit_finishr.
+ * lightning/ppc/core.h: Add jit_callr and jit_finishr.
+ * lightning/i386/core.h: Add jit_callr.
+ * lightning/sparc/core.h: Add jit_callr. Fix typo.
+
+2004-04-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core.h: Fix pasto in jit_b*_ui.
+
+2004-03-30 Laurent Michel
+
+ * lightning/ppc: Implement PowerPC floating point
+ (ChangeLog entry missing).
+
+2004-03-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/fp-common.h: Load/store macros are not the
+ same for floats and doubles anywhere, but jit_retval may be.
+ * lightning/i386/asm.h: Fix = mistaken for == in ESCrri.
+ * lightning/i386/core.h: Fix typo in jit_prepare_[fd].
+ * lightning/i386/fp.h: Rewritten.
+ * tests/testfp.c: Add tests for unordered comparisons.
+ * tests/testfp.ok: Add results.
+
+2004-03-15 Paolo Bonzini <bonzini@gnu.org>
+
+ Merge changes from Laurent Michel.
+
+ * lightning/asm-common.h: Add _jit_I_noinc.
+ * lightning/core-common.h: Support jit_init,
+ jit_setup_code, jit_patch_at. Return patchable IP from
+ jit_movi_p.
+ * lightning/funcs-common.h: Provide defaults
+ for jit_setup_code, jit_start_pfx, jit_end_pfx
+ * lightning/i386/core.h: Add jit_patch_at, jit_patch_movi.
+ * lightning/ppc/core.h: Likewise.
+ * lightning/sparc/core.h: Likewise.
+ * lightning/ppc/asm.h: Fix generation of branch destination
+ displacements in _FB and _BB
+ * lightning/ppc/core.h: Generate trampolines in the user
+ area.
+ * lightning/ppc/funcs.h: Add a few casts.
+ * tests/bc.c: New testcase.
+
+ * lightning/i386/asm.h: Wrap into #ifndef LIGHTNING_DEBUG.
+ * lightning/ppc/asm.h: Wrap into #ifndef LIGHTNING_DEBUG.
+ * lightning/sparc/asm.h: Wrap into #ifndef LIGHTNING_DEBUG.
+
+
+2004-03-09 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/sparc/fp.h: Rewrite. Move macros for
+ FP code generation...
+ * lightning/sparc/asm.h: ... here.
+ * lightning/sparc/core.h: Rename jit_prepare to
+ jit_prepare_i, jit_retval to jit_retval_i.
+ * lightning/ppc/core.h: Rename jit_prepare to
+ jit_prepare_i, jit_retval to jit_retval_i.
+ * lightning/i386/core.h: Rename jit_prepare to
+ jit_prepare_i, jit_retval to jit_retval_i.
+ * lightning/core-common.h: Provide backwards
+ compatible synonyms for the above.
+ * lightning/fp-common.h: Rewrite.
+ * lightning-inst.h: Include fp unconditionally.
+ * lightning.h.in: Include fp unconditionally.
+ * tests/Makefile.am: Enable fp tests.
+ * tests/fib.c: Use jit_retval_i.
+ * tests/fibit.c: Cast codeBuffer to char *.
+ * tests/funcfp.c: Use new fp macros.
+ * tests/printf.c: Use jit_retval_i.
+ * tests/rpnfp.c: Use new fp macros.
+ * tests/testfp.c: Use new fp macros.
+
+2004-03-02 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core.h: generate correct code when
+ doing lt/le/ge/etc. on ESI and EDI. Use MOVZX/MOVSX
+ where possible.
+ * lightning/i386/asm.h: Add macros for MOVZX/MOVSX.
+ Move macros for x87 here, and add many of them.
+ * lightning/i386/fp.h: Use new macros for x87.
+
+2004-02-06 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core.h: avoid generating MOV reg, reg.
+ * lightning/sparc/core.h: fix several bugs.
+ * lightning/ppc/core.h: fix several bugs.
+ * tests/rpn.c: rewritten.
+
+2004-01-08 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/rpnfp.c: new example, suggested by Basile
+ Starynkevitch.
+ * tests/rpnfp.ok: new example.
+
+2003-12-12 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/add.c: new test, suggested by Steve Dekorte.
+ * tests/add.c: new test.
+
+2003-11-14 Paolo Bonzini <bonzini@gnu.org>
+ John Redford <eirenik@hotmail.com>
+
+ * lightning/asm-common.h: change the 'pc' field of _jit to
+ be a union of various data types, because ISO C99 doesn't
+ permit using ++ on a = cast. Change the incremented casts of
+ _jit.pc to be _jit.x.uc_pc, _jit.x.us_pc, etc.
+ * all files: change all non-cast instances of _jit.pc to be
+ _jit.x.pc.
+ * lightning/i386/core.h: remove casts from jit_might.
+
+2003-05-25 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core.h: use JITSORRY in jit_replace
+ * lightning/asm-common.h: define JITSORRY
+
+2003-05-14 Paolo Bonzini <bonzini@gnu.org>
+
+ * lightning/i386/core.h: fix missing comma in several
+ load/store macros.
+ * lightning/core-common.h: fix long/unsigned long/pointer
+ jit_pushr/jit_popr.
+ * lightning/ppc/funcs.h: correctly align stack pointer
+
+No changelogs for the assemblers (lightning directory) until 1.0
+
+2003-03-27 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/printf2.c: new test
+
+2001-05-03 Paolo Bonzini <bonzini@gnu.org>
+
+ * tests/printf.c: made the message platform independent
+
+2001-01-19 Paolo Bonzini <bonzini@gnu.org>
+
+ * configure.in: support cross-assembling
+
+ * disass/bfd.h, disass/dis-asm.h, disass/dis-buf.c,
+ disass/i386-dis.c, disass/i386.h, disass/ppc-dis.c,
+ disass/ppc.h, disass/ppc-opc.c, disass/sparc-dis.c,
+ disass/sparc.h, disass/sparc-opc.c: new files, from GDB
+
+ * disass/disass.c, disass/Makefile.am: new files
+
+ * tests/fib.c, tests/fibit.c, tests/incr.c, tests/printf.c,
+ tests/rpn.c, tests/testfp.c, tests/Makefile.am: support
+ disassembling
diff --git a/libguile/lightning/README b/libguile/lightning/README
deleted file mode 100644
index ae36ea578..000000000
--- a/libguile/lightning/README
+++ /dev/null
@@ -1,3 +0,0 @@
-GNU lightning is a library to aid in making portable programs
-that compile assembly code at run time. For more information,
-look at the info documentation.
diff --git a/libguile/lightning/README.md b/libguile/lightning/README.md
new file mode 100644
index 000000000..90e01bf3f
--- /dev/null
+++ b/libguile/lightning/README.md
@@ -0,0 +1,37 @@
+# Lightening
+
+Lightening is a just-in-time code generation library derived from GNU
+Lightning, adapted to the purposes of the GNU Guile project.
+
+## Use
+
+```
+gcc -flto -O2 -g -o jit.o -c jit/jit.c
+gcc -flto -O2 -g -o my-program jit.o my-program.c
+```
+
+See the GNU Lightning manual for more on how to program against
+Lightening (much of the details are the same).
+
+## What's the difference with GNU Lightning?
+
+This project is called Lightening because it's lighter-weight than GNU
+Lightning. When you go to generate code at run-time with GNU Lightning,
+what happens is that you build up a graph of nodes which GNU Lightning
+"optimizes" before finally emitting machine code. These optimizations
+can improve register allocation around call sites. However they are not
+helpful from a Guile perspective, as they get in the way of register
+allocation that we need to do; and they actually prevent access to all
+the registers that we would like to have.
+
+Guile needs a simple, light-weight code generation library. The GNU
+Lightning architecture-specific backends provide the bulk of this
+functionality, and Lightening wraps it all in a lightweight API.
+
+## Status
+
+Only the x86-64 port is currently usable. I plan to re-enable 32-bit
+x86 shortly, and then work on 32-bit and 64-bit ARM. Other
+architectures may come with time, but help is very much appreciated
+there. The test suite is still in progress but will be fairly
+comprehensive in terms of API surface.
diff --git a/libguile/lightning/TODO b/libguile/lightning/TODO
deleted file mode 100644
index 676af0293..000000000
--- a/libguile/lightning/TODO
+++ /dev/null
@@ -1,28 +0,0 @@
- * Validate that divrem in jit_x86-cpu.c is not modifying
- the non result arguments. This is not verified by clobber.tst,
- as it only checks registers not involved in the operation
- (because it does not know about values being set as input
- for the the operation).
-
- * Write a simple higher level language implementation generating
- jit with lightning, that could be some lisp or C like language.
-
- * rerun ./configure --enable-devel-get-jit-size and regenerate
- the related jit_$arch-sz.c for the ports where nodata is
- meaningful:
- hppa (done)
- i586 (done)
- ia64
- mips o32 (done)
- mips n32
- mips n64
- powerpc 32 (done)
- powerpc 64 (done)
- ppc
- s390x (done)
- sparc (done)
- x86_64 (done)
- Missing ones are due to no longer (remote) access to such hosts
- and may be broken with jit_set_data(..., JIT_DISABLE_DATA).
- (ia64 hp-ux or linx), (irix mips for 32 or 64 abi), and
- (darwin ppc).
diff --git a/libguile/lightning/include/lightning.h b/libguile/lightning/include/lightning.h
deleted file mode 100644
index 6b4790a44..000000000
--- a/libguile/lightning/include/lightning.h
+++ /dev/null
@@ -1,1096 +0,0 @@
-/*
- * Copyright (C) 2012-2018 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#ifndef _lightning_h
-#define _lightning_h
-
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-
-#if defined(__hpux) && defined(__hppa__)
-# include <machine/param.h>
-#endif
-#if defined(__alpha__) && defined(__osf__)
-# include <machine/endian.h>
-#endif
-
-#ifdef STDC_HEADERS
-# include <stddef.h>
-#else
-# if !defined(offsetof)
-# define offsetof(type, field) ((char *)&((type *)0)->field - (char *)0)
-# endif
-#endif
-
-#ifndef __WORDSIZE
-# if defined(WORDSIZE) /* ppc darwin */
-# define __WORDSIZE WORDSIZE
-# elif defined(__SIZEOF_POINTER__) /* ppc aix */
-# define __WORDSIZE (__SIZEOF_POINTER__ << 3)
-# elif defined(_ILP32) /* hppa hp-ux */
-# define __WORDSIZE 32
-# elif defined(_LP64) /* ia64 hp-ux (with cc +DD64) */
-# define __WORDSIZE 64
-# elif defined(_MIPS_SZPTR) /* mips irix */
-# if _MIPS_SZPTR == 32
-# define __WORDSIZE 32
-# else
-# define __WORDSIZE 64
-# endif
-# else /* From FreeBSD 9.1 stdint.h */
-# if defined(UINTPTR_MAX) && defined(UINT64_MAX) && \
- (UINTPTR_MAX == UINT64_MAX)
-# define __WORDSIZE 64
-# else
-# define __WORDSIZE 32
-# endif
-# endif
-#endif
-#ifndef __LITTLE_ENDIAN
-# if defined(LITTLE_ENDIAN) /* ppc darwin */
-# define __LITTLE_ENDIAN LITTLE_ENDIAN
-# elif defined(__ORDER_LITTLE_ENDIAN__) /* ppc aix */
-# define __LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
-# else
-# define __LITTLE_ENDIAN 1234
-# endif
-#endif
-#ifndef __BIG_ENDIAN
-# if defined(BIG_ENDIAN) /* ppc darwin */
-# define __BIG_ENDIAN BIG_ENDIAN
-# elif defined(__ORDER_BIG_ENDIAN__) /* ppc aix */
-# define __BIG_ENDIAN __ORDER_BIG_ENDIAN__
-# else
-# define __BIG_ENDIAN 4321
-# endif
-#endif
-#ifndef __BYTE_ORDER
-# if defined(BYTE_ORDER) /* ppc darwin */
-# define __BYTE_ORDER BYTE_ORDER
-# elif defined(__BYTE_ORDER__) /* ppc aix */
-# define __BYTE_ORDER __BYTE_ORDER__
-# elif defined(_BIG_ENDIAN) /* hppa hp-ux */
-# define __BYTE_ORDER __BIG_ENDIAN
-# elif defined(__BIG_ENDIAN__) /* ia64 hp-ux */
-# define __BYTE_ORDER __BIG_ENDIAN
-# elif defined(__i386__) /* 32 bit x86 solaris */
-# define __BYTE_ORDER __LITTLE_ENDIAN
-# elif defined(__x86_64__) /* 64 bit x86 solaris */
-# define __BYTE_ORDER __LITTLE_ENDIAN
-# elif defined(__MIPSEB) /* mips irix */
-# define __BYTE_ORDER __BIG_ENDIAN
-# else
-# error cannot figure __BYTE_ORDER
-# endif
-#endif
-
-typedef signed char jit_int8_t;
-typedef unsigned char jit_uint8_t;
-typedef signed short jit_int16_t;
-typedef unsigned short jit_uint16_t;
-typedef signed int jit_int32_t;
-typedef unsigned int jit_uint32_t;
-#if __WORDSIZE == 32
-typedef signed long long jit_int64_t;
-typedef unsigned long long jit_uint64_t;
-typedef jit_int32_t jit_word_t;
-typedef jit_uint32_t jit_uword_t;
-#else
-typedef signed long jit_int64_t;
-typedef unsigned long jit_uint64_t;
-typedef jit_int64_t jit_word_t;
-typedef jit_uint64_t jit_uword_t;
-#endif
-typedef float jit_float32_t;
-typedef double jit_float64_t;
-typedef void* jit_pointer_t;
-typedef jit_int32_t jit_bool_t;
-typedef jit_int32_t jit_gpr_t;
-typedef jit_int32_t jit_fpr_t;
-
-#if defined(__i386__) || defined(__x86_64__)
-# include <lightning/jit_x86.h>
-#elif defined(__mips__)
-# include <lightning/jit_mips.h>
-#elif defined(__arm__)
-# include <lightning/jit_arm.h>
-#elif defined(__ppc__) || defined(__powerpc__)
-# include <lightning/jit_ppc.h>
-#elif defined(__sparc__)
-# include <lightning/jit_sparc.h>
-#elif defined(__ia64__)
-# include <lightning/jit_ia64.h>
-#elif defined(__hppa__)
-# include <lightning/jit_hppa.h>
-#elif defined(__aarch64__)
-# include <lightning/jit_aarch64.h>
-#elif defined(__s390__) || defined(__s390x__)
-# include <lightning/jit_s390.h>
-#elif defined(__alpha__)
-# include <lightning/jit_alpha.h>
-#endif
-
-#define jit_flag_node 0x0001 /* patch node not absolute */
-#define jit_flag_patch 0x0002 /* jump already patched */
-#define jit_flag_data 0x0004 /* data in the constant pool */
-#define jit_flag_use 0x0008 /* do not remove marker label */
-#define jit_flag_synth 0x0010 /* synthesized instruction */
-#define jit_flag_head 0x1000 /* label reached by normal flow */
-
-#define JIT_R(index) jit_r(index)
-#define JIT_V(index) jit_v(index)
-#define JIT_F(index) jit_f(index)
-#define JIT_R_NUM jit_r_num()
-#define JIT_V_NUM jit_v_num()
-#define JIT_F_NUM jit_f_num()
-
-#define JIT_DISABLE_DATA 1 /* force synthesize of constants */
-#define JIT_DISABLE_NOTE 2 /* disable debug info generation */
-
-#define jit_class_chk 0x02000000 /* just checking */
-#define jit_class_arg 0x08000000 /* argument register */
-#define jit_class_sav 0x10000000 /* callee save */
-#define jit_class_gpr 0x20000000 /* general purpose */
-#define jit_class_fpr 0x40000000 /* float */
-#define jit_class(reg) ((reg) & 0xffff0000)
-#define jit_regno(reg) ((reg) & 0x00007fff)
-
-typedef struct jit_node jit_node_t;
-typedef struct jit_state jit_state_t;
-
-typedef enum {
- jit_code_data,
-#define jit_live(u) jit_new_node_w(jit_code_live, u)
-#define jit_align(u) jit_new_node_w(jit_code_align, u)
- jit_code_live, jit_code_align,
- jit_code_save, jit_code_load,
-#define jit_name(u) _jit_name(_jit,u)
- jit_code_name,
-#define jit_note(u, v) _jit_note(_jit, u, v)
-#define jit_label() _jit_label(_jit)
-#define jit_forward() _jit_forward(_jit)
-#define jit_indirect() _jit_indirect(_jit)
-#define jit_link(u) _jit_link(_jit,u)
- jit_code_note, jit_code_label,
-
-#define jit_prolog() _jit_prolog(_jit)
- jit_code_prolog,
-
-#define jit_ellipsis() _jit_ellipsis(_jit)
- jit_code_ellipsis,
-#define jit_va_push(u) _jit_va_push(_jit,u)
- jit_code_va_push,
-#define jit_allocai(u) _jit_allocai(_jit,u)
-#define jit_allocar(u, v) _jit_allocar(_jit,u,v)
- jit_code_allocai, jit_code_allocar,
-
-#define jit_arg() _jit_arg(_jit)
- jit_code_arg,
-#define jit_getarg_c(u,v) _jit_getarg_c(_jit,u,v)
-#define jit_getarg_uc(u,v) _jit_getarg_uc(_jit,u,v)
- jit_code_getarg_c, jit_code_getarg_uc,
-#define jit_getarg_s(u,v) _jit_getarg_s(_jit,u,v)
-#define jit_getarg_us(u,v) _jit_getarg_us(_jit,u,v)
- jit_code_getarg_s, jit_code_getarg_us,
-#define jit_getarg_i(u,v) _jit_getarg_i(_jit,u,v)
-#if __WORDSIZE == 32
-# define jit_getarg(u,v) jit_getarg_i(u,v)
-#else
-# define jit_getarg(u,v) jit_getarg_l(u,v)
-# define jit_getarg_ui(u,v) _jit_getarg_ui(_jit,u,v)
-# define jit_getarg_l(u,v) _jit_getarg_l(_jit,u,v)
-#endif
- jit_code_getarg_i, jit_code_getarg_ui,
- jit_code_getarg_l,
-# define jit_putargr(u,v) _jit_putargr(_jit,u,v)
-# define jit_putargi(u,v) _jit_putargi(_jit,u,v)
- jit_code_putargr, jit_code_putargi,
-
-#define jit_va_start(u) jit_new_node_w(jit_code_va_start, u)
- jit_code_va_start,
-#define jit_va_arg(u, v) jit_new_node_ww(jit_code_va_arg, u, v)
-#define jit_va_arg_d(u, v) jit_new_node_ww(jit_code_va_arg_d, u, v)
- jit_code_va_arg, jit_code_va_arg_d,
-#define jit_va_end(u) jit_new_node_w(jit_code_va_end, u)
- jit_code_va_end,
-
-#define jit_addr(u,v,w) jit_new_node_www(jit_code_addr,u,v,w)
-#define jit_addi(u,v,w) jit_new_node_www(jit_code_addi,u,v,w)
- jit_code_addr, jit_code_addi,
-#define jit_addcr(u,v,w) jit_new_node_www(jit_code_addcr,u,v,w)
-#define jit_addci(u,v,w) jit_new_node_www(jit_code_addci,u,v,w)
- jit_code_addcr, jit_code_addci,
-#define jit_addxr(u,v,w) jit_new_node_www(jit_code_addxr,u,v,w)
-#define jit_addxi(u,v,w) jit_new_node_www(jit_code_addxi,u,v,w)
- jit_code_addxr, jit_code_addxi,
-#define jit_subr(u,v,w) jit_new_node_www(jit_code_subr,u,v,w)
-#define jit_subi(u,v,w) jit_new_node_www(jit_code_subi,u,v,w)
- jit_code_subr, jit_code_subi,
-#define jit_subcr(u,v,w) jit_new_node_www(jit_code_subcr,u,v,w)
-#define jit_subci(u,v,w) jit_new_node_www(jit_code_subci,u,v,w)
- jit_code_subcr, jit_code_subci,
-#define jit_subxr(u,v,w) jit_new_node_www(jit_code_subxr,u,v,w)
-#define jit_subxi(u,v,w) jit_new_node_www(jit_code_subxi,u,v,w)
- jit_code_subxr, jit_code_subxi,
-#define jit_rsbr(u,v,w) jit_subr(u,w,v)
-#define jit_rsbi(u,v,w) jit_new_node_www(jit_code_rsbi,u,v,w)
- jit_code_rsbi,
-#define jit_mulr(u,v,w) jit_new_node_www(jit_code_mulr,u,v,w)
-#define jit_muli(u,v,w) jit_new_node_www(jit_code_muli,u,v,w)
- jit_code_mulr, jit_code_muli,
-#define jit_qmulr(l,h,v,w) jit_new_node_qww(jit_code_qmulr,l,h,v,w)
-#define jit_qmuli(l,h,v,w) jit_new_node_qww(jit_code_qmuli,l,h,v,w)
- jit_code_qmulr, jit_code_qmuli,
-#define jit_qmulr_u(l,h,v,w) jit_new_node_qww(jit_code_qmulr_u,l,h,v,w)
-#define jit_qmuli_u(l,h,v,w) jit_new_node_qww(jit_code_qmuli_u,l,h,v,w)
- jit_code_qmulr_u, jit_code_qmuli_u,
-#define jit_divr(u,v,w) jit_new_node_www(jit_code_divr,u,v,w)
-#define jit_divi(u,v,w) jit_new_node_www(jit_code_divi,u,v,w)
- jit_code_divr, jit_code_divi,
-#define jit_divr_u(u,v,w) jit_new_node_www(jit_code_divr_u,u,v,w)
-#define jit_divi_u(u,v,w) jit_new_node_www(jit_code_divi_u,u,v,w)
- jit_code_divr_u, jit_code_divi_u,
-#define jit_qdivr(l,h,v,w) jit_new_node_qww(jit_code_qdivr,l,h,v,w)
-#define jit_qdivi(l,h,v,w) jit_new_node_qww(jit_code_qdivi,l,h,v,w)
- jit_code_qdivr, jit_code_qdivi,
-#define jit_qdivr_u(l,h,v,w) jit_new_node_qww(jit_code_qdivr_u,l,h,v,w)
-#define jit_qdivi_u(l,h,v,w) jit_new_node_qww(jit_code_qdivi_u,l,h,v,w)
- jit_code_qdivr_u, jit_code_qdivi_u,
-#define jit_remr(u,v,w) jit_new_node_www(jit_code_remr,u,v,w)
-#define jit_remi(u,v,w) jit_new_node_www(jit_code_remi,u,v,w)
- jit_code_remr, jit_code_remi,
-#define jit_remr_u(u,v,w) jit_new_node_www(jit_code_remr_u,u,v,w)
-#define jit_remi_u(u,v,w) jit_new_node_www(jit_code_remi_u,u,v,w)
- jit_code_remr_u, jit_code_remi_u,
-
-#define jit_andr(u,v,w) jit_new_node_www(jit_code_andr,u,v,w)
-#define jit_andi(u,v,w) jit_new_node_www(jit_code_andi,u,v,w)
- jit_code_andr, jit_code_andi,
-#define jit_orr(u,v,w) jit_new_node_www(jit_code_orr,u,v,w)
-#define jit_ori(u,v,w) jit_new_node_www(jit_code_ori,u,v,w)
- jit_code_orr, jit_code_ori,
-#define jit_xorr(u,v,w) jit_new_node_www(jit_code_xorr,u,v,w)
-#define jit_xori(u,v,w) jit_new_node_www(jit_code_xori,u,v,w)
- jit_code_xorr, jit_code_xori,
-
-#define jit_lshr(u,v,w) jit_new_node_www(jit_code_lshr,u,v,w)
-#define jit_lshi(u,v,w) jit_new_node_www(jit_code_lshi,u,v,w)
- jit_code_lshr, jit_code_lshi,
-#define jit_rshr(u,v,w) jit_new_node_www(jit_code_rshr,u,v,w)
-#define jit_rshi(u,v,w) jit_new_node_www(jit_code_rshi,u,v,w)
- jit_code_rshr, jit_code_rshi,
-#define jit_rshr_u(u,v,w) jit_new_node_www(jit_code_rshr_u,u,v,w)
-#define jit_rshi_u(u,v,w) jit_new_node_www(jit_code_rshi_u,u,v,w)
- jit_code_rshr_u, jit_code_rshi_u,
-
-#define jit_negr(u,v) jit_new_node_ww(jit_code_negr,u,v)
-#define jit_comr(u,v) jit_new_node_ww(jit_code_comr,u,v)
- jit_code_negr, jit_code_comr,
-
-#define jit_ltr(u,v,w) jit_new_node_www(jit_code_ltr,u,v,w)
-#define jit_lti(u,v,w) jit_new_node_www(jit_code_lti,u,v,w)
- jit_code_ltr, jit_code_lti,
-#define jit_ltr_u(u,v,w) jit_new_node_www(jit_code_ltr_u,u,v,w)
-#define jit_lti_u(u,v,w) jit_new_node_www(jit_code_lti_u,u,v,w)
- jit_code_ltr_u, jit_code_lti_u,
-#define jit_ler(u,v,w) jit_new_node_www(jit_code_ler,u,v,w)
-#define jit_lei(u,v,w) jit_new_node_www(jit_code_lei,u,v,w)
- jit_code_ler, jit_code_lei,
-#define jit_ler_u(u,v,w) jit_new_node_www(jit_code_ler_u,u,v,w)
-#define jit_lei_u(u,v,w) jit_new_node_www(jit_code_lei_u,u,v,w)
- jit_code_ler_u, jit_code_lei_u,
-#define jit_eqr(u,v,w) jit_new_node_www(jit_code_eqr,u,v,w)
-#define jit_eqi(u,v,w) jit_new_node_www(jit_code_eqi,u,v,w)
- jit_code_eqr, jit_code_eqi,
-#define jit_ger(u,v,w) jit_new_node_www(jit_code_ger,u,v,w)
-#define jit_gei(u,v,w) jit_new_node_www(jit_code_gei,u,v,w)
- jit_code_ger, jit_code_gei,
-#define jit_ger_u(u,v,w) jit_new_node_www(jit_code_ger_u,u,v,w)
-#define jit_gei_u(u,v,w) jit_new_node_www(jit_code_gei_u,u,v,w)
- jit_code_ger_u, jit_code_gei_u,
-#define jit_gtr(u,v,w) jit_new_node_www(jit_code_gtr,u,v,w)
-#define jit_gti(u,v,w) jit_new_node_www(jit_code_gti,u,v,w)
- jit_code_gtr, jit_code_gti,
-#define jit_gtr_u(u,v,w) jit_new_node_www(jit_code_gtr_u,u,v,w)
-#define jit_gti_u(u,v,w) jit_new_node_www(jit_code_gti_u,u,v,w)
- jit_code_gtr_u, jit_code_gti_u,
-#define jit_ner(u,v,w) jit_new_node_www(jit_code_ner,u,v,w)
-#define jit_nei(u,v,w) jit_new_node_www(jit_code_nei,u,v,w)
- jit_code_ner, jit_code_nei,
-
-#define jit_movr(u,v) jit_new_node_ww(jit_code_movr,u,v)
-#define jit_movi(u,v) jit_new_node_ww(jit_code_movi,u,v)
- jit_code_movr, jit_code_movi,
-#define jit_extr_c(u,v) jit_new_node_ww(jit_code_extr_c,u,v)
-#define jit_extr_uc(u,v) jit_new_node_ww(jit_code_extr_uc,u,v)
- jit_code_extr_c, jit_code_extr_uc,
-#define jit_extr_s(u,v) jit_new_node_ww(jit_code_extr_s,u,v)
-#define jit_extr_us(u,v) jit_new_node_ww(jit_code_extr_us,u,v)
- jit_code_extr_s, jit_code_extr_us,
-#if __WORDSIZE == 64
-# define jit_extr_i(u,v) jit_new_node_ww(jit_code_extr_i,u,v)
-# define jit_extr_ui(u,v) jit_new_node_ww(jit_code_extr_ui,u,v)
-#endif
- jit_code_extr_i, jit_code_extr_ui,
-
-#define jit_htonr_us(u,v) jit_new_node_ww(jit_code_htonr_us,u,v)
-#define jit_ntohr_us(u,v) jit_new_node_ww(jit_code_htonr_us,u,v)
- jit_code_htonr_us,
-#define jit_htonr_ui(u,v) jit_new_node_ww(jit_code_htonr_ui,u,v)
-#define jit_ntohr_ui(u,v) jit_new_node_ww(jit_code_htonr_ui,u,v)
-#if __WORDSIZE == 32
-# define jit_htonr(u,v) jit_new_node_ww(jit_code_htonr_ui,u,v)
-# define jit_ntohr(u,v) jit_new_node_ww(jit_code_htonr_ui,u,v)
-#else
-#define jit_htonr_ul(u,v) jit_new_node_ww(jit_code_htonr_ul,u,v)
-#define jit_ntohr_ul(u,v) jit_new_node_ww(jit_code_htonr_ul,u,v)
-# define jit_htonr(u,v) jit_new_node_ww(jit_code_htonr_ul,u,v)
-# define jit_ntohr(u,v) jit_new_node_ww(jit_code_htonr_ul,u,v)
-#endif
- jit_code_htonr_ui, jit_code_htonr_ul,
-
-#define jit_ldr_c(u,v) jit_new_node_ww(jit_code_ldr_c,u,v)
-#define jit_ldi_c(u,v) jit_new_node_wp(jit_code_ldi_c,u,v)
- jit_code_ldr_c, jit_code_ldi_c,
-#define jit_ldr_uc(u,v) jit_new_node_ww(jit_code_ldr_uc,u,v)
-#define jit_ldi_uc(u,v) jit_new_node_wp(jit_code_ldi_uc,u,v)
- jit_code_ldr_uc, jit_code_ldi_uc,
-#define jit_ldr_s(u,v) jit_new_node_ww(jit_code_ldr_s,u,v)
-#define jit_ldi_s(u,v) jit_new_node_wp(jit_code_ldi_s,u,v)
- jit_code_ldr_s, jit_code_ldi_s,
-#define jit_ldr_us(u,v) jit_new_node_ww(jit_code_ldr_us,u,v)
-#define jit_ldi_us(u,v) jit_new_node_wp(jit_code_ldi_us,u,v)
- jit_code_ldr_us, jit_code_ldi_us,
-#define jit_ldr_i(u,v) jit_new_node_ww(jit_code_ldr_i,u,v)
-#define jit_ldi_i(u,v) jit_new_node_wp(jit_code_ldi_i,u,v)
- jit_code_ldr_i, jit_code_ldi_i,
-#if __WORDSIZE == 32
-# define jit_ldr(u,v) jit_ldr_i(u,v)
-# define jit_ldi(u,v) jit_ldi_i(u,v)
-#else
-# define jit_ldr(u,v) jit_ldr_l(u,v)
-# define jit_ldi(u,v) jit_ldi_l(u,v)
-# define jit_ldr_ui(u,v) jit_new_node_ww(jit_code_ldr_ui,u,v)
-# define jit_ldi_ui(u,v) jit_new_node_wp(jit_code_ldi_ui,u,v)
-#define jit_ldr_l(u,v) jit_new_node_ww(jit_code_ldr_l,u,v)
-#define jit_ldi_l(u,v) jit_new_node_wp(jit_code_ldi_l,u,v)
-#endif
- jit_code_ldr_ui, jit_code_ldi_ui,
- jit_code_ldr_l, jit_code_ldi_l,
-
-#define jit_ldxr_c(u,v,w) jit_new_node_www(jit_code_ldxr_c,u,v,w)
-#define jit_ldxi_c(u,v,w) jit_new_node_www(jit_code_ldxi_c,u,v,w)
- jit_code_ldxr_c, jit_code_ldxi_c,
-#define jit_ldxr_uc(u,v,w) jit_new_node_www(jit_code_ldxr_uc,u,v,w)
-#define jit_ldxi_uc(u,v,w) jit_new_node_www(jit_code_ldxi_uc,u,v,w)
- jit_code_ldxr_uc, jit_code_ldxi_uc,
-#define jit_ldxr_s(u,v,w) jit_new_node_www(jit_code_ldxr_s,u,v,w)
-#define jit_ldxi_s(u,v,w) jit_new_node_www(jit_code_ldxi_s,u,v,w)
- jit_code_ldxr_s, jit_code_ldxi_s,
-#define jit_ldxr_us(u,v,w) jit_new_node_www(jit_code_ldxr_us,u,v,w)
-#define jit_ldxi_us(u,v,w) jit_new_node_www(jit_code_ldxi_us,u,v,w)
- jit_code_ldxr_us, jit_code_ldxi_us,
-#define jit_ldxr_i(u,v,w) jit_new_node_www(jit_code_ldxr_i,u,v,w)
-#define jit_ldxi_i(u,v,w) jit_new_node_www(jit_code_ldxi_i,u,v,w)
- jit_code_ldxr_i, jit_code_ldxi_i,
-#if __WORDSIZE == 32
-# define jit_ldxr(u,v,w) jit_ldxr_i(u,v,w)
-# define jit_ldxi(u,v,w) jit_ldxi_i(u,v,w)
-#else
-# define jit_ldxr_ui(u,v,w) jit_new_node_www(jit_code_ldxr_ui,u,v,w)
-# define jit_ldxi_ui(u,v,w) jit_new_node_www(jit_code_ldxi_ui,u,v,w)
-# define jit_ldxr_l(u,v,w) jit_new_node_www(jit_code_ldxr_l,u,v,w)
-# define jit_ldxi_l(u,v,w) jit_new_node_www(jit_code_ldxi_l,u,v,w)
-# define jit_ldxr(u,v,w) jit_ldxr_l(u,v,w)
-# define jit_ldxi(u,v,w) jit_ldxi_l(u,v,w)
-#endif
- jit_code_ldxr_ui, jit_code_ldxi_ui,
- jit_code_ldxr_l, jit_code_ldxi_l,
-
-#define jit_str_c(u,v) jit_new_node_ww(jit_code_str_c,u,v)
-#define jit_sti_c(u,v) jit_new_node_pw(jit_code_sti_c,u,v)
- jit_code_str_c, jit_code_sti_c,
-#define jit_str_s(u,v) jit_new_node_ww(jit_code_str_s,u,v)
-#define jit_sti_s(u,v) jit_new_node_pw(jit_code_sti_s,u,v)
- jit_code_str_s, jit_code_sti_s,
-#define jit_str_i(u,v) jit_new_node_ww(jit_code_str_i,u,v)
-#define jit_sti_i(u,v) jit_new_node_pw(jit_code_sti_i,u,v)
- jit_code_str_i, jit_code_sti_i,
-#if __WORDSIZE == 32
-# define jit_str(u,v) jit_str_i(u,v)
-# define jit_sti(u,v) jit_sti_i(u,v)
-#else
-# define jit_str(u,v) jit_str_l(u,v)
-# define jit_sti(u,v) jit_sti_l(u,v)
-# define jit_str_l(u,v) jit_new_node_ww(jit_code_str_l,u,v)
-# define jit_sti_l(u,v) jit_new_node_pw(jit_code_sti_l,u,v)
-#endif
- jit_code_str_l, jit_code_sti_l,
-
-#define jit_stxr_c(u,v,w) jit_new_node_www(jit_code_stxr_c,u,v,w)
-#define jit_stxi_c(u,v,w) jit_new_node_www(jit_code_stxi_c,u,v,w)
- jit_code_stxr_c, jit_code_stxi_c,
-#define jit_stxr_s(u,v,w) jit_new_node_www(jit_code_stxr_s,u,v,w)
-#define jit_stxi_s(u,v,w) jit_new_node_www(jit_code_stxi_s,u,v,w)
- jit_code_stxr_s, jit_code_stxi_s,
-#define jit_stxr_i(u,v,w) jit_new_node_www(jit_code_stxr_i,u,v,w)
-#define jit_stxi_i(u,v,w) jit_new_node_www(jit_code_stxi_i,u,v,w)
- jit_code_stxr_i, jit_code_stxi_i,
-#if __WORDSIZE == 32
-# define jit_stxr(u,v,w) jit_stxr_i(u,v,w)
-# define jit_stxi(u,v,w) jit_stxi_i(u,v,w)
-#else
-# define jit_stxr(u,v,w) jit_stxr_l(u,v,w)
-# define jit_stxi(u,v,w) jit_stxi_l(u,v,w)
-# define jit_stxr_l(u,v,w) jit_new_node_www(jit_code_stxr_l,u,v,w)
-# define jit_stxi_l(u,v,w) jit_new_node_www(jit_code_stxi_l,u,v,w)
-#endif
- jit_code_stxr_l, jit_code_stxi_l,
-
-#define jit_bltr(v,w) jit_new_node_pww(jit_code_bltr,NULL,v,w)
-#define jit_blti(v,w) jit_new_node_pww(jit_code_blti,NULL,v,w)
- jit_code_bltr, jit_code_blti,
-#define jit_bltr_u(v,w) jit_new_node_pww(jit_code_bltr_u,NULL,v,w)
-#define jit_blti_u(v,w) jit_new_node_pww(jit_code_blti_u,NULL,v,w)
- jit_code_bltr_u, jit_code_blti_u,
-#define jit_bler(v,w) jit_new_node_pww(jit_code_bler,NULL,v,w)
-#define jit_blei(v,w) jit_new_node_pww(jit_code_blei,NULL,v,w)
- jit_code_bler, jit_code_blei,
-#define jit_bler_u(v,w) jit_new_node_pww(jit_code_bler_u,NULL,v,w)
-#define jit_blei_u(v,w) jit_new_node_pww(jit_code_blei_u,NULL,v,w)
- jit_code_bler_u, jit_code_blei_u,
-#define jit_beqr(v,w) jit_new_node_pww(jit_code_beqr,NULL,v,w)
-#define jit_beqi(v,w) jit_new_node_pww(jit_code_beqi,NULL,v,w)
- jit_code_beqr, jit_code_beqi,
-#define jit_bger(v,w) jit_new_node_pww(jit_code_bger,NULL,v,w)
-#define jit_bgei(v,w) jit_new_node_pww(jit_code_bgei,NULL,v,w)
- jit_code_bger, jit_code_bgei,
-#define jit_bger_u(v,w) jit_new_node_pww(jit_code_bger_u,NULL,v,w)
-#define jit_bgei_u(v,w) jit_new_node_pww(jit_code_bgei_u,NULL,v,w)
- jit_code_bger_u, jit_code_bgei_u,
-#define jit_bgtr(v,w) jit_new_node_pww(jit_code_bgtr,NULL,v,w)
-#define jit_bgti(v,w) jit_new_node_pww(jit_code_bgti,NULL,v,w)
- jit_code_bgtr, jit_code_bgti,
-#define jit_bgtr_u(v,w) jit_new_node_pww(jit_code_bgtr_u,NULL,v,w)
-#define jit_bgti_u(v,w) jit_new_node_pww(jit_code_bgti_u,NULL,v,w)
- jit_code_bgtr_u, jit_code_bgti_u,
-#define jit_bner(v,w) jit_new_node_pww(jit_code_bner,NULL,v,w)
-#define jit_bnei(v,w) jit_new_node_pww(jit_code_bnei,NULL,v,w)
- jit_code_bner, jit_code_bnei,
-
-#define jit_bmsr(v,w) jit_new_node_pww(jit_code_bmsr,NULL,v,w)
-#define jit_bmsi(v,w) jit_new_node_pww(jit_code_bmsi,NULL,v,w)
- jit_code_bmsr, jit_code_bmsi,
-#define jit_bmcr(v,w) jit_new_node_pww(jit_code_bmcr,NULL,v,w)
-#define jit_bmci(v,w) jit_new_node_pww(jit_code_bmci,NULL,v,w)
- jit_code_bmcr, jit_code_bmci,
-
-#define jit_boaddr(v,w) jit_new_node_pww(jit_code_boaddr,NULL,v,w)
-#define jit_boaddi(v,w) jit_new_node_pww(jit_code_boaddi,NULL,v,w)
- jit_code_boaddr, jit_code_boaddi,
-#define jit_boaddr_u(v,w) jit_new_node_pww(jit_code_boaddr_u,NULL,v,w)
-#define jit_boaddi_u(v,w) jit_new_node_pww(jit_code_boaddi_u,NULL,v,w)
- jit_code_boaddr_u, jit_code_boaddi_u,
-#define jit_bxaddr(v,w) jit_new_node_pww(jit_code_bxaddr,NULL,v,w)
-#define jit_bxaddi(v,w) jit_new_node_pww(jit_code_bxaddi,NULL,v,w)
- jit_code_bxaddr, jit_code_bxaddi,
-#define jit_bxaddr_u(v,w) jit_new_node_pww(jit_code_bxaddr_u,NULL,v,w)
-#define jit_bxaddi_u(v,w) jit_new_node_pww(jit_code_bxaddi_u,NULL,v,w)
- jit_code_bxaddr_u, jit_code_bxaddi_u,
-#define jit_bosubr(v,w) jit_new_node_pww(jit_code_bosubr,NULL,v,w)
-#define jit_bosubi(v,w) jit_new_node_pww(jit_code_bosubi,NULL,v,w)
- jit_code_bosubr, jit_code_bosubi,
-#define jit_bosubr_u(v,w) jit_new_node_pww(jit_code_bosubr_u,NULL,v,w)
-#define jit_bosubi_u(v,w) jit_new_node_pww(jit_code_bosubi_u,NULL,v,w)
- jit_code_bosubr_u, jit_code_bosubi_u,
-#define jit_bxsubr(v,w) jit_new_node_pww(jit_code_bxsubr,NULL,v,w)
-#define jit_bxsubi(v,w) jit_new_node_pww(jit_code_bxsubi,NULL,v,w)
- jit_code_bxsubr, jit_code_bxsubi,
-#define jit_bxsubr_u(v,w) jit_new_node_pww(jit_code_bxsubr_u,NULL,v,w)
-#define jit_bxsubi_u(v,w) jit_new_node_pww(jit_code_bxsubi_u,NULL,v,w)
- jit_code_bxsubr_u, jit_code_bxsubi_u,
-
-#define jit_jmpr(u) jit_new_node_w(jit_code_jmpr,u)
-#define jit_jmpi() jit_new_node_p(jit_code_jmpi,NULL)
- jit_code_jmpr, jit_code_jmpi,
-#define jit_callr(u) jit_new_node_w(jit_code_callr,u)
-#define jit_calli(u) jit_new_node_p(jit_code_calli,u)
- jit_code_callr, jit_code_calli,
-
-#define jit_prepare() _jit_prepare(_jit)
- jit_code_prepare,
-#define jit_pushargr(u) _jit_pushargr(_jit,u)
-#define jit_pushargi(u) _jit_pushargi(_jit,u)
- jit_code_pushargr, jit_code_pushargi,
-#define jit_finishr(u) _jit_finishr(_jit,u)
-#define jit_finishi(u) _jit_finishi(_jit,u)
- jit_code_finishr, jit_code_finishi,
-#define jit_ret() _jit_ret(_jit)
- jit_code_ret,
-#define jit_retr(u) _jit_retr(_jit,u)
-#define jit_reti(u) _jit_reti(_jit,u)
- jit_code_retr, jit_code_reti,
-#define jit_retval_c(u) _jit_retval_c(_jit,u)
-#define jit_retval_uc(u) _jit_retval_uc(_jit,u)
- jit_code_retval_c, jit_code_retval_uc,
-#define jit_retval_s(u) _jit_retval_s(_jit,u)
-#define jit_retval_us(u) _jit_retval_us(_jit,u)
- jit_code_retval_s, jit_code_retval_us,
-#define jit_retval_i(u) _jit_retval_i(_jit,u)
-#if __WORDSIZE == 32
-# define jit_retval(u) jit_retval_i(u)
-#else
-# define jit_retval(u) jit_retval_l(u)
-# define jit_retval_ui(u) _jit_retval_ui(_jit,u)
-# define jit_retval_l(u) _jit_retval_l(_jit,u)
-#endif
- jit_code_retval_i, jit_code_retval_ui,
- jit_code_retval_l,
-
-#define jit_epilog() _jit_epilog(_jit)
- jit_code_epilog,
-
-#define jit_arg_f() _jit_arg_f(_jit)
- jit_code_arg_f,
-#define jit_getarg_f(u,v) _jit_getarg_f(_jit,u,v)
- jit_code_getarg_f,
-#define jit_putargr_f(u,v) _jit_putargr_f(_jit,u,v)
-#define jit_putargi_f(u,v) _jit_putargi_f(_jit,u,v)
- jit_code_putargr_f, jit_code_putargi_f,
-
-#define jit_addr_f(u,v,w) jit_new_node_www(jit_code_addr_f,u,v,w)
-#define jit_addi_f(u,v,w) jit_new_node_wwf(jit_code_addi_f,u,v,w)
- jit_code_addr_f, jit_code_addi_f,
-#define jit_subr_f(u,v,w) jit_new_node_www(jit_code_subr_f,u,v,w)
-#define jit_subi_f(u,v,w) jit_new_node_wwf(jit_code_subi_f,u,v,w)
- jit_code_subr_f, jit_code_subi_f,
-#define jit_rsbr_f(u,v,w) jit_subr_f(u,w,v)
-#define jit_rsbi_f(u,v,w) jit_new_node_wwf(jit_code_rsbi_f,u,v,w)
- jit_code_rsbi_f,
-#define jit_mulr_f(u,v,w) jit_new_node_www(jit_code_mulr_f,u,v,w)
-#define jit_muli_f(u,v,w) jit_new_node_wwf(jit_code_muli_f,u,v,w)
- jit_code_mulr_f, jit_code_muli_f,
-#define jit_divr_f(u,v,w) jit_new_node_www(jit_code_divr_f,u,v,w)
-#define jit_divi_f(u,v,w) jit_new_node_wwf(jit_code_divi_f,u,v,w)
- jit_code_divr_f, jit_code_divi_f,
-#define jit_negr_f(u,v) jit_new_node_ww(jit_code_negr_f,u,v)
-#define jit_absr_f(u,v) jit_new_node_ww(jit_code_absr_f,u,v)
-#define jit_sqrtr_f(u,v) jit_new_node_ww(jit_code_sqrtr_f,u,v)
- jit_code_negr_f, jit_code_absr_f, jit_code_sqrtr_f,
-
-#define jit_ltr_f(u,v,w) jit_new_node_www(jit_code_ltr_f,u,v,w)
-#define jit_lti_f(u,v,w) jit_new_node_wwf(jit_code_lti_f,u,v,w)
- jit_code_ltr_f, jit_code_lti_f,
-#define jit_ler_f(u,v,w) jit_new_node_www(jit_code_ler_f,u,v,w)
-#define jit_lei_f(u,v,w) jit_new_node_wwf(jit_code_lei_f,u,v,w)
- jit_code_ler_f, jit_code_lei_f,
-#define jit_eqr_f(u,v,w) jit_new_node_www(jit_code_eqr_f,u,v,w)
-#define jit_eqi_f(u,v,w) jit_new_node_wwf(jit_code_eqi_f,u,v,w)
- jit_code_eqr_f, jit_code_eqi_f,
-#define jit_ger_f(u,v,w) jit_new_node_www(jit_code_ger_f,u,v,w)
-#define jit_gei_f(u,v,w) jit_new_node_wwf(jit_code_gei_f,u,v,w)
- jit_code_ger_f, jit_code_gei_f,
-#define jit_gtr_f(u,v,w) jit_new_node_www(jit_code_gtr_f,u,v,w)
-#define jit_gti_f(u,v,w) jit_new_node_wwf(jit_code_gti_f,u,v,w)
- jit_code_gtr_f, jit_code_gti_f,
-#define jit_ner_f(u,v,w) jit_new_node_www(jit_code_ner_f,u,v,w)
-#define jit_nei_f(u,v,w) jit_new_node_wwf(jit_code_nei_f,u,v,w)
- jit_code_ner_f, jit_code_nei_f,
-#define jit_unltr_f(u,v,w) jit_new_node_www(jit_code_unltr_f,u,v,w)
-#define jit_unlti_f(u,v,w) jit_new_node_wwf(jit_code_unlti_f,u,v,w)
- jit_code_unltr_f, jit_code_unlti_f,
-#define jit_unler_f(u,v,w) jit_new_node_www(jit_code_unler_f,u,v,w)
-#define jit_unlei_f(u,v,w) jit_new_node_wwf(jit_code_unlei_f,u,v,w)
- jit_code_unler_f, jit_code_unlei_f,
-#define jit_uneqr_f(u,v,w) jit_new_node_www(jit_code_uneqr_f,u,v,w)
-#define jit_uneqi_f(u,v,w) jit_new_node_wwf(jit_code_uneqi_f,u,v,w)
- jit_code_uneqr_f, jit_code_uneqi_f,
-#define jit_unger_f(u,v,w) jit_new_node_www(jit_code_unger_f,u,v,w)
-#define jit_ungei_f(u,v,w) jit_new_node_wwf(jit_code_ungei_f,u,v,w)
- jit_code_unger_f, jit_code_ungei_f,
-#define jit_ungtr_f(u,v,w) jit_new_node_www(jit_code_ungtr_f,u,v,w)
-#define jit_ungti_f(u,v,w) jit_new_node_wwf(jit_code_ungti_f,u,v,w)
- jit_code_ungtr_f, jit_code_ungti_f,
-#define jit_ltgtr_f(u,v,w) jit_new_node_www(jit_code_ltgtr_f,u,v,w)
-#define jit_ltgti_f(u,v,w) jit_new_node_wwf(jit_code_ltgti_f,u,v,w)
- jit_code_ltgtr_f, jit_code_ltgti_f,
-#define jit_ordr_f(u,v,w) jit_new_node_www(jit_code_ordr_f,u,v,w)
-#define jit_ordi_f(u,v,w) jit_new_node_wwf(jit_code_ordi_f,u,v,w)
- jit_code_ordr_f, jit_code_ordi_f,
-#define jit_unordr_f(u,v,w) jit_new_node_www(jit_code_unordr_f,u,v,w)
-#define jit_unordi_f(u,v,w) jit_new_node_wwf(jit_code_unordi_f,u,v,w)
- jit_code_unordr_f, jit_code_unordi_f,
-
-#define jit_truncr_f_i(u,v) jit_new_node_ww(jit_code_truncr_f_i,u,v)
- jit_code_truncr_f_i,
-#if __WORDSIZE == 32
-# define jit_truncr_f(u,v) jit_truncr_f_i(u,v)
-#else
-# define jit_truncr_f(u,v) jit_truncr_f_l(u,v)
-# define jit_truncr_f_l(u,v) jit_new_node_ww(jit_code_truncr_f_l,u,v)
-#endif
- jit_code_truncr_f_l,
-#define jit_extr_f(u,v) jit_new_node_ww(jit_code_extr_f,u,v)
-#define jit_extr_d_f(u,v) jit_new_node_ww(jit_code_extr_d_f,u,v)
- jit_code_extr_f, jit_code_extr_d_f,
-#define jit_movr_f(u,v) jit_new_node_ww(jit_code_movr_f,u,v)
-#define jit_movi_f(u,v) jit_new_node_wf(jit_code_movi_f,u,v)
- jit_code_movr_f, jit_code_movi_f,
-
-#define jit_ldr_f(u,v) jit_new_node_ww(jit_code_ldr_f,u,v)
-#define jit_ldi_f(u,v) jit_new_node_wp(jit_code_ldi_f,u,v)
- jit_code_ldr_f, jit_code_ldi_f,
-#define jit_ldxr_f(u,v,w) jit_new_node_www(jit_code_ldxr_f,u,v,w)
-#define jit_ldxi_f(u,v,w) jit_new_node_www(jit_code_ldxi_f,u,v,w)
- jit_code_ldxr_f, jit_code_ldxi_f,
-#define jit_str_f(u,v) jit_new_node_ww(jit_code_str_f,u,v)
-#define jit_sti_f(u,v) jit_new_node_pw(jit_code_sti_f,u,v)
- jit_code_str_f, jit_code_sti_f,
-#define jit_stxr_f(u,v,w) jit_new_node_www(jit_code_stxr_f,u,v,w)
-#define jit_stxi_f(u,v,w) jit_new_node_www(jit_code_stxi_f,u,v,w)
- jit_code_stxr_f, jit_code_stxi_f,
-
-#define jit_bltr_f(v,w) jit_new_node_pww(jit_code_bltr_f,NULL,v,w)
-#define jit_blti_f(v,w) jit_new_node_pwf(jit_code_blti_f,NULL,v,w)
- jit_code_bltr_f, jit_code_blti_f,
-#define jit_bler_f(v,w) jit_new_node_pww(jit_code_bler_f,NULL,v,w)
-#define jit_blei_f(v,w) jit_new_node_pwf(jit_code_blei_f,NULL,v,w)
- jit_code_bler_f, jit_code_blei_f,
-#define jit_beqr_f(v,w) jit_new_node_pww(jit_code_beqr_f,NULL,v,w)
-#define jit_beqi_f(v,w) jit_new_node_pwf(jit_code_beqi_f,NULL,v,w)
- jit_code_beqr_f, jit_code_beqi_f,
-#define jit_bger_f(v,w) jit_new_node_pww(jit_code_bger_f,NULL,v,w)
-#define jit_bgei_f(v,w) jit_new_node_pwf(jit_code_bgei_f,NULL,v,w)
- jit_code_bger_f, jit_code_bgei_f,
-#define jit_bgtr_f(v,w) jit_new_node_pww(jit_code_bgtr_f,NULL,v,w)
-#define jit_bgti_f(v,w) jit_new_node_pwf(jit_code_bgti_f,NULL,v,w)
- jit_code_bgtr_f, jit_code_bgti_f,
-#define jit_bner_f(v,w) jit_new_node_pww(jit_code_bner_f,NULL,v,w)
-#define jit_bnei_f(v,w) jit_new_node_pwf(jit_code_bnei_f,NULL,v,w)
- jit_code_bner_f, jit_code_bnei_f,
-#define jit_bunltr_f(v,w) jit_new_node_pww(jit_code_bunltr_f,NULL,v,w)
-#define jit_bunlti_f(v,w) jit_new_node_pwf(jit_code_bunlti_f,NULL,v,w)
- jit_code_bunltr_f, jit_code_bunlti_f,
-#define jit_bunler_f(v,w) jit_new_node_pww(jit_code_bunler_f,NULL,v,w)
-#define jit_bunlei_f(v,w) jit_new_node_pwf(jit_code_bunlei_f,NULL,v,w)
- jit_code_bunler_f, jit_code_bunlei_f,
-#define jit_buneqr_f(v,w) jit_new_node_pww(jit_code_buneqr_f,NULL,v,w)
-#define jit_buneqi_f(v,w) jit_new_node_pwf(jit_code_buneqi_f,NULL,v,w)
- jit_code_buneqr_f, jit_code_buneqi_f,
-#define jit_bunger_f(v,w) jit_new_node_pww(jit_code_bunger_f,NULL,v,w)
-#define jit_bungei_f(v,w) jit_new_node_pwf(jit_code_bungei_f,NULL,v,w)
- jit_code_bunger_f, jit_code_bungei_f,
-#define jit_bungtr_f(v,w) jit_new_node_pww(jit_code_bungtr_f,NULL,v,w)
-#define jit_bungti_f(v,w) jit_new_node_pwf(jit_code_bungti_f,NULL,v,w)
- jit_code_bungtr_f, jit_code_bungti_f,
-#define jit_bltgtr_f(v,w) jit_new_node_pww(jit_code_bltgtr_f,NULL,v,w)
-#define jit_bltgti_f(v,w) jit_new_node_pwf(jit_code_bltgti_f,NULL,v,w)
- jit_code_bltgtr_f, jit_code_bltgti_f,
-#define jit_bordr_f(v,w) jit_new_node_pww(jit_code_bordr_f,NULL,v,w)
-#define jit_bordi_f(v,w) jit_new_node_pwf(jit_code_bordi_f,NULL,v,w)
- jit_code_bordr_f, jit_code_bordi_f,
-#define jit_bunordr_f(v,w) jit_new_node_pww(jit_code_bunordr_f,NULL,v,w)
-#define jit_bunordi_f(v,w) jit_new_node_pwf(jit_code_bunordi_f,NULL,v,w)
- jit_code_bunordr_f, jit_code_bunordi_f,
-
-#define jit_pushargr_f(u) _jit_pushargr_f(_jit,u)
-#define jit_pushargi_f(u) _jit_pushargi_f(_jit,u)
- jit_code_pushargr_f, jit_code_pushargi_f,
-#define jit_retr_f(u) _jit_retr_f(_jit,u)
-#define jit_reti_f(u) _jit_reti_f(_jit,u)
- jit_code_retr_f, jit_code_reti_f,
-#define jit_retval_f(u) _jit_retval_f(_jit,u)
- jit_code_retval_f,
-
-#define jit_arg_d() _jit_arg_d(_jit)
- jit_code_arg_d,
-#define jit_getarg_d(u,v) _jit_getarg_d(_jit,u,v)
- jit_code_getarg_d,
-#define jit_putargr_d(u,v) _jit_putargr_d(_jit,u,v)
-#define jit_putargi_d(u,v) _jit_putargi_d(_jit,u,v)
- jit_code_putargr_d, jit_code_putargi_d,
-
-#define jit_addr_d(u,v,w) jit_new_node_www(jit_code_addr_d,u,v,w)
-#define jit_addi_d(u,v,w) jit_new_node_wwd(jit_code_addi_d,u,v,w)
- jit_code_addr_d, jit_code_addi_d,
-#define jit_subr_d(u,v,w) jit_new_node_www(jit_code_subr_d,u,v,w)
-#define jit_subi_d(u,v,w) jit_new_node_wwd(jit_code_subi_d,u,v,w)
- jit_code_subr_d, jit_code_subi_d,
-#define jit_rsbr_d(u,v,w) jit_subr_d(u,w,v)
-#define jit_rsbi_d(u,v,w) jit_new_node_wwd(jit_code_rsbi_d,u,v,w)
- jit_code_rsbi_d,
-#define jit_mulr_d(u,v,w) jit_new_node_www(jit_code_mulr_d,u,v,w)
-#define jit_muli_d(u,v,w) jit_new_node_wwd(jit_code_muli_d,u,v,w)
- jit_code_mulr_d, jit_code_muli_d,
-#define jit_divr_d(u,v,w) jit_new_node_www(jit_code_divr_d,u,v,w)
-#define jit_divi_d(u,v,w) jit_new_node_wwd(jit_code_divi_d,u,v,w)
- jit_code_divr_d, jit_code_divi_d,
-
-#define jit_negr_d(u,v) jit_new_node_ww(jit_code_negr_d,u,v)
-#define jit_absr_d(u,v) jit_new_node_ww(jit_code_absr_d,u,v)
-#define jit_sqrtr_d(u,v) jit_new_node_ww(jit_code_sqrtr_d,u,v)
- jit_code_negr_d, jit_code_absr_d, jit_code_sqrtr_d,
-
-#define jit_ltr_d(u,v,w) jit_new_node_www(jit_code_ltr_d,u,v,w)
-#define jit_lti_d(u,v,w) jit_new_node_wwd(jit_code_lti_d,u,v,w)
- jit_code_ltr_d, jit_code_lti_d,
-#define jit_ler_d(u,v,w) jit_new_node_www(jit_code_ler_d,u,v,w)
-#define jit_lei_d(u,v,w) jit_new_node_wwd(jit_code_lei_d,u,v,w)
- jit_code_ler_d, jit_code_lei_d,
-#define jit_eqr_d(u,v,w) jit_new_node_www(jit_code_eqr_d,u,v,w)
-#define jit_eqi_d(u,v,w) jit_new_node_wwd(jit_code_eqi_d,u,v,w)
- jit_code_eqr_d, jit_code_eqi_d,
-#define jit_ger_d(u,v,w) jit_new_node_www(jit_code_ger_d,u,v,w)
-#define jit_gei_d(u,v,w) jit_new_node_wwd(jit_code_gei_d,u,v,w)
- jit_code_ger_d, jit_code_gei_d,
-#define jit_gtr_d(u,v,w) jit_new_node_www(jit_code_gtr_d,u,v,w)
-#define jit_gti_d(u,v,w) jit_new_node_wwd(jit_code_gti_d,u,v,w)
- jit_code_gtr_d, jit_code_gti_d,
-#define jit_ner_d(u,v,w) jit_new_node_www(jit_code_ner_d,u,v,w)
-#define jit_nei_d(u,v,w) jit_new_node_wwd(jit_code_nei_d,u,v,w)
- jit_code_ner_d, jit_code_nei_d,
-#define jit_unltr_d(u,v,w) jit_new_node_www(jit_code_unltr_d,u,v,w)
-#define jit_unlti_d(u,v,w) jit_new_node_wwd(jit_code_unlti_d,u,v,w)
- jit_code_unltr_d, jit_code_unlti_d,
-#define jit_unler_d(u,v,w) jit_new_node_www(jit_code_unler_d,u,v,w)
-#define jit_unlei_d(u,v,w) jit_new_node_wwd(jit_code_unlei_d,u,v,w)
- jit_code_unler_d, jit_code_unlei_d,
-#define jit_uneqr_d(u,v,w) jit_new_node_www(jit_code_uneqr_d,u,v,w)
-#define jit_uneqi_d(u,v,w) jit_new_node_wwd(jit_code_uneqi_d,u,v,w)
- jit_code_uneqr_d, jit_code_uneqi_d,
-#define jit_unger_d(u,v,w) jit_new_node_www(jit_code_unger_d,u,v,w)
-#define jit_ungei_d(u,v,w) jit_new_node_wwd(jit_code_ungei_d,u,v,w)
- jit_code_unger_d, jit_code_ungei_d,
-#define jit_ungtr_d(u,v,w) jit_new_node_www(jit_code_ungtr_d,u,v,w)
-#define jit_ungti_d(u,v,w) jit_new_node_wwd(jit_code_ungti_d,u,v,w)
- jit_code_ungtr_d, jit_code_ungti_d,
-#define jit_ltgtr_d(u,v,w) jit_new_node_www(jit_code_ltgtr_d,u,v,w)
-#define jit_ltgti_d(u,v,w) jit_new_node_wwd(jit_code_ltgti_d,u,v,w)
- jit_code_ltgtr_d, jit_code_ltgti_d,
-#define jit_ordr_d(u,v,w) jit_new_node_www(jit_code_ordr_d,u,v,w)
-#define jit_ordi_d(u,v,w) jit_new_node_wwd(jit_code_ordi_d,u,v,w)
- jit_code_ordr_d, jit_code_ordi_d,
-#define jit_unordr_d(u,v,w) jit_new_node_www(jit_code_unordr_d,u,v,w)
-#define jit_unordi_d(u,v,w) jit_new_node_wwd(jit_code_unordi_d,u,v,w)
- jit_code_unordr_d, jit_code_unordi_d,
-
-#define jit_truncr_d_i(u,v) jit_new_node_ww(jit_code_truncr_d_i,u,v)
- jit_code_truncr_d_i,
-#if __WORDSIZE == 32
-# define jit_truncr_d(u,v) jit_truncr_d_i(u,v)
-#else
-# define jit_truncr_d(u,v) jit_truncr_d_l(u,v)
-# define jit_truncr_d_l(u,v) jit_new_node_ww(jit_code_truncr_d_l,u,v)
-#endif
- jit_code_truncr_d_l,
-#define jit_extr_d(u,v) jit_new_node_ww(jit_code_extr_d,u,v)
-#define jit_extr_f_d(u,v) jit_new_node_ww(jit_code_extr_f_d,u,v)
- jit_code_extr_d, jit_code_extr_f_d,
-#define jit_movr_d(u,v) jit_new_node_ww(jit_code_movr_d,u,v)
-#define jit_movi_d(u,v) jit_new_node_wd(jit_code_movi_d,u,v)
- jit_code_movr_d, jit_code_movi_d,
-
-#define jit_ldr_d(u,v) jit_new_node_ww(jit_code_ldr_d,u,v)
-#define jit_ldi_d(u,v) jit_new_node_wp(jit_code_ldi_d,u,v)
- jit_code_ldr_d, jit_code_ldi_d,
-#define jit_ldxr_d(u,v,w) jit_new_node_www(jit_code_ldxr_d,u,v,w)
-#define jit_ldxi_d(u,v,w) jit_new_node_www(jit_code_ldxi_d,u,v,w)
- jit_code_ldxr_d, jit_code_ldxi_d,
-#define jit_str_d(u,v) jit_new_node_ww(jit_code_str_d,u,v)
-#define jit_sti_d(u,v) jit_new_node_pw(jit_code_sti_d,u,v)
- jit_code_str_d, jit_code_sti_d,
-#define jit_stxr_d(u,v,w) jit_new_node_www(jit_code_stxr_d,u,v,w)
-#define jit_stxi_d(u,v,w) jit_new_node_www(jit_code_stxi_d,u,v,w)
- jit_code_stxr_d, jit_code_stxi_d,
-
-#define jit_bltr_d(v,w) jit_new_node_pww(jit_code_bltr_d,NULL,v,w)
-#define jit_blti_d(v,w) jit_new_node_pwd(jit_code_blti_d,NULL,v,w)
- jit_code_bltr_d, jit_code_blti_d,
-#define jit_bler_d(v,w) jit_new_node_pww(jit_code_bler_d,NULL,v,w)
-#define jit_blei_d(v,w) jit_new_node_pwd(jit_code_blei_d,NULL,v,w)
- jit_code_bler_d, jit_code_blei_d,
-#define jit_beqr_d(v,w) jit_new_node_pww(jit_code_beqr_d,NULL,v,w)
-#define jit_beqi_d(v,w) jit_new_node_pwd(jit_code_beqi_d,NULL,v,w)
- jit_code_beqr_d, jit_code_beqi_d,
-#define jit_bger_d(v,w) jit_new_node_pww(jit_code_bger_d,NULL,v,w)
-#define jit_bgei_d(v,w) jit_new_node_pwd(jit_code_bgei_d,NULL,v,w)
- jit_code_bger_d, jit_code_bgei_d,
-#define jit_bgtr_d(v,w) jit_new_node_pww(jit_code_bgtr_d,NULL,v,w)
-#define jit_bgti_d(v,w) jit_new_node_pwd(jit_code_bgti_d,NULL,v,w)
- jit_code_bgtr_d, jit_code_bgti_d,
-#define jit_bner_d(v,w) jit_new_node_pww(jit_code_bner_d,NULL,v,w)
-#define jit_bnei_d(v,w) jit_new_node_pwd(jit_code_bnei_d,NULL,v,w)
- jit_code_bner_d, jit_code_bnei_d,
-#define jit_bunltr_d(v,w) jit_new_node_pww(jit_code_bunltr_d,NULL,v,w)
-#define jit_bunlti_d(v,w) jit_new_node_pwd(jit_code_bunlti_d,NULL,v,w)
- jit_code_bunltr_d, jit_code_bunlti_d,
-#define jit_bunler_d(v,w) jit_new_node_pww(jit_code_bunler_d,NULL,v,w)
-#define jit_bunlei_d(v,w) jit_new_node_pwd(jit_code_bunlei_d,NULL,v,w)
- jit_code_bunler_d, jit_code_bunlei_d,
-#define jit_buneqr_d(v,w) jit_new_node_pww(jit_code_buneqr_d,NULL,v,w)
-#define jit_buneqi_d(v,w) jit_new_node_pwd(jit_code_buneqi_d,NULL,v,w)
- jit_code_buneqr_d, jit_code_buneqi_d,
-#define jit_bunger_d(v,w) jit_new_node_pww(jit_code_bunger_d,NULL,v,w)
-#define jit_bungei_d(v,w) jit_new_node_pwd(jit_code_bungei_d,NULL,v,w)
- jit_code_bunger_d, jit_code_bungei_d,
-#define jit_bungtr_d(v,w) jit_new_node_pww(jit_code_bungtr_d,NULL,v,w)
-#define jit_bungti_d(v,w) jit_new_node_pwd(jit_code_bungti_d,NULL,v,w)
- jit_code_bungtr_d, jit_code_bungti_d,
-#define jit_bltgtr_d(v,w) jit_new_node_pww(jit_code_bltgtr_d,NULL,v,w)
-#define jit_bltgti_d(v,w) jit_new_node_pwd(jit_code_bltgti_d,NULL,v,w)
- jit_code_bltgtr_d, jit_code_bltgti_d,
-#define jit_bordr_d(v,w) jit_new_node_pww(jit_code_bordr_d,NULL,v,w)
-#define jit_bordi_d(v,w) jit_new_node_pwd(jit_code_bordi_d,NULL,v,w)
- jit_code_bordr_d, jit_code_bordi_d,
-#define jit_bunordr_d(v,w) jit_new_node_pww(jit_code_bunordr_d,NULL,v,w)
-#define jit_bunordi_d(v,w) jit_new_node_pwd(jit_code_bunordi_d,NULL,v,w)
- jit_code_bunordr_d, jit_code_bunordi_d,
-
-#define jit_pushargr_d(u) _jit_pushargr_d(_jit,u)
-#define jit_pushargi_d(u) _jit_pushargi_d(_jit,u)
- jit_code_pushargr_d, jit_code_pushargi_d,
-#define jit_retr_d(u) _jit_retr_d(_jit,u)
-#define jit_reti_d(u) _jit_reti_d(_jit,u)
- jit_code_retr_d, jit_code_reti_d,
-#define jit_retval_d(u) _jit_retval_d(_jit,u)
- jit_code_retval_d,
-
- /* Special internal backend specific codes */
- jit_code_movr_w_f, jit_code_movr_ww_d, /* w* -> f|d */
-#define jit_movr_w_f(u, v) jit_new_node_ww(jit_code_movr_w_f, u, v)
-#define jit_movr_ww_d(u, v, w) jit_new_node_www(jit_code_movr_ww_d, u, v, w)
- jit_code_movr_w_d, /* w -> d */
-#define jit_movr_w_d(u, v) jit_new_node_ww(jit_code_movr_w_d, u, v)
-
- jit_code_movr_f_w, jit_code_movi_f_w, /* f|d -> w* */
-#define jit_movr_f_w(u, v) jit_new_node_ww(jit_code_movr_f_w, u, v)
-#define jit_movi_f_w(u, v) jit_new_node_wf(jit_code_movi_f_w, u, v)
- jit_code_movr_d_ww, jit_code_movi_d_ww,
-#define jit_movr_d_ww(u, v, w) jit_new_node_www(jit_code_movr_d_ww, u, v, w)
-#define jit_movi_d_ww(u, v, w) jit_new_node_wwd(jit_code_movi_d_ww, u, v, w)
-
- jit_code_movr_d_w, jit_code_movi_d_w, /* d -> w */
-#define jit_movr_d_w(u, v) jit_new_node_ww(jit_code_movr_d_w, u, v)
-#define jit_movi_d_w(u, v) jit_new_node_wd(jit_code_movi_d_w, u, v)
-
- jit_code_last_code
-} jit_code_t;
-
-typedef void* (*jit_alloc_func_ptr) (size_t);
-typedef void* (*jit_realloc_func_ptr) (void*, size_t);
-typedef void (*jit_free_func_ptr) (void*);
-
-/*
- * Prototypes
- */
-extern void init_jit(const char*);
-extern void finish_jit(void);
-
-extern jit_state_t *jit_new_state(void);
-#define jit_clear_state() _jit_clear_state(_jit)
-extern void _jit_clear_state(jit_state_t*);
-#define jit_destroy_state() _jit_destroy_state(_jit)
-extern void _jit_destroy_state(jit_state_t*);
-
-#define jit_address(node) _jit_address(_jit, node)
-extern jit_pointer_t _jit_address(jit_state_t*, jit_node_t*);
-extern jit_node_t *_jit_name(jit_state_t*, const char*);
-extern jit_node_t *_jit_note(jit_state_t*, const char*, int);
-extern jit_node_t *_jit_label(jit_state_t*);
-extern jit_node_t *_jit_forward(jit_state_t*);
-extern jit_node_t *_jit_indirect(jit_state_t*);
-extern void _jit_link(jit_state_t*, jit_node_t*);
-#define jit_forward_p(u) _jit_forward_p(_jit,u)
-extern jit_bool_t _jit_forward_p(jit_state_t*,jit_node_t*);
-#define jit_indirect_p(u) _jit_indirect_p(_jit,u)
-extern jit_bool_t _jit_indirect_p(jit_state_t*,jit_node_t*);
-#define jit_target_p(u) _jit_target_p(_jit,u)
-extern jit_bool_t _jit_target_p(jit_state_t*,jit_node_t*);
-
-extern void _jit_prolog(jit_state_t*);
-
-extern jit_int32_t _jit_allocai(jit_state_t*, jit_int32_t);
-extern void _jit_allocar(jit_state_t*, jit_int32_t, jit_int32_t);
-extern void _jit_ellipsis(jit_state_t*);
-
-extern jit_node_t *_jit_arg(jit_state_t*);
-extern void _jit_getarg_c(jit_state_t*, jit_gpr_t, jit_node_t*);
-extern void _jit_getarg_uc(jit_state_t*, jit_gpr_t, jit_node_t*);
-extern void _jit_getarg_s(jit_state_t*, jit_gpr_t, jit_node_t*);
-extern void _jit_getarg_us(jit_state_t*, jit_gpr_t, jit_node_t*);
-extern void _jit_getarg_i(jit_state_t*, jit_gpr_t, jit_node_t*);
-#if __WORDSIZE == 64
-extern void _jit_getarg_ui(jit_state_t*, jit_gpr_t, jit_node_t*);
-extern void _jit_getarg_l(jit_state_t*, jit_gpr_t, jit_node_t*);
-#endif
-extern void _jit_putargr(jit_state_t*, jit_gpr_t, jit_node_t*);
-extern void _jit_putargi(jit_state_t*, jit_word_t, jit_node_t*);
-
-extern void _jit_prepare(jit_state_t*);
-extern void _jit_ellipsis(jit_state_t*);
-extern void _jit_va_push(jit_state_t*, jit_gpr_t);
-extern void _jit_pushargr(jit_state_t*, jit_gpr_t);
-extern void _jit_pushargi(jit_state_t*, jit_word_t);
-extern void _jit_finishr(jit_state_t*, jit_gpr_t);
-extern jit_node_t *_jit_finishi(jit_state_t*, jit_pointer_t);
-extern void _jit_ret(jit_state_t*);
-extern void _jit_retr(jit_state_t*, jit_gpr_t);
-extern void _jit_reti(jit_state_t*, jit_word_t);
-extern void _jit_retval_c(jit_state_t*, jit_gpr_t);
-extern void _jit_retval_uc(jit_state_t*, jit_gpr_t);
-extern void _jit_retval_s(jit_state_t*, jit_gpr_t);
-extern void _jit_retval_us(jit_state_t*, jit_gpr_t);
-extern void _jit_retval_i(jit_state_t*, jit_gpr_t);
-#if __WORDSIZE == 64
-extern void _jit_retval_ui(jit_state_t*, jit_gpr_t);
-extern void _jit_retval_l(jit_state_t*, jit_gpr_t);
-#endif
-extern void _jit_epilog(jit_state_t*);
-
-#define jit_patch(u) _jit_patch(_jit,u)
-extern void _jit_patch(jit_state_t*, jit_node_t*);
-#define jit_patch_at(u,v) _jit_patch_at(_jit,u,v)
-extern void _jit_patch_at(jit_state_t*, jit_node_t*, jit_node_t*);
-#define jit_patch_abs(u,v) _jit_patch_abs(_jit,u,v)
-extern void _jit_patch_abs(jit_state_t*, jit_node_t*, jit_pointer_t);
-#define jit_realize() _jit_realize(_jit)
-extern void _jit_realize(jit_state_t*);
-#define jit_get_code(u) _jit_get_code(_jit,u)
-extern jit_pointer_t _jit_get_code(jit_state_t*, jit_word_t*);
-#define jit_set_code(u,v) _jit_set_code(_jit,u,v)
-extern void _jit_set_code(jit_state_t*, jit_pointer_t, jit_word_t);
-#define jit_get_data(u,v) _jit_get_data(_jit,u,v)
-extern jit_pointer_t _jit_get_data(jit_state_t*, jit_word_t*, jit_word_t*);
-#define jit_set_data(u,v,w) _jit_set_data(_jit,u,v,w)
-extern void _jit_set_data(jit_state_t*, jit_pointer_t, jit_word_t, jit_word_t);
-#define jit_frame(u) _jit_frame(_jit,u)
-extern void _jit_frame(jit_state_t*, jit_int32_t);
-#define jit_tramp(u) _jit_tramp(_jit,u)
-extern void _jit_tramp(jit_state_t*, jit_int32_t);
-#define jit_emit() _jit_emit(_jit)
-extern jit_pointer_t _jit_emit(jit_state_t*);
-
-#define jit_print() _jit_print(_jit)
-extern void _jit_print(jit_state_t*);
-
-extern jit_node_t *_jit_arg_f(jit_state_t*);
-extern void _jit_getarg_f(jit_state_t*, jit_fpr_t, jit_node_t*);
-extern void _jit_putargr_f(jit_state_t*, jit_fpr_t, jit_node_t*);
-extern void _jit_putargi_f(jit_state_t*, jit_float32_t, jit_node_t*);
-extern void _jit_pushargr_f(jit_state_t*, jit_fpr_t);
-extern void _jit_pushargi_f(jit_state_t*, jit_float32_t);
-extern void _jit_retr_f(jit_state_t*, jit_fpr_t);
-extern void _jit_reti_f(jit_state_t*, jit_float32_t);
-extern void _jit_retval_f(jit_state_t*, jit_fpr_t);
-
-extern jit_node_t *_jit_arg_d(jit_state_t*);
-extern void _jit_getarg_d(jit_state_t*, jit_fpr_t, jit_node_t*);
-extern void _jit_putargr_d(jit_state_t*, jit_fpr_t, jit_node_t*);
-extern void _jit_putargi_d(jit_state_t*, jit_float64_t, jit_node_t*);
-extern void _jit_pushargr_d(jit_state_t*, jit_fpr_t);
-extern void _jit_pushargi_d(jit_state_t*, jit_float64_t);
-extern void _jit_retr_d(jit_state_t*, jit_fpr_t);
-extern void _jit_reti_d(jit_state_t*, jit_float64_t);
-extern void _jit_retval_d(jit_state_t*, jit_fpr_t);
-
-#define jit_new_node(c) _jit_new_node(_jit,c)
-extern jit_node_t *_jit_new_node(jit_state_t*, jit_code_t);
-#define jit_new_node_w(c,u) _jit_new_node_w(_jit,c,u)
-extern jit_node_t *_jit_new_node_w(jit_state_t*, jit_code_t,
- jit_word_t);
-#define jit_new_node_f(c,u) _jit_new_node_f(_jit,c,u)
-extern jit_node_t *_jit_new_node_f(jit_state_t*, jit_code_t,
- jit_float32_t);
-#define jit_new_node_d(c,u) _jit_new_node_d(_jit,c,u)
-extern jit_node_t *_jit_new_node_d(jit_state_t*, jit_code_t,
- jit_float64_t);
-#define jit_new_node_p(c,u) _jit_new_node_p(_jit,c,u)
-extern jit_node_t *_jit_new_node_p(jit_state_t*, jit_code_t,
- jit_pointer_t);
-#define jit_new_node_ww(c,u,v) _jit_new_node_ww(_jit,c,u,v)
-extern jit_node_t *_jit_new_node_ww(jit_state_t*,jit_code_t,
- jit_word_t, jit_word_t);
-#define jit_new_node_wp(c,u,v) _jit_new_node_wp(_jit,c,u,v)
-extern jit_node_t *_jit_new_node_wp(jit_state_t*,jit_code_t,
- jit_word_t, jit_pointer_t);
-#define jit_new_node_fp(c,u,v) _jit_new_node_fp(_jit,c,u,v)
-extern jit_node_t *_jit_new_node_fp(jit_state_t*,jit_code_t,
- jit_float32_t, jit_pointer_t);
-#define jit_new_node_dp(c,u,v) _jit_new_node_dp(_jit,c,u,v)
-extern jit_node_t *_jit_new_node_dp(jit_state_t*,jit_code_t,
- jit_float64_t, jit_pointer_t);
-#define jit_new_node_pw(c,u,v) _jit_new_node_pw(_jit,c,u,v)
-extern jit_node_t *_jit_new_node_pw(jit_state_t*,jit_code_t,
- jit_pointer_t, jit_word_t);
-#define jit_new_node_wf(c,u,v) _jit_new_node_wf(_jit,c,u,v)
-extern jit_node_t *_jit_new_node_wf(jit_state_t*, jit_code_t,
- jit_word_t, jit_float32_t);
-#define jit_new_node_wd(c,u,v) _jit_new_node_wd(_jit,c,u,v)
-extern jit_node_t *_jit_new_node_wd(jit_state_t*, jit_code_t,
- jit_word_t, jit_float64_t);
-#define jit_new_node_www(c,u,v,w) _jit_new_node_www(_jit,c,u,v,w)
-extern jit_node_t *_jit_new_node_www(jit_state_t*, jit_code_t,
- jit_word_t, jit_word_t, jit_word_t);
-#define jit_new_node_qww(c,l,h,v,w) _jit_new_node_qww(_jit,c,l,h,v,w)
-extern jit_node_t *_jit_new_node_qww(jit_state_t*, jit_code_t,
- jit_int32_t, jit_int32_t,
- jit_word_t, jit_word_t);
-#define jit_new_node_wwf(c,u,v,w) _jit_new_node_wwf(_jit,c,u,v,w)
-extern jit_node_t *_jit_new_node_wwf(jit_state_t*, jit_code_t,
- jit_word_t, jit_word_t, jit_float32_t);
-#define jit_new_node_wwd(c,u,v,w) _jit_new_node_wwd(_jit,c,u,v,w)
-extern jit_node_t *_jit_new_node_wwd(jit_state_t*, jit_code_t,
- jit_word_t, jit_word_t, jit_float64_t);
-#define jit_new_node_pww(c,u,v,w) _jit_new_node_pww(_jit,c,u,v,w)
-extern jit_node_t *_jit_new_node_pww(jit_state_t*, jit_code_t,
- jit_pointer_t, jit_word_t, jit_word_t);
-#define jit_new_node_pwf(c,u,v,w) _jit_new_node_pwf(_jit,c,u,v,w)
-extern jit_node_t *_jit_new_node_pwf(jit_state_t*, jit_code_t,
- jit_pointer_t, jit_word_t, jit_float32_t);
-#define jit_new_node_pwd(c,u,v,w) _jit_new_node_pwd(_jit,c,u,v,w)
-extern jit_node_t *_jit_new_node_pwd(jit_state_t*, jit_code_t,
- jit_pointer_t, jit_word_t, jit_float64_t);
-
-#define jit_arg_register_p(u) _jit_arg_register_p(_jit,u)
-extern jit_bool_t _jit_arg_register_p(jit_state_t*, jit_node_t*);
-#define jit_callee_save_p(u) _jit_callee_save_p(_jit,u)
-extern jit_bool_t _jit_callee_save_p(jit_state_t*, jit_int32_t);
-#define jit_pointer_p(u) _jit_pointer_p(_jit,u)
-extern jit_bool_t _jit_pointer_p(jit_state_t*,jit_pointer_t);
-
-#define jit_get_note(n,u,v,w) _jit_get_note(_jit,n,u,v,w)
-extern jit_bool_t _jit_get_note(jit_state_t*,jit_pointer_t,char**,char**,int*);
-
-#define jit_disassemble() _jit_disassemble(_jit)
-extern void _jit_disassemble(jit_state_t*);
-
-extern void jit_set_memory_functions(jit_alloc_func_ptr,
- jit_realloc_func_ptr,
- jit_free_func_ptr);
-extern void jit_get_memory_functions(jit_alloc_func_ptr*,
- jit_realloc_func_ptr*,
- jit_free_func_ptr*);
-
-#endif /* _lightning_h */
diff --git a/libguile/lightning/include/lightning/jit_private.h b/libguile/lightning/include/lightning/jit_private.h
deleted file mode 100644
index d09fc46f2..000000000
--- a/libguile/lightning/include/lightning/jit_private.h
+++ /dev/null
@@ -1,740 +0,0 @@
-/*
- * Copyright (C) 2012-2018 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#ifndef _jit_private_h
-#define _jit_private_h
-
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <assert.h>
-#include <limits.h>
-#include <stdio.h>
-
-#if defined(__GNUC__)
-# define maybe_unused __attribute__ ((unused))
-# define unlikely(exprn) __builtin_expect(!!(exprn), 0)
-# define likely(exprn) __builtin_expect(!!(exprn), 1)
-# if (__GNUC__ >= 4)
-# define PUBLIC __attribute__ ((visibility("default")))
-# define HIDDEN __attribute__ ((visibility("hidden")))
-# else
-# define PUBLIC /**/
-# define HIDDEN /**/
-# endif
-#else
-# define maybe_unused /**/
-# define unlikely(exprn) exprn
-# define likely(exprn) exprn
-# define PUBLIC /**/
-# define HIDDEN /**/
-#endif
-
-#define rc(value) jit_class_##value
-#define rn(reg) (jit_regno(_rvs[jit_regno(reg)].spec))
-
-#if defined(__i386__) || defined(__x86_64__)
-# define JIT_SP _RSP
-# define JIT_RET _RAX
-# if __X32
-# define JIT_FRET _ST0
-typedef jit_uint32_t jit_regset_t;
-# else
-# if __CYGWIN__
-# define JIT_RA0 _RCX
-# else
-# define JIT_RA0 _RDI
-# endif
-# define JIT_FA0 _XMM0
-# define JIT_FRET _XMM0
-typedef jit_uint64_t jit_regset_t;
-# endif
-#elif defined(__mips__)
-# define JIT_RA0 _A0
-# define JIT_FA0 _F12
-# define JIT_SP _SP
-# define JIT_RET _V0
-# define JIT_FRET _F0
-typedef jit_uint64_t jit_regset_t;
-#elif defined(__arm__)
-# define JIT_RA0 _R0
-# define JIT_FA0 _D0
-# define JIT_SP _R13
-# define JIT_RET _R0
-# if defined(__ARM_PCS_VFP)
-# define JIT_FRET _D0
-# else
-# define JIT_FRET _R0
-# endif
-typedef jit_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;
-#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;
-# else
-typedef struct {
- jit_uint64_t rl;
- jit_uint64_t rh;
-} jit_regset_t;
-# endif
-#elif defined(__ia64__)
-# define JIT_SP _R12
-# 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;
-} 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;
-#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;
-#elif defined(__s390__) || defined(__s390x__)
-# define JIT_SP _R15
-# define JIT_RET _R2
-# define JIT_FRET _F0
-typedef jit_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;
-#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);
-
-#define jit_size(vector) (sizeof(vector) / sizeof((vector)[0]))
-
-#define jit_reg_free_p(regno) \
- (!jit_regset_tstbit(&_jitc->reglive, regno) && \
- !jit_regset_tstbit(&_jitc->regarg, regno) && \
- !jit_regset_tstbit(&_jitc->regsav, regno))
-
-#define jit_reg_free_if_spill_p(regno) \
- (!jit_regset_tstbit(&_jitc->regarg, regno) && \
- !jit_regset_tstbit(&_jitc->regsav, regno))
-
-#define jit_inc_synth(code) \
- do { \
- (void)jit_new_node(jit_code_##code); \
- jit_synth_inc(); \
- } while (0)
-#define jit_inc_synth_w(code, u) \
- do { \
- (void)jit_new_node_w(jit_code_##code, u); \
- jit_synth_inc(); \
- } while (0)
-#define jit_inc_synth_f(code, u) \
- do { \
- (void)jit_new_node_f(jit_code_##code, u); \
- jit_synth_inc(); \
- } while (0)
-#define jit_inc_synth_d(code, u) \
- do { \
- (void)jit_new_node_d(jit_code_##code, u); \
- jit_synth_inc(); \
- } while (0)
-#define jit_inc_synth_ww(code, u, v) \
- do { \
- (void)jit_new_node_ww(jit_code_##code, u, v); \
- jit_synth_inc(); \
- } while (0)
-#define jit_inc_synth_wp(code, u, v) \
- do { \
- (void)jit_new_node_wp(jit_code_##code, u, v); \
- jit_synth_inc(); \
- } while (0)
-#define jit_inc_synth_fp(code, u, v) \
- do { \
- (void)jit_new_node_fp(jit_code_##code, u, v); \
- jit_synth_inc(); \
- } while (0)
-#define jit_inc_synth_dp(code, u, v) \
- do { \
- (void)jit_new_node_dp(jit_code_##code, u, v); \
- jit_synth_inc(); \
- } while (0)
-#define jit_dec_synth() jit_synth_dec()
-
-#define jit_link_prolog() \
- do { \
- _jitc->tail->link = _jitc->function->prolog->link; \
- _jitc->function->prolog->link = _jitc->tail; \
- } while (0)
-#define jit_link_prepare() \
- do { \
- _jitc->tail->link = _jitc->prepare->link; \
- _jitc->prepare->link = _jitc->tail; \
- } while (0)
-#define jit_link_reverse(where) \
- do { \
- jit_node_t *tmp, *tail = 0; \
- while (where) { \
- tmp = (where)->link; \
- (where)->link = tail; \
- tail = where; \
- where = tmp; \
- } \
- where = tail; \
- } while (0);
-
-/*
- * Private jit_class bitmasks
- */
-#define jit_class_named 0x00400000 /* hit must be the named reg */
-#define jit_class_nospill 0x00800000 /* hint to fail if need spill */
-#define jit_class_sft 0x01000000 /* not a hardware register */
-#define jit_class_rg8 0x04000000 /* x86 8 bits */
-#define jit_class_xpr 0x80000000 /* float / vector */
-/* Used on sparc64 where %f0-%f31 can be encode for single float
- * but %f32 to %f62 only as double precision */
-#define jit_class_sng 0x10000000 /* Single precision float */
-#define jit_class_dbl 0x20000000 /* Only double precision float */
-#define jit_regno_patch 0x00008000 /* this is a register
- * returned by a "user" call
- * to jit_get_reg() */
-
-#define jit_call_default 0
-#define jit_call_varargs 1
-
-#define jit_kind_register 1
-#define jit_kind_code 2
-#define jit_kind_word 3
-#define jit_kind_float32 4
-#define jit_kind_float64 5
-
-#define jit_cc_a0_reg 0x00000001 /* arg0 is a register */
-#define jit_cc_a0_chg 0x00000002 /* arg0 is modified */
-#define jit_cc_a0_jmp 0x00000004 /* arg0 is a jump target */
-#define jit_cc_a0_rlh 0x00000008 /* arg0 is a register pair */
-#define jit_cc_a0_int 0x00000010 /* arg0 is immediate word */
-#define jit_cc_a0_flt 0x00000020 /* arg0 is immediate float */
-#define jit_cc_a0_dbl 0x00000040 /* arg0 is immediate double */
-#define jit_cc_a0_arg 0x00000080 /* arg1 is an argument int id */
-#define jit_cc_a1_reg 0x00000100 /* arg1 is a register */
-#define jit_cc_a1_chg 0x00000200 /* arg1 is modified */
-#define jit_cc_a1_int 0x00001000 /* arg1 is immediate word */
-#define jit_cc_a1_flt 0x00002000 /* arg1 is immediate float */
-#define jit_cc_a1_dbl 0x00004000 /* arg1 is immediate double */
-#define jit_cc_a1_arg 0x00008000 /* arg1 is an argument node */
-#define jit_cc_a2_reg 0x00010000 /* arg2 is a register */
-#define jit_cc_a2_chg 0x00020000 /* arg2 is modified */
-#define jit_cc_a2_int 0x00100000 /* arg2 is immediate word */
-#define jit_cc_a2_flt 0x00200000 /* arg2 is immediate float */
-#define jit_cc_a2_dbl 0x00400000 /* arg2 is immediate double */
-
-#if __ia64__ || (__sparc__ && __WORDSIZE == 64)
-extern void
-jit_regset_com(jit_regset_t*, jit_regset_t*);
-
-extern void
-jit_regset_and(jit_regset_t*, jit_regset_t*, jit_regset_t*);
-
-extern void
-jit_regset_ior(jit_regset_t*, jit_regset_t*, jit_regset_t*);
-
-extern void
-jit_regset_xor(jit_regset_t*, jit_regset_t*, jit_regset_t*);
-
-extern void
-jit_regset_set(jit_regset_t*, jit_regset_t*);
-
-extern void
-jit_regset_set_mask(jit_regset_t*, jit_int32_t);
-
-extern jit_bool_t
-jit_regset_cmp_ui(jit_regset_t*, jit_word_t);
-
-extern void
-jit_regset_set_ui(jit_regset_t*, jit_word_t);
-
-extern jit_bool_t
-jit_regset_set_p(jit_regset_t*);
-
-extern void
-jit_regset_clrbit(jit_regset_t*, jit_int32_t);
-
-extern void
-jit_regset_setbit(jit_regset_t*, jit_int32_t);
-
-extern jit_bool_t
-jit_regset_tstbit(jit_regset_t*, jit_int32_t);
-# if __sparc__ && __WORDSIZE == 64
-# define jit_regset_new(set) \
- do { (set)->rl = (set)->rh = 0; } while (0)
-# define jit_regset_del(set) \
- do { (set)->rl = (set)->rh = 0; } while (0)
-# else
-# define jit_regset_new(set) \
- do { (set)->rl = (set)->rh = (set)->fl = (set)->fh = 0; } while (0)
-# define jit_regset_del(set) \
- do { (set)->rl = (set)->rh = (set)->fl = (set)->fh = 0; } while (0)
-# endif
-#else
-# define jit_regset_com(u, v) (*(u) = ~*(v))
-# define jit_regset_and(u, v, w) (*(u) = *(v) & *(w))
-# define jit_regset_ior(u, v, w) (*(u) = *(v) | *(w))
-# define jit_regset_xor(u, v, w) (*(u) = *(v) ^ *(w))
-# define jit_regset_set(u, v) (*(u) = *(v))
-# define jit_regset_set_mask(u, v) (*(u) = (1LL << (v)) - 1)
-# define jit_regset_cmp_ui(u, v) (*(u) != (v))
-# define jit_regset_set_ui(u, v) (*(u) = (v))
-# define jit_regset_set_p(set) (*set)
-# define jit_regset_clrbit(set, bit) (*(set) &= ~(1LL << (bit)))
-# define jit_regset_setbit(set, bit) (*(set) |= 1LL << (bit))
-# define jit_regset_tstbit(set, bit) (*(set) & (1LL << (bit)))
-# define jit_regset_new(set) (*(set) = 0)
-# define jit_regset_del(set) (*(set) = 0)
-#endif
-extern unsigned long
-jit_regset_scan1(jit_regset_t*, jit_int32_t);
-
-#define jit_reglive_setup() \
- do { \
- jit_regset_set_ui(&_jitc->reglive, 0); \
- jit_regset_set_ui(&_jitc->regmask, 0); \
- } while (0)
-
-/*
- * Types
- */
-typedef union jit_data jit_data_t;
-typedef struct jit_note jit_note_t;
-typedef struct jit_line jit_line_t;
-typedef struct jit_block jit_block_t;
-typedef struct jit_value jit_value_t;
-typedef struct jit_compiler jit_compiler_t;
-typedef struct jit_function jit_function_t;
-typedef struct jit_register jit_register_t;
-#if __arm__
-# if DISASSEMBLER
-typedef struct jit_data_info jit_data_info_t;
-# endif
-#endif
-
-union jit_data {
- struct {
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- jit_int32_t l;
- jit_int32_t h;
-#else
- jit_int32_t h;
- jit_int32_t l;
-#endif
- } q;
- jit_word_t w;
- jit_float32_t f;
- jit_float64_t d;
- jit_pointer_t p;
- jit_node_t *n;
-};
-
-struct jit_note {
- jit_uint8_t *code;
- char *name;
- jit_line_t *lines;
- jit_word_t length;
- jit_word_t size; /* of code */
-};
-
-struct jit_line {
- char *file;
- jit_int32_t *linenos;
- jit_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 */
- jit_data_t u;
- jit_data_t v;
- jit_data_t w;
- jit_node_t *link;
-};
-
-struct jit_block {
- jit_node_t *label;
- jit_regset_t reglive;
- jit_regset_t regmask;
- jit_regset_t setmask; /* Used for forward second pass */
-};
-
-struct jit_value {
- jit_int32_t kind;
- jit_code_t code;
- jit_data_t base;
- jit_data_t disp;
-};
-
-typedef struct {
-#if __arm__
- jit_word_t kind;
-#endif
- jit_word_t inst;
- jit_node_t *node;
-} jit_patch_t;
-
-#if __arm__ && DISASSEMBLER
-struct jit_data_info {
- jit_uword_t code; /* pointer in code buffer */
- jit_word_t length; /* length of constant vector */
-};
-#endif
-
-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 */
- } self;
- struct {
- jit_int32_t argi;
- jit_int32_t argf;
- jit_int32_t size;
- jit_int32_t call;
- } call;
- jit_node_t *prolog;
- jit_node_t *epilog;
- jit_int32_t *regoff;
- jit_regset_t regset;
- jit_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;
-
- /* alloca offset offset */
- jit_int32_t aoffoff;
- /* uses allocar flag */
- jit_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 */
-};
-
-/* data used only during jit generation */
-struct jit_compiler {
-#if __ia64__
- struct {
- jit_uint64_t i : 41;
- jit_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 */
-#endif
-#if __mips__ || __ia64__ || __alpha__ || (__sparc__ && __WORDSIZE == 64)
- jit_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 */
-#if DEBUG
- jit_uint32_t getreg : 1;
-#endif
- jit_uint32_t no_data : 1;
- jit_uint32_t no_note : 1;
- jit_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 */
- jit_regset_t regmask; /* register mask to update reglive */
- struct {
- jit_word_t *ptr;
- jit_word_t length;
- } blockmask; /* mask of visited basic blocks */
- struct {
- jit_uint8_t *end;
- } code;
- struct {
- jit_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" */
- jit_value_t *values; /* temporary jit_value_t vector */
- struct {
- jit_block_t *ptr;
- jit_word_t offset;
- jit_word_t length;
- } blocks; /* basic blocks */
- struct {
- jit_patch_t *ptr;
- jit_word_t offset;
- jit_word_t length;
- } patches; /* forward patch information */
- jit_function_t *function; /* current function */
- struct {
- jit_function_t *ptr;
- jit_word_t offset;
- jit_word_t length;
- } functions; /* prolog/epilogue offsets in code */
- struct {
- jit_node_t **ptr;
- jit_word_t offset;
- jit_word_t length;
- } pool;
- jit_node_t *list;
- struct {
- jit_node_t *head; /* first note node */
- jit_node_t *tail; /* linked list insertion */
- /* fields to store temporary state information */
- jit_word_t size;
- jit_node_t *name;
- jit_node_t *note;
- jit_uint8_t *base;
- } note;
-#if __arm__
- /* prevent using thumb instructions that set flags? */
- jit_uint32_t no_set_flags : 1;
-# if DISASSEMBLER
- struct {
- jit_data_info_t *ptr;
- jit_word_t offset;
- jit_word_t length;
- } data_info; /* constant pools information */
-# endif
- /* Note that this field is somewhat hackish, but required by most
- * ways to implement jit, unless implementing a pure one function
- * per jit, as most times it needs to start the jit buffer with a
- * jump where the "main" prolog starts, and because the initial
- * code is in "arm mode", need to make an "arm mode" patch on that
- * jump. A good example is the test suite assembler, where most
- * test cases start with a "jmpi main" call. */
- jit_uword_t thumb;
- struct {
- jit_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 */
- jit_word_t patches[2048];
- } consts;
-#elif __powerpc__ || __ia64__
- /* Keep track of prolog addresses, just for the sake of making
- * jit that starts with a jump to a "main" label work like other
- * backends. */
- struct {
- jit_word_t *ptr;
- jit_word_t offset;
- jit_word_t length;
- } prolog;
- jit_bool_t jump;
-#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;
- jit_word_t w;
- } pc;
- struct {
- jit_uint8_t *ptr;
- jit_word_t length;
- } code;
- struct {
- jit_uint8_t *ptr;
- jit_word_t length;
- } data;
- struct {
- jit_note_t *ptr;
- jit_word_t length;
- } 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;
-};
-
-struct jit_register {
- jit_reg_t spec;
- char *name;
-};
-
-/*
- * Prototypes
- */
-extern void jit_get_cpu(void);
-
-#define jit_init() _jit_init(_jit)
-extern void _jit_init(jit_state_t*);
-
-#define jit_synth_inc() _jit_synth_inc(_jit)
-extern void _jit_synth_inc(jit_state_t*);
-
-#define jit_new_node_no_link(u) _jit_new_node_no_link(_jit, u)
-extern jit_node_t *_jit_new_node_no_link(jit_state_t*, jit_code_t);
-
-#define jit_link_node(u) _jit_link_node(_jit, u)
-extern void _jit_link_node(jit_state_t*, jit_node_t*);
-
-#define jit_link_label(l) _jit_link_label(_jit,l)
-extern void
-_jit_link_label(jit_state_t*,jit_node_t*);
-
-#define jit_synth_dec() _jit_synth_dec(_jit)
-extern void _jit_synth_dec(jit_state_t*);
-
-#define jit_reglive(node) _jit_reglive(_jit, node)
-extern void
-_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);
-
-#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);
-
-#define jit_get_reg(s) _jit_get_reg(_jit,s)
-extern jit_int32_t
-_jit_get_reg(jit_state_t*, jit_int32_t);
-
-#define jit_unget_reg(r) _jit_unget_reg(_jit,r)
-extern void
-_jit_unget_reg(jit_state_t*, jit_int32_t);
-
-#define jit_save(reg) _jit_save(_jit, reg)
-extern void
-_jit_save(jit_state_t*, jit_int32_t);
-
-#define jit_load(reg) _jit_load(_jit, reg)
-extern void
-_jit_load(jit_state_t*, jit_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);
-
-#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
-_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);
-
-#define emit_code() _emit_code(_jit)
-extern jit_pointer_t
-_emit_code(jit_state_t*);
-
-extern void
-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);
-
-#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);
-
-#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);
-
-#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);
-
-extern void jit_init_debug(const char*);
-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);
-#define jit_annotate() _jit_annotate(_jit)
-extern void _jit_annotate(jit_state_t*);
-
-#define jit_print_node(u) _jit_print_node(_jit,u)
-extern void _jit_print_node(jit_state_t*,jit_node_t*);
-
-extern jit_pointer_t jit_memcpy(jit_pointer_t,const void*,jit_word_t);
-extern jit_pointer_t jit_memmove(jit_pointer_t,const void*,jit_word_t);
-extern void jit_alloc(jit_pointer_t*, jit_word_t);
-extern void jit_realloc(jit_pointer_t*, jit_word_t, jit_word_t);
-void jit_free(jit_pointer_t*);
-
-extern void jit_init_size(void);
-extern void jit_finish_size(void);
-
-extern jit_word_t
-jit_get_max_instr(void);
-
-/*
- * Externs
- */
-extern jit_register_t _rvs[];
-
-#endif /* _jit_private_h */
diff --git a/libguile/lightning/include/lightning/jit_x86.h b/libguile/lightning/include/lightning/jit_x86.h
deleted file mode 100644
index 33500211d..000000000
--- a/libguile/lightning/include/lightning/jit_x86.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#ifndef _jit_x86_h
-#define _jit_x86_h
-
-#define JIT_HASH_CONSTS 1
-#define JIT_NUM_OPERANDS 2
-
-/*
- * Types
- */
-#define jit_sse2_p() jit_cpu.sse2
-#define jit_x87_reg_p(reg) ((reg) >= _ST0 && (reg) <= _ST6)
-#if __WORDSIZE == 32
-# if defined(__x86_64__)
-# define __X64_32 1
-# define __X64 1
-# else
-# define __X32 1
-# endif
-#else
-# define __X64 1
-#endif
-
-#define JIT_FP _RBP
-typedef enum {
-#if __X32
-# define jit_r(i) (_RAX + (i))
-# define jit_r_num() 3
-# define jit_v(i) (_RBX + (i))
-# define jit_v_num() 3
-# define jit_f(i) (jit_cpu.sse2 ? _XMM0 + (i) : _ST0 + (i))
-# define jit_f_num() (jit_cpu.sse2 ? 8 : 6)
-# define JIT_R0 _RAX
-# define JIT_R1 _RCX
-# define JIT_R2 _RDX
- _RAX, _RCX, _RDX,
-# define JIT_V0 _RBX
-# define JIT_V1 _RSI
-# define JIT_V2 _RDI
- _RBX, _RSI, _RDI,
- _RSP, _RBP,
-# define JIT_F0 (jit_sse2_p() ? _XMM0 : _ST0)
-# define JIT_F1 (jit_sse2_p() ? _XMM1 : _ST1)
-# define JIT_F2 (jit_sse2_p() ? _XMM2 : _ST2)
-# define JIT_F3 (jit_sse2_p() ? _XMM3 : _ST3)
-# define JIT_F4 (jit_sse2_p() ? _XMM4 : _ST4)
-# define JIT_F5 (jit_sse2_p() ? _XMM5 : _ST5)
-# define JIT_F6 (jit_sse2_p() ? _XMM6 : _ST6)
- _XMM0, _XMM1, _XMM2, _XMM3, _XMM4, _XMM5, _XMM6, _XMM7,
-# define jit_sse_reg_p(reg) ((reg) >= _XMM0 && (reg) <= _XMM7)
-#else
-# if __CYGWIN__
-# define jit_r(i) (_RAX + (i))
-# define jit_r_num() 3
-# define jit_v(i) (_RBX + (i))
-# define jit_v_num() 7
-# define jit_f(index) (_XMM4 + (index))
-# define jit_f_num() 12
-# define JIT_R0 _RAX
-# define JIT_R1 _R10
-# define JIT_R2 _R11
-# define JIT_V0 _RBX
-# define JIT_V1 _RDI
-# define JIT_V2 _RSI
-# define JIT_V3 _R12
-# define JIT_V4 _R13
-# define JIT_V5 _R14
-# define JIT_V6 _R15
- /* Volatile - Return value register */
- _RAX,
- /* Volatile */
- _R10, _R11,
- /* Nonvolatile */
- _RBX, _RDI, _RSI,
- _R12, _R13, _R14, _R15,
- /* Volatile - Integer arguments (4 to 1) */
- _R9, _R8, _RDX, _RCX,
- /* Nonvolatile */
- _RSP, _RBP,
-# define JIT_F0 _XMM4
-# define JIT_F1 _XMM5
-# define JIT_F2 _XMM6
-# define JIT_F3 _XMM7
-# define JIT_F4 _XMM8
-# define JIT_F5 _XMM9
-# define JIT_F6 _XMM10
-# define JIT_F7 _XMM11
-# define JIT_F8 _XMM12
-# define JIT_F9 _XMM13
-# define JIT_F10 _XMM14
-# define JIT_F11 _XMM15
- /* Volatile */
- _XMM4, _XMM5,
- /* Nonvolatile */
- _XMM6, _XMM7, _XMM8, _XMM9, _XMM10,
- _XMM11, _XMM12, _XMM13, _XMM14, _XMM15,
- /* Volatile - FP arguments (4 to 1) */
- _XMM3, _XMM2, _XMM1, _XMM0,
-# define jit_sse_reg_p(reg) ((reg) >= _XMM4 && (reg) <= _XMM0)
-# else
-# define jit_r(i) (_RAX + (i))
-# define jit_r_num() 4
-# define jit_v(i) (_RBX + (i))
-# define jit_v_num() 4
-# define jit_f(index) (_XMM8 + (index))
-# define jit_f_num() 8
-# define JIT_R0 _RAX
-# define JIT_R1 _R10
-# define JIT_R2 _R11
-# define JIT_R3 _R12
- _RAX, _R10, _R11, _R12,
-# define JIT_V0 _RBX
-# define JIT_V1 _R13
-# define JIT_V2 _R14
-# define JIT_V3 _R15
- _RBX, _R13, _R14, _R15,
- _R9, _R8, _RCX, _RDX, _RSI, _RDI,
- _RSP, _RBP,
-# define JIT_F0 _XMM8
-# define JIT_F1 _XMM9
-# define JIT_F2 _XMM10
-# define JIT_F3 _XMM11
-# define JIT_F4 _XMM12
-# define JIT_F5 _XMM13
-# define JIT_F6 _XMM14
-# define JIT_F7 _XMM15
- _XMM8, _XMM9, _XMM10, _XMM11, _XMM12, _XMM13, _XMM14, _XMM15,
- _XMM7, _XMM6, _XMM5, _XMM4, _XMM3, _XMM2, _XMM1, _XMM0,
-# define jit_sse_reg_p(reg) ((reg) >= _XMM8 && (reg) <= _XMM0)
-# endif
-#endif
- _ST0, _ST1, _ST2, _ST3, _ST4, _ST5, _ST6,
-# define JIT_NOREG _NOREG
- _NOREG,
-} jit_reg_t;
-
-typedef struct {
- /* x87 present */
- jit_uint32_t fpu : 1;
- /* cmpxchg8b instruction */
- jit_uint32_t cmpxchg8b : 1;
- /* cmov and fcmov branchless conditional mov */
- jit_uint32_t cmov : 1;
- /* mmx registers/instructions available */
- jit_uint32_t mmx : 1;
- /* sse registers/instructions available */
- jit_uint32_t sse : 1;
- /* sse2 registers/instructions available */
- jit_uint32_t sse2 : 1;
- /* sse3 instructions available */
- jit_uint32_t sse3 : 1;
- /* pcmulqdq instruction */
- jit_uint32_t pclmulqdq : 1;
- /* ssse3 suplemental sse3 instructions available */
- jit_uint32_t ssse3 : 1;
- /* fused multiply/add using ymm state */
- jit_uint32_t fma : 1;
- /* cmpxchg16b instruction */
- jit_uint32_t cmpxchg16b : 1;
- /* sse4.1 instructions available */
- jit_uint32_t sse4_1 : 1;
- /* sse4.2 instructions available */
- jit_uint32_t sse4_2 : 1;
- /* movbe instruction available */
- jit_uint32_t movbe : 1;
- /* popcnt instruction available */
- jit_uint32_t popcnt : 1;
- /* aes instructions available */
- jit_uint32_t aes : 1;
- /* avx instructions available */
- jit_uint32_t avx : 1;
- /* lahf/sahf available in 64 bits mode */
- jit_uint32_t lahf : 1;
-} jit_cpu_t;
-
-/*
- * Initialization
- */
-extern jit_cpu_t jit_cpu;
-
-#endif /* _jit_x86_h */
diff --git a/libguile/lightning/jit.h b/libguile/lightning/jit.h
new file mode 100644
index 000000000..67e107497
--- /dev/null
+++ b/libguile/lightning/jit.h
@@ -0,0 +1,519 @@
+/*
+ * Copyright (C) 2012-2019 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU lightning.
+ *
+ * GNU lightning is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU lightning is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * Authors:
+ * Paulo Cesar Pereira de Andrade
+ * Andy Wingo
+ */
+
+#ifndef _jit_h
+#define _jit_h
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <stddef.h>
+
+#include "jit/endian.h"
+
+CHOOSE_32_64(typedef int32_t jit_word_t,
+ typedef int64_t jit_word_t);
+CHOOSE_32_64(typedef uint32_t jit_uword_t,
+ typedef uint64_t jit_uword_t);
+typedef float jit_float32_t;
+typedef double jit_float64_t;
+typedef void* jit_pointer_t;
+typedef int jit_bool_t;
+typedef struct jit_gpr { int bits; } jit_gpr_t;
+typedef struct jit_fpr { int bits; } jit_fpr_t;
+
+typedef void* jit_addr_t;
+typedef ptrdiff_t jit_off_t;
+typedef intptr_t jit_imm_t;
+typedef uintptr_t jit_uimm_t;
+
+#define JIT_GPR(bits) ((jit_gpr_t) { bits })
+#define JIT_FPR(bits) ((jit_fpr_t) { bits })
+static inline jit_gpr_t jit_gpr(int bits) { return JIT_GPR(bits); }
+static inline jit_fpr_t jit_fpr(int bits) { return JIT_FPR(bits); }
+
+enum jit_reloc_kind
+{
+ JIT_RELOC_ABSOLUTE,
+ JIT_RELOC_REL8,
+ JIT_RELOC_REL16,
+ JIT_RELOC_REL32,
+ JIT_RELOC_REL64,
+};
+
+typedef struct jit_reloc
+{
+ uint8_t kind;
+ uint8_t inst_start_offset;
+ uint16_t flags;
+ uint32_t offset;
+} jit_reloc_t;
+
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+# define JIT_API extern __attribute__ ((__visibility__("hidden")))
+#else
+# define JIT_API extern
+#endif
+
+#if defined(__i386__) || defined(__x86_64__)
+# include "jit/x86.h"
+#elif defined(__mips__)
+# include "jit/mips.h"
+#elif defined(__arm__)
+# include "jit/arm.h"
+#elif defined(__ppc__) || defined(__powerpc__)
+# include "jit/ppc.h"
+#elif defined(__sparc__)
+# include "jit/sparc.h"
+#elif defined(__ia64__)
+# include "jit/ia64.h"
+#elif defined(__hppa__)
+# include "jit/hppa.h"
+#elif defined(__aarch64__)
+# include "jit/aarch64.h"
+#elif defined(__s390__) || defined(__s390x__)
+# include "jit/s390.h"
+#elif defined(__alpha__)
+# include "jit/alpha.h"
+#endif
+
+#define JIT_R(index) JIT_GPR(jit_r(index))
+#define JIT_V(index) JIT_GPR(jit_v(index))
+#define JIT_F(index) JIT_FPR(jit_f(index))
+#define JIT_R_NUM jit_r_num()
+#define JIT_V_NUM jit_v_num()
+#define JIT_F_NUM jit_f_num()
+
+#define jit_class_chk 0x02000000 /* just checking */
+#define jit_class_arg 0x08000000 /* argument register */
+#define jit_class_sav 0x10000000 /* callee save */
+#define jit_class_gpr 0x20000000 /* general purpose */
+#define jit_class_fpr 0x40000000 /* float */
+#define jit_class(bits) ((bits) & 0xffff0000)
+#define jit_regno(bits) ((bits) & 0x00007fff)
+
+typedef struct jit_state jit_state_t;
+enum jit_arg_loc
+{
+ JIT_ARG_LOC_IMM,
+ JIT_ARG_LOC_GPR,
+ JIT_ARG_LOC_FPR,
+ JIT_ARG_LOC_MEM
+};
+
+typedef enum jit_arg_abi
+{
+ JIT_ARG_ABI_UINT8,
+ JIT_ARG_ABI_INT8,
+ JIT_ARG_ABI_UINT16,
+ JIT_ARG_ABI_INT16,
+ JIT_ARG_ABI_UINT32,
+ JIT_ARG_ABI_INT32,
+ JIT_ARG_ABI_UINT64,
+ JIT_ARG_ABI_INT64,
+ JIT_ARG_ABI_POINTER,
+ JIT_ARG_ABI_FLOAT,
+ JIT_ARG_ABI_DOUBLE,
+ JIT_ARG_ABI_INTMAX = CHOOSE_32_64(JIT_ARG_ABI_INT32, JIT_ARG_ABI_INT64)
+} jit_arg_abi_t;
+
+typedef struct jit_arg
+{
+ enum jit_arg_loc kind;
+ union
+ {
+ intptr_t imm;
+ jit_gpr_t gpr;
+ jit_fpr_t fpr;
+ struct { jit_gpr_t base; ptrdiff_t offset; } mem;
+ } loc;
+} jit_arg_t;
+
+typedef union jit_anyreg
+{
+ jit_gpr_t gpr;
+ jit_fpr_t fpr;
+} jit_anyreg_t;
+
+JIT_API jit_bool_t init_jit(void);
+
+JIT_API jit_state_t *jit_new_state(void);
+JIT_API void jit_destroy_state(jit_state_t*);
+
+JIT_API void jit_begin(jit_state_t*, uint8_t*, size_t);
+JIT_API jit_bool_t jit_has_overflow(jit_state_t*);
+JIT_API void jit_reset(jit_state_t*);
+JIT_API void* jit_end(jit_state_t*, size_t*);
+
+JIT_API void jit_align(jit_state_t*, unsigned);
+
+JIT_API jit_pointer_t jit_address(jit_state_t*);
+JIT_API void jit_patch_here(jit_state_t*, jit_reloc_t);
+JIT_API void jit_patch_there(jit_state_t*, jit_reloc_t, jit_pointer_t);
+
+/* Note that all functions that take jit_arg_t args[] use the args as scratch
+ space while shuffling values into position. */
+JIT_API void jit_calli(jit_state_t *, jit_pointer_t f,
+ size_t argc, const jit_arg_abi_t abi[],
+ jit_arg_t args[]);
+JIT_API void jit_callr(jit_state_t *, jit_gpr_t f,
+ size_t argc, const jit_arg_abi_t abi[],
+ jit_arg_t args[]);
+JIT_API void jit_receive(jit_state_t*, size_t argc,
+ const jit_arg_abi_t abi[], jit_arg_t args[]);
+JIT_API void jit_load_args(jit_state_t *_jit, size_t argc,
+ const jit_arg_abi_t abi[], jit_arg_t args[],
+ const jit_anyreg_t regs[]);
+
+#define JIT_PROTO_0(stem, ret) \
+ ret jit_##stem (jit_state_t* _jit)
+#define JIT_PROTO_1(stem, ret, ta) \
+ ret jit_##stem (jit_state_t* _jit, jit_##ta##_t a)
+#define JIT_PROTO_2(stem, ret, ta, tb) \
+ ret jit_##stem (jit_state_t* _jit, jit_##ta##_t a, jit_##tb##_t b)
+#define JIT_PROTO_3(stem, ret, ta, tb, tc) \
+ ret jit_##stem (jit_state_t* _jit, jit_##ta##_t a, jit_##tb##_t b, jit_##tc##_t c)
+#define JIT_PROTO_4(stem, ret, ta, tb, tc, td) \
+ ret jit_##stem (jit_state_t* _jit, jit_##ta##_t a, jit_##tb##_t b, jit_##tc##_t c, jit_##td##_t d)
+
+#define JIT_PROTO_RFF__(stem) JIT_PROTO_2(stem, jit_reloc_t, fpr, fpr)
+#define JIT_PROTO_RGG__(stem) JIT_PROTO_2(stem, jit_reloc_t, gpr, gpr)
+#define JIT_PROTO_RG___(stem) JIT_PROTO_1(stem, jit_reloc_t, gpr)
+#define JIT_PROTO_RGi__(stem) JIT_PROTO_2(stem, jit_reloc_t, gpr, imm)
+#define JIT_PROTO_RGu__(stem) JIT_PROTO_2(stem, jit_reloc_t, gpr, uimm)
+#define JIT_PROTO_R____(stem) JIT_PROTO_0(stem, jit_reloc_t)
+#define JIT_PROTO__FFF_(stem) JIT_PROTO_3(stem, void, fpr, fpr, fpr)
+#define JIT_PROTO__FF__(stem) JIT_PROTO_2(stem, void, fpr, fpr)
+#define JIT_PROTO__FGG_(stem) JIT_PROTO_3(stem, void, fpr, gpr, gpr)
+#define JIT_PROTO__FG__(stem) JIT_PROTO_2(stem, void, fpr, gpr)
+#define JIT_PROTO__FGo_(stem) JIT_PROTO_3(stem, void, fpr, gpr, off)
+#define JIT_PROTO__F___(stem) JIT_PROTO_1(stem, void, fpr)
+#define JIT_PROTO__Fd__(stem) JIT_PROTO_2(stem, void, fpr, float64)
+#define JIT_PROTO__Ff__(stem) JIT_PROTO_2(stem, void, fpr, float32)
+#define JIT_PROTO__Fp__(stem) JIT_PROTO_2(stem, void, fpr, pointer)
+#define JIT_PROTO__GF__(stem) JIT_PROTO_2(stem, void, gpr, fpr)
+#define JIT_PROTO__GGF_(stem) JIT_PROTO_3(stem, void, gpr, gpr, fpr)
+#define JIT_PROTO__GGGG(stem) JIT_PROTO_4(stem, void, gpr, gpr, gpr, gpr)
+#define JIT_PROTO__GGG_(stem) JIT_PROTO_3(stem, void, gpr, gpr, gpr)
+#define JIT_PROTO__GGGi(stem) JIT_PROTO_4(stem, void, gpr, gpr, gpr, imm)
+#define JIT_PROTO__GGGu(stem) JIT_PROTO_4(stem, void, gpr, gpr, gpr, uimm)
+#define JIT_PROTO__GG__(stem) JIT_PROTO_2(stem, void, gpr, gpr)
+#define JIT_PROTO__GGi_(stem) JIT_PROTO_3(stem, void, gpr, gpr, imm)
+#define JIT_PROTO__GGo_(stem) JIT_PROTO_3(stem, void, gpr, gpr, off)
+#define JIT_PROTO__GGu_(stem) JIT_PROTO_3(stem, void, gpr, gpr, uimm)
+#define JIT_PROTO__G___(stem) JIT_PROTO_1(stem, void, gpr)
+#define JIT_PROTO__Gi__(stem) JIT_PROTO_2(stem, void, gpr, imm)
+#define JIT_PROTO__Gp__(stem) JIT_PROTO_2(stem, void, gpr, pointer)
+#define JIT_PROTO______(stem) JIT_PROTO_0(stem, void)
+#define JIT_PROTO__i___(stem) JIT_PROTO_1(stem, void, imm)
+#define JIT_PROTO__oGF_(stem) JIT_PROTO_3(stem, void, off, gpr, fpr)
+#define JIT_PROTO__oGG_(stem) JIT_PROTO_3(stem, void, off, gpr, gpr)
+#define JIT_PROTO__pF__(stem) JIT_PROTO_2(stem, void, pointer, fpr)
+#define JIT_PROTO__pG__(stem) JIT_PROTO_2(stem, void, pointer, gpr)
+#define JIT_PROTO__p___(stem) JIT_PROTO_1(stem, void, pointer)
+
+#define FOR_EACH_INSTRUCTION(M) \
+ M(_GGG_, addr) \
+ M(_FFF_, addr_f) \
+ M(_FFF_, addr_d) \
+ M(_GGi_, addi) \
+ M(_GGG_, addcr) \
+ M(_GGi_, addci) \
+ M(_GGG_, addxr) \
+ M(_GGi_, addxi) \
+ M(_GGG_, subr) \
+ M(_FFF_, subr_f) \
+ M(_FFF_, subr_d) \
+ M(_GGi_, subi) \
+ M(_GGG_, subcr) \
+ M(_GGi_, subci) \
+ M(_GGG_, subxr) \
+ M(_GGi_, subxi) \
+ M(_GGG_, mulr) \
+ M(_FFF_, mulr_f) \
+ M(_FFF_, mulr_d) \
+ M(_GGi_, muli) \
+ M(_GGGG, qmulr) \
+ M(_GGGi, qmuli) \
+ M(_GGGG, qmulr_u) \
+ M(_GGGu, qmuli_u) \
+ M(_GGG_, divr) \
+ M(_FFF_, divr_f) \
+ M(_FFF_, divr_d) \
+ M(_GGi_, divi) \
+ M(_GGG_, divr_u) \
+ M(_GGu_, divi_u) \
+ M(_GGGG, qdivr) \
+ M(_GGGi, qdivi) \
+ M(_GGGG, qdivr_u) \
+ M(_GGGu, qdivi_u) \
+ M(_GGG_, remr) \
+ M(_GGi_, remi) \
+ M(_GGG_, remr_u) \
+ M(_GGu_, remi_u) \
+ \
+ M(_GGG_, andr) \
+ M(_GGu_, andi) \
+ M(_GGG_, orr) \
+ M(_GGu_, ori) \
+ M(_GGG_, xorr) \
+ M(_GGu_, xori) \
+ \
+ M(_GGG_, lshr) \
+ M(_GGu_, lshi) \
+ M(_GGG_, rshr) \
+ M(_GGu_, rshi) \
+ M(_GGG_, rshr_u) \
+ M(_GGu_, rshi_u) \
+ \
+ M(_GG__, negr) \
+ M(_GG__, comr) \
+ \
+ M(_GG__, movr) \
+ M(_Gi__, movi) \
+ M(RG___, mov_addr) \
+ M(_GG__, extr_c) \
+ M(_GG__, extr_uc) \
+ M(_GG__, extr_s) \
+ M(_GG__, extr_us) \
+ WHEN_64(M(_GG__, extr_i)) \
+ WHEN_64(M(_GG__, extr_ui)) \
+ \
+ M(_GG__, bswapr_us) \
+ M(_GG__, bswapr_ui) \
+ WHEN_64(M(_GG__, bswapr_ul)) \
+ \
+ M(_GG__, ldr_c) \
+ M(_Gp__, ldi_c) \
+ M(_GG__, ldr_uc) \
+ M(_Gp__, ldi_uc) \
+ M(_GG__, ldr_s) \
+ M(_Gp__, ldi_s) \
+ M(_GG__, ldr_us) \
+ M(_Gp__, ldi_us) \
+ M(_GG__, ldr_i) \
+ M(_Gp__, ldi_i) \
+ WHEN_64(M(_GG__, ldr_ui)) \
+ WHEN_64(M(_Gp__, ldi_ui)) \
+ WHEN_64(M(_GG__, ldr_l)) \
+ WHEN_64(M(_Gp__, ldi_l)) \
+ M(_FG__, ldr_f) \
+ M(_Fp__, ldi_f) \
+ M(_FG__, ldr_d) \
+ M(_Fp__, ldi_d) \
+ \
+ M(_GGG_, ldxr_c) \
+ M(_GGo_, ldxi_c) \
+ M(_GGG_, ldxr_uc) \
+ M(_GGo_, ldxi_uc) \
+ M(_GGG_, ldxr_s) \
+ M(_GGo_, ldxi_s) \
+ M(_GGG_, ldxr_us) \
+ M(_GGo_, ldxi_us) \
+ M(_GGG_, ldxr_i) \
+ M(_GGo_, ldxi_i) \
+ WHEN_64(M(_GGG_, ldxr_ui)) \
+ WHEN_64(M(_GGo_, ldxi_ui)) \
+ WHEN_64(M(_GGG_, ldxr_l)) \
+ WHEN_64(M(_GGo_, ldxi_l)) \
+ M(_FGG_, ldxr_f) \
+ M(_FGo_, ldxi_f) \
+ M(_FGG_, ldxr_d) \
+ M(_FGo_, ldxi_d) \
+ \
+ M(_GG__, str_c) \
+ M(_pG__, sti_c) \
+ M(_GG__, str_s) \
+ M(_pG__, sti_s) \
+ M(_GG__, str_i) \
+ M(_pG__, sti_i) \
+ WHEN_64(M(_GG__, str_l)) \
+ WHEN_64(M(_pG__, sti_l)) \
+ M(_GF__, str_f) \
+ M(_pF__, sti_f) \
+ M(_GF__, str_d) \
+ M(_pF__, sti_d) \
+ \
+ M(_GGG_, stxr_c) \
+ M(_oGG_, stxi_c) \
+ M(_GGG_, stxr_s) \
+ M(_oGG_, stxi_s) \
+ M(_GGG_, stxr_i) \
+ M(_oGG_, stxi_i) \
+ WHEN_64(M(_GGG_, stxr_l)) \
+ WHEN_64(M(_oGG_, stxi_l)) \
+ M(_GGF_, stxr_f) \
+ M(_oGF_, stxi_f) \
+ M(_GGF_, stxr_d) \
+ M(_oGF_, stxi_d) \
+ \
+ M(RGG__, bltr) \
+ M(RFF__, bltr_f) \
+ M(RFF__, bltr_d) \
+ M(RGi__, blti) \
+ M(RGG__, bltr_u) \
+ M(RGu__, blti_u) \
+ M(RGG__, bler) \
+ M(RFF__, bler_f) \
+ M(RFF__, bler_d) \
+ M(RGi__, blei) \
+ M(RGG__, bler_u) \
+ M(RGu__, blei_u) \
+ M(RGG__, beqr) \
+ M(RFF__, beqr_f) \
+ M(RFF__, beqr_d) \
+ M(RGi__, beqi) \
+ M(RGG__, bger) \
+ M(RFF__, bger_f) \
+ M(RFF__, bger_d) \
+ M(RGi__, bgei) \
+ M(RGG__, bger_u) \
+ M(RGu__, bgei_u) \
+ M(RGG__, bgtr) \
+ M(RFF__, bgtr_f) \
+ M(RFF__, bgtr_d) \
+ M(RGi__, bgti) \
+ M(RGG__, bgtr_u) \
+ M(RGu__, bgti_u) \
+ M(RGG__, bner) \
+ M(RFF__, bner_f) \
+ M(RFF__, bner_d) \
+ M(RGi__, bnei) \
+ \
+ M(RFF__, bunltr_f) \
+ M(RFF__, bunltr_d) \
+ M(RFF__, bunler_f) \
+ M(RFF__, bunler_d) \
+ M(RFF__, buneqr_f) \
+ M(RFF__, buneqr_d) \
+ M(RFF__, bunger_f) \
+ M(RFF__, bunger_d) \
+ M(RFF__, bungtr_f) \
+ M(RFF__, bungtr_d) \
+ M(RFF__, bltgtr_f) \
+ M(RFF__, bltgtr_d) \
+ M(RFF__, bordr_f) \
+ M(RFF__, bordr_d) \
+ M(RFF__, bunordr_f) \
+ M(RFF__, bunordr_d) \
+ \
+ M(RGG__, bmsr) \
+ M(RGu__, bmsi) \
+ M(RGG__, bmcr) \
+ M(RGu__, bmci) \
+ \
+ M(RGG__, boaddr) \
+ M(RGi__, boaddi) \
+ M(RGG__, boaddr_u) \
+ M(RGu__, boaddi_u) \
+ M(RGG__, bxaddr) \
+ M(RGi__, bxaddi) \
+ M(RGG__, bxaddr_u) \
+ M(RGu__, bxaddi_u) \
+ M(RGG__, bosubr) \
+ M(RGi__, bosubi) \
+ M(RGG__, bosubr_u) \
+ M(RGu__, bosubi_u) \
+ M(RGG__, bxsubr) \
+ M(RGi__, bxsubi) \
+ M(RGG__, bxsubr_u) \
+ M(RGu__, bxsubi_u) \
+ \
+ M(_i___, nop) \
+ \
+ M(_G___, jmpr) \
+ M(_p___, jmpi) \
+ M(R____, jmp) \
+ \
+ M(_G___, pushr) \
+ M(_F___, pushr_d) \
+ M(_G___, popr) \
+ M(_F___, popr_d) \
+ \
+ M(_____, ret) \
+ M(_G___, retr) \
+ M(_F___, retr_f) \
+ M(_F___, retr_d) \
+ M(_i___, reti) \
+ M(_G___, retval_c) \
+ M(_G___, retval_uc) \
+ M(_G___, retval_s) \
+ M(_G___, retval_us) \
+ M(_G___, retval_i) \
+ WHEN_64(M(_G___, retval_ui)) \
+ WHEN_64(M(_G___, retval_l)) \
+ M(_F___, retval_f) \
+ M(_F___, retval_d) \
+ \
+ M(_FF__, negr_f) \
+ M(_FF__, negr_d) \
+ M(_FF__, absr_f) \
+ M(_FF__, absr_d) \
+ M(_FF__, sqrtr_f) \
+ M(_FF__, sqrtr_d) \
+ \
+ M(_GF__, truncr_f_i) \
+ M(_FG__, extr_f) \
+ M(_FG__, extr_d) \
+ M(_FF__, extr_d_f) \
+ M(_FF__, extr_f_d) \
+ M(_FF__, movr_f) \
+ M(_FF__, movr_d) \
+ M(_Ff__, movi_f) \
+ M(_Fd__, movi_d) \
+ M(_GF__, truncr_d_i) \
+ WHEN_64(M(_GF__, truncr_f_l)) \
+ WHEN_64(M(_GF__, truncr_d_l)) \
+ /* EOL */
+
+#define DECLARE_INSTRUCTION(kind, stem) JIT_API JIT_PROTO_##kind(stem);
+FOR_EACH_INSTRUCTION(DECLARE_INSTRUCTION)
+#undef DECLARE_INSTRUCTION
+
+#if __WORDSIZE == 32
+# define jit_ldr(j,u,v) jit_ldr_i(j,u,v)
+# define jit_ldi(j,u,v) jit_ldi_i(j,u,v)
+# define jit_ldxr(j,u,v,w) jit_ldxr_i(j,u,v,w)
+# define jit_ldxi(j,u,v,w) jit_ldxi_i(j,u,v,w)
+# define jit_str(j,u,v) jit_str_i(j,u,v)
+# define jit_sti(j,u,v) jit_sti_i(j,u,v)
+# define jit_stxr(j,u,v,w) jit_stxr_i(j,u,v,w)
+# define jit_stxi(j,u,v,w) jit_stxi_i(j,u,v,w)
+# define jit_retval(j,u) jit_retval_i(j,u)
+# define jit_bswapr(j,u,v) jit_bswapr_ui(j,u,v)
+# define jit_truncr_d(j,u,v) jit_truncr_d_i(j,u,v)
+# define jit_truncr_f(j,u,v) jit_truncr_f_i(j,u,v)
+#else
+# define jit_ldr(j,u,v) jit_ldr_l(j,u,v)
+# define jit_ldi(j,u,v) jit_ldi_l(j,u,v)
+# define jit_ldxr(j,u,v,w) jit_ldxr_l(j,u,v,w)
+# define jit_ldxi(j,u,v,w) jit_ldxi_l(j,u,v,w)
+# define jit_str(j,u,v) jit_str_l(j,u,v)
+# define jit_sti(j,u,v) jit_sti_l(j,u,v)
+# define jit_stxr(j,u,v,w) jit_stxr_l(j,u,v,w)
+# define jit_stxi(j,u,v,w) jit_stxi_l(j,u,v,w)
+# define jit_retval(j,u) jit_retval_l(j,u)
+# define jit_bswapr(j,u,v) jit_bswapr_ul(j,u,v)
+# define jit_truncr_d(j,u,v) jit_truncr_d_l(j,u,v)
+# define jit_truncr_f(j,u,v) jit_truncr_f_l(j,u,v)
+#endif
+
+#endif /* _jit_h */
diff --git a/libguile/lightning/lib/jit_aarch64-cpu.c b/libguile/lightning/jit/aarch64-cpu.c
index 07b0edb2d..98f2dabde 100644
--- a/libguile/lightning/lib/jit_aarch64-cpu.c
+++ b/libguile/lightning/jit/aarch64-cpu.c
@@ -20,7 +20,7 @@
#if PROTO
typedef union {
/* aarch64-opc.c */
-# define ui jit_uint32_t
+# define ui uint32_t
# if __BYTE_ORDER == __LITTLE_ENDIAN
/* cond2: condition in truly conditional-executed inst. */
struct { ui b: 4; } cond2;
@@ -207,7 +207,7 @@ typedef union {
struct { ui _: 8; ui b: 5; } b40;
struct { ui _: 16; ui b: 6; } scale;
# endif
- jit_int32_t w;
+ int32_t w;
# undef ui
} instr_t;
# define stack_framesize 160
@@ -470,203 +470,203 @@ typedef union {
# define CBZ(Rd,Simm19) ox19(A64_CBZ|XS,Rd,Simm19)
# define CBNZ(Rd,Simm19) ox19(A64_CBNZ|XS,Rd,Simm19)
# define NOP() ii(0xd503201f)
-static jit_int32_t logical_immediate(jit_word_t);
+static int32_t logical_immediate(jit_word_t);
# define oxxx(Op,Rd,Rn,Rm) _oxxx(_jit,Op,Rd,Rn,Rm)
-static void _oxxx(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _oxxx(jit_state_t*,int32_t,int32_t,int32_t,int32_t);
# define oxxi(Op,Rd,Rn,Imm12) _oxxi(_jit,Op,Rd,Rn,Imm12)
-static void _oxxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _oxxi(jit_state_t*,int32_t,int32_t,int32_t,int32_t);
# define oxx9(Op,Rd,Rn,Imm9) _oxx9(_jit,Op,Rd,Rn,Imm9)
-static void _oxx9(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _oxx9(jit_state_t*,int32_t,int32_t,int32_t,int32_t);
# define ox19(Op,Rd,Simm19) _ox19(_jit,Op,Rd,Simm19)
-static void _ox19(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ox19(jit_state_t*,int32_t,int32_t,int32_t);
# define oc19(Op,Cc,Simm19) _oc19(_jit,Op,Cc,Simm19)
-static void _oc19(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _oc19(jit_state_t*,int32_t,int32_t,int32_t);
# define o26(Op,Simm26) _o26(_jit,Op,Simm26)
-static void _oc26(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _oc26(jit_state_t*,int32_t,int32_t);
# define ox_x(Op,Rd,Rn) _ox_x(_jit,Op,Rd,Rn)
-static void _ox_x(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ox_x(jit_state_t*,int32_t,int32_t,int32_t);
# define o_xx(Op,Rd,Rn) _o_xx(_jit,Op,Rd,Rn)
-static void _o_xx(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _o_xx(jit_state_t*,int32_t,int32_t,int32_t);
# define oxx_(Op,Rn,Rm) _oxx_(_jit,Op,Rn,Rm)
-static void _oxx_(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _oxx_(jit_state_t*,int32_t,int32_t,int32_t);
# define o_x_(Op,Rn) _o_x_(_jit,Op,Rn)
-static void _o_x_(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _o_x_(jit_state_t*,int32_t,int32_t);
# define ox_h(Op,Rd,Imm16) _ox_h(_jit,Op,Rd,Imm16)
-static void _ox_h(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ox_h(jit_state_t*,int32_t,int32_t,int32_t);
# define oxxrs(Op,Rd,Rn,R,S) _oxxrs(_jit,Op,Rd,Rn,R,S)
-static void _oxxrs(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _oxxrs(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t);
# define oxxxc(Op,Rd,Rn,Rm,Cc) _oxxxc(_jit,Op,Rd,Rn,Rm,Cc)
-static void _oxxxc(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _oxxxc(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t);
# define oxxx7(Op,Rt,Rt2,Rn,Simm7) _oxxx7(_jit,Op,Rt,Rt2,Rn,Simm7)
-static void _oxxx7(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _oxxx7(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
# define nop(i0) _nop(_jit,i0)
-static void _nop(jit_state_t*,jit_int32_t);
+static void _nop(jit_state_t*,int32_t);
# define addr(r0,r1,r2) ADD(r0,r1,r2)
# define addi(r0,r1,i0) _addi(_jit,r0,r1,i0)
-static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addcr(r0,r1,r2) ADDS(r0,r1,r2)
# define addci(r0,r1,i0) _addci(_jit,r0,r1,i0)
-static void _addci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addxr(r0,r1,r2) ADCS(r0,r1,r2)
# define addxi(r0,r1,i0) _addxi(_jit,r0,r1,i0)
-static void _addxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subr(r0,r1,r2) SUB(r0,r1,r2)
# define subi(r0,r1,i0) _subi(_jit,r0,r1,i0)
-static void _subi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subcr(r0,r1,r2) SUBS(r0,r1,r2)
# define subci(r0,r1,i0) _subci(_jit,r0,r1,i0)
-static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subxr(r0,r1,r2) SBCS(r0,r1,r2)
# define subxi(r0,r1,i0) _subxi(_jit,r0,r1,i0)
-static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rsbi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define mulr(r0,r1,r2) MUL(r0,r1,r2)
# define muli(r0,r1,i0) _muli(_jit,r0,r1,i0)
-static void _muli(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _muli(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qmulr(r0,r1,r2,r3) _qmulr(_jit,r0,r1,r2,r3)
-static void _qmulr(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _qmulr(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t);
# define qmuli(r0,r1,r2,i0) _qmuli(_jit,r0,r1,r2,i0)
-static void _qmuli(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qmuli(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
# define qmulr_u(r0,r1,r2,r3) _qmulr_u(_jit,r0,r1,r2,r3)
-static void _qmulr_u(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _qmulr_u(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t);
# define qmuli_u(r0,r1,r2,i0) _qmuli_u(_jit,r0,r1,r2,i0)
-static void _qmuli_u(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qmuli_u(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
# define divr(r0,r1,r2) SDIV(r0,r1,r2)
# define divi(r0,r1,i0) _divi(_jit,r0,r1,i0)
-static void _divi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define divr_u(r0,r1,r2) UDIV(r0,r1,r2)
# define divi_u(r0,r1,i0) _divi_u(_jit,r0,r1,i0)
-static void _divi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qdivr(r0,r1,r2,r3) _iqdivr(_jit,1,r0,r1,r2,r3)
# define qdivr_u(r0,r1,r2,r3) _iqdivr(_jit,0,r0,r1,r2,r3)
static void _iqdivr(jit_state_t*,jit_bool_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t);
# define qdivi(r0,r1,r2,i0) _qdivi(_jit,r0,r1,r2,i0)
-static void _qdivi(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qdivi(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
# define qdivi_u(r0,r1,r2,i0) _qdivi_u(_jit,r0,r1,r2,i0)
-static void _qdivi_u(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qdivi_u(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
# define remr(r0,r1,r2) _remr(_jit,r0,r1,r2)
-static void _remr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr(jit_state_t*,int32_t,int32_t,int32_t);
# define remi(r0,r1,i0) _remi(_jit,r0,r1,i0)
-static void _remi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define remr_u(r0,r1,r2) _remr_u(_jit,r0,r1,r2)
-static void _remr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define remi_u(r0,r1,i0) _remi_u(_jit,r0,r1,i0)
-static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define lshr(r0,r1,r2) LSL(r0,r1,r2)
# define lshi(r0,r1,i0) _lshi(_jit,r0,r1,i0)
-static void _lshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rshr(r0,r1,r2) ASR(r0,r1,r2)
# define rshi(r0,r1,i0) _rshi(_jit,r0,r1,i0)
-static void _rshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rshr_u(r0,r1,r2) LSR(r0,r1,r2)
# define rshi_u(r0,r1,i0) _rshi_u(_jit,r0,r1,i0)
-static void _rshi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define negr(r0,r1) NEG(r0,r1)
# define comr(r0,r1) MVN(r0,r1)
# define andr(r0,r1,r2) AND(r0,r1,r2)
# define andi(r0,r1,i0) _andi(_jit,r0,r1,i0)
-static void _andi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _andi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define orr(r0,r1,r2) ORR(r0,r1,r2)
# define ori(r0,r1,i0) _ori(_jit,r0,r1,i0)
-static void _ori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define xorr(r0,r1,r2) EOR(r0,r1,r2)
# define xori(r0,r1,i0) _xori(_jit,r0,r1,i0)
-static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _xori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_c(r0,r1) LDRSBI(r0,r1,0)
# define ldi_c(r0,i0) _ldi_c(_jit,r0,i0)
-static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_c(jit_state_t*,int32_t,jit_word_t);
# define ldr_uc(r0,r1) _ldr_uc(_jit,r0,r1)
-static void _ldr_uc(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_uc(jit_state_t*,int32_t,int32_t);
# define ldi_uc(r0,i0) _ldi_uc(_jit,r0,i0)
-static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_uc(jit_state_t*,int32_t,jit_word_t);
# define ldr_s(r0,r1) LDRSHI(r0,r1,0)
# define ldi_s(r0,i0) _ldi_s(_jit,r0,i0)
-static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_s(jit_state_t*,int32_t,jit_word_t);
# define ldr_us(r0,r1) _ldr_us(_jit,r0,r1)
-static void _ldr_us(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_us(jit_state_t*,int32_t,int32_t);
# define ldi_us(r0,i0) _ldi_us(_jit,r0,i0)
-static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_us(jit_state_t*,int32_t,jit_word_t);
# define ldr_i(r0,r1) LDRSWI(r0,r1,0)
# define ldi_i(r0,i0) _ldi_i(_jit,r0,i0)
-static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_i(jit_state_t*,int32_t,jit_word_t);
# define ldr_ui(r0,r1) _ldr_ui(_jit,r0,r1)
-static void _ldr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_ui(jit_state_t*,int32_t,int32_t);
# define ldi_ui(r0,i0) _ldi_ui(_jit,r0,i0)
-static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_ui(jit_state_t*,int32_t,jit_word_t);
# define ldr_l(r0,r1) LDRI(r0,r1,0)
-static void _ldr_l(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_l(jit_state_t*,int32_t,int32_t);
# define ldi_l(r0,i0) _ldi_l(_jit,r0,i0)
-static void _ldi_l(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_l(jit_state_t*,int32_t,jit_word_t);
# define ldxr_c(r0,r1,r2) _ldxr_c(_jit,r0,r1,r2)
-static void _ldxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_c(r0,r1,i0) _ldxi_c(_jit,r0,r1,i0)
-static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_c(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_uc(r0,r1,r2) _ldxr_uc(_jit,r0,r1,r2)
-static void _ldxr_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_uc(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_uc(r0,r1,i0) _ldxi_uc(_jit,r0,r1,i0)
-static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_uc(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_s(r0,r1,r2) LDRSH(r0,r1,r2)
# define ldxi_s(r0,r1,i0) _ldxi_s(_jit,r0,r1,i0)
-static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_s(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_us(r0,r1,r2) _ldxr_us(_jit,r0,r1,r2)
-static void _ldxr_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_us(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_us(r0,r1,i0) _ldxi_us(_jit,r0,r1,i0)
-static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_us(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_i(r0,r1,r2) LDRSW(r0,r1,r2)
# define ldxi_i(r0,r1,i0) _ldxi_i(_jit,r0,r1,i0)
-static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_i(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_ui(r0,r1,r2) _ldxr_ui(_jit,r0,r1,r2)
-static void _ldxr_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_ui(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_ui(r0,r1,i0) _ldxi_ui(_jit,r0,r1,i0)
-static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_ui(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_l(r0,r1,r2) LDR(r0,r1,r2)
# define ldxi_l(r0,r1,i0) _ldxi_l(_jit,r0,r1,i0)
-static void _ldxi_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_l(jit_state_t*,int32_t,int32_t,jit_word_t);
# define str_c(r0,r1) STRBI(r1,r0,0)
# define sti_c(i0,r0) _sti_c(_jit,i0,r0)
-static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_c(jit_state_t*,jit_word_t,int32_t);
# define str_s(r0,r1) STRHI(r1,r0,0)
# define sti_s(i0,r0) _sti_s(_jit,i0,r0)
-static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_s(jit_state_t*,jit_word_t,int32_t);
# define str_i(r0,r1) STRWI(r1,r0,0)
# define sti_i(i0,r0) _sti_i(_jit,i0,r0)
-static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_i(jit_state_t*,jit_word_t,int32_t);
# define str_l(r0,r1) STRI(r1,r0,0)
# define sti_l(i0,r0) _sti_l(_jit,i0,r0)
-static void _sti_l(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_l(jit_state_t*,jit_word_t,int32_t);
# define stxr_c(r0,r1,r2) STRB(r2,r1,r0)
# define stxi_c(i0,r0,r1) _stxi_c(_jit,i0,r0,r1)
-static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_c(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxr_s(r0,r1,r2) STRH(r2,r1,r0)
# define stxi_s(i0,r0,r1) _stxi_s(_jit,i0,r0,r1)
-static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_s(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxr_i(r0,r1,r2) STRW(r2,r1,r0)
# define stxi_i(i0,r0,r1) _stxi_i(_jit,i0,r0,r1)
-static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_i(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxr_l(r0,r1,r2) STR(r2,r1,r0)
# define stxi_l(i0,r0,r1) _stxi_l(_jit,i0,r0,r1)
-static void _stxi_l(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_l(jit_state_t*,jit_word_t,int32_t,int32_t);
# if __BYTE_ORDER == __LITTLE_ENDIAN
-# define htonr_us(r0,r1) _htonr_us(_jit,r0,r1)
-static void _htonr_us(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ui(r0,r1) _htonr_ui(_jit,r0,r1)
-static void _htonr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ul(r0,r1) REV(r0,r1)
+# define bswapr_us(r0,r1) _bswapr_us(_jit,r0,r1)
+static void _bswapr_us(jit_state_t*,int32_t,int32_t);
+# define bswapr_ui(r0,r1) _bswapr_ui(_jit,r0,r1)
+static void _bswapr_ui(jit_state_t*,int32_t,int32_t);
+# define bswapr_ul(r0,r1) REV(r0,r1)
# else
-# define htonr_us(r0,r1) extr_us(r0,r1)
-# define htonr_ui(r0,r1) extr_ui(r0,r1)
-# define htonr_ul(r0,r1) movr(r0,r1)
+# define bswapr_us(r0,r1) extr_us(r0,r1)
+# define bswapr_ui(r0,r1) extr_ui(r0,r1)
+# define bswapr_ul(r0,r1) movr(r0,r1)
# endif
# define extr_c(r0,r1) SXTB(r0,r1)
# define extr_uc(r0,r1) UXTB(r0,r1)
@@ -675,15 +675,15 @@ static void _htonr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
# define extr_i(r0,r1) SXTW(r0,r1)
# define extr_ui(r0,r1) UXTW(r0,r1)
# define movr(r0,r1) _movr(_jit,r0,r1)
-static void _movr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _movr(jit_state_t*,int32_t,int32_t);
# define movi(r0,i0) _movi(_jit,r0,i0)
-static void _movi(jit_state_t*,jit_int32_t,jit_word_t);
+static void _movi(jit_state_t*,int32_t,jit_word_t);
# define movi_p(r0,i0) _movi_p(_jit,r0,i0)
-static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
+static jit_word_t _movi_p(jit_state_t*,int32_t,jit_word_t);
# define ccr(cc,r0,r1,r2) _ccr(_jit,cc,r0,r1,r2)
-static void _ccr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ccr(jit_state_t*,int32_t,int32_t,int32_t,int32_t);
# define cci(cc,r0,r1,i0) _cci(_jit,cc,r0,r1,i0)
-static void _cci(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+static void _cci(jit_state_t*,int32_t,int32_t,int32_t,jit_word_t);
# define ltr(r0,r1,r2) ccr(CC_LT,r0,r1,r2)
# define lti(r0,r1,i0) cci(CC_LT,r0,r1,i0)
# define ltr_u(r0,r1,r2) ccr(CC_CC,r0,r1,r2)
@@ -706,10 +706,10 @@ static void _cci(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
# define nei(r0,r1,i0) cci(CC_NE,r0,r1,i0)
# define bccr(cc,i0,r0,r1) _bccr(_jit,cc,i0,r0,r1)
static jit_word_t
-_bccr(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t);
+_bccr(jit_state_t*,int32_t,jit_word_t,int32_t,int32_t);
# define bcci(cc,i0,r0,i1) _bcci(_jit,cc,i0,r0,i1)
static jit_word_t
-_bcci(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
+_bcci(jit_state_t*,int32_t,jit_word_t,int32_t,jit_word_t);
# define bltr(i0,r0,r1) bccr(BCC_LT,i0,r0,r1)
# define blti(i0,r0,i1) bcci(BCC_LT,i0,r0,i1)
# define bltr_u(i0,r0,r1) bccr(BCC_CC,i0,r0,r1)
@@ -720,7 +720,7 @@ _bcci(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
# define blei_u(i0,r0,i1) bcci(BCC_LS,i0,r0,i1)
# define beqr(i0,r0,r1) bccr(BCC_EQ,i0,r0,r1)
# define beqi(i0,r0,i1) _beqi(_jit,i0,r0,i1)
-static jit_word_t _beqi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _beqi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bger(i0,r0,r1) bccr(BCC_GE,i0,r0,r1)
# define bgei(i0,r0,i1) bcci(BCC_GE,i0,r0,i1)
# define bger_u(i0,r0,r1) bccr(BCC_CS,i0,r0,r1)
@@ -731,13 +731,13 @@ static jit_word_t _beqi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
# define bgti_u(i0,r0,i1) bcci(BCC_HI,i0,r0,i1)
# define bner(i0,r0,r1) bccr(BCC_NE,i0,r0,r1)
# define bnei(i0,r0,i1) _bnei(_jit,i0,r0,i1)
-static jit_word_t _bnei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bnei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define baddr(cc,i0,r0,r1) _baddr(_jit,cc,i0,r0,r1)
static jit_word_t
-_baddr(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t);
+_baddr(jit_state_t*,int32_t,jit_word_t,int32_t,int32_t);
# define baddi(cc,i0,r0,i1) _baddi(_jit,cc,i0,r0,i1)
static jit_word_t
-_baddi(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
+_baddi(jit_state_t*,int32_t,jit_word_t,int32_t,jit_word_t);
# define boaddr(i0,r0,r1) baddr(BCC_VS,i0,r0,r1)
# define boaddi(i0,r0,i1) baddi(BCC_VS,i0,r0,i1)
# define boaddr_u(i0,r0,r1) baddr(BCC_HS,i0,r0,r1)
@@ -748,10 +748,10 @@ _baddi(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
# define bxaddi_u(i0,r0,i1) baddi(BCC_LO,i0,r0,i1)
# define bsubr(cc,i0,r0,r1) _bsubr(_jit,cc,i0,r0,r1)
static jit_word_t
-_bsubr(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t);
+_bsubr(jit_state_t*,int32_t,jit_word_t,int32_t,int32_t);
# define bsubi(cc,i0,r0,i1) _bsubi(_jit,cc,i0,r0,i1)
static jit_word_t
-_bsubi(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
+_bsubi(jit_state_t*,int32_t,jit_word_t,int32_t,jit_word_t);
# define bosubr(i0,r0,r1) bsubr(BCC_VS,i0,r0,r1)
# define bosubi(i0,r0,i1) bsubi(BCC_VS,i0,r0,i1)
# define bosubr_u(i0,r0,r1) bsubr(BCC_LO,i0,r0,r1)
@@ -762,10 +762,10 @@ _bsubi(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
# define bxsubi_u(i0,r0,i1) bsubi(BCC_HS,i0,r0,i1)
# define bmxr(cc,i0,r0,r1) _bmxr(_jit,cc,i0,r0,r1)
static jit_word_t
-_bmxr(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t);
+_bmxr(jit_state_t*,int32_t,jit_word_t,int32_t,int32_t);
# define bmxi(cc,i0,r0,r1) _bmxi(_jit,cc,i0,r0,r1)
static jit_word_t
-_bmxi(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
+_bmxi(jit_state_t*,int32_t,jit_word_t,int32_t,jit_word_t);
# define bmsr(i0,r0,r1) bmxr(BCC_NE,i0,r0,r1)
# define bmsi(i0,r0,i1) bmxi(BCC_NE,i0,r0,i1)
# define bmcr(i0,r0,r1) bmxr(BCC_EQ,i0,r0,r1)
@@ -785,15 +785,15 @@ static void _prolog(jit_state_t*,jit_node_t*);
# define epilog(i0) _epilog(_jit,i0)
static void _epilog(jit_state_t*,jit_node_t*);
# define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
+static void _vastart(jit_state_t*, int32_t);
# define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vaarg(jit_state_t*, int32_t, int32_t);
# define patch_at(jump,label) _patch_at(_jit,jump,label)
static void _patch_at(jit_state_t*,jit_word_t,jit_word_t);
#endif
#if CODE
-static jit_int32_t
+static int32_t
logical_immediate(jit_word_t imm)
{
/* There are 5334 possible immediate values, but to avoid the
@@ -826,8 +826,8 @@ logical_immediate(jit_word_t imm)
}
static void
-_oxxx(jit_state_t *_jit, jit_int32_t Op,
- jit_int32_t Rd, jit_int32_t Rn, jit_int32_t Rm)
+_oxxx(jit_state_t *_jit, int32_t Op,
+ int32_t Rd, int32_t Rn, int32_t Rm)
{
instr_t i;
assert(!(Rd & ~0x1f));
@@ -842,8 +842,8 @@ _oxxx(jit_state_t *_jit, jit_int32_t Op,
}
static void
-_oxxi(jit_state_t *_jit, jit_int32_t Op,
- jit_int32_t Rd, jit_int32_t Rn, jit_int32_t Imm12)
+_oxxi(jit_state_t *_jit, int32_t Op,
+ int32_t Rd, int32_t Rn, int32_t Imm12)
{
instr_t i;
assert(!(Rd & ~0x1f));
@@ -858,8 +858,8 @@ _oxxi(jit_state_t *_jit, jit_int32_t Op,
}
static void
-_oxx9(jit_state_t *_jit, jit_int32_t Op,
- jit_int32_t Rd, jit_int32_t Rn, jit_int32_t Imm9)
+_oxx9(jit_state_t *_jit, int32_t Op,
+ int32_t Rd, int32_t Rn, int32_t Imm9)
{
instr_t i;
assert(!(Rd & ~0x1f));
@@ -874,7 +874,7 @@ _oxx9(jit_state_t *_jit, jit_int32_t Op,
}
static void
-_ox19(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rd, jit_int32_t Simm19)
+_ox19(jit_state_t *_jit, int32_t Op, int32_t Rd, int32_t Simm19)
{
instr_t i;
assert(!(Rd & ~0x1f));
@@ -887,7 +887,7 @@ _ox19(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rd, jit_int32_t Simm19)
}
static void
-_oc19(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Cc, jit_int32_t Simm19)
+_oc19(jit_state_t *_jit, int32_t Op, int32_t Cc, int32_t Simm19)
{
instr_t i;
assert(!(Cc & ~0xf));
@@ -900,7 +900,7 @@ _oc19(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Cc, jit_int32_t Simm19)
}
static void
-_o26(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Simm26)
+_o26(jit_state_t *_jit, int32_t Op, int32_t Simm26)
{
instr_t i;
assert(Simm26 >= -33554432 && Simm26 <= 33554431);
@@ -911,7 +911,7 @@ _o26(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Simm26)
}
static void
-_ox_x(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rd, jit_int32_t Rm)
+_ox_x(jit_state_t *_jit, int32_t Op, int32_t Rd, int32_t Rm)
{
instr_t i;
assert(!(Rd & ~0x1f));
@@ -924,7 +924,7 @@ _ox_x(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rd, jit_int32_t Rm)
}
static void
-_o_xx(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rd, jit_int32_t Rn)
+_o_xx(jit_state_t *_jit, int32_t Op, int32_t Rd, int32_t Rn)
{
instr_t i;
assert(!(Rd & ~0x1f));
@@ -937,7 +937,7 @@ _o_xx(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rd, jit_int32_t Rn)
}
static void
-_oxx_(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rn, jit_int32_t Rm)
+_oxx_(jit_state_t *_jit, int32_t Op, int32_t Rn, int32_t Rm)
{
instr_t i;
assert(!(Rn & ~0x1f));
@@ -950,7 +950,7 @@ _oxx_(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rn, jit_int32_t Rm)
}
static void
-_o_x_(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rn)
+_o_x_(jit_state_t *_jit, int32_t Op, int32_t Rn)
{
instr_t i;
assert(!(Rn & ~0x1f));
@@ -961,7 +961,7 @@ _o_x_(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rn)
}
static void
-_ox_h(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rd, jit_int32_t Imm16)
+_ox_h(jit_state_t *_jit, int32_t Op, int32_t Rd, int32_t Imm16)
{
instr_t i;
assert(!(Rd & ~0x1f));
@@ -974,8 +974,8 @@ _ox_h(jit_state_t *_jit, jit_int32_t Op, jit_int32_t Rd, jit_int32_t Imm16)
}
static void
-_oxxrs(jit_state_t *_jit, jit_int32_t Op,
- jit_int32_t Rd, jit_int32_t Rn, jit_int32_t R, jit_int32_t S)
+_oxxrs(jit_state_t *_jit, int32_t Op,
+ int32_t Rd, int32_t Rn, int32_t R, int32_t S)
{
instr_t i;
assert(!(Rd & ~0x1f));
@@ -992,8 +992,8 @@ _oxxrs(jit_state_t *_jit, jit_int32_t Op,
}
static void
-_oxxxc(jit_state_t *_jit, jit_int32_t Op,
- jit_int32_t Rd, jit_int32_t Rn, jit_int32_t Rm, jit_int32_t Cc)
+_oxxxc(jit_state_t *_jit, int32_t Op,
+ int32_t Rd, int32_t Rn, int32_t Rm, int32_t Cc)
{
instr_t i;
assert(!(Rd & ~0x1f));
@@ -1010,8 +1010,8 @@ _oxxxc(jit_state_t *_jit, jit_int32_t Op,
}
static void
-_oxxx7(jit_state_t *_jit, jit_int32_t Op,
- jit_int32_t Rt, jit_int32_t Rt2, jit_int32_t Rn, jit_int32_t Simm7)
+_oxxx7(jit_state_t *_jit, int32_t Op,
+ int32_t Rt, int32_t Rt2, int32_t Rn, int32_t Simm7)
{
instr_t i;
assert(!(Rt & ~0x1f));
@@ -1028,7 +1028,7 @@ _oxxx7(jit_state_t *_jit, jit_int32_t Op,
}
static void
-_nop(jit_state_t *_jit, jit_int32_t i0)
+_nop(jit_state_t *_jit, int32_t i0)
{
for (; i0 > 0; i0 -= 4)
NOP();
@@ -1036,9 +1036,9 @@ _nop(jit_state_t *_jit, jit_int32_t i0)
}
static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t is = i0 >> 12;
jit_word_t in = -i0;
jit_word_t iS = in >> 12;
@@ -1059,9 +1059,9 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t is = i0 >> 12;
jit_word_t in = -i0;
jit_word_t iS = in >> 12;
@@ -1082,9 +1082,9 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
addxr(r0, r1, rn(reg));
@@ -1092,9 +1092,9 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t is = i0 >> 12;
if ( i0 >= 0 && i0 <= 0xfff)
SUBI (r0, r1, i0);
@@ -1109,9 +1109,9 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t is = i0 >> 12;
if ( i0 >= 0 && i0 <= 0xfff)
SUBSI (r0, r1, i0);
@@ -1126,9 +1126,9 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
subxr(r0, r1, rn(reg));
@@ -1136,16 +1136,16 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rsbi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
subi(r0, r1, i0);
negr(r0, r0);
}
static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
mulr(r0, r1, rn(reg));
@@ -1153,10 +1153,10 @@ _muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_qmulr(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+_qmulr(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2 || r0 == r3) {
reg = jit_get_reg(jit_class_gpr);
mulr(rn(reg), r2, r3);
@@ -1171,10 +1171,10 @@ _qmulr(jit_state_t *_jit, jit_int32_t r0,
}
static void
-_qmuli(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+_qmuli(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
qmulr(r0, r1, r2, rn(reg));
@@ -1182,10 +1182,10 @@ _qmuli(jit_state_t *_jit, jit_int32_t r0,
}
static void
-_qmulr_u(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+_qmulr_u(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2 || r0 == r3) {
reg = jit_get_reg(jit_class_gpr);
mulr(rn(reg), r2, r3);
@@ -1200,10 +1200,10 @@ _qmulr_u(jit_state_t *_jit, jit_int32_t r0,
}
static void
-_qmuli_u(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+_qmuli_u(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
qmulr_u(r0, r1, r2, rn(reg));
@@ -1211,9 +1211,9 @@ _qmuli_u(jit_state_t *_jit, jit_int32_t r0,
}
static void
-_divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
divr(r0, r1, rn(reg));
@@ -1221,9 +1221,9 @@ _divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
divr_u(r0, r1, rn(reg));
@@ -1232,10 +1232,10 @@ _divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
static void
_iqdivr(jit_state_t *_jit, jit_bool_t sign,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t sv0, rg0;
- jit_int32_t sv1, rg1;
+ int32_t sv0, rg0;
+ int32_t sv1, rg1;
if (r0 == r2 || r0 == r3) {
sv0 = jit_get_reg(jit_class_gpr);
rg0 = rn(sv0);
@@ -1265,10 +1265,10 @@ _iqdivr(jit_state_t *_jit, jit_bool_t sign,
}
static void
-_qdivi(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+_qdivi(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
qdivr(r0, r1, r2, rn(reg));
@@ -1276,10 +1276,10 @@ _qdivi(jit_state_t *_jit, jit_int32_t r0,
}
static void
-_qdivi_u(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+_qdivi_u(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
qdivr_u(r0, r1, r2, rn(reg));
@@ -1287,9 +1287,9 @@ _qdivi_u(jit_state_t *_jit, jit_int32_t r0,
}
static void
-_remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r1 || r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
divr(rn(reg), r1, r2);
@@ -1305,9 +1305,9 @@ _remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr(r0, r1, rn(reg));
@@ -1315,9 +1315,9 @@ _remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r1 || r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
divr_u(rn(reg), r1, r2);
@@ -1333,9 +1333,9 @@ _remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr_u(r0, r1, rn(reg));
@@ -1343,7 +1343,7 @@ _remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
if (i0 == 0)
movr(r0, r1);
@@ -1354,7 +1354,7 @@ _lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
if (i0 == 0)
movr(r0, r1);
@@ -1365,7 +1365,7 @@ _rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
if (i0 == 0)
movr(r0, r1);
@@ -1376,10 +1376,10 @@ _rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
- jit_int32_t imm;
+ int32_t reg;
+ int32_t imm;
if (i0 == 0)
movi(r0, 0);
else if (i0 == -1)
@@ -1398,10 +1398,10 @@ _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
- jit_int32_t imm;
+ int32_t reg;
+ int32_t imm;
if (i0 == 0)
movr(r0, r1);
else if (i0 == -1)
@@ -1420,10 +1420,10 @@ _ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
- jit_int32_t imm;
+ int32_t reg;
+ int32_t imm;
if (i0 == 0)
movr(r0, r1);
else if (i0 == -1)
@@ -1443,24 +1443,24 @@ _xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
#if __BYTE_ORDER == __LITTLE_ENDIAN
static void
-_htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- htonr_ul(r0, r1);
+ bswapr_ul(r0, r1);
rshi_u(r0, r0, 48);
}
static void
-_htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- htonr_ul(r0, r1);
+ bswapr, 2019_ul(r0, r1);
rshi_u(r0, r0, 32);
}
#endif
static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_c(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_c(r0, rn(reg));
@@ -1468,7 +1468,7 @@ _ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_uc(jit_state_t *_jit, int32_t r0, int32_t r1)
{
LDRBI(r0, r1, 0);
#if 0
@@ -1477,9 +1477,9 @@ _ldr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_uc(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_uc(r0, rn(reg));
@@ -1487,9 +1487,9 @@ _ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_s(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_s(r0, rn(reg));
@@ -1497,7 +1497,7 @@ _ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
LDRHI(r0, r1, 0);
#if 0
@@ -1506,9 +1506,9 @@ _ldr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_us(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_us(r0, rn(reg));
@@ -1516,9 +1516,9 @@ _ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_i(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_i(r0, rn(reg));
@@ -1526,7 +1526,7 @@ _ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
LDRWI(r0, r1, 0);
#if 0
@@ -1535,9 +1535,9 @@ _ldr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_ui(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_ui(r0, rn(reg));
@@ -1545,9 +1545,9 @@ _ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_l(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_l(r0, rn(reg));
@@ -1555,16 +1555,16 @@ _ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
LDRSB(r0, r1, r2);
extr_c(r0, r0);
}
static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= 0 && i0 <= 4095)
LDRSBI(r0, r1, i0);
else if (i0 > -256 && i0 < 0)
@@ -1579,7 +1579,7 @@ _ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_uc(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
LDRB(r0, r1, r2);
#if 0
@@ -1588,9 +1588,9 @@ _ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= 0 && i0 <= 4095)
LDRBI(r0, r1, i0);
else if (i0 > -256 && i0 < 0)
@@ -1607,9 +1607,9 @@ _ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(!(i0 & 1));
if (i0 >= 0 && i0 <= 8191)
LDRSHI(r0, r1, i0 >> 1);
@@ -1624,7 +1624,7 @@ _ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_us(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
LDRH(r0, r1, r2);
#if 0
@@ -1633,9 +1633,9 @@ _ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(!(i0 & 1));
if (i0 >= 0 && i0 <= 8191)
LDRHI(r0, r1, i0 >> 1);
@@ -1653,9 +1653,9 @@ _ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(!(i0 & 3));
if (i0 >= 0 && i0 <= 16383)
LDRSWI(r0, r1, i0 >> 2);
@@ -1670,7 +1670,7 @@ _ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_ui(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
LDRW(r0, r1, r2);
#if 0
@@ -1679,9 +1679,9 @@ _ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(!(i0 & 3));
if (i0 >= 0 && i0 <= 16383)
LDRWI(r0, r1, i0 >> 2);
@@ -1699,9 +1699,9 @@ _ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(!(i0 & 7));
if (i0 >= 0 && i0 <= 32767)
LDRI(r0, r1, i0 >> 3);
@@ -1716,9 +1716,9 @@ _ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_c(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_c(rn(reg), r0);
@@ -1726,9 +1726,9 @@ _sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_s(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_s(rn(reg), r0);
@@ -1736,9 +1736,9 @@ _sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_i(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_i(rn(reg), r0);
@@ -1746,9 +1746,9 @@ _sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_l(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_l(rn(reg), r0);
@@ -1756,9 +1756,9 @@ _sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= 0 && i0 <= 4095)
STRBI(r1, r0, i0);
else if (i0 > -256 && i0 < 0)
@@ -1772,9 +1772,9 @@ _stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
assert(!(i0 & 1));
if (i0 >= 0 && i0 <= 8191)
STRHI(r1, r0, i0 >> 1);
@@ -1789,9 +1789,9 @@ _stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
assert(!(i0 & 3));
if (i0 >= 0 && i0 <= 16383)
STRWI(r1, r0, i0 >> 2);
@@ -1806,9 +1806,9 @@ _stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
assert(!(i0 & 7));
if (i0 >= 0 && i0 <= 32767)
STRI(r1, r0, i0 >> 3);
@@ -1823,14 +1823,14 @@ _stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_movr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (r0 != r1)
MOV(r0, r1);
}
static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t n0, ibit, nbit;
n0 = ~i0;
@@ -1939,7 +1939,7 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t w;
w = _jit->pc.w;
@@ -1951,18 +1951,18 @@ _movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ccr(jit_state_t *_jit, jit_int32_t cc,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ccr(jit_state_t *_jit, int32_t cc,
+ int32_t r0, int32_t r1, int32_t r2)
{
CMP(r1, r2);
CSET(r0, cc);
}
static void
-_cci(jit_state_t *_jit, jit_int32_t cc,
- jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_cci(jit_state_t *_jit, int32_t cc,
+ int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t is = i0 >> 12;
jit_word_t in = -i0;
jit_word_t iS = in >> 12;
@@ -1984,8 +1984,8 @@ _cci(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bccr(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bccr(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w, d;
CMP(r0, r1);
@@ -1996,10 +1996,10 @@ _bccr(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bcci(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bcci(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t w, d;
jit_word_t is = i1 >> 12;
jit_word_t in = -i1;
@@ -2025,7 +2025,7 @@ _bcci(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_beqi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
if (i1 == 0) {
@@ -2038,7 +2038,7 @@ _beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bnei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
if (i1 == 0) {
@@ -2051,8 +2051,8 @@ _bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_baddr(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_baddr(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
addcr(r0, r0, r1);
@@ -2062,8 +2062,8 @@ _baddr(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_baddi(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_baddi(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
addci(r0, r0, i1);
@@ -2073,8 +2073,8 @@ _baddi(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bsubr(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bsubr(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
subcr(r0, r0, r1);
@@ -2084,8 +2084,8 @@ _bsubr(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bsubi(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bsubi(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
subci(r0, r0, i1);
@@ -2095,8 +2095,8 @@ _bsubi(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bmxr(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmxr(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
TST(r0, r1);
@@ -2106,12 +2106,12 @@ _bmxr(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bmxi(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmxi(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
- jit_int32_t imm;
+ int32_t reg;
+ int32_t imm;
imm = logical_immediate(i1);
if (imm != -1)
TSTI(r0, imm);
@@ -2130,7 +2130,7 @@ static void
_jmpi(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
w = (i0 - _jit->pc.w) >> 2;
if (w >= -33554432 && w <= 33554431)
B(w);
@@ -2146,7 +2146,7 @@ static jit_word_t
_jmpi_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
w = movi_p(rn(reg), i0);
jmpr(rn(reg));
@@ -2158,7 +2158,7 @@ static void
_calli(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
w = (i0 - _jit->pc.w) >> 2;
if (w >= -33554432 && w <= 33554431)
BL(w);
@@ -2174,7 +2174,7 @@ static jit_word_t
_calli_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
w = movi_p(rn(reg), i0);
callr(rn(reg));
@@ -2193,9 +2193,9 @@ _calli_p(jit_state_t *_jit, jit_word_t i0)
static void
_prolog(jit_state_t *_jit, jit_node_t *node)
{
- jit_int32_t reg;
+ int32_t reg;
if (_jitc->function->define_frame || _jitc->function->assume_frame) {
- jit_int32_t frame = -_jitc->function->frame;
+ int32_t frame = -_jitc->function->frame;
assert(_jitc->function->self.aoff >= frame);
if (_jitc->function->assume_frame)
return;
@@ -2310,9 +2310,9 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
}
static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
+_vastart(jit_state_t *_jit, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(_jitc->function->self.call & jit_call_varargs);
@@ -2345,11 +2345,11 @@ _vastart(jit_state_t *_jit, jit_int32_t r0)
}
static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vaarg(jit_state_t *_jit, int32_t r0, 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);
@@ -2402,9 +2402,9 @@ _patch_at(jit_state_t *_jit, jit_word_t instr, jit_word_t label)
{
instr_t i;
jit_word_t d;
- jit_int32_t fc, ff, ffc;
+ int32_t fc, ff, ffc;
union {
- jit_int32_t *i;
+ int32_t *i;
jit_word_t w;
} u;
u.w = instr;
diff --git a/libguile/lightning/lib/jit_aarch64-fpu.c b/libguile/lightning/jit/aarch64-fpu.c
index 058b98a1e..e1ccde65c 100644
--- a/libguile/lightning/lib/jit_aarch64-fpu.c
+++ b/libguile/lightning/jit/aarch64-fpu.c
@@ -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,int32_t,
+ int32_t,int32_t,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,int32_t,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,int32_t,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,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,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,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,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,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,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,int32_t,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,int32_t,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,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,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,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,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,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,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,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,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,int32_t,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,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,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,int32_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,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,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,int32_t,int32_t,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,int32_t,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,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,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, 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, int32_t Sz,
+ int32_t Rd, int32_t Rn, 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, int32_t Rd, 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, int32_t Rn, 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, 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, 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, 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, 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, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, 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);
diff --git a/libguile/lightning/lib/jit_aarch64.c b/libguile/lightning/jit/aarch64.c
index 2d0f2b4c7..332c4c0c6 100644
--- a/libguile/lightning/lib/jit_aarch64.c
+++ b/libguile/lightning/jit/aarch64.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2013-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -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;
-
- 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;
+ int32_t gpoff;
+ int32_t fpoff;
+
+ 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;
@@ -63,14 +63,14 @@ static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
extern void __clear_cache(void *, void *);
#define PROTO 1
-# include "jit_aarch64-cpu.c"
-# include "jit_aarch64-fpu.c"
+# include "aarch64-cpu.c"
+# include "aarch64-fpu.c"
#undef PROTO
/*
* Initialization
*/
-jit_register_t _rvs[] = {
+static const jit_register_t _rvs[] = {
{ rc(gpr) | 0x08, "x8" },
{ rc(gpr) | 0x12, "x18" },
{ rc(gpr) | 0x11, "x17" },
@@ -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, 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;
@@ -1518,8 +1518,8 @@ _emit_code(jit_state_t *_jit)
}
#define CODE 1
-# include "jit_aarch64-cpu.c"
-# include "jit_aarch64-fpu.c"
+# include "aarch64-cpu.c"
+# include ", 2018aarch64-fpu.c"
#undef CODE
void
@@ -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, 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, 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, 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, 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)
diff --git a/libguile/lightning/include/lightning/jit_aarch64.h b/libguile/lightning/jit/aarch64.h
index 65723a6d2..65723a6d2 100644
--- a/libguile/lightning/include/lightning/jit_aarch64.h
+++ b/libguile/lightning/jit/aarch64.h
diff --git a/libguile/lightning/lib/jit_alpha-cpu.c b/libguile/lightning/jit/alpha-cpu.c
index a59029095..a31640f37 100644
--- a/libguile/lightning/lib/jit_alpha-cpu.c
+++ b/libguile/lightning/jit/alpha-cpu.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2014, 2017 Free Software Foundation, Inc.
+ * Copyright (C) 2014, 2017, 2019 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -304,188 +304,188 @@ static void _Opi(jit_state_t*,int,int,unsigned int,unsigned int,int);
# define NEGQ(ra,rc) SUBQ(_R31_REGNO,ra,rc)
# define NOT(ra,rc) ORNOT(_R31_REGNO,ra,rc)
# define nop(i0) _nop(_jit,i0)
-static void _nop(jit_state_t*,jit_int32_t);
+static void _nop(jit_state_t*,int32_t);
# define movr(r0,r1) _movr(_jit,r0,r1)
-static void _movr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _movr(jit_state_t*,int32_t,int32_t);
# define movi(r0,i0) _movi(_jit,r0,i0)
-static void _movi(jit_state_t*,jit_int32_t,jit_word_t);
+static void _movi(jit_state_t*,int32_t,jit_word_t);
# define movi_p(r0,i0) _movi_p(_jit,r0,i0)
-static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
+static jit_word_t _movi_p(jit_state_t*,int32_t,jit_word_t);
# define negr(r0,r1) NEGQ(r1,r0)
# define comr(r0,r1) NOT(r1,r0)
# define addr(r0,r1,r2) ADDQ(r1,r2,r0)
# define addi(r0,r1,i0) _addi(_jit,r0,r1,i0)
-static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addcr(r0,r1,i0) _addcr(_jit,r0,r1,i0)
-static void _addcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addcr(jit_state_t*,int32_t,int32_t,int32_t);
# define addci(r0,r1,i0) _addci(_jit,r0,r1,i0)
-static void _addci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addxr(r0,r1,i0) _addxr(_jit,r0,r1,i0)
-static void _addxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addxr(jit_state_t*,int32_t,int32_t,int32_t);
# define addxi(r0,r1,i0) _addxi(_jit,r0,r1,i0)
-static void _addxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subr(r0,r1,r2) SUBQ(r1,r2,r0)
# define subi(r0,r1,i0) _subi(_jit,r0,r1,i0)
-static void _subi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subcr(r0,r1,i0) _subcr(_jit,r0,r1,i0)
-static void _subcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subcr(jit_state_t*,int32_t,int32_t,int32_t);
# define subci(r0,r1,i0) _subci(_jit,r0,r1,i0)
-static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subxr(r0,r1,i0) _subxr(_jit,r0,r1,i0)
-static void _subxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subxr(jit_state_t*,int32_t,int32_t,int32_t);
# define subxi(r0,r1,i0) _subxi(_jit,r0,r1,i0)
-static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t, jit_word_t);
+static void _rsbi(jit_state_t*,int32_t,int32_t, jit_word_t);
# define mulr(r0,r1,r2) MULQ(r1,r2,r0)
# define muli(r0,r1,i0) _muli(_jit,r0,r1,i0)
-static void _muli(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _muli(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qmulr(r0,r1,r2,r3) _qmulr(_jit,r0,r1,r2,r3)
-static void _qmulr(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _qmulr(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t);
# define qmuli(r0,r1,r2,i0) _qmuli(_jit,r0,r1,r2,i0)
-static void _qmuli(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qmuli(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
# define qmulr_u(r0,r1,r2,r3) _qmulr_u(_jit,r0,r1,r2,r3)
-static void _qmulr_u(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _qmulr_u(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t);
# define qmuli_u(r0,r1,r2,i0) _qmuli_u(_jit,r0,r1,r2,i0)
-static void _qmuli_u(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qmuli_u(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
static jit_word_t __idiv(jit_word_t, jit_word_t);
# define divr(r0,r1,r2) _divr(_jit,r0,r1,r2)
-static void _divr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr(jit_state_t*,int32_t,int32_t,int32_t);
# define divi(r0,r1,i0) _divi(_jit,r0,r1,i0)
-static void _divi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi(jit_state_t*,int32_t,int32_t,jit_word_t);
static jit_uword_t __udiv(jit_uword_t, jit_uword_t);
# define divr_u(r0,r1,r2) _divr_u(_jit,r0,r1,r2)
-static void _divr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define divi_u(r0,r1,i0) _divi_u(_jit,r0,r1,i0)
-static void _divi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
static jit_word_t __irem(jit_word_t, jit_word_t);
# define remr(r0,r1,r2) _remr(_jit,r0,r1,r2)
-static void _remr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr(jit_state_t*,int32_t,int32_t,int32_t);
# define remi(r0,r1,i0) _remi(_jit,r0,r1,i0)
-static void _remi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi(jit_state_t*,int32_t,int32_t,jit_word_t);
static jit_uword_t __urem(jit_uword_t, jit_uword_t);
# define remr_u(r0,r1,r2) _remr_u(_jit,r0,r1,r2)
-static void _remr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define remi_u(r0,r1,i0) _remi_u(_jit,r0,r1,i0)
-static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
static jit_word_t __idivrem(jit_word_t, jit_word_t, jit_word_t*);
# define qdivr(r0,r1,r2,r3) _qdivr(_jit,r0,r1,r2,r3)
static void _qdivr(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t);
# define qdivi(r0,r1,r2,i0) _qdivi(_jit,r0,r1,r2,i0)
static void _qdivi(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+ int32_t,int32_t,int32_t,jit_word_t);
static jit_word_t __udivrem(jit_uword_t, jit_uword_t, jit_uword_t*);
# define qdivr_u(r0,r1,r2,r3) _qdivr_u(_jit,r0,r1,r2,r3)
static void _qdivr_u(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t);
# define qdivi_u(r0,r1,r2,i0) _qdivi_u(_jit,r0,r1,r2,i0)
static void _qdivi_u(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+ int32_t,int32_t,int32_t,jit_word_t);
# define lshr(r0,r1,r2) SLL(r1,r2,r0)
# define lshi(r0,r1,i0) _lshi(_jit,r0,r1,i0)
-static void _lshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rshr(r0,r1,r2) SRA(r1,r2,r0)
# define rshi(r0,r1,i0) _rshi(_jit,r0,r1,i0)
-static void _rshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rshr_u(r0,r1,r2) SRL(r1,r2,r0)
# define rshi_u(r0,r1,i0) _rshi_u(_jit,r0,r1,i0)
-static void _rshi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define andr(r0,r1,r2) AND(r1,r2,r0)
# define andi(r0,r1,i0) _andi(_jit,r0,r1,i0)
-static void _andi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _andi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define orr(r0,r1,r2) OR(r1,r2,r0)
# define ori(r0,r1,i0) _ori(_jit,r0,r1,i0)
-static void _ori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define xorr(r0,r1,r2) XOR(r1,r2,r0)
# define xori(r0,r1,i0) _xori(_jit,r0,r1,i0)
-static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _xori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ltr(r0,r1,r2) CMPLT(r1,r2,r0)
# define lti(r0,r1,i0) _lti(_jit,r0,r1,i0)
-static void _lti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lti(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ltr_u(r0,r1,r2) CMPULT(r1,r2,r0)
# define lti_u(r0,r1,i0) _lti_u(_jit,r0,r1,i0)
-static void _lti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lti_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ler(r0,r1,r2) CMPLE(r1,r2,r0)
# define lei(r0,r1,i0) _lei(_jit,r0,r1,i0)
-static void _lei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lei(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ler_u(r0,r1,r2) CMPULE(r1,r2,r0)
# define lei_u(r0,r1,i0) _lei_u(_jit,r0,r1,i0)
-static void _lei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lei_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define eqr(r0,r1,r2) CMPEQ(r1,r2,r0)
# define eqi(r0,r1,i0) _eqi(_jit,r0,r1,i0)
-static void _eqi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _eqi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ger(r0,r1,r2) CMPLE(r2,r1,r0)
# define gei(r0,r1,i0) _gei(_jit,r0,r1,i0)
-static void _gei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gei(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ger_u(r0,r1,r2) CMPULE(r2,r1,r0)
# define gei_u(r0,r1,i0) _gei_u(_jit,r0,r1,i0)
-static void _gei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gei_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define gtr(r0,r1,r2) CMPLT(r2,r1,r0)
# define gti(r0,r1,i0) _gti(_jit,r0,r1,i0)
-static void _gti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gti(jit_state_t*,int32_t,int32_t,jit_word_t);
# define gtr_u(r0,r1,r2) CMPULT(r2,r1,r0)
# define gti_u(r0,r1,i0) _gti_u(_jit,r0,r1,i0)
-static void _gti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gti_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ner(r0,r1,r2) _ner(_jit,r0,r1,r2)
-static void _ner(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ner(jit_state_t*,int32_t,int32_t,int32_t);
# define nei(r0,r1,i0) _nei(_jit,r0,r1,i0)
-static void _nei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _nei(jit_state_t*,int32_t,int32_t,jit_word_t);
# define bltr(i0,r0,r1) _bltr(_jit,i0,r0,r1)
-static jit_word_t _bltr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bltr(jit_state_t*,jit_word_t,int32_t,int32_t);
# define blti(i0,r0,i1) _blti(_jit,i0,r0,i1)
-static jit_word_t _blti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blti(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bltr_u(i0,r0,r1) _bltr_u(_jit,i0,r0,r1)
-static jit_word_t _bltr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bltr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
# define blti_u(i0,r0,i1) _blti_u(_jit,i0,r0,i1)
-static jit_word_t _blti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blti_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bler(i0,r0,r1) _bler(_jit,i0,r0,r1)
-static jit_word_t _bler(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bler(jit_state_t*,jit_word_t,int32_t,int32_t);
# define blei(i0,r0,i1) _blei(_jit,i0,r0,i1)
-static jit_word_t _blei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bler_u(i0,r0,r1) _bler_u(_jit,i0,r0,r1)
-static jit_word_t _bler_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bler_u(jit_state_t*,jit_word_t,int32_t,int32_t);
# define blei_u(i0,r0,i1) _blei_u(_jit,i0,r0,i1)
-static jit_word_t _blei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blei_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define beqr(i0,r0,r1) _beqr(_jit,i0,r0,r1)
-static jit_word_t _beqr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _beqr(jit_state_t*,jit_word_t,int32_t,int32_t);
# define beqi(i0,r0,i1) _beqi(_jit,i0,r0,i1)
-static jit_word_t _beqi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _beqi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bger(i0,r0,r1) _bger(_jit,i0,r0,r1)
-static jit_word_t _bger(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bger(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bgei(i0,r0,i1) _bgei(_jit,i0,r0,i1)
-static jit_word_t _bgei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bger_u(i0,r0,r1) _bger_u(_jit,i0,r0,r1)
-static jit_word_t _bger_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bger_u(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bgei_u(i0,r0,i1) _bgei_u(_jit,i0,r0,i1)
-static jit_word_t _bgei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgei_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bgtr(i0,r0,r1) _bgtr(_jit,i0,r0,r1)
-static jit_word_t _bgtr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bgtr(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bgti(i0,r0,i1) _bgti(_jit,i0,r0,i1)
-static jit_word_t _bgti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgti(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bgtr_u(i0,r0,r1) _bgtr_u(_jit,i0,r0,r1)
-static jit_word_t _bgtr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bgtr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bgti_u(i0,r0,i1) _bgti_u(_jit,i0,r0,i1)
-static jit_word_t _bgti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgti_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bner(i0,r0,r1) _bner(_jit,i0,r0,r1)
-static jit_word_t _bner(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bner(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bnei(i0,r0,i1) _bnei(_jit,i0,r0,i1)
-static jit_word_t _bnei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bnei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define baddr(i0,r0,r1,cc) _baddr(_jit,i0,r0,r1,cc)
-static jit_word_t _baddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t,
+static jit_word_t _baddr(jit_state_t*,jit_word_t,int32_t,int32_t,
jit_bool_t);
# define baddi(i0,r0,i1,cc) _baddi(_jit,i0,r0,i1,cc)
-static jit_word_t _baddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t,
+static jit_word_t _baddi(jit_state_t*,jit_word_t,int32_t,jit_word_t,
jit_bool_t);
# define baddr_u(i0,r0,r1,cc) _baddr_u(_jit,i0,r0,r1,cc)
-static jit_word_t _baddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t,
+static jit_word_t _baddr_u(jit_state_t*,jit_word_t,int32_t,int32_t,
jit_bool_t);
# define baddi_u(i0,r0,i1,cc) _baddi_u(_jit,i0,r0,i1,cc)
-static jit_word_t _baddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t,
+static jit_word_t _baddi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t,
jit_bool_t);
# define boaddr(i0,r0,r1) baddr(i0,r0,r1,1)
# define boaddi(i0,r0,i1) baddi(i0,r0,i1,1)
@@ -496,16 +496,16 @@ static jit_word_t _baddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t,
# define bxaddr_u(i0,r0,r1) baddr_u(i0,r0,r1,0)
# define bxaddi_u(i0,r0,i1) baddi_u(i0,r0,i1,0)
# define bsubr(i0,r0,r1,cc) _bsubr(_jit,i0,r0,r1,cc)
-static jit_word_t _bsubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t,
+static jit_word_t _bsubr(jit_state_t*,jit_word_t,int32_t,int32_t,
jit_bool_t);
# define bsubi(i0,r0,i1,cc) _bsubi(_jit,i0,r0,i1,cc)
-static jit_word_t _bsubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t,
+static jit_word_t _bsubi(jit_state_t*,jit_word_t,int32_t,jit_word_t,
jit_bool_t);
# define bsubr_u(i0,r0,r1,cc) _bsubr_u(_jit,i0,r0,r1,cc)
-static jit_word_t _bsubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t,
+static jit_word_t _bsubr_u(jit_state_t*,jit_word_t,int32_t,int32_t,
jit_bool_t);
# define bsubi_u(i0,r0,i1,cc) _bsubi_u(_jit,i0,r0,i1,cc)
-static jit_word_t _bsubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t,
+static jit_word_t _bsubi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t,
jit_bool_t);
# define bosubr(i0,r0,r1) bsubr(i0,r0,r1,1)
# define bosubi(i0,r0,i1) bsubi(i0,r0,i1,1)
@@ -516,123 +516,123 @@ static jit_word_t _bsubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t,
# define bxsubr_u(i0,r0,r1) bsubr_u(i0,r0,r1,0)
# define bxsubi_u(i0,r0,i1) bsubi_u(i0,r0,i1,0)
# define bmxr(i0,r0,r1,cc) _bmxr(_jit,i0,r0,r1,cc)
-static jit_word_t _bmxr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t,
+static jit_word_t _bmxr(jit_state_t*,jit_word_t,int32_t,int32_t,
jit_bool_t);
# define bmxi(i0,r0,i1,cc) _bmxi(_jit,i0,r0,i1,cc)
-static jit_word_t _bmxi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t,
+static jit_word_t _bmxi(jit_state_t*,jit_word_t,int32_t,jit_word_t,
jit_bool_t);
# define bmsr(i0,r0,r1) bmxr(i0,r0,r1,1)
# define bmsi(i0,r0,i1) bmxi(i0,r0,i1,1)
# define bmcr(i0,r0,r1) bmxr(i0,r0,r1,0)
# define bmci(i0,r0,i1) bmxi(i0,r0,i1,0)
# define ldr_c(r0,r1) _ldr_c(_jit,r0,r1)
-static void _ldr_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_c(jit_state_t*,int32_t,int32_t);
# define ldi_c(r0,i0) _ldi_c(_jit,r0,i0)
-static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_c(jit_state_t*,int32_t,jit_word_t);
# define ldr_uc(r0,r1) LDBU(r0,r1,0)
# define ldi_uc(r0,i0) _ldi_uc(_jit,r0,i0)
-static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_uc(jit_state_t*,int32_t,jit_word_t);
# define ldr_s(r0,r1) _ldr_s(_jit,r0,r1)
-static void _ldr_s(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_s(jit_state_t*,int32_t,int32_t);
# define ldi_s(r0,i0) _ldi_s(_jit,r0,i0)
-static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_s(jit_state_t*,int32_t,jit_word_t);
# define ldr_us(r0,r1) LDWU(r0,r1,0)
# define ldi_us(r0,i0) _ldi_us(_jit,r0,i0)
-static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_us(jit_state_t*,int32_t,jit_word_t);
# define ldr_i(r0,r1) LDL(r0,r1,0)
# define ldi_i(r0,i0) _ldi_i(_jit,r0,i0)
-static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_i(jit_state_t*,int32_t,jit_word_t);
# define ldr_ui(r0,r1) _ldr_ui(_jit,r0,r1)
-static void _ldr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_ui(jit_state_t*,int32_t,int32_t);
# define ldi_ui(r0,i0) _ldi_ui(_jit,r0,i0)
-static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_ui(jit_state_t*,int32_t,jit_word_t);
# define ldr(r0,r1) ldr_l(r0,r1)
# define ldr_l(r0,r1) LDQ(r0,r1,0)
# define ldi_l(r0,i0) _ldi_l(_jit,r0,i0)
-static void _ldi_l(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_l(jit_state_t*,int32_t,jit_word_t);
# define ldxr_c(r0,r1,r2) _ldxr_c(_jit,r0,r1,r2)
-static void _ldxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_c(r0,r1,i0) _ldxi_c(_jit,r0,r1,i0)
-static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_c(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_uc(r0,r1,r2) _ldxr_uc(_jit,r0,r1,r2)
-static void _ldxr_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_uc(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_uc(r0,r1,i0) _ldxi_uc(_jit,r0,r1,i0)
-static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_uc(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_s(r0,r1,r2) _ldxr_s(_jit,r0,r1,r2)
-static void _ldxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_s(r0,r1,i0) _ldxi_s(_jit,r0,r1,i0)
-static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_s(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_us(r0,r1,r2) _ldxr_us(_jit,r0,r1,r2)
-static void _ldxr_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_us(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_us(r0,r1,i0) _ldxi_us(_jit,r0,r1,i0)
-static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_us(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_i(r0,r1,r2) _ldxr_i(_jit,r0,r1,r2)
-static void _ldxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_i(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_i(r0,r1,i0) _ldxi_i(_jit,r0,r1,i0)
-static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_i(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_ui(r0,r1,r2) _ldxr_ui(_jit,r0,r1,r2)
-static void _ldxr_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_ui(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_ui(r0,r1,i0) _ldxi_ui(_jit,r0,r1,i0)
-static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_ui(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr(r0,r1,r2) ldxr_l(r0,r1,r2)
# define ldxr_l(r0,r1,r2) _ldxr_l(_jit,r0,r1,r2)
-static void _ldxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_l(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi(r0,r1,i0) ldxi_l(r0,r1,i0)
# define ldxi_l(r0,r1,i0) _ldxi_l(_jit,r0,r1,i0)
-static void _ldxi_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_l(jit_state_t*,int32_t,int32_t,jit_word_t);
# define str_c(r0,r1) STB(r1,r0,0)
# define sti_c(i0,r0) _sti_c(_jit,i0,r0)
-static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_c(jit_state_t*,jit_word_t,int32_t);
# define str_s(r0,r1) STW(r1,r0,0)
# define sti_s(i0,r0) _sti_s(_jit,i0,r0)
-static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_s(jit_state_t*,jit_word_t,int32_t);
# define str_i(r0,r1) STL(r1,r0,0)
# define sti_i(i0,r0) _sti_i(_jit,i0,r0)
-static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_i(jit_state_t*,jit_word_t,int32_t);
# define str(r0,r1) str_l(r0,r1)
# define str_l(r0,r1) STQ(r1,r0,0)
# define sti_l(i0,r0) _sti_l(_jit,i0,r0)
-static void _sti_l(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_l(jit_state_t*,jit_word_t,int32_t);
# define stxr_c(r0,r1,r2) _stxr_c(_jit,r0,r1,r2)
-static void _stxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_c(i0,r0,r1) _stxi_c(_jit,i0,r0,r1)
-static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_c(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxr_s(r0,r1,r2) _stxr_s(_jit,r0,r1,r2)
-static void _stxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_s(i0,r0,r1) _stxi_s(_jit,i0,r0,r1)
-static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_s(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxr_i(r0,r1,r2) _stxr_i(_jit,r0,r1,r2)
-static void _stxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_i(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_i(i0,r0,r1) _stxi_i(_jit,i0,r0,r1)
-static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_i(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxr_l(r0,r1,r2) _stxr_l(_jit,r0,r1,r2)
-static void _stxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_l(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi(i0,r0,r1) stxi_l(i0,r0,r1)
# define stxi_l(i0,r0,r1) _stxi_l(_jit,i0,r0,r1)
-static void _stxi_l(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_l(jit_state_t*,jit_word_t,int32_t,int32_t);
# define extr_c(r0,r1) _extr_c(_jit,r0,r1)
-static void _extr_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_c(jit_state_t*,int32_t,int32_t);
# define extr_uc(r0,r1) _extr_uc(_jit,r0,r1)
-static void _extr_uc(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_uc(jit_state_t*,int32_t,int32_t);
# define extr_s(r0,r1) _extr_s(_jit,r0,r1)
-static void _extr_s(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_s(jit_state_t*,int32_t,int32_t);
# define extr_us(r0,r1) _extr_us(_jit,r0,r1)
-static void _extr_us(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_us(jit_state_t*,int32_t,int32_t);
# define extr_i(r0,r1) _extr_i(_jit,r0,r1)
-static void _extr_i(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_i(jit_state_t*,int32_t,int32_t);
# define extr_ui(r0,r1) _extr_ui(_jit,r0,r1)
-static void _extr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_ui(jit_state_t*,int32_t,int32_t);
# if __BYTE_ORDER == __LITTLE_ENDIAN
-# define htonr_us(r0,r1) _htonr_us(_jit,r0,r1)
-static void _htonr_us(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ui(r0,r1) _htonr_ui(_jit,r0,r1)
-static void _htonr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ul(r0,r1) _htonr_ul(_jit,r0,r1)
-static void _htonr_ul(jit_state_t*,jit_int32_t,jit_int32_t);
+# define bswapr_us(r0,r1) _bswapr_us(_jit,r0,r1)
+static void _bswapr_us(jit_state_t*,int32_t,int32_t);
+# define bswapr_ui(r0,r1) _bswapr_ui(_jit,r0,r1)
+static void _bswapr_ui(jit_state_t*,int32_t,int32_t);
+# define bswapr_ul(r0,r1) _bswapr_ul(_jit,r0,r1)
+static void _bswapr_ul(jit_state_t*,int32_t,int32_t);
# else
-# define htonr_us(r0,r1) extr_us(r0,r1)
-# define htonr_ui(r0,r1) extr_ui(r0,r1)
-# define htonr_ul(r0,r1) movr(r0,r1)
+# define bswapr_us(r0,r1) extr_us(r0,r1)
+# define bswapr_ui(r0,r1) extr_ui(r0,r1)
+# define bswapr_ul(r0,r1) movr(r0,r1)
# endif
# define jmpr(r0) JMP(_R31_REGNO,r0,0)
# define jmpi(i0) _jmpi(_jit,i0)
@@ -640,7 +640,7 @@ static void _jmpi(jit_state_t*, jit_word_t);
# define jmpi_p(i0) _jmpi_p(_jit,i0)
static jit_word_t _jmpi_p(jit_state_t*, jit_word_t);
#define callr(r0) _callr(_jit,r0)
-static void _callr(jit_state_t*, jit_int32_t);
+static void _callr(jit_state_t*, int32_t);
# define calli(i0) _calli(_jit,i0)
static void _calli(jit_state_t*, jit_word_t);
# define calli_p(i0) _calli_p(_jit,i0)
@@ -650,9 +650,9 @@ static void _prolog(jit_state_t*,jit_node_t*);
# define epilog(node) _epilog(_jit,node)
static void _epilog(jit_state_t*,jit_node_t*);
# define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
+static void _vastart(jit_state_t*, int32_t);
# define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vaarg(jit_state_t*, int32_t, int32_t);
# define patch_at(jump,label) _patch_at(_jit,jump,label)
static void _patch_at(jit_state_t*,jit_word_t,jit_word_t);
#endif
@@ -719,7 +719,7 @@ _Opi(jit_state_t *_jit, int o, int ra, unsigned int i, unsigned int f, int rc)
}
static void
-_nop(jit_state_t *_jit, jit_int32_t i0)
+_nop(jit_state_t *_jit, int32_t i0)
{
for (; i0 > 0; i0 -= 4)
NOP();
@@ -727,17 +727,17 @@ _nop(jit_state_t *_jit, jit_int32_t i0)
}
static void
-_movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_movr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (r0 != r1)
MOV(r1, r0);
}
static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
- jit_int16_t s0, s1, s2, s3;
+ int32_t reg;
+ int16_t s0, s1, s2, s3;
s0 = i0;
s1 = i0 >> 16;
s2 = i0 >> 32;
@@ -784,11 +784,11 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
- jit_int16_t s0, s1, s2, s3;
+ int32_t reg;
+ int16_t s0, s1, s2, s3;
w = _jit->pc.w;
reg = jit_get_reg(jit_class_gpr);
s0 = i0;
@@ -812,9 +812,9 @@ _movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
ADDQi(r1, i0, r0);
else if (_s16_p(i0))
@@ -828,9 +828,9 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -847,9 +847,9 @@ _addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -866,9 +866,9 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -878,9 +878,9 @@ _addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -890,9 +890,9 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
SUBQi(r1, i0, r0);
else if (_s16_p(-i0))
@@ -906,9 +906,9 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -925,9 +925,9 @@ _subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -944,9 +944,9 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -956,9 +956,9 @@ _subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -968,16 +968,16 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rsbi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
subi(r0, r1, i0);
negr(r0, r0);
}
static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
MULQi(r1, i0, r0);
else {
@@ -989,12 +989,12 @@ _muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_qmulr(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+_qmulr(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t reg;
+ int32_t reg;
/* The only invalid condition is r0 == r1 */
- jit_int32_t t2, t3, s2, s3;
+ int32_t t2, t3, s2, s3;
if (r2 == r0 || r2 == r1) {
s2 = jit_get_reg(jit_class_gpr);
t2 = rn(s2);
@@ -1027,10 +1027,10 @@ _qmulr(jit_state_t *_jit, jit_int32_t r0,
}
static void
-_qmuli(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+_qmuli(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
qmulr(r0, r1, r2, rn(reg));
@@ -1038,10 +1038,10 @@ _qmuli(jit_state_t *_jit, jit_int32_t r0,
}
static void
-_qmulr_u(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+_qmulr_u(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2 || r0 == r3) {
reg = jit_get_reg(jit_class_gpr);
mulr(rn(reg), r2, r3);
@@ -1056,10 +1056,10 @@ _qmulr_u(jit_state_t *_jit, jit_int32_t r0,
}
static void
-_qmuli_u(jit_state_t *_jit, jit_int32_t r0,
- jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+_qmuli_u(jit_state_t *_jit, int32_t r0,
+ int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0)) {
if (r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
@@ -1088,7 +1088,7 @@ __idiv(jit_word_t u, jit_word_t v)
}
static void
-_divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
movr(_A0_REGNO, r1);
movr(_A1_REGNO, r2);
@@ -1097,7 +1097,7 @@ _divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(_A0_REGNO, r1);
movi(_A1_REGNO, i0);
@@ -1112,7 +1112,7 @@ __udiv(jit_uword_t u, jit_uword_t v)
}
static void
-_divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
movr(_A0_REGNO, r1);
movr(_A1_REGNO, r2);
@@ -1121,7 +1121,7 @@ _divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(_A0_REGNO, r1);
movi(_A1_REGNO, i0);
@@ -1136,7 +1136,7 @@ __irem(jit_word_t u, jit_word_t v)
}
static void
-_remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
movr(_A0_REGNO, r1);
movr(_A1_REGNO, r2);
@@ -1145,7 +1145,7 @@ _remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(_A0_REGNO, r1);
movi(_A1_REGNO, i0);
@@ -1160,7 +1160,7 @@ __urem(jit_uword_t u, jit_uword_t v)
}
static void
-_remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
movr(_A0_REGNO, r1);
movr(_A1_REGNO, r2);
@@ -1169,7 +1169,7 @@ _remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(_A0_REGNO, r1);
movi(_A1_REGNO, i0);
@@ -1186,7 +1186,7 @@ __idivrem(jit_word_t u, jit_word_t v, jit_word_t *rem)
static void
_qdivr(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
movr(_A0_REGNO, r2);
movr(_A1_REGNO, r3);
@@ -1198,7 +1198,7 @@ _qdivr(jit_state_t *_jit,
static void
_qdivi(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
movr(_A0_REGNO, r2);
movi(_A1_REGNO, i0);
@@ -1217,7 +1217,7 @@ __udivrem(jit_uword_t u, jit_uword_t v, jit_uword_t *rem)
static void
_qdivr_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
movr(_A0_REGNO, r2);
movr(_A1_REGNO, r3);
@@ -1229,7 +1229,7 @@ _qdivr_u(jit_state_t *_jit,
static void
_qdivi_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
movr(_A0_REGNO, r2);
movi(_A1_REGNO, i0);
@@ -1240,30 +1240,30 @@ _qdivi_u(jit_state_t *_jit,
}
static void
-_lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
assert(i0 >= 0 && i0 < 64);
SLLi(r1, i0, r0);
}
static void
-_rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
assert(i0 >= 0 && i0 < 64);
SRAi(r1, i0, r0);
}
static void
-_rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
assert(i0 >= 0 && i0 < 64);
SRLi(r1, i0, r0);
}
static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
ANDi(r1, i0, r0);
else {
@@ -1275,9 +1275,9 @@ _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
ORi(r1, i0, r0);
else {
@@ -1289,9 +1289,9 @@ _ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
XORi(r1, i0, r0);
else {
@@ -1303,9 +1303,9 @@ _xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lti(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
CMPLTi(r1, i0, r0);
else {
@@ -1317,9 +1317,9 @@ _lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_lti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lti_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
CMPULTi(r1, i0, r0);
else {
@@ -1331,9 +1331,9 @@ _lti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_lei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
CMPLEi(r1, i0, r0);
else {
@@ -1345,9 +1345,9 @@ _lei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_lei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lei_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t ni0;
ni0 = -i0;
if (_u8_p(i0))
@@ -1361,9 +1361,9 @@ _lei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_eqi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_eqi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0))
CMPEQi(r1, i0, r0);
else {
@@ -1375,9 +1375,9 @@ _eqi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
ger(r0, r1, rn(reg));
@@ -1385,9 +1385,9 @@ _gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gei_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
ger_u(r0, r1, rn(reg));
@@ -1395,9 +1395,9 @@ _gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gti(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
gtr(r0, r1, rn(reg));
@@ -1405,9 +1405,9 @@ _gti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gti_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
gtr_u(r0, r1, rn(reg));
@@ -1415,16 +1415,16 @@ _gti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ner(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ner(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPEQ(r1, r2, r0);
CMPEQi(r0, 0, r0);
}
static void
-_nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_nei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_u8_p(i0)) {
CMPEQi(r1, i0, r0);
CMPEQi(r0, 0, r0);
@@ -1438,10 +1438,10 @@ _nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static jit_word_t
-_bltr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bltr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
ltr(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1451,10 +1451,10 @@ _bltr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blti(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
BLT(r0, ((i0 - w) >> 2) - 1);
@@ -1470,10 +1470,10 @@ _blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bltr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bltr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
ltr_u(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1483,10 +1483,10 @@ _bltr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blti_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
/* FIXME cannot optimize zero because need to return a patcheable address */
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
lti_u(rn(reg), r0, i1);
@@ -1497,10 +1497,10 @@ _blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bler(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bler(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
ler(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1510,10 +1510,10 @@ _bler(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
BLE(r0, ((i0 - w) >> 2) - 1);
@@ -1529,10 +1529,10 @@ _blei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bler_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bler_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
ler_u(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1542,10 +1542,10 @@ _bler_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blei_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
BEQ(r0, ((i0 - w) >> 2) - 1);
@@ -1561,10 +1561,10 @@ _blei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_beqr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_beqr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
eqr(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1574,10 +1574,10 @@ _beqr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_beqi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
BEQ(r0, ((i0 - w) >> 2) - 1);
@@ -1593,10 +1593,10 @@ _beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bger(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bger(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
ger(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1606,10 +1606,10 @@ _bger(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
BGE(r0, ((i0 - w) >> 2) - 1);
@@ -1625,10 +1625,10 @@ _bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bger_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bger_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
ger_u(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1638,10 +1638,10 @@ _bger_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgei_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
/* always true if i1 == 0 */
if (i0 == 0) {
w = _jit->pc.w;
@@ -1658,10 +1658,10 @@ _bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bgtr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bgtr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
gtr(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1671,10 +1671,10 @@ _bgtr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgti(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
BGT(r0, ((i0 - w) >> 2) - 1);
@@ -1690,10 +1690,10 @@ _bgti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bgtr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bgtr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
gtr_u(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1703,10 +1703,10 @@ _bgtr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgti_u(jit_state_t *_jit, 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_gpr|jit_class_nospill);
gti_u(rn(reg), r0, i1);
w = _jit->pc.w;
@@ -1716,10 +1716,10 @@ _bgti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bner(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bner(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
eqr(rn(reg), r0, r1);
w = _jit->pc.w;
@@ -1729,10 +1729,10 @@ _bner(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bnei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
BNE(r0, ((i0 - w) >> 2) - 1);
@@ -1748,14 +1748,14 @@ _bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_baddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
+_baddr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
- jit_int32_t t3;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
+ int32_t t3;
/* t0 = r0 + r1; overflow = r1 < 0 ? r0 < t0 : t0 < r0 */
t0 = jit_get_reg(jit_class_gpr);
t1 = jit_get_reg(jit_class_gpr);
@@ -1780,11 +1780,11 @@ _baddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
}
static jit_word_t
-_baddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
+_baddi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = baddr(i0, r0, rn(reg), carry);
@@ -1793,12 +1793,12 @@ _baddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
}
static jit_word_t
-_baddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
+_baddr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
addr(rn(t0), r0, r1);
@@ -1815,12 +1815,12 @@ _baddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
}
static jit_word_t
-_baddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
+_baddi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
addi(rn(t0), r0, i1);
@@ -1837,14 +1837,14 @@ _baddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
}
static jit_word_t
-_bsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
+_bsubr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
- jit_int32_t t3;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
+ int32_t t3;
/* t0 = r0 - r1; overflow = 0 < r1 ? r0 < t0 : t0 < r0 */
t0 = jit_get_reg(jit_class_gpr);
t1 = jit_get_reg(jit_class_gpr);
@@ -1869,11 +1869,11 @@ _bsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
}
static jit_word_t
-_bsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
+_bsubi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bsubr(i0, r0, rn(reg), carry);
@@ -1882,12 +1882,12 @@ _bsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
}
static jit_word_t
-_bsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
+_bsubr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
subr(rn(t0), r0, r1);
@@ -1904,12 +1904,12 @@ _bsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
}
static jit_word_t
-_bsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
+_bsubi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
subi(rn(t0), r0, i1);
@@ -1926,11 +1926,11 @@ _bsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
}
static jit_word_t
-_bmxr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
+_bmxr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1,
jit_bool_t set)
{
jit_word_t w;
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
andr(rn(t0), r0, r1);
w = _jit->pc.w;
@@ -1943,11 +1943,11 @@ _bmxr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
}
static jit_word_t
-_bmxi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
+_bmxi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1,
jit_bool_t set)
{
jit_word_t w;
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
andi(rn(t0), r0, i1);
w = _jit->pc.w;
@@ -1960,16 +1960,16 @@ _bmxi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
}
static void
-_ldr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ldr_uc(r0, r1);
extr_c(r0, r0);
}
static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_c(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0)) {
LDBU(r0, _R31_REGNO, _u16(i0));
extr_c(r0, r0);
@@ -1983,9 +1983,9 @@ _ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_uc(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
LDBU(r0, _R31_REGNO, _u16(i0));
else {
@@ -1997,16 +1997,16 @@ _ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ldr_us(r0, r1);
extr_s(r0, r0);
}
static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_s(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0)) {
LDWU(r0, _R31_REGNO, _u16(i0));
extr_s(r0, r0);
@@ -2020,9 +2020,9 @@ _ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_us(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
LDWU(r0, _R31_REGNO, _u16(i0));
else {
@@ -2034,9 +2034,9 @@ _ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_i(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
LDL(r0, _R31_REGNO, _u16(i0));
else {
@@ -2048,16 +2048,16 @@ _ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ldr_i(r0, r1);
extr_ui(r0, r0);
}
static void
-_ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_ui(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0)) {
LDL(r0, _R31_REGNO, _u16(i0));
extr_ui(r0, r0);
@@ -2071,9 +2071,9 @@ _ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_l(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
LDQ(r0, _R31_REGNO, _u16(i0));
else {
@@ -2085,9 +2085,9 @@ _ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_c(r0, rn(reg));
@@ -2095,9 +2095,9 @@ _ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0)) {
LDBU(r0, r1, _u16(i0));
extr_c(r0, r0);
@@ -2111,9 +2111,9 @@ _ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_uc(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_uc(r0, rn(reg));
@@ -2121,9 +2121,9 @@ _ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
LDBU(r0, r1, _u16(i0));
else {
@@ -2135,9 +2135,9 @@ _ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_s(r0, rn(reg));
@@ -2145,9 +2145,9 @@ _ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0)) {
LDWU(r0, r1, _u16(i0));
extr_s(r0, r0);
@@ -2161,9 +2161,9 @@ _ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_us(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_us(r0, rn(reg));
@@ -2171,9 +2171,9 @@ _ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
LDWU(r0, r1, _u16(i0));
else {
@@ -2185,9 +2185,9 @@ _ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_i(r0, rn(reg));
@@ -2195,9 +2195,9 @@ _ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
LDL(r0, r1, _u16(i0));
else {
@@ -2209,9 +2209,9 @@ _ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_ui(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_ui(r0, rn(reg));
@@ -2219,9 +2219,9 @@ _ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0)) {
LDL(r0, r1, _u16(i0));
extr_ui(r0, r0);
@@ -2235,9 +2235,9 @@ _ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_l(r0, rn(reg));
@@ -2245,9 +2245,9 @@ _ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
LDQ(r0, r1, _u16(i0));
else {
@@ -2259,9 +2259,9 @@ _ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_c(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
STB(r0, _R31_REGNO, _u16(i0));
else {
@@ -2273,9 +2273,9 @@ _sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_s(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
STW(r0, _R31_REGNO, _u16(i0));
else {
@@ -2287,9 +2287,9 @@ _sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_i(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
STL(r0, _R31_REGNO, _u16(i0));
else {
@@ -2301,9 +2301,9 @@ _sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_l(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
STQ(r0, _R31_REGNO, _u16(i0));
else {
@@ -2315,9 +2315,9 @@ _sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_c(rn(reg), r2);
@@ -2325,9 +2325,9 @@ _stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
STB(r1, r0, _u16(i0));
else {
@@ -2339,9 +2339,9 @@ _stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_s(rn(reg), r2);
@@ -2349,9 +2349,9 @@ _stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
STW(r1, r0, _u16(i0));
else {
@@ -2363,9 +2363,9 @@ _stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_i(rn(reg), r2);
@@ -2373,9 +2373,9 @@ _stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
STL(r1, r0, _u16(i0));
else {
@@ -2387,9 +2387,9 @@ _stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_l(rn(reg), r2);
@@ -2397,9 +2397,9 @@ _stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (_s16_p(i0))
STQ(r1, r0, _u16(i0));
else {
@@ -2411,51 +2411,51 @@ _stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_extr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, 56);
rshi(r0, r0, 56);
}
static void
-_extr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_uc(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, 56);
rshi_u(r0, r0, 56);
}
static void
-_extr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, 48);
rshi(r0, r0, 48);
}
static void
-_extr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, 48);
rshi_u(r0, r0, 48);
}
static void
-_extr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_i(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, 32);
rshi(r0, r0, 32);
}
static void
-_extr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, 32);
rshi_u(r0, r0, 32);
}
static void
-_htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr);
EXTBLi(r1, 0, rn(t0));
EXTBLi(r1, 1, r0);
@@ -2465,12 +2465,12 @@ _htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
- jit_int32_t t3;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
+ int32_t t3;
t0 = jit_get_reg(jit_class_gpr);
t1 = jit_get_reg(jit_class_gpr);
t2 = jit_get_reg(jit_class_gpr);
@@ -2491,11 +2491,11 @@ _htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_htonr_ul(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_ul(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
assert(_jitc->function != NULL);
t0 = jit_get_reg(jit_class_fpr);
t1 = jit_get_reg(jit_class_gpr);
@@ -2531,7 +2531,7 @@ static jit_word_t
_jmpi_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
w = movi_p(rn(reg), i0);
jmpr(rn(reg));
@@ -2540,7 +2540,7 @@ _jmpi_p(jit_state_t *_jit, jit_word_t i0)
}
static void
-_callr(jit_state_t *_jit, jit_int32_t r0)
+_callr(jit_state_t *_jit, int32_t r0)
{
if (r0 != _PV_REGNO)
MOV(r0, _PV_REGNO);
@@ -2578,9 +2578,9 @@ _calli_p(jit_state_t *_jit, jit_word_t i0)
static void
_prolog(jit_state_t *_jit, jit_node_t *node)
{
- jit_int32_t reg;
+ int32_t reg;
if (_jitc->function->define_frame || _jitc->function->assume_frame) {
- jit_int32_t frame = -_jitc->function->frame;
+ int32_t frame = -_jitc->function->frame;
assert(_jitc->function->self.aoff >= frame);
if (_jitc->function->assume_frame)
return;
@@ -2675,9 +2675,9 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
}
static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
+_vastart(jit_state_t *_jit, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
/* Return jit_va_list_t in the register argument */
addi(r0, _FP_REGNO, _jitc->function->vaoff);
@@ -2699,9 +2699,9 @@ _vastart(jit_state_t *_jit, jit_int32_t r0)
}
static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vaarg(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t rg0, rg1;
+ int32_t rg0, rg1;
assert(_jitc->function->self.call & jit_call_varargs);
@@ -2730,11 +2730,11 @@ static void
_patch_at(jit_state_t *_jit, jit_word_t instr, jit_word_t label)
{
union {
- jit_int32_t *i;
+ int32_t *i;
jit_word_t w;
} u;
jit_word_t d;
- jit_int16_t s0, s1, s2, s3;
+ int16_t s0, s1, s2, s3;
u.w = instr;
switch (_u6(u.i[0] >> 26)) {
/* BLT BLE BEQ BGE */
diff --git a/libguile/lightning/lib/jit_alpha-fpu.c b/libguile/lightning/jit/alpha-fpu.c
index 6cf47451e..b3d65af85 100644
--- a/libguile/lightning/lib/jit_alpha-fpu.c
+++ b/libguile/lightning/jit/alpha-fpu.c
@@ -300,304 +300,304 @@ static void _Opr(jit_state_t*,int,int,int,unsigned int,int);
# define FNEGT(ra,rc) CPYSN(ra,ra,rc)
# 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,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 absr_f(r0,r1) FABS(r1,r0)
# define absr_d(r0,r1) FABS(r1,r0)
# define negr_f(r0,r1) FNEGS(r1,r0)
# define negr_d(r0,r1) FNEGT(r1,r0)
# 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,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,int32_t);
# define extr_f_d(r0,r1) movr_d(r0,r1)
# define extr_d_f(r0,r1) movr_f(r0,r1)
# define truncr_f_i(r0,r1) truncr_d_i(r0,r1)
# define truncr_f_l(r0,r1) truncr_d_l(r0,r1)
# define truncr_d_i(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,int32_t);
# 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,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,int32_t);
# 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,int32_t,int32_t);
# 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,int32_t,jit_float32_t*);
# 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,int32_t,int32_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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# 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,int32_t,jit_float32_t*);
# 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,int32_t,int32_t);
# 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,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,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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# 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,int32_t,jit_float32_t*);
# 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,int32_t,int32_t);
# 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,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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) LDS(r0,r1,0)
# 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 ldr_d(r0,r1) LDT(r0,r1,0)
# 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,int32_t,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,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,int32_t,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,int32_t,jit_word_t);
# define str_f(r0,r1) STS(r1,r0,0)
# 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 str_d(r0,r1) STT(r1,r0,0)
# 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,int32_t,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,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,int32_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,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, int32_t);
#endif
#if CODE
# 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, 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); \
@@ -605,11 +605,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|jit_class_nospill);\
+ 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)); \
jit_unget_reg(reg); \
@@ -621,20 +621,20 @@ _b##name##i_##type(jit_state_t *_jit, \
# define dbopi(name) fpr_bopi(name, d, 64)
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, int32_t r1)
{
if (r0 != r1)
FMOV(r1, r0);
}
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;
@@ -649,13 +649,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;
@@ -670,9 +670,9 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
}
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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_fpr);
CVTTQ_SVC(r1, rn(reg));
TRAPB();
@@ -682,21 +682,21 @@ _truncr_d_l(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, int32_t r1)
{
SQRTS_SU(r1, r0);
TRAPB();
}
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, int32_t r1)
{
SQRTT_SU(r1, r0);
TRAPB();
}
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, int32_t r1)
{
stxi_l(-8, _FP_REGNO, r1);
ldxi_d(r0, _FP_REGNO, -8);
@@ -704,7 +704,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, int32_t r1)
{
stxi_l(-8, _FP_REGNO, r1);
ldxi_d(r0, _FP_REGNO, -8);
@@ -712,7 +712,7 @@ _extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
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, int32_t r1, int32_t r2)
{
ADDS_SU(r1, r2, r0);
TRAPB();
@@ -720,7 +720,7 @@ _addr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(add)
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, int32_t r1, int32_t r2)
{
ADDT_SU(r1, r2, r0);
TRAPB();
@@ -728,7 +728,7 @@ _addr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(add)
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, int32_t r1, int32_t r2)
{
SUBS_SU(r1, r2, r0);
TRAPB();
@@ -737,7 +737,7 @@ fopi(sub)
fopi(rsb)
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, int32_t r1, int32_t r2)
{
SUBT_SU(r1, r2, r0);
TRAPB();
@@ -746,7 +746,7 @@ dopi(sub)
dopi(rsb)
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, int32_t r1, int32_t r2)
{
MULS_SU(r1, r2, r0);
TRAPB();
@@ -754,7 +754,7 @@ _mulr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(mul)
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, int32_t r1, int32_t r2)
{
MULT_SU(r1, r2, r0);
TRAPB();
@@ -762,7 +762,7 @@ _mulr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(mul)
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, int32_t r1, int32_t r2)
{
DIVS_SU(r1, r2, r0);
TRAPB();
@@ -770,7 +770,7 @@ _divr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(div)
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, int32_t r1, int32_t r2)
{
DIVT_SU(r1, r2, r0);
TRAPB();
@@ -778,9 +778,9 @@ _divr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 0);
@@ -801,9 +801,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 0);
@@ -824,9 +824,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 0);
@@ -847,9 +847,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 0);
@@ -870,9 +870,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 0);
@@ -893,9 +893,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 1);
@@ -916,9 +916,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 1);
@@ -939,9 +939,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 1);
@@ -962,9 +962,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 1);
@@ -985,9 +985,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 1);
@@ -1008,9 +1008,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 1);
@@ -1031,9 +1031,9 @@ 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, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 0);
@@ -1054,10 +1054,10 @@ 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, int32_t r1, int32_t r2)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 0);
CMPTUN_SU(r1, r2, rn(reg));
@@ -1072,10 +1072,10 @@ 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, int32_t r1, int32_t r2)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
movi(r0, 1);
CMPTUN_SU(r1, r2, rn(reg));
@@ -1090,9 +1090,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord does not satisfy condition */
@@ -1111,9 +1111,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord does not satisfy condition */
@@ -1132,9 +1132,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord does not satisfy condition */
@@ -1153,9 +1153,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord does not satisfy condition */
@@ -1174,9 +1174,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord does not satisfy condition */
@@ -1195,9 +1195,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t u, v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord satisfy condition */
@@ -1219,9 +1219,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t u, v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord satisfy condition */
@@ -1243,9 +1243,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t u, v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord satisfy condition */
@@ -1267,9 +1267,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t u, v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord satisfy condition */
@@ -1291,9 +1291,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t u, v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord satisfy condition */
@@ -1315,9 +1315,9 @@ 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t u, v, w;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord satisfy condition */
@@ -1339,10 +1339,10 @@ 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, int32_t r1)
{
jit_word_t u, v, w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord does not satisfy condition */
TRAPB();
@@ -1363,10 +1363,10 @@ 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, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord does not satisfy condition */
TRAPB();
@@ -1379,10 +1379,10 @@ 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, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_fpr|jit_class_nospill);
CMPTUN_SU(r0, r1, rn(reg)); /* unord satisfy condition */
TRAPB();
@@ -1395,7 +1395,7 @@ 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_word_t reg;
if (_s16_p(i0))
@@ -1409,7 +1409,7 @@ _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_word_t reg;
if (_s16_p(i0))
@@ -1423,7 +1423,7 @@ _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, int32_t r1, int32_t r2)
{
jit_word_t reg;
reg = jit_get_reg(jit_class_gpr);
@@ -1433,7 +1433,7 @@ _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, int32_t r1, jit_word_t i0)
{
jit_word_t reg;
if (_s16_p(i0))
@@ -1447,7 +1447,7 @@ _ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 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, int32_t r1, int32_t r2)
{
jit_word_t reg;
reg = jit_get_reg(jit_class_gpr);
@@ -1457,7 +1457,7 @@ _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, int32_t r1, jit_word_t i0)
{
jit_word_t reg;
if (_s16_p(i0))
@@ -1471,7 +1471,7 @@ _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_word_t reg;
if (_s16_p(i0))
@@ -1485,7 +1485,7 @@ _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_word_t reg;
if (_s16_p(i0))
@@ -1499,7 +1499,7 @@ _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, int32_t r1, int32_t r2)
{
jit_word_t reg;
reg = jit_get_reg(jit_class_gpr);
@@ -1509,7 +1509,7 @@ _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, int32_t r1)
{
jit_word_t reg;
if (_s16_p(i0))
@@ -1523,7 +1523,7 @@ _stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
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, int32_t r1, int32_t r2)
{
jit_word_t reg;
reg = jit_get_reg(jit_class_gpr);
@@ -1533,7 +1533,7 @@ _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, int32_t r1)
{
jit_word_t reg;
if (_s16_p(i0))
@@ -1547,10 +1547,10 @@ _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, int32_t r1)
{
jit_word_t ge_code;
- jit_int32_t rg0, rg1, rg2;
+ int32_t rg0, rg1, rg2;
assert(_jitc->function->self.call & jit_call_varargs);
diff --git a/libguile/lightning/lib/jit_alpha.c b/libguile/lightning/jit/alpha.c
index a950a33d4..1f1e40634 100644
--- a/libguile/lightning/lib/jit_alpha.c
+++ b/libguile/lightning/jit/alpha.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2014-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2014-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -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
@@ -62,14 +62,14 @@ typedef struct jit_va_list {
static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
#define PROTO 1
-# include "jit_alpha-cpu.c"
-# include "jit_alpha-fpu.c"
+# include "alpha-cpu.c"
+# include "alpha-fpu.c"
#undef PROTO
/*
* Initialization
*/
-jit_register_t _rvs[] = {
+static const jit_register_t _rvs[] = {
{ rc(gpr) | 0x1c, "at" },
{ rc(gpr) | 0x00, "v0" },
{ rc(gpr) | 0x01, "t0" },
@@ -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, 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;
@@ -1495,8 +1495,8 @@ _emit_code(jit_state_t *_jit)
}
#define CODE 1
-# include "jit_alpha-cpu.c"
-# include "jit_alpha-fpu.c"
+# include "alpha-cpu.c"
+# include ", 2018alpha-fpu.c"
#undef CODE
void
@@ -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, 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, 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, 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, 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)
diff --git a/libguile/lightning/include/lightning/jit_alpha.h b/libguile/lightning/jit/alpha.h
index 8ccb5cc8a..8ccb5cc8a 100644
--- a/libguile/lightning/include/lightning/jit_alpha.h
+++ b/libguile/lightning/jit/alpha.h
diff --git a/libguile/lightning/lib/jit_arm-cpu.c b/libguile/lightning/jit/arm-cpu.c
index 6f06965c3..9d44699b9 100644
--- a/libguile/lightning/lib/jit_arm-cpu.c
+++ b/libguile/lightning/jit/arm-cpu.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2012-2017, 2019 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -836,113 +836,113 @@ static void _torl(jit_state_t*,int,int,int) maybe_unused;
jit_unget_reg(_R0); \
} while (0)
# define nop(i0) _nop(_jit,i0)
-static void _nop(jit_state_t*,jit_int32_t);
+static void _nop(jit_state_t*,int32_t);
# define movr(r0,r1) _movr(_jit,r0,r1)
-static void _movr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _movr(jit_state_t*,int32_t,int32_t);
# define movi(r0,i0) _movi(_jit,r0,i0)
-static void _movi(jit_state_t*,jit_int32_t,jit_word_t);
+static void _movi(jit_state_t*,int32_t,jit_word_t);
# define movi_p(r0,i0) _movi_p(_jit,r0,i0)
-static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
+static jit_word_t _movi_p(jit_state_t*,int32_t,jit_word_t);
# define comr(r0,r1) _comr(_jit,r0,r1)
-static void _comr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _comr(jit_state_t*,int32_t,int32_t);
# define negr(r0,r1) _negr(_jit,r0,r1)
-static void _negr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _negr(jit_state_t*,int32_t,int32_t);
# define addr(r0,r1,r2) _addr(_jit,r0,r1,r2)
-static void _addr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addr(jit_state_t*,int32_t,int32_t,int32_t);
# define addi(r0,r1,i0) _addi(_jit,r0,r1,i0)
-static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addcr(r0,r1,r2) _addcr(_jit,r0,r1,r2)
-static void _addcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addcr(jit_state_t*,int32_t,int32_t,int32_t);
# define addci(r0,r1,i0) _addci(_jit,r0,r1,i0)
-static void _addci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addxr(r0,r1,r2) _addxr(_jit,r0,r1,r2)
-static void _addxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addxr(jit_state_t*,int32_t,int32_t,int32_t);
# define addxi(r0,r1,i0) _addxi(_jit,r0,r1,i0)
-static void _addxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subr(r0,r1,r2) _subr(_jit,r0,r1,r2)
-static void _subr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subr(jit_state_t*,int32_t,int32_t,int32_t);
# define subi(r0,r1,i0) _subi(_jit,r0,r1,i0)
-static void _subi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subcr(r0,r1,r2) _subcr(_jit,r0,r1,r2)
-static void _subcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subcr(jit_state_t*,int32_t,int32_t,int32_t);
# define subci(r0,r1,i0) _subci(_jit,r0,r1,i0)
-static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subxr(r0,r1,r2) _subxr(_jit,r0,r1,r2)
-static void _subxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subxr(jit_state_t*,int32_t,int32_t,int32_t);
# define subxi(r0,r1,i0) _subxi(_jit,r0,r1,i0)
-static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rsbi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define mulr(r0,r1,r2) _mulr(_jit,r0,r1,r2)
-static void _mulr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _mulr(jit_state_t*,int32_t,int32_t,int32_t);
# define muli(r0,r1,i0) _muli(_jit,r0,r1,i0)
-static void _muli(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _muli(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qmulr(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,1)
# define qmulr_u(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,0)
# define iqmulr(r0,r1,r2,r3,cc) _iqmulr(_jit,r0,r1,r2,r3,cc)
-static void _iqmulr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqmulr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
# define qmuli(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,1)
# define qmuli_u(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,0)
# define iqmuli(r0,r1,r2,i0,cc) _iqmuli(_jit,r0,r1,r2,i0,cc)
-static void _iqmuli(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqmuli(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
# define divrem(d,s,r0,r1,r2) _divrem(_jit,d,s,r0,r1,r2)
-static void _divrem(jit_state_t*,int,int,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divrem(jit_state_t*,int,int,int32_t,int32_t,int32_t);
# define divr(r0,r1,r2) _divr(_jit,r0,r1,r2)
-static void _divr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr(jit_state_t*,int32_t,int32_t,int32_t);
# define divi(r0,r1,i0) _divi(_jit,r0,r1,i0)
-static void _divi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define divr_u(r0,r1,r2) _divr_u(_jit,r0,r1,r2)
-static void _divr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define divi_u(r0,r1,i0) _divi_u(_jit,r0,r1,i0)
-static void _divi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qdivr(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,1)
# define qdivr_u(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,0)
# define iqdivr(r0,r1,r2,r3,cc) _iqdivr(_jit,r0,r1,r2,r3,cc)
-static void _iqdivr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqdivr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
# define qdivi(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,1)
# define qdivi_u(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,0)
# define iqdivi(r0,r1,r2,i0,cc) _iqdivi(_jit,r0,r1,r2,i0,cc)
-static void _iqdivi(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqdivi(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
# define remr(r0,r1,r2) _remr(_jit,r0,r1,r2)
-static void _remr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr(jit_state_t*,int32_t,int32_t,int32_t);
# define remi(r0,r1,i0) _remi(_jit,r0,r1,i0)
-static void _remi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define remr_u(r0,r1,r2) _remr_u(_jit,r0,r1,r2)
-static void _remr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define remi_u(r0,r1,i0) _remi_u(_jit,r0,r1,i0)
-static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define andr(r0,r1,r2) _andr(_jit,r0,r1,r2)
-static void _andr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _andr(jit_state_t*,int32_t,int32_t,int32_t);
# define andi(r0,r1,i0) _andi(_jit,r0,r1,i0)
-static void _andi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _andi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define orr(r0,r1,r2) _orr(_jit,r0,r1,r2)
-static void _orr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _orr(jit_state_t*,int32_t,int32_t,int32_t);
# define ori(r0,r1,i0) _ori(_jit,r0,r1,i0)
-static void _ori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define xorr(r0,r1,r2) _xorr(_jit,r0,r1,r2)
-static void _xorr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _xorr(jit_state_t*,int32_t,int32_t,int32_t);
# define xori(r0,r1,i0) _xori(_jit,r0,r1,i0)
-static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _xori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define lshr(r0,r1,r2) _lshr(_jit,r0,r1,r2)
-static void _lshr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _lshr(jit_state_t*,int32_t,int32_t,int32_t);
# define lshi(r0,r1,i0) _lshi(_jit,r0,r1,i0)
-static void _lshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rshr(r0,r1,r2) _rshr(_jit,r0,r1,r2)
-static void _rshr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _rshr(jit_state_t*,int32_t,int32_t,int32_t);
# define rshi(r0,r1,i0) _rshi(_jit,r0,r1,i0)
-static void _rshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rshr_u(r0,r1,r2) _rshr_u(_jit,r0,r1,r2)
-static void _rshr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _rshr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define rshi_u(r0,r1,i0) _rshi_u(_jit,r0,r1,i0)
-static void _rshi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ccr(ct,cf,r0,r1,r2) _ccr(_jit,ct,cf,r0,r1,r2)
-static void _ccr(jit_state_t*,int,int,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ccr(jit_state_t*,int,int,int32_t,int32_t,int32_t);
# define cci(ct,cf,r0,r1,i0) _cci(_jit,ct,cf,r0,r1,i0)
-static void _cci(jit_state_t*,int,int,jit_int32_t,jit_int32_t,jit_word_t);
+static void _cci(jit_state_t*,int,int,int32_t,int32_t,jit_word_t);
# define ltr(r0, r1, r2) ccr(ARM_CC_LT,ARM_CC_GE,r0,r1,r2)
# define lti(r0, r1, i0) cci(ARM_CC_LT,ARM_CC_GE,r0,r1,i0)
# define ltr_u(r0, r1, r2) ccr(ARM_CC_LO,ARM_CC_HS,r0,r1,r2)
@@ -962,19 +962,19 @@ static void _cci(jit_state_t*,int,int,jit_int32_t,jit_int32_t,jit_word_t);
# define gtr_u(r0, r1, r2) ccr(ARM_CC_HI,ARM_CC_LS,r0,r1,r2)
# define gti_u(r0, r1, i0) cci(ARM_CC_HI,ARM_CC_LS,r0,r1,i0)
# define ner(r0,r1,r2) _ner(_jit,r0,r1,r2)
-static void _ner(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ner(jit_state_t*,int32_t,int32_t,int32_t);
# define nei(r0,r1,i0) _nei(_jit,r0,r1,i0)
-static void _nei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _nei(jit_state_t*,int32_t,int32_t,jit_word_t);
# define jmpr(r0) _jmpr(_jit,r0)
-static void _jmpr(jit_state_t*,jit_int32_t);
+static void _jmpr(jit_state_t*,int32_t);
# define jmpi(i0) _jmpi(_jit,i0)
static void _jmpi(jit_state_t*,jit_word_t);
# define jmpi_p(i0, i1) _jmpi_p(_jit,i0, i1)
static jit_word_t _jmpi_p(jit_state_t*,jit_word_t,jit_bool_t);
# define bccr(cc,i0,r0,r1) _bccr(_jit,cc,i0,r0,r1)
-static jit_word_t _bccr(jit_state_t*,int,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bccr(jit_state_t*,int,jit_word_t,int32_t,int32_t);
# define bcci(cc,i0,r0,i1) _bcci(_jit,cc,i0,r0,i1)
-static jit_word_t _bcci(jit_state_t*,int,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bcci(jit_state_t*,int,jit_word_t,int32_t,jit_word_t);
# define bltr(i0, r0, r1) bccr(ARM_CC_LT,i0,r0,r1)
# define blti(i0, r0, i1) bcci(ARM_CC_LT,i0,r0,i1)
# define bltr_u(i0, r0, r1) bccr(ARM_CC_LO,i0,r0,r1)
@@ -996,9 +996,9 @@ static jit_word_t _bcci(jit_state_t*,int,jit_word_t,jit_int32_t,jit_word_t);
# define bner(i0, r0, r1) bccr(ARM_CC_NE,i0,r0,r1)
# define bnei(i0, r0, i1) bcci(ARM_CC_NE,i0,r0,i1)
# define baddr(cc,i0,r0,r1) _baddr(_jit,cc,i0,r0,r1)
-static jit_word_t _baddr(jit_state_t*,int,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _baddr(jit_state_t*,int,jit_word_t,int32_t,int32_t);
# define baddi(cc,i0,r0,r1) _baddi(_jit,cc,i0,r0,r1)
-static jit_word_t _baddi(jit_state_t*,int,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _baddi(jit_state_t*,int,jit_word_t,int32_t,jit_word_t);
# define boaddr(i0,r0,r1) baddr(ARM_CC_VS,i0,r0,r1)
# define boaddi(i0,r0,i1) baddi(ARM_CC_VS,i0,r0,i1)
# define boaddr_u(i0,r0,r1) baddr(ARM_CC_HS,i0,r0,r1)
@@ -1008,9 +1008,9 @@ static jit_word_t _baddi(jit_state_t*,int,jit_word_t,jit_int32_t,jit_word_t);
# define bxaddr_u(i0,r0,r1) baddr(ARM_CC_LO,i0,r0,r1)
# define bxaddi_u(i0,r0,i1) baddi(ARM_CC_LO,i0,r0,i1)
# define bsubr(cc,i0,r0,r1) _bsubr(_jit,cc,i0,r0,r1)
-static jit_word_t _bsubr(jit_state_t*,int,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bsubr(jit_state_t*,int,jit_word_t,int32_t,int32_t);
# define bsubi(cc,i0,r0,r1) _bsubi(_jit,cc,i0,r0,r1)
-static jit_word_t _bsubi(jit_state_t*,int,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bsubi(jit_state_t*,int,jit_word_t,int32_t,jit_word_t);
# define bosubr(i0,r0,r1) bsubr(ARM_CC_VS,i0,r0,r1)
# define bosubi(i0,r0,i1) bsubi(ARM_CC_VS,i0,r0,i1)
# define bosubr_u(i0,r0,r1) bsubr(ARM_CC_LO,i0,r0,r1)
@@ -1020,110 +1020,110 @@ static jit_word_t _bsubi(jit_state_t*,int,jit_word_t,jit_int32_t,jit_word_t);
# define bxsubr_u(i0,r0,r1) bsubr(ARM_CC_HS,i0,r0,r1)
# define bxsubi_u(i0,r0,i1) bsubi(ARM_CC_HS,i0,r0,i1)
# define bmxr(cc,i0,r0,r1) _bmxr(_jit,cc,i0,r0,r1)
-static jit_word_t _bmxr(jit_state_t*,int,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bmxr(jit_state_t*,int,jit_word_t,int32_t,int32_t);
# define bmxi(cc,i0,r0,r1) _bmxi(_jit,cc,i0,r0,r1)
-static jit_word_t _bmxi(jit_state_t*,int,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bmxi(jit_state_t*,int,jit_word_t,int32_t,jit_word_t);
# define bmsr(i0,r0,r1) bmxr(ARM_CC_NE,i0,r0,r1)
# define bmsi(i0,r0,i1) bmxi(ARM_CC_NE,i0,r0,i1)
# define bmcr(i0,r0,r1) bmxr(ARM_CC_EQ,i0,r0,r1)
# define bmci(i0,r0,i1) bmxi(ARM_CC_EQ,i0,r0,i1)
# define ldr_c(r0,r1) _ldr_c(_jit,r0,r1)
-static void _ldr_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_c(jit_state_t*,int32_t,int32_t);
# define ldi_c(r0,i0) _ldi_c(_jit,r0,i0)
-static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_c(jit_state_t*,int32_t,jit_word_t);
# define ldxr_c(r0,r1,r2) _ldxr_c(_jit,r0,r1,r2)
-static void _ldxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_c(r0,r1,i0) _ldxi_c(_jit,r0,r1,i0)
-static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_c(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_uc(r0,r1) _ldr_uc(_jit,r0,r1)
-static void _ldr_uc(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_uc(jit_state_t*,int32_t,int32_t);
# define ldi_uc(r0,i0) _ldi_uc(_jit,r0,i0)
-static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_uc(jit_state_t*,int32_t,jit_word_t);
# define ldxr_uc(r0,r1,r2) _ldxr_uc(_jit,r0,r1,r2)
-static void _ldxr_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_uc(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_uc(r0,r1,i0) _ldxi_uc(_jit,r0,r1,i0)
-static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_uc(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_s(r0,r1) _ldr_s(_jit,r0,r1)
-static void _ldr_s(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_s(jit_state_t*,int32_t,int32_t);
# define ldi_s(r0,i0) _ldi_s(_jit,r0,i0)
-static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_s(jit_state_t*,int32_t,jit_word_t);
# define ldxr_s(r0,r1,r2) _ldxr_s(_jit,r0,r1,r2)
-static void _ldxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_s(r0,r1,i0) _ldxi_s(_jit,r0,r1,i0)
-static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_s(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_us(r0,r1) _ldr_us(_jit,r0,r1)
-static void _ldr_us(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_us(jit_state_t*,int32_t,int32_t);
# define ldi_us(r0,i0) _ldi_us(_jit,r0,i0)
-static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_us(jit_state_t*,int32_t,jit_word_t);
# define ldxr_us(r0,r1,r2) _ldxr_us(_jit,r0,r1,r2)
-static void _ldxr_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_us(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_us(r0,r1,i0) _ldxi_us(_jit,r0,r1,i0)
-static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_us(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_i(r0,r1) _ldr_i(_jit,r0,r1)
-static void _ldr_i(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_i(jit_state_t*,int32_t,int32_t);
# define ldi_i(r0,i0) _ldi_i(_jit,r0,i0)
-static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_i(jit_state_t*,int32_t,jit_word_t);
# define ldxr_i(r0,r1,r2) _ldxr_i(_jit,r0,r1,r2)
-static void _ldxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_i(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_i(r0,r1,i0) _ldxi_i(_jit,r0,r1,i0)
-static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_i(jit_state_t*,int32_t,int32_t,jit_word_t);
# define str_c(r0,r1) _str_c(_jit,r0,r1)
-static void _str_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _str_c(jit_state_t*,int32_t,int32_t);
# define sti_c(i0,r0) _sti_c(_jit,i0,r0)
-static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_c(jit_state_t*,jit_word_t,int32_t);
# define stxr_c(r0,r1,r2) _stxr_c(_jit,r0,r1,r2)
-static void _stxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_c(r0,r1,i0) _stxi_c(_jit,r0,r1,i0)
-static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_c(jit_state_t*,jit_word_t,int32_t,int32_t);
# define str_s(r0,r1) _str_s(_jit,r0,r1)
-static void _str_s(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _str_s(jit_state_t*,int32_t,int32_t);
# define sti_s(i0,r0) _sti_s(_jit,i0,r0)
-static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_s(jit_state_t*,jit_word_t,int32_t);
# define stxr_s(r0,r1,r2) _stxr_s(_jit,r0,r1,r2)
-static void _stxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_s(r0,r1,i0) _stxi_s(_jit,r0,r1,i0)
-static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_s(jit_state_t*,jit_word_t,int32_t,int32_t);
# define str_i(r0,r1) _str_i(_jit,r0,r1)
-static void _str_i(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _str_i(jit_state_t*,int32_t,int32_t);
# define sti_i(i0,r0) _sti_i(_jit,i0,r0)
-static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_i(jit_state_t*,jit_word_t,int32_t);
# define stxr_i(r0,r1,r2) _stxr_i(_jit,r0,r1,r2)
-static void _stxr_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxr_i(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxi_i(r0,r1,i0) _stxi_i(_jit,r0,r1,i0)
-static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_i(jit_state_t*,jit_word_t,int32_t,int32_t);
# if __BYTE_ORDER == __LITTLE_ENDIAN
-# define htonr_us(r0,r1) _htonr_us(_jit,r0,r1)
-static void _htonr_us(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ui(r0,r1) _htonr_ui(_jit,r0,r1)
-static void _htonr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
+# define bswapr_us(r0,r1) _bswapr_us(_jit,r0,r1)
+static void _bswapr_us(jit_state_t*,int32_t,int32_t);
+# define bswapr_ui(r0,r1) _bswapr_ui(_jit,r0,r1)
+static void _bswapr_ui(jit_state_t*,int32_t,int32_t);
# else
-# define htonr_us(r0,r1) extr_us(r0,r1)
-# define htonr(r0,r1) movr(r0,r1)
+# define bswapr_us(r0,r1) extr_us(r0,r1)
+# define bswapr(r0,r1) movr(r0,r1)
# endif
# define extr_c(r0,r1) _extr_c(_jit,r0,r1)
-static void _extr_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_c(jit_state_t*,int32_t,int32_t);
# define extr_uc(r0,r1) _extr_uc(_jit,r0,r1)
-static void _extr_uc(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_uc(jit_state_t*,int32_t,int32_t);
# define extr_s(r0,r1) _extr_s(_jit,r0,r1)
-static void _extr_s(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_s(jit_state_t*,int32_t,int32_t);
# define extr_us(r0,r1) _extr_us(_jit,r0,r1)
-static void _extr_us(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_us(jit_state_t*,int32_t,int32_t);
# define prolog(i0) _prolog(_jit,i0)
static void _prolog(jit_state_t*,jit_node_t*);
# define epilog(i0) _epilog(_jit,i0)
static void _epilog(jit_state_t*,jit_node_t*);
# define callr(r0) _callr(_jit,r0)
-static void _callr(jit_state_t*,jit_int32_t);
+static void _callr(jit_state_t*,int32_t);
# define calli(i0) _calli(_jit,i0)
static void _calli(jit_state_t*,jit_word_t);
# define calli_p(i0) _calli_p(_jit,i0)
static jit_word_t _calli_p(jit_state_t*,jit_word_t);
# define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
+static void _vastart(jit_state_t*, int32_t);
# define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vaarg(jit_state_t*, int32_t, int32_t);
# define patch_at(kind,jump,label) _patch_at(_jit,kind,jump,label)
-static void _patch_at(jit_state_t*,jit_int32_t,jit_word_t,jit_word_t);
+static void _patch_at(jit_state_t*,int32_t,jit_word_t,jit_word_t);
#endif
#if CODE
@@ -1406,7 +1406,7 @@ _tcb(jit_state_t *_jit, int cc, int im)
jit_thumb_t thumb;
assert(!(cc & 0xfffffff));
assert(cc != ARM_CC_AL && cc != ARM_CC_NV);
- cc = ((jit_uint32_t)cc) >> 6;
+ cc = ((uint32_t)cc) >> 6;
assert(!(im & (THUMB2_CC_B|cc)));
thumb.i = THUMB2_CC_B|cc|im;
iss(thumb.s[0], thumb.s[1]);
@@ -1510,7 +1510,7 @@ _torl(jit_state_t *_jit, int o, int rn, int im)
}
static void
-_nop(jit_state_t *_jit, jit_int32_t i0)
+_nop(jit_state_t *_jit, int32_t i0)
{
if (jit_thumb_p()) {
for (; i0 > 0; i0 -= 2)
@@ -1524,7 +1524,7 @@ _nop(jit_state_t *_jit, jit_int32_t i0)
}
static void
-_movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_movr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (r0 != r1) {
if (jit_thumb_p())
@@ -1535,7 +1535,7 @@ _movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
int i;
if (jit_thumb_p()) {
@@ -1546,9 +1546,9 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
else if ((i = encode_thumb_immediate(~i0)) != -1)
T2_MVNI(r0, i);
else {
- T2_MOVWI(r0, (jit_uint16_t)i0);
+ T2_MOVWI(r0, (uint16_t)i0);
if (i0 & 0xffff0000)
- T2_MOVTI(r0, (jit_uint16_t)((unsigned)i0 >> 16));
+ T2_MOVTI(r0, (uint16_t)((unsigned)i0 >> 16));
}
}
else {
@@ -1559,9 +1559,9 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
else if ((i = encode_arm_immediate(~i0)) != -1)
MVNI(r0, i);
else if (jit_armv6_p()) {
- MOVWI(r0, (jit_uint16_t)(i0));
+ MOVWI(r0, (uint16_t)(i0));
if ((i0 & 0xffff0000))
- MOVTI(r0, (jit_uint16_t)((unsigned)i0 >> 16));
+ MOVTI(r0, (uint16_t)((unsigned)i0 >> 16));
}
else
load_const(0, r0, i0);
@@ -1569,13 +1569,13 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t w;
w = _jit->pc.w;
if (jit_thumb_p()) {
- T2_MOVWI(r0, (jit_uint16_t)(i0));
- T2_MOVTI(r0, (jit_uint16_t)((unsigned)i0 >> 16));
+ T2_MOVWI(r0, (uint16_t)(i0));
+ T2_MOVTI(r0, (uint16_t)((unsigned)i0 >> 16));
}
else
load_const(1, r0, 0);
@@ -1583,7 +1583,7 @@ _movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_comr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_comr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1) < 8)
@@ -1596,7 +1596,7 @@ _comr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_negr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_negr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1) < 8)
@@ -1609,7 +1609,7 @@ _negr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_addr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1|r2) < 8)
@@ -1624,10 +1624,10 @@ _addr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1) < 8 && !(i0 & ~7))
T1_ADDI3(r0, r1, i0);
@@ -1671,7 +1671,7 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
/* thumb auto set carry if not inside IT block */
@@ -1685,10 +1685,10 @@ _addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8 && !(i0 & ~7))
T1_ADDI3(r0, r1, i0);
@@ -1728,7 +1728,7 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
/* keep setting carry because don't know last ADC */
if (jit_thumb_p()) {
@@ -1743,10 +1743,10 @@ _addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
int no_set_flags;
if (jit_thumb_p()) {
no_set_flags = jit_no_set_flags();
@@ -1786,7 +1786,7 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1|r2) < 8)
@@ -1799,10 +1799,10 @@ _subr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1) < 8 && !(i0 & ~7))
T1_SUBI3(r0, r1, i0);
@@ -1846,7 +1846,7 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
/* thumb auto set carry if not inside IT block */
@@ -1860,10 +1860,10 @@ _subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8 && !(i0 & ~7))
T1_SUBI3(r0, r1, i0);
@@ -1903,7 +1903,7 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
/* keep setting carry because don't know last SBC */
if (jit_thumb_p()) {
@@ -1918,10 +1918,10 @@ _subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
int no_set_flags;
if (jit_thumb_p()) {
no_set_flags = jit_no_set_flags();
@@ -1961,16 +1961,16 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rsbi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
subi(r0, r1, i0);
negr(r0, r0);
}
static void
-_mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_mulr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (!jit_no_set_flags() && r0 == r2 && (r0|r1) < 8)
T1_MUL(r0, r1);
@@ -1996,9 +1996,9 @@ _mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
mulr(r0, r1, rn(reg));
@@ -2006,10 +2006,10 @@ _muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqmulr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (r2 == r3) {
reg = jit_get_reg(jit_class_gpr);
@@ -2059,10 +2059,10 @@ _iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqmuli(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
iqmulr(r0, r1, r2, rn(reg), sign);
@@ -2071,7 +2071,7 @@ _iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
static void
_divrem(jit_state_t *_jit, int div, int sign,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+ int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t d;
jit_word_t w;
@@ -2101,7 +2101,7 @@ _divrem(jit_state_t *_jit, int div, int sign,
}
static void
-_divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_armv7r_p() && jit_thumb_p())
T2_SDIV(r0, r1, r2);
@@ -2110,9 +2110,9 @@ _divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
divr(r0, r1, rn(reg));
@@ -2120,7 +2120,7 @@ _divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_armv7r_p() && jit_thumb_p())
T2_UDIV(r0, r1, r2);
@@ -2129,9 +2129,9 @@ _divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
divr_u(r0, r1, rn(reg));
@@ -2139,8 +2139,8 @@ _divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqdivr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
jit_word_t d;
jit_word_t w;
@@ -2170,10 +2170,10 @@ _iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqdivi(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
iqdivr(r0, r1, r2, rn(reg), sign);
@@ -2181,15 +2181,15 @@ _iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
divrem(0, 1, r0, r1, r2);
}
static void
-_remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr(r0, r1, rn(reg));
@@ -2197,15 +2197,15 @@ _remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
divrem(0, 0, r0, r1, r2);
}
static void
-_remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr_u(r0, r1,rn(reg));
@@ -2213,7 +2213,7 @@ _remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_andr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_andr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1|r2) < 8 && (r0 == r1 || r0 == r2))
@@ -2226,10 +2226,10 @@ _andr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((i = encode_thumb_immediate(i0)) != -1)
T2_ANDI(r0, r1, i);
@@ -2265,7 +2265,7 @@ _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_orr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_orr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1|r2) < 8 && (r0 == r1 || r0 == r2))
@@ -2278,10 +2278,10 @@ _orr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((i = encode_thumb_immediate(i0)) != -1)
T2_ORRI(r0, r1, i);
@@ -2313,7 +2313,7 @@ _ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_xorr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_xorr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1|r2) < 8 && (r0 == r1 || r0 == r2))
@@ -2326,10 +2326,10 @@ _xorr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((i = encode_thumb_immediate(i0)) != -1)
T2_EORI(r0, r1, i);
@@ -2361,7 +2361,7 @@ _xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_lshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_lshr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1|r2) < 8 && r0 == r1)
@@ -2374,7 +2374,7 @@ _lshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
assert(i0 >= 0 && i0 <= 31);
if (i0 == 0)
@@ -2390,7 +2390,7 @@ _lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_rshr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1|r2) < 8 && r0 == r1)
@@ -2403,7 +2403,7 @@ _rshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
assert(i0 >= 0 && i0 <= 31);
if (i0 == 0)
@@ -2419,7 +2419,7 @@ _rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_rshr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if (!jit_no_set_flags() && (r0|r1|r2) < 8 && r0 == r1)
@@ -2432,7 +2432,7 @@ _rshr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
assert(i0 >= 0 && i0 <= 31);
if (i0 == 0)
@@ -2449,7 +2449,7 @@ _rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
static void
_ccr(jit_state_t *_jit, int ct, int cf,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+ int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
assert((ct ^ cf) >> 28 == 1);
@@ -2478,10 +2478,10 @@ _ccr(jit_state_t *_jit, int ct, int cf,
static void
_cci(jit_state_t *_jit, int ct, int cf,
- jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+ int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (r1 < 7 && !(i0 & 0xffffff00))
T1_CMPI(r1, i0);
@@ -2527,7 +2527,7 @@ _cci(jit_state_t *_jit, int ct, int cf,
}
static void
-_ner(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ner(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p())
ccr(ARM_CC_NE, ARM_CC_EQ, r0, r1, r2);
@@ -2538,10 +2538,10 @@ _ner(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_nei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p())
cci(ARM_CC_NE, ARM_CC_EQ, r0, r1, i0);
else {
@@ -2564,7 +2564,7 @@ _nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_jmpr(jit_state_t *_jit, jit_int32_t r0)
+_jmpr(jit_state_t *_jit, int32_t r0)
{
if (jit_thumb_p())
T1_MOV(_R15_REGNO, r0);
@@ -2577,7 +2577,7 @@ _jmpi(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
w = _jit->pc.w;
/* if thumb and in thumb mode */
if (jit_thumb_p() && _jitc->thumb) {
@@ -2611,7 +2611,7 @@ _jmpi_p(jit_state_t *_jit, jit_word_t i0, jit_bool_t i1)
{
jit_word_t w;
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
if (i1) {
/* Assume jump is not longer than 23 bits if inside jit */
w = _jit->pc.w;
@@ -2637,7 +2637,7 @@ _jmpi_p(jit_state_t *_jit, jit_word_t i0, jit_bool_t i1)
}
static jit_word_t
-_bccr(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bccr(jit_state_t *_jit, int cc, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
jit_word_t d;
@@ -2665,12 +2665,12 @@ _bccr(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bcci(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bcci(jit_state_t *_jit, int cc, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
jit_word_t d;
int i;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (r0 < 7 && !(i1 & 0xffffff00))
T1_CMPI(r0, i1);
@@ -2710,7 +2710,7 @@ _bcci(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_baddr(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_baddr(jit_state_t *_jit, int cc, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
jit_word_t d;
@@ -2735,12 +2735,12 @@ _baddr(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_baddi(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, int i1)
+_baddi(jit_state_t *_jit, int cc, jit_word_t i0, int32_t r0, int i1)
{
int i;
jit_word_t w;
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (r0 < 8 && !(i1 & ~7))
T1_ADDI3(r0, r0, i1);
@@ -2785,7 +2785,7 @@ _baddi(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, int i1)
}
static jit_word_t
-_bsubr(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bsubr(jit_state_t *_jit, int cc, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
jit_word_t d;
@@ -2810,12 +2810,12 @@ _bsubr(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bsubi(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, int i1)
+_bsubi(jit_state_t *_jit, int cc, jit_word_t i0, int32_t r0, int i1)
{
int i;
jit_word_t w;
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (r0 < 8 && !(i1 & ~7))
T1_SUBI3(r0, r0, i1);
@@ -2860,11 +2860,11 @@ _bsubi(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, int i1)
}
static jit_word_t
-_bmxr(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmxr(jit_state_t *_jit, int cc, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8)
T1_TST(r0, r1);
@@ -2892,12 +2892,12 @@ _bmxr(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bmxi(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmxi(jit_state_t *_jit, int cc, jit_word_t i0, int32_t r0, jit_word_t i1)
{
int i;
jit_word_t w;
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((i = encode_thumb_immediate(i1)) != -1)
T2_TSTI(r0, i);
@@ -2944,7 +2944,7 @@ _bmxi(jit_state_t *_jit, int cc, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static void
-_ldr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p())
T2_LDRSBI(r0, r1, 0);
@@ -2953,9 +2953,9 @@ _ldr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_c(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);
if (jit_thumb_p())
@@ -2966,7 +2966,7 @@ _ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if ((r0|r1|r2) < 8)
@@ -2979,9 +2979,9 @@ _ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (jit_ldrt_strt_p() && i0 >= 0 && i0 <= 255)
T2_LDRSBI(r0, r1, i0);
@@ -3025,7 +3025,7 @@ _ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_uc(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p())
T2_LDRBI(r0, r1, 0);
@@ -3034,9 +3034,9 @@ _ldr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_uc(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);
if (jit_thumb_p())
@@ -3047,7 +3047,7 @@ _ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_uc(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if ((r0|r1|r2) < 8)
@@ -3060,9 +3060,9 @@ _ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8 && i0 >= 0 && i0 < 0x20)
T1_LDRBI(r0, r1, i0);
@@ -3108,7 +3108,7 @@ _ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p())
T2_LDRSHI(r0, r1, 0);
@@ -3117,9 +3117,9 @@ _ldr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_s(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);
if (jit_thumb_p())
@@ -3130,7 +3130,7 @@ _ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if ((r0|r1|r2) < 8)
@@ -3143,9 +3143,9 @@ _ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if (jit_ldrt_strt_p() && i0 >= 0 && i0 <= 255)
T2_LDRSHI(r0, r1, i0);
@@ -3189,7 +3189,7 @@ _ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p())
T2_LDRHI(r0, r1, 0);
@@ -3198,9 +3198,9 @@ _ldr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_us(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);
if (jit_thumb_p())
@@ -3211,7 +3211,7 @@ _ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_us(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if ((r0|r1|r2) < 8)
@@ -3224,9 +3224,9 @@ _ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8 && i0 >= 0 && !(i0 & 1) && (i0 >> 1) < 0x20)
T1_LDRHI(r0, r1, i0 >> 1);
@@ -3272,7 +3272,7 @@ _ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_i(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p())
T2_LDRI(r0, r1, 0);
@@ -3281,9 +3281,9 @@ _ldr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_i(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);
if (jit_thumb_p())
@@ -3294,7 +3294,7 @@ _ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if ((r0|r1|r2) < 8)
@@ -3307,9 +3307,9 @@ _ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8 && i0 >= 0 && !(i0 & 3) && (i0 >> 2) < 0x20)
T1_LDRI(r0, r1, i0 >> 2);
@@ -3358,7 +3358,7 @@ _ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_str_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_str_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p())
T2_STRBI(r1, r0, 0);
@@ -3367,9 +3367,9 @@ _str_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_c(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);
if (jit_thumb_p())
@@ -3380,7 +3380,7 @@ _sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if ((r0|r1|r2) < 8)
@@ -3393,9 +3393,9 @@ _stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8 && i0 >= 0 && i0 < 0x20)
T1_STRBI(r1, r0, i0);
@@ -3430,7 +3430,7 @@ _stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_str_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_str_s(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p())
T2_STRHI(r1, r0, 0);
@@ -3439,9 +3439,9 @@ _str_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_s(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);
if (jit_thumb_p())
@@ -3452,7 +3452,7 @@ _sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if ((r0|r1|r2) < 8)
@@ -3465,9 +3465,9 @@ _stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8 && i0 >= 0 && !(i0 & 1) && (i0 >> 1) < 0x20)
T1_STRHI(r1, r0, i0 >> 1);
@@ -3502,7 +3502,7 @@ _stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_str_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_str_i(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p())
T2_STRI(r1, r0, 0);
@@ -3511,9 +3511,9 @@ _str_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_i(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);
if (jit_thumb_p())
@@ -3524,7 +3524,7 @@ _sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (jit_thumb_p()) {
if ((r0|r1|r2) < 8)
@@ -3537,9 +3537,9 @@ _stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8 && i0 >= 0 && !(i0 & 3) && (i0 >> 2) < 0x20)
T1_STRI(r1, r0, i0 >> 2);
@@ -3578,9 +3578,9 @@ _stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
# if __BYTE_ORDER == __LITTLE_ENDIAN
static void
-_htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
if (jit_thumb_p()) {
if ((r0|r1) < 8)
T1_REV(r0, r1);
@@ -3607,9 +3607,9 @@ _htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
/* inline glibc htonl (without register clobber) */
static void
-_htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_thumb_p()) {
if ((r0|r1) < 8)
T1_REV(r0, r1);
@@ -3632,7 +3632,7 @@ _htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
#endif
static void
-_extr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p()) {
if ((r0|r1) < 8)
@@ -3651,7 +3651,7 @@ _extr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_extr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_uc(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p()) {
if ((r0|r1) < 8)
@@ -3668,7 +3668,7 @@ _extr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_extr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p()) {
if ((r0|r1) < 8)
@@ -3687,7 +3687,7 @@ _extr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_extr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_thumb_p()) {
if ((r0|r1) < 8)
@@ -3706,7 +3706,7 @@ _extr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_callr(jit_state_t *_jit, jit_int32_t r0)
+_callr(jit_state_t *_jit, int32_t r0)
{
if (jit_thumb_p())
T1_BLX(r0);
@@ -3718,7 +3718,7 @@ static void
_calli(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
d = ((i0 - _jit->pc.w) >> 2) - 2;
if (!jit_exchange_p() && !jit_thumb_p() && _s24P(d))
BLI(d & 0x00ffffff);
@@ -3737,7 +3737,7 @@ static jit_word_t
_calli_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
w = _jit->pc.w;
movi_p(rn(reg), i0);
@@ -3752,9 +3752,9 @@ _calli_p(jit_state_t *_jit, jit_word_t i0)
static void
_prolog(jit_state_t *_jit, jit_node_t *node)
{
- jit_int32_t reg;
+ int32_t reg;
if (_jitc->function->define_frame || _jitc->function->assume_frame) {
- jit_int32_t frame = -_jitc->function->frame;
+ int32_t frame = -_jitc->function->frame;
assert(_jitc->function->self.aoff >= frame);
if (_jitc->function->assume_frame) {
if (jit_thumb_p() && !_jitc->thumb)
@@ -3833,7 +3833,7 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
}
static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
+_vastart(jit_state_t *_jit, int32_t r0)
{
assert(_jitc->function->self.call & jit_call_varargs);
@@ -3846,7 +3846,7 @@ _vastart(jit_state_t *_jit, jit_int32_t r0)
}
static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vaarg(jit_state_t *_jit, int32_t r0, int32_t r1)
{
assert(_jitc->function->self.call & jit_call_varargs);
@@ -3859,13 +3859,13 @@ _vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
static void
_patch_at(jit_state_t *_jit,
- jit_int32_t kind, jit_word_t instr, jit_word_t label)
+ int32_t kind, jit_word_t instr, jit_word_t label)
{
jit_word_t d;
jit_thumb_t thumb;
union {
- jit_int16_t *s;
- jit_int32_t *i;
+ int16_t *s;
+ int32_t *i;
jit_word_t w;
} u;
u.w = instr;
diff --git a/libguile/lightning/lib/jit_arm-swf.c b/libguile/lightning/jit/arm-swf.c
index 3ea2b2bb6..2b8bfa139 100644
--- a/libguile/lightning/lib/jit_arm-swf.c
+++ b/libguile/lightning/jit/arm-swf.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2012-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -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,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,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,int32_t,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,int32_t,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,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,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,int32_t,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,int32_t,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,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,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,int32_t,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,int32_t,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,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,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,int32_t,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,int32_t,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,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,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,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,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,int32_t,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,int32_t,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,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,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, 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; \
@@ -474,7 +474,7 @@ __aeabi_f2d(float u)
return (u);
}
-extern int
+int
__aeabi_f2iz(float u)
{
return (u);
@@ -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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
assert(_jitc->function->self.call & jit_call_varargs);
diff --git a/libguile/lightning/lib/jit_arm-vfp.c b/libguile/lightning/jit/arm-vfp.c
index 2964ef42e..d17a77844 100644
--- a/libguile/lightning/lib/jit_arm-vfp.c
+++ b/libguile/lightning/jit/arm-vfp.c
@@ -467,25 +467,25 @@ static void _cc_vorsl(jit_state_t*,int,int,int,int,int);
# define CC_VSTR_F64(cc,r0,r1,i0) cc_vldst(cc,ARM_VSTR|ARM_V_F64|ARM_P,r0,r1,i0)
# define VSTR_F64(r0,r1,i0) CC_VSTR_F64(ARM_CC_AL,r0,r1,i0)
# define vfp_movr_f(r0,r1) _vfp_movr_f(_jit,r0,r1)
-static void _vfp_movr_f(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_movr_f(jit_state_t*,int32_t,int32_t);
# define vfp_movr_d(r0,r1) _vfp_movr_d(_jit,r0,r1)
-static void _vfp_movr_d(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_movr_d(jit_state_t*,int32_t,int32_t);
# define vfp_movi_f(r0,i0) _vfp_movi_f(_jit,r0,i0)
-static void _vfp_movi_f(jit_state_t*,jit_int32_t,jit_float32_t);
+static void _vfp_movi_f(jit_state_t*,int32_t,jit_float32_t);
# define vfp_movi_d(r0,i0) _vfp_movi_d(_jit,r0,i0)
-static void _vfp_movi_d(jit_state_t*,jit_int32_t,jit_float64_t);
+static void _vfp_movi_d(jit_state_t*,int32_t,jit_float64_t);
# define vfp_extr_f(r0,r1) _vfp_extr_f(_jit,r0,r1)
-static void _vfp_extr_f(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_extr_f(jit_state_t*,int32_t,int32_t);
# define vfp_extr_d(r0,r1) _vfp_extr_d(_jit,r0,r1)
-static void _vfp_extr_d(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_extr_d(jit_state_t*,int32_t,int32_t);
# define vfp_extr_d_f(r0,r1) _vfp_extr_d_f(_jit,r0,r1)
-static void _vfp_extr_d_f(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_extr_d_f(jit_state_t*,int32_t,int32_t);
# define vfp_extr_f_d(r0,r1) _vfp_extr_f_d(_jit,r0,r1)
-static void _vfp_extr_f_d(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_extr_f_d(jit_state_t*,int32_t,int32_t);
# define vfp_truncr_f_i(r0,r1) _vfp_truncr_f_i(_jit,r0,r1)
-static void _vfp_truncr_f_i(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_truncr_f_i(jit_state_t*,int32_t,int32_t);
# define vfp_truncr_d_i(r0,r1) _vfp_truncr_d_i(_jit,r0,r1)
-static void _vfp_truncr_d_i(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_truncr_d_i(jit_state_t*,int32_t,int32_t);
# define vfp_absr_f(r0,r1) VABS_F32(r0,r1)
# define vfp_absr_d(r0,r1) VABS_F64(r0,r1)
# define vfp_negr_f(r0,r1) VNEG_F32(r0,r1)
@@ -494,318 +494,318 @@ static void _vfp_truncr_d_i(jit_state_t*,jit_int32_t,jit_int32_t);
# define vfp_sqrtr_d(r0,r1) VSQRT_F64(r0,r1)
# define vfp_addr_f(r0,r1,r2) VADD_F32(r0,r1,r2)
# define vfp_addi_f(r0,r1,i0) _vfp_addi_f(_jit,r0,r1,i0)
-static void _vfp_addi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_addi_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_addr_d(r0,r1,r2) VADD_F64(r0,r1,r2)
# define vfp_addi_d(r0,r1,i0) _vfp_addi_d(_jit,r0,r1,i0)
-static void _vfp_addi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_addi_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_subr_f(r0,r1,r2) VSUB_F32(r0,r1,r2)
# define vfp_subi_f(r0,r1,i0) _vfp_subi_f(_jit,r0,r1,i0)
-static void _vfp_subi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_subi_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_subr_d(r0,r1,r2) VSUB_F64(r0,r1,r2)
# define vfp_subi_d(r0,r1,i0) _vfp_subi_d(_jit,r0,r1,i0)
-static void _vfp_subi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_subi_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_rsbr_f(r0,r1,r2) vfp_subr_f(r0,r2,r1)
# define vfp_rsbi_f(r0,r1,i0) _vfp_rsbi_f(_jit,r0,r1,i0)
-static void _vfp_rsbi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_rsbi_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_rsbr_d(r0,r1,r2) vfp_subr_d(r0,r2,r1)
# define vfp_rsbi_d(r0,r1,i0) _vfp_rsbi_d(_jit,r0,r1,i0)
-static void _vfp_rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_rsbi_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_mulr_f(r0,r1,r2) VMUL_F32(r0,r1,r2)
# define vfp_muli_f(r0,r1,i0) _vfp_muli_f(_jit,r0,r1,i0)
-static void _vfp_muli_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_muli_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_mulr_d(r0,r1,r2) VMUL_F64(r0,r1,r2)
# define vfp_muli_d(r0,r1,i0) _vfp_muli_d(_jit,r0,r1,i0)
-static void _vfp_muli_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_muli_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_divr_f(r0,r1,r2) VDIV_F32(r0,r1,r2)
# define vfp_divi_f(r0,r1,i0) _vfp_divi_f(_jit,r0,r1,i0)
-static void _vfp_divi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_divi_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_divr_d(r0,r1,r2) VDIV_F64(r0,r1,r2)
# define vfp_divi_d(r0,r1,i0) _vfp_divi_d(_jit,r0,r1,i0)
-static void _vfp_divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_divi_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_cmp_f(r0,r1) _vfp_cmp_f(_jit,r0,r1)
-static void _vfp_cmp_f(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_cmp_f(jit_state_t*,int32_t,int32_t);
# define vfp_cmp_d(r0,r1) _vfp_cmp_d(_jit,r0,r1)
-static void _vfp_cmp_d(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _vfp_cmp_d(jit_state_t*,int32_t,int32_t);
# define vcmp01_x(c0,c1,r0) _vcmp01_x(_jit,c0,c1,r0)
-static void _vcmp01_x(jit_state_t*,int,int,jit_int32_t);
+static void _vcmp01_x(jit_state_t*,int,int,int32_t);
# define vcmp01_f(c0,c1,r0,r1,r2) _vcmp01_f(_jit,c0,c1,r0,r1,r2)
-static void _vcmp01_f(jit_state_t*,int,int,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vcmp01_f(jit_state_t*,int,int,int32_t,int32_t,int32_t);
# define vcmp01_d(c0,c1,r0,r1,r2) _vcmp01_d(_jit,c0,c1,r0,r1,r2)
-static void _vcmp01_d(jit_state_t*,int,int,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vcmp01_d(jit_state_t*,int,int,int32_t,int32_t,int32_t);
# define vfp_ltr_f(r0,r1,r2) vcmp01_f(ARM_CC_PL,ARM_CC_MI,r0,r1,r2)
# define vfp_lti_f(r0,r1,i0) _vfp_lti_f(_jit,r0,r1,i0)
-static void _vfp_lti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_lti_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_ltr_d(r0,r1,r2) vcmp01_d(ARM_CC_PL,ARM_CC_MI,r0,r1,r2)
# define vfp_lti_d(r0,r1,i0) _vfp_lti_d(_jit,r0,r1,i0)
-static void _vfp_lti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_lti_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_ler_f(r0,r1,r2) vcmp01_f(ARM_CC_HS,ARM_CC_LS,r0,r1,r2)
# define vfp_lei_f(r0,r1,i0) _vfp_lei_f(_jit,r0,r1,i0)
-static void _vfp_lei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_lei_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_ler_d(r0,r1,r2) vcmp01_d(ARM_CC_HS,ARM_CC_LS,r0,r1,r2)
# define vfp_lei_d(r0,r1,i0) _vfp_lei_d(_jit,r0,r1,i0)
-static void _vfp_lei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_lei_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_eqr_f(r0,r1,r2) vcmp01_f(ARM_CC_NE,ARM_CC_EQ,r0,r1,r2)
# define vfp_eqi_f(r0,r1,i0) _vfp_eqi_f(_jit,r0,r1,i0)
-static void _vfp_eqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_eqi_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_eqr_d(r0,r1,r2) vcmp01_d(ARM_CC_NE,ARM_CC_EQ,r0,r1,r2)
# define vfp_eqi_d(r0,r1,i0) _vfp_eqi_d(_jit,r0,r1,i0)
-static void _vfp_eqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_eqi_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_ger_f(r0,r1,r2) vcmp01_f(ARM_CC_LT,ARM_CC_GE,r0,r1,r2)
# define vfp_gei_f(r0,r1,i0) _vfp_gei_f(_jit,r0,r1,i0)
-static void _vfp_gei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_gei_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_ger_d(r0,r1,r2) vcmp01_d(ARM_CC_LT,ARM_CC_GE,r0,r1,r2)
# define vfp_gei_d(r0,r1,i0) _vfp_gei_d(_jit,r0,r1,i0)
-static void _vfp_gei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_gei_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_gtr_f(r0,r1,r2) vcmp01_f(ARM_CC_LE,ARM_CC_GT,r0,r1,r2)
# define vfp_gti_f(r0,r1,i0) _vfp_gti_f(_jit,r0,r1,i0)
-static void _vfp_gti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_gti_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_gtr_d(r0,r1,r2) vcmp01_d(ARM_CC_LE,ARM_CC_GT,r0,r1,r2)
# define vfp_gti_d(r0,r1,i0) _vfp_gti_d(_jit,r0,r1,i0)
-static void _vfp_gti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_gti_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_ner_f(r0,r1,r2) vcmp01_f(ARM_CC_EQ,ARM_CC_NE,r0,r1,r2)
# define vfp_nei_f(r0,r1,i0) _vfp_nei_f(_jit,r0,r1,i0)
-static void _vfp_nei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_nei_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_ner_d(r0,r1,r2) vcmp01_d(ARM_CC_EQ,ARM_CC_NE,r0,r1,r2)
# define vfp_nei_d(r0,r1,i0) _vfp_nei_d(_jit,r0,r1,i0)
-static void _vfp_nei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_nei_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vcmp10_x(c0,r0) _vcmp10_x(_jit,c0,r0)
-static void _vcmp10_x(jit_state_t*,int,jit_int32_t);
+static void _vcmp10_x(jit_state_t*,int,int32_t);
# define vcmp_10_f(c0,r0,r1,r2) _vcmp_10_f(_jit,c0,r0,r1,r2)
-static void _vcmp_10_f(jit_state_t*,int,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vcmp_10_f(jit_state_t*,int,int32_t,int32_t,int32_t);
# define vcmp_10_d(c0,r0,r1,r2) _vcmp_10_d(_jit,c0,r0,r1,r2)
-static void _vcmp_10_d(jit_state_t*,int,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vcmp_10_d(jit_state_t*,int,int32_t,int32_t,int32_t);
# define vfp_unltr_f(r0,r1,r2) vcmp_10_f(ARM_CC_GE,r0,r1,r2)
# define vfp_unlti_f(r0,r1,i0) _vfp_unlti_f(_jit,r0,r1,i0)
-static void _vfp_unlti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_unlti_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_unltr_d(r0,r1,r2) vcmp_10_d(ARM_CC_GE,r0,r1,r2)
# define vfp_unlti_d(r0,r1,i0) _vfp_unlti_d(_jit,r0,r1,i0)
-static void _vfp_unlti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_unlti_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_unler_f(r0,r1,r2) vcmp_10_f(ARM_CC_GT,r0,r1,r2)
# define vfp_unlei_f(r0,r1,i0) _vfp_unlei_f(_jit,r0,r1,i0)
-static void _vfp_unlei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_unlei_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_unler_d(r0,r1,r2) vcmp_10_d(ARM_CC_GT,r0,r1,r2)
# define vfp_unlei_d(r0,r1,i0) _vfp_unlei_d(_jit,r0,r1,i0)
-static void _vfp_unlei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_unlei_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_uneqr_x(r0) _vfp_uneqr_x(_jit,r0)
-static void _vfp_uneqr_x(jit_state_t*,jit_int32_t);
+static void _vfp_uneqr_x(jit_state_t*,int32_t);
# define vfp_uneqr_f(r0,r1,r2) _vfp_uneqr_f(_jit,r0,r1,r2)
-static void _vfp_uneqr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_uneqr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_uneqi_f(r0,r1,i0) _vfp_uneqi_f(_jit,r0,r1,i0)
-static void _vfp_uneqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_uneqi_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_uneqr_d(r0,r1,r2) _vfp_uneqr_d(_jit,r0,r1,r2)
-static void _vfp_uneqr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_uneqr_d(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_uneqi_d(r0,r1,i0) _vfp_uneqi_d(_jit,r0,r1,i0)
-static void _vfp_uneqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_uneqi_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vcmp_01_x(c0,r0) _vcmp_01_x(_jit,c0,r0)
-static void _vcmp_01_x(jit_state_t*,int,jit_int32_t);
+static void _vcmp_01_x(jit_state_t*,int,int32_t);
# define vcmp_01_f(c0,r0,r1,r2) _vcmp_01_f(_jit,c0,r0,r1,r2)
-static void _vcmp_01_f(jit_state_t*,int,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vcmp_01_f(jit_state_t*,int,int32_t,int32_t,int32_t);
# define vcmp_01_d(c0,r0,r1,r2) _vcmp_01_d(_jit,c0,r0,r1,r2)
-static void _vcmp_01_d(jit_state_t*,int,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vcmp_01_d(jit_state_t*,int,int32_t,int32_t,int32_t);
# define vfp_unger_f(r0,r1,r2) vcmp_01_f(ARM_CC_CS,r0,r1,r2)
# define vfp_ungei_f(r0,r1,i0) _vfp_ungei_f(_jit,r0,r1,i0)
-static void _vfp_ungei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_ungei_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_unger_d(r0,r1,r2) vcmp_01_d(ARM_CC_CS,r0,r1,r2)
# define vfp_ungei_d(r0,r1,i0) _vfp_ungei_d(_jit,r0,r1,i0)
-static void _vfp_ungei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_ungei_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_ungtr_f(r0,r1,r2) vcmp_01_f(ARM_CC_HI,r0,r1,r2)
# define vfp_ungti_f(r0,r1,i0) _vfp_ungti_f(_jit,r0,r1,i0)
-static void _vfp_ungti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_ungti_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_ungtr_d(r0,r1,r2) vcmp_01_d(ARM_CC_HI,r0,r1,r2)
# define vfp_ungti_d(r0,r1,i0) _vfp_ungti_d(_jit,r0,r1,i0)
-static void _vfp_ungti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_ungti_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_ltgtr_x(r0) _vfp_ltgtr_x(_jit,r0)
-static void _vfp_ltgtr_x(jit_state_t*,jit_int32_t);
+static void _vfp_ltgtr_x(jit_state_t*,int32_t);
# define vfp_ltgtr_f(r0,r1,r2) _vfp_ltgtr_f(_jit,r0,r1,r2)
-static void _vfp_ltgtr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_ltgtr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_ltgti_f(r0,r1,i0) _vfp_ltgti_f(_jit,r0,r1,i0)
-static void _vfp_ltgti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_ltgti_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_ltgtr_d(r0,r1,r2) _vfp_ltgtr_d(_jit,r0,r1,r2)
-static void _vfp_ltgtr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_ltgtr_d(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_ltgti_d(r0,r1,i0) _vfp_ltgti_d(_jit,r0,r1,i0)
-static void _vfp_ltgti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_ltgti_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_ordr_f(r0,r1,r2) _vfp_ordr_f(_jit,r0,r1,r2)
-static void _vfp_ordr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_ordr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_ordi_f(r0,r1,i0) _vfp_ordi_f(_jit,r0,r1,i0)
-static void _vfp_ordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_ordi_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_ordr_d(r0,r1,r2) _vfp_ordr_d(_jit,r0,r1,r2)
-static void _vfp_ordr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_ordr_d(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_ordi_d(r0,r1,i0) _vfp_ordi_d(_jit,r0,r1,i0)
-static void _vfp_ordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_ordi_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vfp_unordr_f(r0,r1,r2) _vfp_unordr_f(_jit,r0,r1,r2)
-static void _vfp_unordr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_unordr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_unordi_f(r0,r1,i0) _vfp_unordi_f(_jit,r0,r1,i0)
-static void _vfp_unordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t);
+static void _vfp_unordi_f(jit_state_t*,int32_t,int32_t,jit_float32_t);
# define vfp_unordr_d(r0,r1,r2) _vfp_unordr_d(_jit,r0,r1,r2)
-static void _vfp_unordr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_unordr_d(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_unordi_d(r0,r1,i0) _vfp_unordi_d(_jit,r0,r1,i0)
-static void _vfp_unordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t);
+static void _vfp_unordi_d(jit_state_t*,int32_t,int32_t,jit_float64_t);
# define vbcmp_x(cc,i0) _vbcmp_x(_jit,cc,i0)
static jit_word_t _vbcmp_x(jit_state_t*,int,jit_word_t);
# define vbcmp_f(cc,i0,r0,r1) _vbcmp_f(_jit,cc,i0,r0,r1)
static jit_word_t
-_vbcmp_f(jit_state_t*,int,jit_word_t,jit_int32_t,jit_int32_t);
+_vbcmp_f(jit_state_t*,int,jit_word_t,int32_t,int32_t);
# define vbcmp_x(cc,i0) _vbcmp_x(_jit,cc,i0)
static jit_word_t _vbcmp_x(jit_state_t*,int,jit_word_t);
# define vbcmp_d(cc,i0,r0,r1) _vbcmp_d(_jit,cc,i0,r0,r1)
static jit_word_t
-_vbcmp_d(jit_state_t*,int,jit_word_t,jit_int32_t,jit_int32_t);
+_vbcmp_d(jit_state_t*,int,jit_word_t,int32_t,int32_t);
# define vfp_bltr_f(i0,r0,r1) vbcmp_f(ARM_CC_MI,i0,r0,r1)
# define vfp_blti_f(i0,r0,i1) _vfp_blti_f(_jit,i0,r0,i1)
-static jit_word_t _vfp_blti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+static jit_word_t _vfp_blti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bltr_d(i0,r0,r1) vbcmp_d(ARM_CC_MI,i0,r0,r1)
-static jit_word_t _vfp_blti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+static jit_word_t _vfp_blti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_blti_d(i0,r0,i1) _vfp_blti_d(_jit,i0,r0,i1)
# define vfp_bler_f(i0,r0,r1) vbcmp_f(ARM_CC_LS,i0,r0,r1)
# define vfp_blei_f(i0,r0,i1) _vfp_blei_f(_jit,i0,r0,i1)
-static jit_word_t _vfp_blei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+static jit_word_t _vfp_blei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bler_d(i0,r0,r1) vbcmp_d(ARM_CC_LS,i0,r0,r1)
# define vfp_blei_d(i0,r0,i1) _vfp_blei_d(_jit,i0,r0,i1)
-static jit_word_t _vfp_blei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+static jit_word_t _vfp_blei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_beqr_f(i0,r0,r1) vbcmp_f(ARM_CC_EQ,i0,r0,r1)
# define vfp_beqi_f(i0,r0,i1) _vfp_beqi_f(_jit,i0,r0,i1)
-static jit_word_t _vfp_beqi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+static jit_word_t _vfp_beqi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_beqr_d(i0,r0,r1) vbcmp_d(ARM_CC_EQ,i0,r0,r1)
# define vfp_beqi_d(i0,r0,i1) _vfp_beqi_d(_jit,i0,r0,i1)
-static jit_word_t _vfp_beqi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+static jit_word_t _vfp_beqi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_bger_f(i0,r0,r1) vbcmp_f(ARM_CC_GE,i0,r0,r1)
# define vfp_bgei_f(i0,r0,i1) _vfp_bgei_f(_jit,i0,r0,i1)
-static jit_word_t _vfp_bgei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+static jit_word_t _vfp_bgei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bger_d(i0,r0,r1) vbcmp_d(ARM_CC_GE,i0,r0,r1)
# define vfp_bgei_d(i0,r0,i1) _vfp_bgei_d(_jit,i0,r0,i1)
-static jit_word_t _vfp_bgei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+static jit_word_t _vfp_bgei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_bgtr_f(i0,r0,r1) vbcmp_f(ARM_CC_GT,i0,r0,r1)
# define vfp_bgti_f(i0,r0,i1) _vfp_bgti_f(_jit,i0,r0,i1)
-static jit_word_t _vfp_bgti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+static jit_word_t _vfp_bgti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bgtr_d(i0,r0,r1) vbcmp_d(ARM_CC_GT,i0,r0,r1)
# define vfp_bgti_d(i0,r0,i1) _vfp_bgti_d(_jit,i0,r0,i1)
-static jit_word_t _vfp_bgti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+static jit_word_t _vfp_bgti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_bner_f(i0,r0,r1) vbcmp_f(ARM_CC_NE,i0,r0,r1)
# define vfp_bnei_f(i0,r0,i1) _vfp_bnei_f(_jit,i0,r0,i1)
-static jit_word_t _vfp_bnei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+static jit_word_t _vfp_bnei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bner_d(i0,r0,r1) vbcmp_d(ARM_CC_NE,i0,r0,r1)
# define vfp_bnei_d(i0,r0,i1) _vfp_bnei_d(_jit,i0,r0,i1)
-static jit_word_t _vfp_bnei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+static jit_word_t _vfp_bnei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vbncmp_x(cc,i0) _vbncmp_x(_jit,cc,i0)
static jit_word_t _vbncmp_x(jit_state_t*,int,jit_word_t);
# define vbncmp_f(cc,i0,r0,r1) _vbncmp_f(_jit,cc,i0,r0,r1)
static jit_word_t
-_vbncmp_f(jit_state_t*,int,jit_word_t,jit_int32_t,jit_int32_t);
+_vbncmp_f(jit_state_t*,int,jit_word_t,int32_t,int32_t);
# define vbncmp_d(cc,i0,r0,r1) _vbncmp_d(_jit,cc,i0,r0,r1)
static jit_word_t
-_vbncmp_d(jit_state_t*,int,jit_word_t,jit_int32_t,jit_int32_t);
+_vbncmp_d(jit_state_t*,int,jit_word_t,int32_t,int32_t);
# define vfp_bunltr_f(i0,r0,r1) vbncmp_f(ARM_CC_GE,i0,r0,r1)
# define vfp_bunlti_f(i0,r0,i1) _vfp_bunlti_f(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bunlti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+_vfp_bunlti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bunltr_d(i0,r0,r1) vbncmp_d(ARM_CC_GE,i0,r0,r1)
# define vfp_bunlti_d(i0,r0,i1) _vfp_bunlti_d(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bunlti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+_vfp_bunlti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_bunler_f(i0,r0,r1) vbncmp_f(ARM_CC_GT,i0,r0,r1)
# define vfp_bunlei_f(i0,r0,i1) _vfp_bunlei_f(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bunlei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+_vfp_bunlei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bunler_d(i0,r0,r1) vbncmp_d(ARM_CC_GT,i0,r0,r1)
# define vfp_bunlei_d(i0,r0,i1) _vfp_bunlei_d(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bunlei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+_vfp_bunlei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_buneqr_x(i0) _vfp_buneqr_x(_jit,i0)
static jit_word_t _vfp_buneqr_x(jit_state_t*,jit_word_t);
# define vfp_buneqr_f(i0,r0,r1) _vfp_buneqr_f(_jit,i0,r0,r1)
static jit_word_t
-_vfp_buneqr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+_vfp_buneqr_f(jit_state_t*,jit_word_t,int32_t,int32_t);
# define vfp_buneqi_f(i0,r0,i1) _vfp_buneqi_f(_jit,i0,r0,i1)
static jit_word_t
-_vfp_buneqi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+_vfp_buneqi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_buneqr_d(i0,r0,r1) _vfp_buneqr_d(_jit,i0,r0,r1)
static jit_word_t
-_vfp_buneqr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+_vfp_buneqr_d(jit_state_t*,jit_word_t,int32_t,int32_t);
# define vfp_buneqi_d(i0,r0,i1) _vfp_buneqi_d(_jit,i0,r0,i1)
static jit_word_t
-_vfp_buneqi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+_vfp_buneqi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_bunger_x(i0) _vfp_bunger_x(_jit,i0)
static jit_word_t _vfp_bunger_x(jit_state_t*,jit_word_t);
# define vfp_bunger_f(i0,r0,r1) _vfp_bunger_f(_jit,i0,r0,r1)
static jit_word_t
-_vfp_bunger_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+_vfp_bunger_f(jit_state_t*,jit_word_t,int32_t,int32_t);
# define vfp_bungei_f(i0,r0,i1) _vfp_bungei_f(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bungei_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+_vfp_bungei_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bunger_d(i0,r0,r1) _vfp_bunger_d(_jit,i0,r0,r1)
static jit_word_t
-_vfp_bunger_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+_vfp_bunger_d(jit_state_t*,jit_word_t,int32_t,int32_t);
# define vfp_bungei_d(i0,r0,i1) _vfp_bungei_d(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bungei_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+_vfp_bungei_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_bungtr_f(i0,r0,r1) vbcmp_f(ARM_CC_HI,i0,r0,r1)
# define vfp_bungti_f(i0,r0,i1) _vfp_bungti_f(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bungti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+_vfp_bungti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bungtr_d(i0,r0,r1) vbcmp_d(ARM_CC_HI,i0,r0,r1)
# define vfp_bungti_d(i0,r0,i1) _vfp_bungti_d(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bungti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+_vfp_bungti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_bltgtr_x(i0) _vfp_bltgtr_x(_jit,i0)
static jit_word_t _vfp_bltgtr_x(jit_state_t*,jit_word_t);
# define vfp_bltgtr_f(i0,r0,r1) _vfp_bltgtr_f(_jit,i0,r0,r1)
static jit_word_t
-_vfp_bltgtr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+_vfp_bltgtr_f(jit_state_t*,jit_word_t,int32_t,int32_t);
# define vfp_bltgti_f(i0,r0,i1) _vfp_bltgti_f(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bltgti_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+_vfp_bltgti_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bltgtr_d(i0,r0,r1) _vfp_bltgtr_d(_jit,i0,r0,r1)
static jit_word_t
-_vfp_bltgtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+_vfp_bltgtr_d(jit_state_t*,jit_word_t,int32_t,int32_t);
# define vfp_bltgti_d(i0,r0,i1) _vfp_bltgti_d(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bltgti_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+_vfp_bltgti_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_bordr_f(i0,r0,r1) vbcmp_f(ARM_CC_VC,i0,r0,r1)
# define vfp_bordi_f(i0,r0,i1) _vfp_bordi_f(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bordi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+_vfp_bordi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bordr_d(i0,r0,r1) vbcmp_d(ARM_CC_VC,i0,r0,r1)
# define vfp_bordi_d(i0,r0,i1) _vfp_bordi_d(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bordi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+_vfp_bordi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_bunordr_f(i0,r0,r1) vbcmp_f(ARM_CC_VS,i0,r0,r1)
# define vfp_bunordi_f(i0,r0,i1) _vfp_bunordi_f(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bunordi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_float32_t);
+_vfp_bunordi_f(jit_state_t*,jit_word_t,int32_t,jit_float32_t);
# define vfp_bunordr_d(i0,r0,r1) vbcmp_d(ARM_CC_VS,i0,r0,r1)
# define vfp_bunordi_d(i0,r0,i1) _vfp_bunordi_d(_jit,i0,r0,i1)
static jit_word_t
-_vfp_bunordi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_float64_t);
+_vfp_bunordi_d(jit_state_t*,jit_word_t,int32_t,jit_float64_t);
# define vfp_ldr_f(r0,r1) VLDR_F32(r0,r1,0)
# define vfp_ldr_d(r0,r1) VLDR_F64(r0,r1,0)
# define vfp_ldi_f(r0,i0) _vfp_ldi_f(_jit,r0,i0)
-static void _vfp_ldi_f(jit_state_t*,jit_int32_t,jit_word_t);
+static void _vfp_ldi_f(jit_state_t*,int32_t,jit_word_t);
# define vfp_ldi_d(r0,i0) _vfp_ldi_d(_jit,r0,i0)
-static void _vfp_ldi_d(jit_state_t*,jit_int32_t,jit_word_t);
+static void _vfp_ldi_d(jit_state_t*,int32_t,jit_word_t);
# define vfp_ldxr_f(r0,r1,r2) _vfp_ldxr_f(_jit,r0,r1,r2)
-static void _vfp_ldxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_ldxr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_ldxr_d(r0,r1,r2) _vfp_ldxr_d(_jit,r0,r1,r2)
-static void _vfp_ldxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_ldxr_d(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_ldxi_f(r0,r1,i0) _vfp_ldxi_f(_jit,r0,r1,i0)
-static void _vfp_ldxi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _vfp_ldxi_f(jit_state_t*,int32_t,int32_t,jit_word_t);
# define vfp_ldxi_d(r0,r1,i0) _vfp_ldxi_d(_jit,r0,r1,i0)
-static void _vfp_ldxi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _vfp_ldxi_d(jit_state_t*,int32_t,int32_t,jit_word_t);
# define vfp_str_f(r0,r1) VSTR_F32(r1,r0,0)
# define vfp_str_d(r0,r1) VSTR_F64(r1,r0,0)
# define vfp_sti_f(i0,r0) _vfp_sti_f(_jit,i0,r0)
-static void _vfp_sti_f(jit_state_t*,jit_word_t,jit_int32_t);
+static void _vfp_sti_f(jit_state_t*,jit_word_t,int32_t);
# define vfp_sti_d(i0,r0) _vfp_sti_d(_jit,i0,r0)
-static void _vfp_sti_d(jit_state_t*,jit_word_t,jit_int32_t);
+static void _vfp_sti_d(jit_state_t*,jit_word_t,int32_t);
# define vfp_stxr_f(r0,r1,r2) _vfp_stxr_f(_jit,r0,r1,r2)
-static void _vfp_stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_stxr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_stxr_d(r0,r1,r2) _vfp_stxr_d(_jit,r0,r1,r2)
-static void _vfp_stxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _vfp_stxr_d(jit_state_t*,int32_t,int32_t,int32_t);
# define vfp_stxi_f(i0,r0,r1) _vfp_stxi_f(_jit,i0,r0,r1)
-static void _vfp_stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _vfp_stxi_f(jit_state_t*,jit_word_t,int32_t,int32_t);
# define vfp_stxi_d(i0,r0,r1) _vfp_stxi_d(_jit,i0,r0,r1)
-static void _vfp_stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _vfp_stxi_d(jit_state_t*,jit_word_t,int32_t,int32_t);
# define vfp_vaarg_d(r0, r1) _vfp_vaarg_d(_jit, r0, r1)
-static void _vfp_vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vfp_vaarg_d(jit_state_t*, int32_t, int32_t);
#endif
#if CODE
@@ -1205,7 +1205,7 @@ _cc_vorsl(jit_state_t *_jit, int cc, int o, int r0, int r1, int i0)
}
static void
-_vfp_movr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_movr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (r0 != r1) {
if (jit_fpr_p(r1)) {
@@ -1222,7 +1222,7 @@ _vfp_movr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_movr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (r0 != r1) {
if (jit_fpr_p(r1)) {
@@ -1243,14 +1243,14 @@ _vfp_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
+_vfp_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;
- jit_int32_t code;
+ int32_t reg;
+ int32_t code;
u.f = i0;
if (jit_fpr_p(r0)) {
/* float arguments are packed, for others,
@@ -1271,14 +1271,14 @@ _vfp_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
}
static void
-_vfp_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0)
+_vfp_movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t i0)
{
union {
- jit_int32_t i[2];
+ int32_t i[2];
jit_float64_t d;
} u;
- jit_int32_t code;
- jit_int32_t rg0, rg1;
+ int32_t code;
+ int32_t rg0, rg1;
u.d = i0;
if (jit_fpr_p(r0)) {
if ((code = encode_vfp_double(1, 0, u.i[0], u.i[1])) != -1 ||
@@ -1301,9 +1301,9 @@ _vfp_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0)
}
static void
-_vfp_extr_d_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_extr_d_f(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r1)) {
if (jit_fpr_p(r0))
VCVT_F64_F32(r0, r1);
@@ -1327,9 +1327,9 @@ _vfp_extr_d_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_extr_f_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_extr_f_d(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r1)) {
if (jit_fpr_p(r0))
VCVT_F32_F64(r0, r1);
@@ -1353,9 +1353,9 @@ _vfp_extr_f_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_extr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r0)) {
VMOV_V_I32(r0, r1);
VCVT_F32_S32(r0, r0);
@@ -1370,9 +1370,9 @@ _vfp_extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_extr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r0)) {
VMOV_V_I32(r0, r1);
VCVT_F64_S32(r0, r0);
@@ -1387,9 +1387,9 @@ _vfp_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_truncr_f_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_truncr_f_i(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_fpr);
if (jit_fpr_p(r1))
VCVT_S32_F32(rn(reg), r1);
@@ -1402,9 +1402,9 @@ _vfp_truncr_f_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_truncr_d_i(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_fpr);
if (jit_fpr_p(r1))
VCVT_S32_F64(rn(reg), r1);
@@ -1419,9 +1419,9 @@ _vfp_truncr_d_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# define fopi(name) \
static void \
_vfp_##name##i_f(jit_state_t *_jit, \
- jit_int32_t r0, jit_int32_t r1, jit_float32_t i0) \
+ int32_t r0, 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); \
vfp_movi_f(rn(reg), i0); \
vfp_##name##r_f(r0, r1, rn(reg)); \
jit_unget_reg(reg); \
@@ -1429,9 +1429,9 @@ _vfp_##name##i_f(jit_state_t *_jit, \
# define dopi(name) \
static void \
_vfp_##name##i_d(jit_state_t *_jit, \
- jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) \
+ int32_t r0, 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); \
vfp_movi_d(rn(reg), i0); \
vfp_##name##r_d(r0, r1, rn(reg)); \
jit_unget_reg(reg); \
@@ -1439,10 +1439,10 @@ _vfp_##name##i_d(jit_state_t *_jit, \
# define fbopi(name) \
static jit_word_t \
_vfp_b##name##i_f(jit_state_t *_jit, \
- jit_int32_t r0, jit_int32_t r1, jit_float32_t i0) \
+ int32_t r0, int32_t r1, jit_float32_t i0) \
{ \
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); \
vfp_movi_f(rn(reg), i0); \
word = vfp_b##name##r_f(r0, r1, rn(reg)); \
@@ -1452,10 +1452,10 @@ _vfp_b##name##i_f(jit_state_t *_jit, \
# define dbopi(name) \
static jit_word_t \
_vfp_b##name##i_d(jit_state_t *_jit, \
- jit_int32_t r0, jit_int32_t r1, jit_float64_t i0) \
+ int32_t r0, int32_t r1, jit_float64_t i0) \
{ \
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); \
vfp_movi_d(rn(reg), i0); \
word = vfp_b##name##r_d(r0, r1, rn(reg)); \
@@ -1475,9 +1475,9 @@ fopi(div)
dopi(div)
static void
-_vfp_cmp_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_cmp_f(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t rg0, rg1;
+ int32_t rg0, rg1;
if (jit_fpr_p(r0)) {
if (jit_fpr_p(r1))
VCMP_F32(r0, r1);
@@ -1504,9 +1504,9 @@ _vfp_cmp_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_cmp_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_cmp_d(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t rg0, rg1;
+ int32_t rg0, rg1;
if (jit_fpr_p(r0)) {
if (jit_fpr_p(r1))
VCMP_F64(r0, r1);
@@ -1533,7 +1533,7 @@ _vfp_cmp_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vcmp01_x(jit_state_t *_jit, int c0, int c1, jit_int32_t r0)
+_vcmp01_x(jit_state_t *_jit, int c0, int c1, int32_t r0)
{
VMRS(_R15_REGNO);
if (jit_thumb_p()) {
@@ -1571,7 +1571,7 @@ _vcmp01_x(jit_state_t *_jit, int c0, int c1, jit_int32_t r0)
static void
_vcmp01_f(jit_state_t *_jit, int c0, int c1,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+ int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_f(r1, r2);
vcmp01_x(c0, c1, r0);
@@ -1579,14 +1579,14 @@ _vcmp01_f(jit_state_t *_jit, int c0, int c1,
static void
_vcmp01_d(jit_state_t *_jit, int c0, int c1,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+ int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_d(r1, r2);
vcmp01_x(c0, c1, r0);
}
static void
-_vcmp10_x(jit_state_t *_jit, int cc, jit_int32_t r0)
+_vcmp10_x(jit_state_t *_jit, int cc, int32_t r0)
{
if (jit_thumb_p()) {
if (r0 < 8) {
@@ -1610,7 +1610,7 @@ _vcmp10_x(jit_state_t *_jit, int cc, jit_int32_t r0)
}
static void
_vcmp_10_f(jit_state_t *_jit, int cc,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+ int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_f(r1, r2);
vcmp10_x(cc, r0);
@@ -1618,7 +1618,7 @@ _vcmp_10_f(jit_state_t *_jit, int cc,
static void
_vcmp_10_d(jit_state_t *_jit, int cc,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+ int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_d(r1, r2);
vcmp10_x(cc, r0);
@@ -1642,7 +1642,7 @@ fopi(unle)
dopi(unle)
static void
-_vfp_uneqr_x(jit_state_t *_jit, jit_int32_t r0)
+_vfp_uneqr_x(jit_state_t *_jit, int32_t r0)
{
VMRS(_R15_REGNO);
if (jit_thumb_p()) {
@@ -1668,7 +1668,7 @@ _vfp_uneqr_x(jit_state_t *_jit, jit_int32_t r0)
}
static void
-_vfp_uneqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_uneqr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_f(r1, r2);
vfp_uneqr_x(r0);
@@ -1677,7 +1677,7 @@ _vfp_uneqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(uneq)
static void
-_vfp_uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_uneqr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_d(r1, r2);
vfp_uneqr_x(r0);
@@ -1686,7 +1686,7 @@ _vfp_uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(uneq)
static void
-_vcmp_01_x(jit_state_t *_jit, int cc, jit_int32_t r0)
+_vcmp_01_x(jit_state_t *_jit, int cc, int32_t r0)
{
if (jit_thumb_p()) {
if (r0 < 8) {
@@ -1711,7 +1711,7 @@ _vcmp_01_x(jit_state_t *_jit, int cc, jit_int32_t r0)
static void
_vcmp_01_f(jit_state_t *_jit, int cc,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+ int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_f(r1, r2);
vcmp_01_x(cc, r0);
@@ -1719,7 +1719,7 @@ _vcmp_01_f(jit_state_t *_jit, int cc,
static void
_vcmp_01_d(jit_state_t *_jit, int cc,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+ int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_d(r1, r2);
vcmp_01_x(cc, r0);
@@ -1731,7 +1731,7 @@ fopi(ungt)
dopi(ungt)
static void
-_vfp_ltgtr_x(jit_state_t *_jit, jit_int32_t r0)
+_vfp_ltgtr_x(jit_state_t *_jit, int32_t r0)
{
VMRS(_R15_REGNO);
if (jit_thumb_p()) {
@@ -1757,7 +1757,7 @@ _vfp_ltgtr_x(jit_state_t *_jit, jit_int32_t r0)
}
static void
-_vfp_ltgtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_ltgtr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_f(r1, r2);
vfp_ltgtr_x(r0);
@@ -1766,7 +1766,7 @@ _vfp_ltgtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(ltgt)
static void
-_vfp_ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_ltgtr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_d(r1, r2);
vfp_ltgtr_x(r0);
@@ -1775,7 +1775,7 @@ _vfp_ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(ltgt)
static void
-_vfp_ordr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_ordr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_f(r1, r2);
vcmp10_x(ARM_CC_VS, r0);
@@ -1784,7 +1784,7 @@ _vfp_ordr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(ord)
static void
-_vfp_ordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_ordr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_d(r1, r2);
vcmp10_x(ARM_CC_VS, r0);
@@ -1793,7 +1793,7 @@ _vfp_ordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(ord)
static void
-_vfp_unordr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_unordr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_f(r1, r2);
vcmp_01_x(ARM_CC_VS, r0);
@@ -1802,7 +1802,7 @@ _vfp_unordr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(unord)
static void
-_vfp_unordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_unordr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
vfp_cmp_d(r1, r2);
vcmp_01_x(ARM_CC_VS, r0);
@@ -1832,7 +1832,7 @@ _vbcmp_x(jit_state_t *_jit, int cc, jit_word_t i0)
static jit_word_t
_vbcmp_f(jit_state_t *_jit, int cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+ jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_f(r0, r1);
return (vbcmp_x(cc, i0));
@@ -1840,7 +1840,7 @@ _vbcmp_f(jit_state_t *_jit, int cc,
static jit_word_t
_vbcmp_d(jit_state_t *_jit, int cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+ jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_d(r0, r1);
return (vbcmp_x(cc, i0));
@@ -1872,7 +1872,7 @@ _vbncmp_x(jit_state_t *_jit, int cc, jit_word_t i0)
static jit_word_t
_vbncmp_f(jit_state_t *_jit, int cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+ jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_f(r0, r1);
return (vbncmp_x(cc, i0));
@@ -1880,7 +1880,7 @@ _vbncmp_f(jit_state_t *_jit, int cc,
static jit_word_t
_vbncmp_d(jit_state_t *_jit, int cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+ jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_d(r0, r1);
return (vbncmp_x(cc, i0));
@@ -1934,7 +1934,7 @@ _vfp_buneqr_x(jit_state_t *_jit, jit_word_t i0)
}
static jit_word_t
-_vfp_buneqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_vfp_buneqr_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_f(r0, r1);
return (vfp_buneqr_x(i0));
@@ -1943,7 +1943,7 @@ _vfp_buneqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
fbopi(uneq)
static jit_word_t
-_vfp_buneqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_vfp_buneqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_d(r0, r1);
return (vfp_buneqr_x(i0));
@@ -1976,7 +1976,7 @@ _vfp_bunger_x(jit_state_t *_jit, jit_word_t i0)
}
static jit_word_t
-_vfp_bunger_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_vfp_bunger_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_f(r0, r1);
return (vfp_bunger_x(i0));
@@ -1985,7 +1985,7 @@ _vfp_bunger_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
fbopi(unge)
static jit_word_t
-_vfp_bunger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_vfp_bunger_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_d(r0, r1);
return (vfp_bunger_x(i0));
@@ -2023,7 +2023,7 @@ _vfp_bltgtr_x(jit_state_t *_jit, jit_word_t i0)
}
static jit_word_t
-_vfp_bltgtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_vfp_bltgtr_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_f(r0, r1);
return (vfp_bltgtr_x(i0));
@@ -2034,7 +2034,7 @@ dbopi(ungt)
fbopi(ltgt)
static jit_word_t
-_vfp_bltgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_vfp_bltgtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
vfp_cmp_d(r0, r1);
return (vfp_bltgtr_x(i0));
@@ -2047,9 +2047,9 @@ fbopi(unord)
dbopi(unord)
static void
-_vfp_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_vfp_ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t gpr;
+ int32_t gpr;
if (jit_fpr_p(r0)) {
gpr = jit_get_reg(jit_class_gpr);
movi(rn(gpr), i0);
@@ -2061,9 +2061,9 @@ _vfp_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_vfp_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_vfp_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);
if (jit_fpr_p(r0))
@@ -2076,9 +2076,9 @@ _vfp_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_vfp_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_ldxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r0)) {
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
@@ -2090,9 +2090,9 @@ _vfp_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_vfp_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_ldxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
if (jit_fpr_p(r0))
@@ -2105,9 +2105,9 @@ _vfp_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_vfp_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_vfp_ldxi_f(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r0)) {
if (i0 >= 0) {
assert(!(i0 & 3));
@@ -2138,9 +2138,9 @@ _vfp_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_vfp_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_vfp_ldxi_d(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r0)) {
if (i0 >= 0) {
assert(!(i0 & 3));
@@ -2176,9 +2176,9 @@ _vfp_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_vfp_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_vfp_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);
movi(rn(reg), i0);
@@ -2190,9 +2190,9 @@ _vfp_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_vfp_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_vfp_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);
if (jit_fpr_p(r0))
@@ -2205,9 +2205,9 @@ _vfp_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_vfp_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_stxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r2)) {
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
@@ -2219,9 +2219,9 @@ _vfp_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_vfp_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_vfp_stxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
if (jit_fpr_p(r2))
@@ -2234,9 +2234,9 @@ _vfp_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_vfp_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_vfp_stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r1)) {
if (i0 >= 0) {
assert(!(i0 & 3));
@@ -2267,9 +2267,9 @@ _vfp_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_vfp_stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_fpr_p(r1)) {
if (i0 >= 0) {
assert(!(i0 & 3));
@@ -2305,9 +2305,9 @@ _vfp_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_vfp_vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vfp_vaarg_d(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
assert(_jitc->function->self.call & jit_call_varargs);
diff --git a/libguile/lightning/lib/jit_arm.c b/libguile/lightning/jit/arm.c
index 7578865ab..ef4a3e2e7 100644
--- a/libguile/lightning/lib/jit_arm.c
+++ b/libguile/lightning/jit/arm.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2012-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -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)
@@ -86,17 +86,17 @@ extern void __clear_cache(void *, void *);
#endif
#define PROTO 1
-# include "jit_rewind.c"
-# include "jit_arm-cpu.c"
-# include "jit_arm-swf.c"
-# include "jit_arm-vfp.c"
+# include "rewind.c"
+# include "arm-cpu.c"
+# include "arm-swf.c"
+# include "arm-vfp.c"
#undef PROTO
/*
* Initialization
*/
jit_cpu_t jit_cpu;
-jit_register_t _rvs[] = {
+static const jit_register_t _rvs[] = {
{ rc(gpr) | 0x0c, "ip" },
{ rc(sav) | rc(gpr) | 0x04, "r4" },
{ rc(sav) | rc(gpr) | 0x05, "r5" },
@@ -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, 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
@@ -1995,10 +1995,10 @@ _emit_code(jit_state_t *_jit)
}
#define CODE 1
-# include "jit_rewind.c"
-# include "jit_arm-cpu.c"
-# include "jit_arm-swf.c"
-# include "jit_arm-vfp.c"
+# include "rewind.c"
+# include "arm-cpu.c"
+# include "arm-swf.c"
+# include ", 2018arm-vfp.c"
#undef CODE
void
@@ -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, 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, 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, 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, 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) {
diff --git a/libguile/lightning/include/lightning/jit_arm.h b/libguile/lightning/jit/arm.h
index 496e89b1b..9177f1354 100644
--- a/libguile/lightning/include/lightning/jit_arm.h
+++ b/libguile/lightning/jit/arm.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2012-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -105,23 +105,23 @@ 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;
/*
* Initialization
*/
-extern jit_cpu_t jit_cpu;
+JIT_API jit_cpu_t jit_cpu;
#endif /* _jit_arm_h */
diff --git a/libguile/lightning/jit/endian.h b/libguile/lightning/jit/endian.h
new file mode 100644
index 000000000..b9b1a918d
--- /dev/null
+++ b/libguile/lightning/jit/endian.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2012-2018 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU lightning.
+ *
+ * GNU lightning is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU lightning is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * Authors:
+ * Paulo Cesar Pereira de Andrade
+ * Andy Wingo
+ */
+
+#ifndef _jit_endian_h
+#define _jit_endian_h
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <stddef.h>
+
+#if defined(__hpux) && defined(__hppa__)
+# include <machine/param.h>
+#endif
+#if defined(__alpha__) && defined(__osf__)
+# include <machine/endian.h>
+#endif
+
+#ifndef __WORDSIZE
+# if defined(WORDSIZE) /* ppc darwin */
+# define __WORDSIZE WORDSIZE
+# elif defined(__SIZEOF_POINTER__) /* ppc aix */
+# define __WORDSIZE (__SIZEOF_POINTER__ << 3)
+# elif defined(_ILP32) /* hppa hp-ux */
+# define __WORDSIZE 32
+# elif defined(_LP64) /* ia64 hp-ux (with cc +DD64) */
+# define __WORDSIZE 64
+# elif defined(_MIPS_SZPTR) /* mips irix */
+# if _MIPS_SZPTR == 32
+# define __WORDSIZE 32
+# else
+# define __WORDSIZE 64
+# endif
+# else /* From FreeBSD 9.1 stdint.h */
+# if defined(UINTPTR_MAX) && defined(UINT64_MAX) && \
+ (UINTPTR_MAX == UINT64_MAX)
+# define __WORDSIZE 64
+# else
+# define __WORDSIZE 32
+# endif
+# endif
+#endif
+#ifndef __LITTLE_ENDIAN
+# if defined(LITTLE_ENDIAN) /* ppc darwin */
+# define __LITTLE_ENDIAN LITTLE_ENDIAN
+# elif defined(__ORDER_LITTLE_ENDIAN__) /* ppc aix */
+# define __LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
+# else
+# define __LITTLE_ENDIAN 1234
+# endif
+#endif
+#ifndef __BIG_ENDIAN
+# if defined(BIG_ENDIAN) /* ppc darwin */
+# define __BIG_ENDIAN BIG_ENDIAN
+# elif defined(__ORDER_BIG_ENDIAN__) /* ppc aix */
+# define __BIG_ENDIAN __ORDER_BIG_ENDIAN__
+# else
+# define __BIG_ENDIAN 4321
+# endif
+#endif
+#ifndef __BYTE_ORDER
+# if defined(BYTE_ORDER) /* ppc darwin */
+# define __BYTE_ORDER BYTE_ORDER
+# elif defined(__BYTE_ORDER__) /* ppc aix */
+# define __BYTE_ORDER __BYTE_ORDER__
+# elif defined(_BIG_ENDIAN) /* hppa hp-ux */
+# define __BYTE_ORDER __BIG_ENDIAN
+# elif defined(__BIG_ENDIAN__) /* ia64 hp-ux */
+# define __BYTE_ORDER __BIG_ENDIAN
+# elif defined(__i386__) /* 32 bit x86 solaris */
+# define __BYTE_ORDER __LITTLE_ENDIAN
+# elif defined(__x86_64__) /* 64 bit x86 solaris */
+# define __BYTE_ORDER __LITTLE_ENDIAN
+# elif defined(__MIPSEB) /* mips irix */
+# define __BYTE_ORDER __BIG_ENDIAN
+# else
+# error cannot figure __BYTE_ORDER
+# endif
+#endif
+
+#if __WORDSIZE == 32
+#define CHOOSE_32_64(x, y) x
+#elif __WORDSIZE == 64
+#define CHOOSE_32_64(x, y) y
+#else
+#error unhandled __WORDSIZE
+#endif
+
+#define WHEN_64(x) CHOOSE_32_64(/**/, x)
+
+
+#endif /* _jit_endian_h */
diff --git a/libguile/lightning/lib/jit_hppa-cpu.c b/libguile/lightning/jit/hppa-cpu.c
index 4318f062a..68281e4a5 100644
--- a/libguile/lightning/lib/jit_hppa-cpu.c
+++ b/libguile/lightning/jit/hppa-cpu.c
@@ -48,142 +48,142 @@ typedef struct udiv {
#define _CR11_REGNO 11
#define ii(v) *_jit->pc.ui++ = v
#define f1(o,b,t,i) _f1(_jit,o,b,t,i)
-static void _f1(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f1(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t);
#define f2(o,b,r,i,j) _f2(_jit,o,b,r,i,j)
-static void _f2(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
+static void _f2(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t) maybe_unused;
#define f3(o,b,t,i,j) _f3(_jit,o,b,t,i,j)
-static void _f3(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f3(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t);
#define f4(o,b,x,s,u,y,c,z,m,t) _f4(_jit,o,b,x,s,u,y,c,z,m,t)
-static void _f4(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 _f4(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f5(o,b,i,s,a,y,c,z,m,t) _f5(_jit,o,b,i,s,a,y,c,z,m,t)
-static void _f5(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 _f5(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f6(o,b,r,s,a,x,c,y,m,i) _f6(_jit,o,b,r,s,a,x,c,y,m,i)
-static void _f6(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 _f6(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f7(o,r,i) _f7(_jit,o,r,i)
-static void _f7(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f7(jit_state_t*,int32_t,int32_t,int32_t);
#define f8(o,r2,r1,cf,e1,x,e2,y,d,t) _f8(_jit,o,r2,r1,cf,e1,x,e2,y,d,t)
-static void _f8(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 _f8(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t);
#define f9(o,r,t,cf,e1,im) _f9(_jit,o,r,t,cf,e1,im)
static void _f9(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t);
#define f10(o,r2,r1,u,v,w,x,sa,y,t) _f10(_jit,o,r2,r1,u,v,w,x,sa,y,t)
-static void _f10(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) maybe_unused;
+static void _f10(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f11(o,r2,r1,c,x,y,z,u,t) _f11(_jit,o,r2,r1,c,x,y,z,u,t)
-static void _f11(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 _f11(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f12(o,r,t,c,x,se,y,c1,z,clen) _f12(_jit,o,r,t,c,x,se,y,c1,z,clen)
-static void _f12(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 _f12(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f13(o,t,r,c,x,nz,c1,clen) _f13(_jit,o,t,r,c,x,nz,c1,clen)
-static void _f13(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);
+static void _f13(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t);
#define f13x(o,t,i,c,x,nz,c1,clen) _f13x(_jit,o,t,i,c,x,nz,c1,clen)
-static void _f13x(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) maybe_unused;
+static void _f13x(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t) maybe_unused;
#define f14(o,r2,r1,c,x,cp,y,cpos,t) _f14(_jit,o,r2,r1,c,x,cp,y,cpos,t)
-static void _f14(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 _f14(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f15(o,r,t,c,c1,p,se,pos,clen) _f15(_jit,o,r,t,c,c1,p,se,pos,clen)
-static void _f15(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 _f15(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f16(o,t,r,c,c1,cp,nz,cpos,clen) _f16(_jit,o,t,r,c,c1,cp,nz,cpos,clen)
-static void _f16(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 _f16(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f16x(o,t,i,c,c1,cp,nz,cpos,clen) _f16x(_jit,o,t,i,c,c1,cp,nz,cpos,clen)
-static void _f16x(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 _f16x(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f17(o,r2,r1,c,i,n) _f17(_jit,o,r2,r1,c,i,n)
-static void _f17(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f17(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f17x(o,r2,r1,c,i,n) _f17x(_jit,o,r2,r1,c,i,n)
-static void _f17x(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f17x(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f18(o,p,r,c,i,n) _f18(_jit,o,p,r,c,i,n)
-static void _f18(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f18(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f19(o,b,s,i,n) _f19(_jit,o,b,s,i,n)
-static void _f19(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
+static void _f19(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t) maybe_unused;
#define f20(o,t,i,g,n) _f20(_jit,o,t,i,g,n)
-static void _f20(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f20(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t);
#define f21(o,t,x,y,n) _f21(_jit,o,t,x,y,n)
-static void _f21(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f21(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t);
#define f22(o,b,x,r,n,p) _f22(_jit,o,b,x,r,n,p)
-static void _f22(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f22(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f23(o,a,b,c,d,e,f,g,h) _f23(_jit,o,a,b,c,d,e,f,g,h)
-static void _f23(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 _f23(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f24(o,b,x,s,y,m,r) _f24(_jit,o,b,x,s,y,m,r)
-static void _f24(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 _f24(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t) maybe_unused;
#define f25(o,b,i,s,y,m,r) _f25(_jit,o,b,i,s,y,m,r)
-static void _f25(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 _f25(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t) maybe_unused;
#define f26(o,b,x,s,y,m,r) _f26(_jit,o,b,x,s,y,m,r)
-static void _f26(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 _f26(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t) maybe_unused;
#define f27(o,i,j) _f27(_jit,o,i,j)
-static void _f27(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
+static void _f27(jit_state_t*,int32_t,int32_t,int32_t) maybe_unused;
#define f28(o,i) _f28(_jit,o,i)
-static void _f28(jit_state_t*,jit_int32_t,jit_int32_t) maybe_unused;
+static void _f28(jit_state_t*,int32_t,int32_t) maybe_unused;
#define f29(o,r,x,s,y,t) _f29(_jit,o,r,x,s,y,t)
-static void _f29(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
+static void _f29(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f30(o,b,r,s,x,y,t) _f30(_jit,o,b,r,s,x,y,t)
-static void _f30(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 _f30(jit_state_t*,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f31(o,t,r,v,x,y) _f31(_jit,o,t,r,v,x,y)
-static void _f31(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f31(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t);
#define f33(o,x,r,y,z,u) _f33(_jit,o,x,r,y,z,u)
-static void _f33(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
+static void _f33(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f34(o,o1,x,sf,n,o2) _f34(_jit,o,o1,x,sf,n,o2)
-static void _f34(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
+static void _f34(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f35(o,op,x,sf,n,t) _f35(_jit,o,op,x,sf,n,t)
-static void _f35(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
+static void _f35(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f36(o,r,o1,x,sf,n,o2) _f36(_jit,o,r,o1,x,sf,n,o2)
-static void _f36(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 _f36(jit_state_t*,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t) maybe_unused;
#define f37(o,r2,r1,o1,x,sf,n,o2) _f37(_jit,o,r2,r1,o1,x,sf,n,o2)
-static void _f37(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) maybe_unused;
+static void _f37(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t) maybe_unused;
#define f38(o,s,u,n) _f38(_jit,o,s,u,n)
-static void _f38(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t) maybe_unused;
+static void _f38(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t) maybe_unused;
/* nulify next instruction if condition is met with addition */
#define ADD_CF_NV 0 /* never */
#define ADD_CF_EQ 2 /* O1 == -O2 (word) */
@@ -641,13 +641,13 @@ static void _f38(jit_state_t*,jit_int32_t,
#define UXOR(r1,r2,t) f8(0x2,r2,r1,LOG_CC_NV,0,1,1,2,0,t)
#define XOR(r1,r2,t) f8(0x2,r2,r1,LOG_CC_NV,0,1,0,2,0,t)
# define nop(c) _nop(_jit,c)
-static void _nop(jit_state_t*,jit_int32_t);
+static void _nop(jit_state_t*,int32_t);
#define movr(r0,r1) _movr(_jit,r0,r1)
-static void _movr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _movr(jit_state_t*,int32_t,int32_t);
#define movi(r0,i0) _movi(_jit,r0,i0)
-static void _movi(jit_state_t*,jit_int32_t,jit_word_t);
+static void _movi(jit_state_t*,int32_t,jit_word_t);
#define movi_p(r0,i0) _movi_p(_jit,r0,i0)
-static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
+static jit_word_t _movi_p(jit_state_t*,int32_t,jit_word_t);
#define comr(r0,r1) UADDCM(_R0_REGNO,r1,r0)
#define negr(r0,r1) SUB(_R0_REGNO,r1,r0)
#define extr_c(r0,r1) EXTRWR(r1,31,8,r0)
@@ -655,105 +655,105 @@ static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
#define extr_s(r0,r1) EXTRWR(r1,31,16,r0)
#define extr_us(r0,r1) EXTRWR_U(r1,31,16,r0)
#if __BYTE_ORDER == __BIG_ENDIAN
-# define htonr_us(r0,r1) extr_us(r0,r1)
-# define htonr_ui(r0,r1) movr(r0,r1)
+# define bswapr_us(r0,r1) extr_us(r0,r1)
+# define bswapr_ui(r0,r1) movr(r0,r1)
#else
-# error need htonr implementation
+# error need bswapr implementation
#endif
#define addr(r0,r1,r2) ADD(r1,r2,r0)
#define addi(r0,r1,i0) _addi(_jit,r0,r1,i0)
-static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define addcr(r0,r1,r2) addr(r0,r1,r2)
#define addci(r0,r1,i0) _addci(_jit,r0,r1,i0)
-static void _addci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addci(jit_state_t*,int32_t,int32_t,jit_word_t);
#define addxr(r0,r1,r2) ADD_C(r1,r2,r0)
#define addxi(r0,r1,i0) _addxi(_jit,r0,r1,i0)
-static void _addxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addxi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define subr(r0,r1,r2) SUB(r1,r2,r0)
#define subi(r0,r1,i0) _subi(_jit,r0,r1,i0)
-static void _subi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define subcr(r0,r1,r2) subr(r0,r1,r2)
#define subci(r0,r1,i0) _subci(_jit,r0,r1,i0)
-static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subci(jit_state_t*,int32_t,int32_t,jit_word_t);
#define subxr(r0,r1,r2) SUB_B(r1,r2,r0)
#define subxi(r0,r1,i0) _subxi(_jit,r0,r1,i0)
-static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subxi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rsbi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define mulr(r0,r1,r2) _mulr(_jit,r0,r1,r2)
-static void _mulr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _mulr(jit_state_t*,int32_t,int32_t,int32_t);
#define muli(r0,r1,i0) _muli(_jit,r0,r1,i0)
-static void _muli(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _muli(jit_state_t*,int32_t,int32_t,jit_word_t);
static long long __llmul(int, int);
#define qmulr(r0,r1,r2,r3) _qmulr(_jit,r0,r1,r2,r3)
static void _qmulr(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t);
#define qmuli(r0,r1,r2,i0) _qmuli(_jit,r0,r1,r2,i0)
static void _qmuli(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+ int32_t,int32_t,int32_t,jit_word_t);
#define qmulr_u(r0,r1,r2,r3) _qmulr_u(_jit,r0,r1,r2,r3)
static void _qmulr_u(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t);
#define qmuli_u(r0,r1,r2,i0) _qmuli_u(_jit,r0,r1,r2,i0)
static void _qmuli_u(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+ int32_t,int32_t,int32_t,jit_word_t);
static int __idiv(int, int);
#define divr(r0,r1,r2) _divr(_jit,r0,r1,r2)
-static void _divr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr(jit_state_t*,int32_t,int32_t,int32_t);
#define divi(r0,r1,i0) _divi(_jit,r0,r1,i0)
-static void _divi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi(jit_state_t*,int32_t,int32_t,jit_word_t);
static unsigned int __udiv(unsigned int, unsigned int);
#define divr_u(r0,r1,r2) _divr_u(_jit,r0,r1,r2)
-static void _divr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr_u(jit_state_t*,int32_t,int32_t,int32_t);
#define divi_u(r0,r1,i0) _divi_u(_jit,r0,r1,i0)
-static void _divi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
static int __irem(int, int);
#define remr(r0,r1,r2) _remr(_jit,r0,r1,r2)
-static void _remr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr(jit_state_t*,int32_t,int32_t,int32_t);
#define remi(r0,r1,i0) _remi(_jit,r0,r1,i0)
-static void _remi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi(jit_state_t*,int32_t,int32_t,jit_word_t);
static unsigned int __urem(unsigned int, unsigned int);
#define remr_u(r0,r1,r2) _remr_u(_jit,r0,r1,r2)
-static void _remr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr_u(jit_state_t*,int32_t,int32_t,int32_t);
#define remi_u(r0,r1,i0) _remi_u(_jit,r0,r1,i0)
-static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
static idiv_t __idivrem(int, int);
#define qdivr(r0,r1,r2,r3) _qdivr(_jit,r0,r1,r2,r3)
static void _qdivr(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t);
#define qdivi(r0,r1,r2,i0) _qdivi(_jit,r0,r1,r2,i0)
static void _qdivi(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+ int32_t,int32_t,int32_t,jit_word_t);
static udiv_t __udivrem(unsigned int, unsigned int);
#define qdivr_u(r0,r1,r2,r3) _qdivr_u(_jit,r0,r1,r2,r3)
static void _qdivr_u(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t);
#define qdivi_u(r0,r1,r2,i0) _qdivi_u(_jit,r0,r1,r2,i0)
static void _qdivi_u(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+ int32_t,int32_t,int32_t,jit_word_t);
#define andr(r0,r1,r2) AND(r1,r2,r0)
#define andi(r0,r1,i0) _andi(_jit,r0,r1,i0)
-static void _andi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _andi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define orr(r0,r1,r2) OR(r1,r2,r0)
#define ori(r0,r1,i0) _ori(_jit,r0,r1,i0)
-static void _ori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ori(jit_state_t*,int32_t,int32_t,jit_word_t);
#define xorr(r0,r1,r2) XOR(r1,r2,r0)
#define xori(r0,r1,i0) _xori(_jit,r0,r1,i0)
-static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _xori(jit_state_t*,int32_t,int32_t,jit_word_t);
#define lshr(r0,r1,r2) _lshr(_jit,r0,r1,r2)
-static void _lshr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _lshr(jit_state_t*,int32_t,int32_t,int32_t);
#define lshi(r0,r1,i0) SHLWI(r1,i0,r0)
#define rshr(r0,r1,r2) _rshr(_jit,r0,r1,r2)
-static void _rshr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _rshr(jit_state_t*,int32_t,int32_t,int32_t);
#define rshi(r0,r1,i0) SHRWI(r1,i0,r0)
#define rshr_u(r0,r1,r2) _rshr_u(_jit,r0,r1,r2)
-static void _rshr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _rshr_u(jit_state_t*,int32_t,int32_t,int32_t);
#define rshi_u(r0,r1,i0) SHRWI_U(r1,i0,r0)
#define cmpr(c,r0,r1,r2) _cmpr(_jit,c,r0,r1,r2)
-static void _cmpr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _cmpr(jit_state_t*,jit_word_t,int32_t,int32_t,int32_t);
#define cmpi(c,ci,r0,r1,i0) _cmpi(_jit,c,ci,r0,r1,i0)
static void _cmpi(jit_state_t*,jit_word_t,jit_word_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+ int32_t,int32_t,jit_word_t);
#define ltr(r0,r1,r2) cmpr(CS_CC_GE,r0,r1,r2)
#define lti(r0,r1,i0) cmpi(CS_CC_GE,CS_CC_LE,r0,r1,i0)
#define ltr_u(r0,r1,r2) cmpr(CS_CC_UGE,r0,r1,r2)
@@ -775,73 +775,73 @@ static void _cmpi(jit_state_t*,jit_word_t,jit_word_t,
#define ner(r0,r1,r2) cmpr(CS_CC_EQ,r0,r1,r2)
#define nei(r0,r1,i0) cmpi(CS_CC_EQ,CS_CC_EQ,r0,r1,i0)
#define ldr_c(r0,r1) _ldr_c(_jit,r0,r1)
-static void _ldr_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_c(jit_state_t*,int32_t,int32_t);
#define ldi_c(r0,i0) _ldi_c(_jit,r0,i0)
-static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_c(jit_state_t*,int32_t,jit_word_t);
#define ldxr_c(r0,r1,r2) _ldxr_c(_jit,r0,r1,r2)
-static void _ldxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_c(jit_state_t*,int32_t,int32_t,int32_t);
#define ldxi_c(r0,r1,i0) _ldxi_c(_jit,r0,r1,i0)
-static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_c(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldr_uc(r0,r1) LDBI(_R0_REGNO,r1,r0)
#define ldi_uc(r0,i0) _ldi_uc(_jit,r0,i0)
-static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_uc(jit_state_t*,int32_t,jit_word_t);
#define ldxr_uc(r0,r1,r2) LDB(r2,r1,r0)
#define ldxi_uc(r0,r1,i0) _ldxi_uc(_jit,r0,r1,i0)
-static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_uc(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldr_s(r0,r1) _ldr_s(_jit,r0,r1)
-static void _ldr_s(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_s(jit_state_t*,int32_t,int32_t);
#define ldi_s(r0,i0) _ldi_s(_jit,r0,i0)
-static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_s(jit_state_t*,int32_t,jit_word_t);
#define ldxr_s(r0,r1,r2) _ldxr_s(_jit,r0,r1,r2)
-static void _ldxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_s(jit_state_t*,int32_t,int32_t,int32_t);
#define ldxi_s(r0,r1,i0) _ldxi_s(_jit,r0,r1,i0)
-static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_s(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldr_us(r0,r1) LDHI(_R0_REGNO,r1,r0)
#define ldi_us(r0,i0) _ldi_us(_jit,r0,i0)
-static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_us(jit_state_t*,int32_t,jit_word_t);
#define ldxr_us(r0,r1,r2) LDH(r2,r1,r0)
#define ldxi_us(r0,r1,i0) _ldxi_us(_jit,r0,r1,i0)
-static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_us(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldr(r0,r1) ldr_ui(r0,r1)
#define ldr_i(r0,r1) ldr_ui(r0,r1)
#define ldr_ui(r0,r1) LDWI(_R0_REGNO,r1,r0)
#define ldi_i(r0,i0) ldi_ui(r0,i0)
#define ldi_ui(r0,i0) _ldi_ui(_jit,r0,i0)
-static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_ui(jit_state_t*,int32_t,jit_word_t);
#define ldxr_i(r0,r1,r2) ldxr_ui(r0,r1,r2)
#define ldxr_ui(r0,r1,r2) LDW(r2,r1,r0)
#define ldxi(r0,r1,i0) ldxi_ui(r0,r1,i0)
#define ldxi_i(r0,r1,i0) ldxi_ui(r0,r1,i0)
#define ldxi_ui(r0,r1,i0) _ldxi_ui(_jit,r0,r1,i0)
-static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_ui(jit_state_t*,int32_t,int32_t,jit_word_t);
#define str_c(r0,r1) STBI(r1,_R0_REGNO,r0)
#define sti_c(i0,r0) _sti_c(_jit,i0,r0)
-static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_c(jit_state_t*,jit_word_t,int32_t);
#define stxr_c(r0,r1,r2) _stxr_c(_jit,r0,r1,r2)
-static void _stxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_c(jit_state_t*,int32_t,int32_t,int32_t);
#define stxi_c(i0,r0,r1) _stxi_c(_jit,i0,r0,r1)
-static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_c(jit_state_t*,jit_word_t,int32_t,int32_t);
#define str_s(r0,r1) STHI(r1,_R0_REGNO,r0)
#define sti_s(i0,r0) _sti_s(_jit,i0,r0)
-static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_s(jit_state_t*,jit_word_t,int32_t);
#define stxr_s(r0,r1,r2) _stxr_s(_jit,r0,r1,r2)
-static void _stxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_s(jit_state_t*,int32_t,int32_t,int32_t);
#define stxi_s(i0,r0,r1) _stxi_s(_jit,i0,r0,r1)
-static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_s(jit_state_t*,jit_word_t,int32_t,int32_t);
#define str_i(r0,r1) STWI(r1,_R0_REGNO,r0)
#define sti_i(i0,r0) _sti_i(_jit,i0,r0)
-static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_i(jit_state_t*,jit_word_t,int32_t);
#define stxr_i(r0,r1,r2) _stxr_i(_jit,r0,r1,r2)
-static void _stxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_i(jit_state_t*,int32_t,int32_t,int32_t);
#define stxi(i0,r0,r1) stxi_i(i0,r0,r1)
#define stxi_i(i0,r0,r1) _stxi_i(_jit,i0,r0,r1)
-static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_i(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bcmpr(c,i0,r0,r1) _bcmpr(_jit,c,i0,r0,r1)
static jit_word_t _bcmpr(jit_state_t*,jit_word_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+ jit_word_t,int32_t,int32_t);
#define bcmpi(c,ci,i0,r0,i1) _bcmpi(_jit,c,ci,i0,r0,i1)
static jit_word_t _bcmpi(jit_state_t*,jit_word_t,jit_word_t,
- jit_word_t,jit_int32_t,jit_word_t);
+ jit_word_t,int32_t,jit_word_t);
#define bltr(i0,r0,r1) bcmpr(CS_CC_LT,i0,r0,r1)
#define blti(i0,r0,r1) bcmpi(CS_CC_LT,CS_CC_GT,i0,r0,r1)
#define bltr_u(i0,r0,r1) bcmpr(CS_CC_ULT,i0,r0,r1)
@@ -864,54 +864,54 @@ static jit_word_t _bcmpi(jit_state_t*,jit_word_t,jit_word_t,
#define bnei(i0,r0,r1) bcmpi(CS_CC_NE,CS_CC_NE,i0,r0,r1)
#define bmxr(c,i0,r0,r1) _bmxr(_jit,c,i0,r0,r1)
static jit_word_t _bmxr(jit_state_t*,jit_bool_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+ jit_word_t,int32_t,int32_t);
#define bmxi(c,i0,r0,i1) _bmxi(_jit,c,i0,r0,i1)
static jit_word_t _bmxi(jit_state_t*,jit_bool_t,
- jit_word_t,jit_int32_t,jit_word_t);
+ jit_word_t,int32_t,jit_word_t);
#define bmcr(r0,r1,r2) bmxr(0,r0,r1,r2)
#define bmci(r0,r1,r2) bmxi(0,r0,r1,r2)
#define bmsr(r0,r1,r2) bmxr(1,r0,r1,r2)
#define bmsi(r0,r1,r2) bmxi(1,r0,r1,r2)
#define boaddr(i0,r0,r1) _boaddr(_jit,i0,r0,r1)
-static jit_word_t _boaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _boaddr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define boaddi(i0,r0,i1) _boaddi(_jit,i0,r0,i1)
-static jit_word_t _boaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _boaddi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define boaddr_u(i0,r0,r1) _boaddr_u(_jit,i0,r0,r1)
-static jit_word_t _boaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _boaddr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define boaddi_u(i0,r0,i1) _boaddi_u(_jit,i0,r0,i1)
-static jit_word_t _boaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _boaddi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bxaddr(i0,r0,r1) _bxaddr(_jit,i0,r0,r1)
-static jit_word_t _bxaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxaddr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bxaddi(i0,r0,i1) _bxaddi(_jit,i0,r0,i1)
-static jit_word_t _bxaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxaddi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bxaddr_u(i0,r0,r1) _bxaddr_u(_jit,i0,r0,r1)
-static jit_word_t _bxaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxaddr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bxaddi_u(i0,r0,i1) _bxaddi_u(_jit,i0,r0,i1)
-static jit_word_t _bxaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxaddi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bosubr(i0,r0,r1) _bosubr(_jit,i0,r0,r1)
-static jit_word_t _bosubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bosubr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bosubi(i0,r0,i1) _bosubi(_jit,i0,r0,i1)
-static jit_word_t _bosubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bosubi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bosubr_u(i0,r0,r1) _bosubr_u(_jit,i0,r0,r1)
-static jit_word_t _bosubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bosubr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bosubi_u(i0,r0,i1) _bosubi_u(_jit,i0,r0,i1)
-static jit_word_t _bosubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bosubi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bxsubr(i0,r0,r1) _bxsubr(_jit,i0,r0,r1)
-static jit_word_t _bxsubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxsubr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bxsubi(i0,r0,i1) _bxsubi(_jit,i0,r0,i1)
-static jit_word_t _bxsubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxsubi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bxsubr_u(i0,r0,r1) _bxsubr_u(_jit,i0,r0,r1)
-static jit_word_t _bxsubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxsubr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bxsubi_u(i0,r0,i1) _bxsubi_u(_jit,i0,r0,i1)
-static jit_word_t _bxsubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxsubi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define jmpr(r0) _jmpr(_jit,r0)
-static void _jmpr(jit_state_t*,jit_int32_t);
+static void _jmpr(jit_state_t*,int32_t);
#define jmpi(i0) _jmpi(_jit,i0)
static void _jmpi(jit_state_t*,jit_word_t);
#define jmpi_p(i0) _jmpi_p(_jit,i0)
static jit_word_t _jmpi_p(jit_state_t*,jit_word_t);
#define callr(r0) _callr(_jit,r0)
-static void _callr(jit_state_t*,jit_int32_t);
+static void _callr(jit_state_t*,int32_t);
#define calli(i0) _calli(_jit,i0)
static void _calli(jit_state_t*,jit_word_t);
#define calli_p(i0) _calli_p(_jit,i0)
@@ -921,9 +921,9 @@ static void _prolog(jit_state_t*, jit_node_t*);
#define epilog(node) _epilog(_jit, node)
static void _epilog(jit_state_t*, jit_node_t*);
#define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
+static void _vastart(jit_state_t*, int32_t);
#define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vaarg(jit_state_t*, int32_t, int32_t);
#define patch_at(i,l) _patch_at(_jit,i,l)
static void _patch_at(jit_state_t*,jit_word_t,jit_word_t);
#endif
@@ -1017,8 +1017,8 @@ re_assemble_22 (int as22)
}
static void
-_f1(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t b, jit_int32_t t, jit_int32_t i)
+_f1(jit_state_t *_jit, int32_t o,
+ int32_t b, int32_t t, int32_t i)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1028,8 +1028,8 @@ _f1(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f2(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t b, jit_int32_t t, jit_int32_t i, jit_int32_t j)
+_f2(jit_state_t *_jit, int32_t o,
+ int32_t b, int32_t t, int32_t i, int32_t j)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1040,8 +1040,8 @@ _f2(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f3(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t b, jit_int32_t t, jit_int32_t i, jit_int32_t j)
+_f3(jit_state_t *_jit, int32_t o,
+ int32_t b, int32_t t, int32_t i, int32_t j)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1052,9 +1052,9 @@ _f3(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f4(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
- jit_int32_t x, jit_int32_t s, jit_int32_t u, jit_int32_t y,
- jit_int32_t c, jit_int32_t z, jit_int32_t m, jit_int32_t t)
+_f4(jit_state_t *_jit, int32_t o, int32_t b,
+ int32_t x, int32_t s, int32_t u, int32_t y,
+ int32_t c, int32_t z, int32_t m, int32_t t)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1070,9 +1070,9 @@ _f4(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
}
static void
-_f5(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
- jit_int32_t i, jit_int32_t s, jit_int32_t a, jit_int32_t y,
- jit_int32_t c, jit_int32_t z, jit_int32_t m, jit_int32_t t)
+_f5(jit_state_t *_jit, int32_t o, int32_t b,
+ int32_t i, int32_t s, int32_t a, int32_t y,
+ int32_t c, int32_t z, int32_t m, int32_t t)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1088,9 +1088,9 @@ _f5(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
}
static void
-_f6(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
- jit_int32_t r, jit_int32_t s, jit_int32_t a, jit_int32_t x,
- jit_int32_t c, jit_int32_t y, jit_int32_t m, jit_int32_t i)
+_f6(jit_state_t *_jit, int32_t o, int32_t b,
+ int32_t r, int32_t s, int32_t a, int32_t x,
+ int32_t c, int32_t y, int32_t m, int32_t i)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1106,7 +1106,7 @@ _f6(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
}
static void
-_f7(jit_state_t *_jit, jit_int32_t o, jit_int32_t r, jit_int32_t i)
+_f7(jit_state_t *_jit, int32_t o, int32_t r, int32_t i)
{
assert(!(o & ~0x3f));
assert(!(r & ~0x1f));
@@ -1115,10 +1115,10 @@ _f7(jit_state_t *_jit, jit_int32_t o, jit_int32_t r, jit_int32_t i)
}
static void
-_f8(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t r2, jit_int32_t r1, jit_int32_t cf,
- jit_int32_t e1, jit_int32_t x, jit_int32_t e2,
- jit_int32_t e3, jit_int32_t d, jit_int32_t t)
+_f8(jit_state_t *_jit, int32_t o,
+ int32_t r2, int32_t r1, int32_t cf,
+ int32_t e1, int32_t x, int32_t e2,
+ int32_t e3, int32_t d, int32_t t)
{
assert(!(o & ~0x3f));
assert(!(r2 & ~0x1f));
@@ -1136,8 +1136,8 @@ _f8(jit_state_t *_jit, jit_int32_t o,
static void
_f9(jit_state_t *_jit,
- jit_int32_t o, jit_int32_t r, jit_int32_t t,
- jit_int32_t cf, jit_int32_t e1, jit_int32_t i)
+ int32_t o, int32_t r, int32_t t,
+ int32_t cf, int32_t e1, int32_t i)
{
assert(!(o & ~0x3f));
assert(!(r & ~0x1f));
@@ -1149,9 +1149,9 @@ _f9(jit_state_t *_jit,
}
static void
-_f10(jit_state_t *_jit, jit_int32_t o, jit_int32_t r2,
- jit_int32_t r1, jit_int32_t u, jit_int32_t v, jit_int32_t w,
- jit_int32_t x, jit_int32_t sa, jit_int32_t y, jit_int32_t t)
+_f10(jit_state_t *_jit, int32_t o, int32_t r2,
+ int32_t r1, int32_t u, int32_t v, int32_t w,
+ int32_t x, int32_t sa, int32_t y, int32_t t)
{
assert(!(o & ~0x3f));
assert(!(r2 & ~0x1f));
@@ -1168,9 +1168,9 @@ _f10(jit_state_t *_jit, jit_int32_t o, jit_int32_t r2,
}
static void
-_f11(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t r2, jit_int32_t r1, jit_int32_t c, jit_int32_t x,
- jit_int32_t y, jit_int32_t z, jit_int32_t u, jit_int32_t t)
+_f11(jit_state_t *_jit, int32_t o,
+ int32_t r2, int32_t r1, int32_t c, int32_t x,
+ int32_t y, int32_t z, int32_t u, int32_t t)
{
assert(!(o & ~0x3f));
assert(!(r1 & ~0x1f));
@@ -1185,9 +1185,9 @@ _f11(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f12(jit_state_t *_jit, jit_int32_t o, jit_int32_t r,
- jit_int32_t t, jit_int32_t c, jit_int32_t x, jit_int32_t se,
- jit_int32_t y, jit_int32_t c1, jit_int32_t z, jit_int32_t clen)
+_f12(jit_state_t *_jit, int32_t o, int32_t r,
+ int32_t t, int32_t c, int32_t x, int32_t se,
+ int32_t y, int32_t c1, int32_t z, int32_t clen)
{
assert(!(o & ~0x3f));
assert(!(r & ~0x1f));
@@ -1204,9 +1204,9 @@ _f12(jit_state_t *_jit, jit_int32_t o, jit_int32_t r,
}
static void
-_f13(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
- jit_int32_t r, jit_int32_t c, jit_int32_t x,
- jit_int32_t nz, jit_int32_t c1, jit_int32_t clen)
+_f13(jit_state_t *_jit, int32_t o, int32_t t,
+ int32_t r, int32_t c, int32_t x,
+ int32_t nz, int32_t c1, int32_t clen)
{
assert(!(o & ~0x3f));
assert(!(t & ~0x1f));
@@ -1221,9 +1221,9 @@ _f13(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
}
static void
-_f13x(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
- jit_int32_t i, jit_int32_t c, jit_int32_t x,
- jit_int32_t nz, jit_int32_t c1, jit_int32_t clen)
+_f13x(jit_state_t *_jit, int32_t o, int32_t t,
+ int32_t i, int32_t c, int32_t x,
+ int32_t nz, int32_t c1, int32_t clen)
{
assert(!(o & ~0x3f));
assert(!(t & ~0x1f));
@@ -1237,9 +1237,9 @@ _f13x(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
}
static void
-_f14(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t r2, jit_int32_t r1, jit_int32_t c, jit_int32_t x,
- jit_int32_t cp, jit_int32_t y, jit_int32_t cpos, jit_int32_t t)
+_f14(jit_state_t *_jit, int32_t o,
+ int32_t r2, int32_t r1, int32_t c, int32_t x,
+ int32_t cp, int32_t y, int32_t cpos, int32_t t)
{
assert(!(o & ~0x3f));
assert(!(r1 & ~0x1f));
@@ -1254,9 +1254,9 @@ _f14(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f15(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t r, jit_int32_t t, jit_int32_t c, jit_int32_t c1,
- jit_int32_t p, jit_int32_t se, jit_int32_t pos, jit_int32_t clen)
+_f15(jit_state_t *_jit, int32_t o,
+ int32_t r, int32_t t, int32_t c, int32_t c1,
+ int32_t p, int32_t se, int32_t pos, int32_t clen)
{
assert(!(o & ~0x3f));
assert(!(r & ~0x1f));
@@ -1272,9 +1272,9 @@ _f15(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f16(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t t, jit_int32_t r, jit_int32_t c, jit_int32_t c1,
- jit_int32_t cp, jit_int32_t nz, jit_int32_t cpos, jit_int32_t clen)
+_f16(jit_state_t *_jit, int32_t o,
+ int32_t t, int32_t r, int32_t c, int32_t c1,
+ int32_t cp, int32_t nz, int32_t cpos, int32_t clen)
{
assert(!(o & ~0x3f));
assert(!(t & ~0x1f));
@@ -1290,9 +1290,9 @@ _f16(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f16x(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t t, jit_int32_t i, jit_int32_t c, jit_int32_t c1,
- jit_int32_t cp, jit_int32_t nz, jit_int32_t cpos, jit_int32_t clen)
+_f16x(jit_state_t *_jit, int32_t o,
+ int32_t t, int32_t i, int32_t c, int32_t c1,
+ int32_t cp, int32_t nz, int32_t cpos, int32_t clen)
{
assert(!(o & ~0x3f));
assert(!(t & ~0x1f));
@@ -1308,8 +1308,8 @@ _f16x(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f17(jit_state_t *_jit, jit_int32_t o, jit_int32_t r2,
- jit_int32_t r1, jit_int32_t c, jit_int32_t i, jit_int32_t n)
+_f17(jit_state_t *_jit, int32_t o, int32_t r2,
+ int32_t r1, int32_t c, int32_t i, int32_t n)
{
assert(!(o & ~0x3f));
assert(!(r2 & ~0x1f));
@@ -1321,8 +1321,8 @@ _f17(jit_state_t *_jit, jit_int32_t o, jit_int32_t r2,
}
static void
-_f17x(jit_state_t *_jit, jit_int32_t o, jit_int32_t r,
- jit_int32_t i, jit_int32_t c, jit_int32_t t, jit_int32_t n)
+_f17x(jit_state_t *_jit, int32_t o, int32_t r,
+ int32_t i, int32_t c, int32_t t, int32_t n)
{
assert(!(o & ~0x3f));
assert(!(r & ~0x1f));
@@ -1335,8 +1335,8 @@ _f17x(jit_state_t *_jit, jit_int32_t o, jit_int32_t r,
}
static void
-_f18(jit_state_t *_jit, jit_int32_t o, jit_int32_t p,
- jit_int32_t r, jit_int32_t c, jit_int32_t i, jit_int32_t n)
+_f18(jit_state_t *_jit, int32_t o, int32_t p,
+ int32_t r, int32_t c, int32_t i, int32_t n)
{
assert(!(o & ~0x3f));
assert(!(p & ~0x1f));
@@ -1348,8 +1348,8 @@ _f18(jit_state_t *_jit, jit_int32_t o, jit_int32_t p,
}
static void
-_f19(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
- jit_int32_t s, jit_int32_t i, jit_int32_t n)
+_f19(jit_state_t *_jit, int32_t o, int32_t b,
+ int32_t s, int32_t i, int32_t n)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1360,8 +1360,8 @@ _f19(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
}
static void
-_f20(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
- jit_int32_t i, jit_int32_t g, jit_int32_t n)
+_f20(jit_state_t *_jit, int32_t o, int32_t t,
+ int32_t i, int32_t g, int32_t n)
{
assert(!(o & ~0x3f));
assert(!(t & ~0x1f));
@@ -1372,8 +1372,8 @@ _f20(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
}
static void
-_f21(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
- jit_int32_t x, jit_int32_t y, jit_int32_t n)
+_f21(jit_state_t *_jit, int32_t o, int32_t t,
+ int32_t x, int32_t y, int32_t n)
{
assert(!(o & ~0x3f));
assert(!(t & ~0x1f));
@@ -1384,8 +1384,8 @@ _f21(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
}
static void
-_f22(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
- jit_int32_t x, jit_int32_t r, jit_int32_t n, jit_int32_t p)
+_f22(jit_state_t *_jit, int32_t o, int32_t b,
+ int32_t x, int32_t r, int32_t n, int32_t p)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1397,9 +1397,9 @@ _f22(jit_state_t *_jit, jit_int32_t o, jit_int32_t b,
}
static void
-_f23(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t a, jit_int32_t b, jit_int32_t c, jit_int32_t d,
- jit_int32_t e, jit_int32_t f, jit_int32_t g, jit_int32_t h)
+_f23(jit_state_t *_jit, int32_t o,
+ int32_t a, int32_t b, int32_t c, int32_t d,
+ int32_t e, int32_t f, int32_t g, int32_t h)
{
assert(!(o & ~0x3f));
assert(!(a & ~0x1f));
@@ -1414,9 +1414,9 @@ _f23(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f24(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t b, jit_int32_t x, jit_int32_t s,
- jit_int32_t y, jit_int32_t m,jit_int32_t r)
+_f24(jit_state_t *_jit, int32_t o,
+ int32_t b, int32_t x, int32_t s,
+ int32_t y, int32_t m,int32_t r)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1429,9 +1429,9 @@ _f24(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f25(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t b, jit_int32_t i, jit_int32_t s,
- jit_int32_t y, jit_int32_t m, jit_int32_t r)
+_f25(jit_state_t *_jit, int32_t o,
+ int32_t b, int32_t i, int32_t s,
+ int32_t y, int32_t m, int32_t r)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1444,9 +1444,9 @@ _f25(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f26(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t b, jit_int32_t x, jit_int32_t s,
- jit_int32_t y, jit_int32_t m,jit_int32_t r)
+_f26(jit_state_t *_jit, int32_t o,
+ int32_t b, int32_t x, int32_t s,
+ int32_t y, int32_t m,int32_t r)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1459,7 +1459,7 @@ _f26(jit_state_t *_jit, jit_int32_t o,
}
static void
-_f27(jit_state_t *_jit, jit_int32_t o, jit_int32_t i, jit_int32_t j)
+_f27(jit_state_t *_jit, int32_t o, int32_t i, int32_t j)
{
assert(!(o & ~0x3f));
assert(i >= -4096 && i < 4095);
@@ -1468,7 +1468,7 @@ _f27(jit_state_t *_jit, jit_int32_t o, jit_int32_t i, jit_int32_t j)
}
static void
-_f28(jit_state_t *_jit, jit_int32_t o, jit_int32_t i)
+_f28(jit_state_t *_jit, int32_t o, int32_t i)
{
assert(!(o & ~0x3f));
assert(!(i & ~0x1ffffff));
@@ -1476,8 +1476,8 @@ _f28(jit_state_t *_jit, jit_int32_t o, jit_int32_t i)
}
static void
-_f29(jit_state_t *_jit, jit_int32_t o, jit_int32_t r,
- jit_int32_t x, jit_int32_t s, jit_int32_t y, jit_int32_t t)
+_f29(jit_state_t *_jit, int32_t o, int32_t r,
+ int32_t x, int32_t s, int32_t y, int32_t t)
{
assert(!(o & ~0x3f));
assert(!(r & ~0x1f));
@@ -1489,8 +1489,8 @@ _f29(jit_state_t *_jit, jit_int32_t o, jit_int32_t r,
}
static void
-_f30(jit_state_t *_jit, jit_int32_t o, jit_int32_t b, jit_int32_t r,
- jit_int32_t s, jit_int32_t x, jit_int32_t y, jit_int32_t t)
+_f30(jit_state_t *_jit, int32_t o, int32_t b, int32_t r,
+ int32_t s, int32_t x, int32_t y, int32_t t)
{
assert(!(o & ~0x3f));
assert(!(b & ~0x1f));
@@ -1503,8 +1503,8 @@ _f30(jit_state_t *_jit, jit_int32_t o, jit_int32_t b, jit_int32_t r,
}
static void
-_f31(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
- jit_int32_t r, jit_int32_t v, jit_int32_t x, jit_int32_t y)
+_f31(jit_state_t *_jit, int32_t o, int32_t t,
+ int32_t r, int32_t v, int32_t x, int32_t y)
{
assert(!(o & ~0x3f));
assert(!(t & ~0x1f));
@@ -1516,8 +1516,8 @@ _f31(jit_state_t *_jit, jit_int32_t o, jit_int32_t t,
}
static void
-_f33(jit_state_t *_jit, jit_int32_t o, jit_int32_t x,
- jit_int32_t r, jit_int32_t y, jit_int32_t z, jit_int32_t u)
+_f33(jit_state_t *_jit, int32_t o, int32_t x,
+ int32_t r, int32_t y, int32_t z, int32_t u)
{
assert(!(o & ~0x3f));
assert(!(x & ~0x1f));
@@ -1529,8 +1529,8 @@ _f33(jit_state_t *_jit, jit_int32_t o, jit_int32_t x,
}
static void
-_f34(jit_state_t *_jit, jit_int32_t o, jit_int32_t o1,
- jit_int32_t x, jit_int32_t sf, jit_int32_t n, jit_int32_t o2)
+_f34(jit_state_t *_jit, int32_t o, int32_t o1,
+ int32_t x, int32_t sf, int32_t n, int32_t o2)
{
assert(!(o & ~0x3f));
assert(!(o1 & ~0x7fff));
@@ -1542,8 +1542,8 @@ _f34(jit_state_t *_jit, jit_int32_t o, jit_int32_t o1,
}
static void
-_f35(jit_state_t *_jit, jit_int32_t o, jit_int32_t op,
- jit_int32_t x, jit_int32_t sf, jit_int32_t n, jit_int32_t t)
+_f35(jit_state_t *_jit, int32_t o, int32_t op,
+ int32_t x, int32_t sf, int32_t n, int32_t t)
{
assert(!(o & ~0x3f));
assert(!(op & ~0x7fff));
@@ -1555,8 +1555,8 @@ _f35(jit_state_t *_jit, jit_int32_t o, jit_int32_t op,
}
static void
-_f36(jit_state_t *_jit, jit_int32_t o, jit_int32_t r, jit_int32_t o1,
- jit_int32_t x, jit_int32_t sf, jit_int32_t n, jit_int32_t o2)
+_f36(jit_state_t *_jit, int32_t o, int32_t r, int32_t o1,
+ int32_t x, int32_t sf, int32_t n, int32_t o2)
{
assert(!(o & ~0x3f));
assert(!(r & ~0x1f));
@@ -1569,9 +1569,9 @@ _f36(jit_state_t *_jit, jit_int32_t o, jit_int32_t r, jit_int32_t o1,
}
static void
-_f37(jit_state_t *_jit, jit_int32_t o, jit_int32_t r2,
- jit_int32_t r1, jit_int32_t o1, jit_int32_t x,
- jit_int32_t sf, jit_int32_t n, jit_int32_t o2)
+_f37(jit_state_t *_jit, int32_t o, int32_t r2,
+ int32_t r1, int32_t o1, int32_t x,
+ int32_t sf, int32_t n, int32_t o2)
{
assert(!(o & ~0x3f));
assert(!(r2 & ~0x1f));
@@ -1585,8 +1585,8 @@ _f37(jit_state_t *_jit, jit_int32_t o, jit_int32_t r2,
}
static void
-_f38(jit_state_t *_jit, jit_int32_t o,
- jit_int32_t s, jit_int32_t u, jit_int32_t n)
+_f38(jit_state_t *_jit, int32_t o,
+ int32_t s, int32_t u, int32_t n)
{
assert(!(o & ~0x3f));
assert(!(s & ~0x3fffff));
@@ -1596,7 +1596,7 @@ _f38(jit_state_t *_jit, jit_int32_t o,
}
static void
-_nop(jit_state_t *_jit, jit_int32_t i0)
+_nop(jit_state_t *_jit, int32_t i0)
{
for (; i0 > 0; i0 -= 4)
NOP();
@@ -1604,14 +1604,14 @@ _nop(jit_state_t *_jit, jit_int32_t i0)
}
static void
-_movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_movr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (r0 != r1)
COPY(r1, r0);
}
static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
if (i0 >= -8192 && i0 <= 8191)
LDI(i0, r0);
@@ -1624,7 +1624,7 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t w;
w = _jit->pc.w;
@@ -1634,9 +1634,9 @@ _movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -1024 && i0 <= 1023)
ADDI(i0, r1, r0);
else {
@@ -1648,9 +1648,9 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
addcr(r0, r1, rn(reg));
@@ -1658,9 +1658,9 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
addxr(r0, r1, rn(reg));
@@ -1668,9 +1668,9 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -1023 && i0 <= 1024)
addi(r0, r1, -i0);
else {
@@ -1682,9 +1682,9 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
subcr(r0, r1, rn(reg));
@@ -1692,9 +1692,9 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
subxr(r0, r1, rn(reg));
@@ -1702,9 +1702,9 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rsbi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -1024 && i0 <= 1023)
SUBI(i0, r1, r0);
else {
@@ -1716,9 +1716,9 @@ _rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_mulr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t t0, t1;
+ int32_t t0, t1;
t0 = jit_get_reg(jit_class_fpr);
t1 = jit_get_reg(jit_class_fpr);
stxi(alloca_offset - 8, _FP_REGNO, r1);
@@ -1733,9 +1733,9 @@ _mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 != r1) {
movi(r0, i0);
mulr(r0, r1, r0);
@@ -1756,7 +1756,7 @@ __llmul(int u, int v)
static void
_qmulr(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
movr(_R26_REGNO, r2);
movr(_R25_REGNO, r3);
@@ -1767,7 +1767,7 @@ _qmulr(jit_state_t *_jit,
static void
_qmuli(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
movr(_R26_REGNO, r2);
movi(_R25_REGNO, i0);
@@ -1778,9 +1778,9 @@ _qmuli(jit_state_t *_jit,
static void
_qmulr_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t t0, t1;
+ int32_t t0, t1;
t0 = jit_get_reg(jit_class_fpr);
t1 = jit_get_reg(jit_class_fpr);
stxi(alloca_offset - 8, _FP_REGNO, r2);
@@ -1797,9 +1797,9 @@ _qmulr_u(jit_state_t *_jit,
static void
_qmuli_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
qmulr_u(r0, r1, r2, rn(reg));
@@ -1813,7 +1813,7 @@ __idiv(int u, int v)
}
static void
-_divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
movr(_R26_REGNO, r1);
movr(_R25_REGNO, r2);
@@ -1822,7 +1822,7 @@ _divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(_R26_REGNO, r1);
movi(_R25_REGNO, i0);
@@ -1837,7 +1837,7 @@ __udiv(unsigned int u, unsigned int v)
}
static void
-_divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
movr(_R26_REGNO, r1);
movr(_R25_REGNO, r2);
@@ -1846,7 +1846,7 @@ _divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(_R26_REGNO, r1);
movi(_R25_REGNO, i0);
@@ -1861,7 +1861,7 @@ __irem(int u, int v)
}
static void
-_remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
movr(_R26_REGNO, r1);
movr(_R25_REGNO, r2);
@@ -1870,7 +1870,7 @@ _remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(_R26_REGNO, r1);
movi(_R25_REGNO, i0);
@@ -1885,7 +1885,7 @@ __urem(unsigned int u, unsigned int v)
}
static void
-_remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
movr(_R26_REGNO, r1);
movr(_R25_REGNO, r2);
@@ -1894,7 +1894,7 @@ _remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(_R26_REGNO, r1);
movi(_R25_REGNO, i0);
@@ -1913,7 +1913,7 @@ __idivrem(int u, int v)
static void
_qdivr(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
movr(_R26_REGNO, r2);
movr(_R25_REGNO, r3);
@@ -1924,7 +1924,7 @@ _qdivr(jit_state_t *_jit,
static void
_qdivi(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
movr(_R26_REGNO, r2);
movi(_R25_REGNO, i0);
@@ -1944,7 +1944,7 @@ __udivrem(unsigned int u, unsigned int v)
static void
_qdivr_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
movr(_R26_REGNO, r2);
movr(_R25_REGNO, r3);
@@ -1955,7 +1955,7 @@ _qdivr_u(jit_state_t *_jit,
static void
_qdivi_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
movr(_R26_REGNO, r2);
movi(_R25_REGNO, i0);
@@ -1965,9 +1965,9 @@ _qdivi_u(jit_state_t *_jit,
}
static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
andr(r0, r1, rn(reg));
@@ -1975,9 +1975,9 @@ _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
orr(r0, r1, rn(reg));
@@ -1985,9 +1985,9 @@ _ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
xorr(r0, r1, rn(reg));
@@ -1995,7 +1995,7 @@ _xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_lshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_lshr(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
SUBI(0x1f, r2, _R1_REGNO);
MTSAR(_R1_REGNO);
@@ -2003,7 +2003,7 @@ _lshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_rshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_rshr(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
SUBI(0x1f, r2, _R1_REGNO);
MTSAR(_R1_REGNO);
@@ -2011,7 +2011,7 @@ _rshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_rshr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_rshr_u(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
SUBI(0x1f, r2, _R1_REGNO);
MTSAR(_R1_REGNO);
@@ -2020,7 +2020,7 @@ _rshr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
static void
_cmpr(jit_state_t *_jit, jit_word_t c,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+ int32_t r0, int32_t r1, int32_t r2)
{
CMPCLR_(c, r1, r2, r0);
LDI(1, r0);
@@ -2028,9 +2028,9 @@ _cmpr(jit_state_t *_jit, jit_word_t c,
static void
_cmpi(jit_state_t *_jit, jit_word_t c, jit_word_t ci,
- jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+ int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -16 && i0 <= 15)
CMPICLR_(ci, i0, r1, r0);
else {
@@ -2043,37 +2043,37 @@ _cmpi(jit_state_t *_jit, jit_word_t c, jit_word_t ci,
}
static void
-_ldr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ldr_uc(r0, r1);
extr_c(r0, r0);
}
static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_c(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
ldi_uc(r0, i0);
extr_c(r0, r0);
}
static void
-_ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
ldxr_uc(r0, r1, r2);
extr_c(r0, r0);
}
static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
ldxi_uc(r0, r1, i0);
extr_c(r0, r0);
}
static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_uc(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -8182 && i0 <= 8191)
LDBL(i0, _R0_REGNO, r0);
else {
@@ -2085,9 +2085,9 @@ _ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -16 && i0 <= 15)
LDBI(i0, r1, r0);
else if (i0 >= -8182 && i0 <= 8191)
@@ -2101,37 +2101,37 @@ _ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ldr_us(r0, r1);
extr_s(r0, r0);
}
static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_s(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
ldi_us(r0, i0);
extr_s(r0, r0);
}
static void
-_ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
ldxr_us(r0, r1, r2);
extr_s(r0, r0);
}
static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
ldxi_us(r0, r1, i0);
extr_s(r0, r0);
}
static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_us(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -8182 && i0 <= 8191)
LDHL(i0, _R0_REGNO, r0);
else {
@@ -2143,9 +2143,9 @@ _ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -16 && i0 <= 15)
LDHI(i0, r1, r0);
else if (i0 >= -8182 && i0 <= 8191)
@@ -2159,9 +2159,9 @@ _ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_ui(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -8182 && i0 <= 8191)
LDWL(i0, _R0_REGNO, r0);
else {
@@ -2173,9 +2173,9 @@ _ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -16 && i0 <= 15)
LDWI(i0, r1, r0);
else if (i0 >= -8182 && i0 <= 8191)
@@ -2189,9 +2189,9 @@ _ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_c(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -8182 && i0 <= 8191)
STBL(r0, i0, _R0_REGNO);
else {
@@ -2203,9 +2203,9 @@ _sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_c(rn(reg), r2);
@@ -2213,9 +2213,9 @@ _stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -16 && i0 <= 15)
STBI(r1, i0, r0);
else if (i0 >= -8182 && i0 <= 8191)
@@ -2229,9 +2229,9 @@ _stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_s(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -8182 && i0 <= 8191)
STHL(r0, i0, _R0_REGNO);
else {
@@ -2243,9 +2243,9 @@ _sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_s(rn(reg), r2);
@@ -2253,9 +2253,9 @@ _stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -16 && i0 <= 15)
STHI(r1, i0, r0);
else if (i0 >= -8182 && i0 <= 8191)
@@ -2269,9 +2269,9 @@ _stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_i(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -8182 && i0 <= 8191)
STWL(r0, i0, _R0_REGNO);
else {
@@ -2283,9 +2283,9 @@ _sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_i(rn(reg), r2);
@@ -2293,9 +2293,9 @@ _stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -16 && i0 <= 15)
STWI(r1, i0, r0);
else if (i0 >= -8182 && i0 <= 8191)
@@ -2310,7 +2310,7 @@ _stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
static jit_word_t
_bcmpr(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, int32_t r1)
{
jit_word_t w;
w = _jit->pc.w;
@@ -2321,10 +2321,10 @@ _bcmpr(jit_state_t *_jit, jit_word_t c,
static jit_word_t
_bcmpi(jit_state_t *_jit, jit_word_t c, jit_word_t ci,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -16 && i1 <= 15) {
w = _jit->pc.w;
CMPIB_N_(ci, i1, r0, ((i0 - w) >> 2) - 2);
@@ -2342,10 +2342,10 @@ _bcmpi(jit_state_t *_jit, jit_word_t c, jit_word_t ci,
static jit_word_t
_bmxr(jit_state_t *_jit, jit_bool_t c,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
andr(rn(reg), r0, r1);
w = c ? bnei(i0, rn(reg), 0) : beqi(i0, rn(reg), 0);
@@ -2355,10 +2355,10 @@ _bmxr(jit_state_t *_jit, jit_bool_t c,
static jit_word_t
_bmxi(jit_state_t *_jit, jit_bool_t c,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
andr(rn(reg), r0, rn(reg));
@@ -2368,7 +2368,7 @@ _bmxi(jit_state_t *_jit, jit_bool_t c,
}
static jit_word_t
-_boaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_boaddr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
w = _jit->pc.w;
@@ -2378,10 +2378,10 @@ _boaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_boaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_boaddi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -16 && i1 <= 15) {
w = _jit->pc.w;
ADDIB_N_SV(i1, r0, ((i0 - w) >> 2) - 2);
@@ -2397,7 +2397,7 @@ _boaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_boaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_boaddr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
w = _jit->pc.w;
@@ -2407,10 +2407,10 @@ _boaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_boaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_boaddi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -16 && i1 <= 15) {
w = _jit->pc.w;
ADDIB_N_UV(i1, r0, ((i0 - w) >> 2) - 2);
@@ -2426,7 +2426,7 @@ _boaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxaddr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
w = _jit->pc.w;
@@ -2436,10 +2436,10 @@ _bxaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxaddi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -16 && i1 <= 15) {
w = _jit->pc.w;
ADDIB_N_NSV(i1, r0, ((i0 - w) >> 2) - 2);
@@ -2455,7 +2455,7 @@ _bxaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxaddr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
w = _jit->pc.w;
@@ -2465,10 +2465,10 @@ _bxaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxaddi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -16 && i1 <= 15) {
w = _jit->pc.w;
ADDIB_N_NUV(i1, r0, ((i0 - w) >> 2) - 2);
@@ -2484,7 +2484,7 @@ _bxaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bosubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bosubr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
SUB_NSV(r0, r1, r0);
@@ -2496,14 +2496,14 @@ _bosubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bosubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bosubi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
movi(_R1_REGNO, i1);
return (bosubr(i0, r0, _R1_REGNO));
}
static jit_word_t
-_bosubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bosubr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
SUB(r0, r1, r0);
SUB_B(_R0_REGNO, _R0_REGNO, _R1_REGNO);
@@ -2511,7 +2511,7 @@ _bosubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bosubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bosubi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
movi(_R1_REGNO, i1);
SUB(r0, _R1_REGNO, r0);
@@ -2520,7 +2520,7 @@ _bosubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxsubr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
SUB_SV(r0, r1, r0);
@@ -2532,14 +2532,14 @@ _bxsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxsubi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
movi(_R1_REGNO, i1);
return (bxsubr(i0, r0, _R1_REGNO));
}
static jit_word_t
-_bxsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxsubr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
SUB(r0, r1, r0);
SUB_B(_R0_REGNO, _R0_REGNO, _R1_REGNO);
@@ -2547,7 +2547,7 @@ _bxsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxsubi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
movi(_R1_REGNO, i1);
SUB(r0, _R1_REGNO, r0);
@@ -2556,7 +2556,7 @@ _bxsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static void
-_jmpr(jit_state_t *_jit, jit_int32_t r0)
+_jmpr(jit_state_t *_jit, int32_t r0)
{
BV_N(_R0_REGNO, r0);
}
@@ -2584,7 +2584,7 @@ _jmpi_p(jit_state_t *_jit, jit_word_t i0)
}
static void
-_callr(jit_state_t *_jit, jit_int32_t r0)
+_callr(jit_state_t *_jit, int32_t r0)
{
jit_word_t dyn;
jit_word_t imm;
@@ -2640,13 +2640,13 @@ _calli_p(jit_state_t *_jit, jit_word_t i0)
return (w);
}
-static jit_int32_t gr[] = {
+static int32_t gr[] = {
_R4, _R5, _R6, _R7, _R8,
_R9, _R10, _R11, _R12, _R13,
_R14, _R15, _R16, _R17, _R18
};
-static jit_int32_t fr[] = {
+static int32_t fr[] = {
_F12, _F13, _F14, _F15, _F16,
_F17, _F18, _F19, _F20, _F21
};
@@ -2654,7 +2654,7 @@ static jit_int32_t fr[] = {
static void
_prolog(jit_state_t *_jit, jit_node_t *node)
{
- jit_int32_t regno;
+ int32_t regno;
jit_word_t offset;
if (_jitc->function->define_frame || _jitc->function->assume_frame) {
@@ -2707,7 +2707,7 @@ _prolog(jit_state_t *_jit, jit_node_t *node)
static void
_epilog(jit_state_t *_jit, jit_node_t *node)
{
- jit_int32_t regno;
+ int32_t regno;
jit_word_t offset;
if (_jitc->function->assume_frame)
@@ -2735,14 +2735,14 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
}
static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
+_vastart(jit_state_t *_jit, int32_t r0)
{
/* Initialize stack pointer to the first stack argument. */
addi(r0, _FP_REGNO, params_offset - _jitc->function->vagp * 4);
}
static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vaarg(jit_state_t *_jit, int32_t r0, int32_t r1)
{
assert(_jitc->function->self.call & jit_call_varargs);
@@ -2758,7 +2758,7 @@ _patch_at(jit_state_t *_jit, jit_word_t instr, jit_word_t label)
{
jit_word_t w;
union {
- jit_uint32_t *i;
+ uint32_t *i;
jit_word_t w;
} u;
u.w = instr;
diff --git a/libguile/lightning/lib/jit_hppa-fpu.c b/libguile/lightning/jit/hppa-fpu.c
index c0e85bab4..98c39ce5c 100644
--- a/libguile/lightning/lib/jit_hppa-fpu.c
+++ b/libguile/lightning/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,int32_t,int32_t,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,int32_t,int32_t,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,int32_t,int32_t,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,int32_t,int32_t,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,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,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,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,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,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,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,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,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,int32_t,int32_t,
+ int32_t,int32_t,int32_t,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,int32_t,int32_t,
+ int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,int32_t,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,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,int32_t,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,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,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,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,int32_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,int32_t,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,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,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,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,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, 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, int32_t x, 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, int32_t x, 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, int32_t x, 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, int32_t i, 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, int32_t a, int32_t b, int32_t fmt,
+ int32_t c, int32_t d, int32_t e, 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, int32_t r,
+ int32_t a, int32_t s, int32_t df, int32_t sf,
+ int32_t b, int32_t c, int32_t d, 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, int32_t r1, int32_t y, int32_t fmt,
+ int32_t a, int32_t b, int32_t c, 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, int32_t r2, int32_t y,
+ int32_t v, int32_t f, int32_t a, int32_t b,
+ int32_t u, int32_t c, int32_t d, 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, int32_t r1, int32_t r2,
+ int32_t ta, int32_t ra, int32_t f, 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, int32_t r1, int32_t r2,
+ int32_t a, int32_t b, int32_t f, int32_t c,
+ int32_t d, int32_t e, int32_t g, 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, 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, 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, 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, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, 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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
assert(_jitc->function->self.call & jit_call_varargs);
diff --git a/libguile/lightning/lib/jit_hppa.c b/libguile/lightning/jit/hppa.c
index 558524b41..38c75e0ca 100644
--- a/libguile/lightning/lib/jit_hppa.c
+++ b/libguile/lightning/jit/hppa.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2013-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -17,14 +17,11 @@
* Paulo Cesar Pereira de Andrade
*/
-#include <lightning.h>
-#include <lightning/jit_private.h>
-
#define jit_arg_reg_p(i) (i >= 0 && i < 4)
#define PROTO 1
-# include "jit_hppa-cpu.c"
-# include "jit_hppa-fpu.c"
+# include "hppa-cpu.c"
+# include "hppa-fpu.c"
#undef PROTO
/*
@@ -44,7 +41,7 @@ extern void __clear_cache(void *, void *);
/*
* Initialization
*/
-jit_register_t _rvs[] = {
+static const jit_register_t _rvs[] = {
{ 0, "r0" }, /* Zero */
/* Not register starved, so, avoid allocating r1 and rp
* due to being implicit target of ADDIL and B,L */
@@ -141,7 +138,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 +158,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 +177,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 +205,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, 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 +237,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 +255,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 +273,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 +327,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 +338,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 +355,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 +372,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 +396,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 +408,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 +420,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 +432,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 +444,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 +456,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 +470,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 +485,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 +497,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 +511,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 +526,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 +538,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 +552,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 +567,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 +585,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 +604,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 +631,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 +660,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 +697,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 +734,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 +754,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 +785,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 +793,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 +801,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 +809,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 +817,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 +825,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 +833,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 +846,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;
@@ -1453,8 +1450,8 @@ _emit_code(jit_state_t *_jit)
}
#define CODE 1
-# include "jit_hppa-cpu.c"
-# include "jit_hppa-fpu.c"
+# include "hppa-cpu.c"
+# include "hppa-fpu.c"
#undef CODE
void
@@ -1565,7 +1562,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)
diff --git a/libguile/lightning/include/lightning/jit_hppa.h b/libguile/lightning/jit/hppa.h
index b26e4bd68..b26e4bd68 100644
--- a/libguile/lightning/include/lightning/jit_hppa.h
+++ b/libguile/lightning/jit/hppa.h
diff --git a/libguile/lightning/lib/jit_ia64-cpu.c b/libguile/lightning/jit/ia64-cpu.c
index 8372b2438..160f640bb 100644
--- a/libguile/lightning/lib/jit_ia64-cpu.c
+++ b/libguile/lightning/jit/ia64-cpu.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2013-2017, 2019 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -238,7 +238,7 @@ static void _sync(jit_state_t*);
#define flush() _flush(_jit)
static void _flush(jit_state_t*);
#define inst(w, t) _inst(_jit, w, t)
-static void _inst(jit_state_t*, jit_word_t, jit_uint8_t);
+static void _inst(jit_state_t*, jit_word_t, uint8_t);
#define A1(x4,x2,r3,r2,r1) _A1(_jit,0,x4,x2,r3,r2,r1)
static void _A1(jit_state_t*, jit_word_t,
jit_word_t,jit_word_t,jit_word_t,jit_word_t,jit_word_t);
@@ -1177,146 +1177,146 @@ static void _X5(jit_state_t*,jit_word_t,
#define addr(r0,r1,r2) ADD(r0,r1,r2)
#define addi(r0,r1,i0) _addi(_jit,r0,r1,i0)
-static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define addcr(r0, r1, r2) _addcr(_jit, r0, r1, r2)
-static void _addcr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _addcr(jit_state_t*, int32_t, int32_t, int32_t);
#define addci(r0, r1, i0) _addci(_jit, r0, r1, i0)
-static void _addci(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _addci(jit_state_t*, int32_t, int32_t, jit_word_t);
# define addxr(r0, r1, r2) _addxr(_jit, r0, r1, r2)
-static void _addxr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _addxr(jit_state_t*, int32_t, int32_t, int32_t);
# define addxi(r0, r1, i0) _addxi(_jit, r0, r1, i0)
-static void _addxi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _addxi(jit_state_t*, int32_t, int32_t, jit_word_t);
#define subr(r0,r1,r2) SUB(r0,r1,r2)
#define subi(r0,r1,i0) _subi(_jit,r0,r1,i0)
-static void _subi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subcr(r0, r1, r2) _subcr(_jit, r0, r1, r2)
-static void _subcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subcr(jit_state_t*,int32_t,int32_t,int32_t);
# define subci(r0, r1, i0) _subci(_jit, r0, r1, i0)
-static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subxr(r0, r1, r2) _subxr(_jit, r0, r1, r2)
-static void _subxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subxr(jit_state_t*,int32_t,int32_t,int32_t);
# define subxi(r0, r1, i0) _subxi(_jit, r0, r1, i0)
-static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rsbi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define mulr(r0,r1,r2) _mulr(_jit,r0,r1,r2)
-static void _mulr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _mulr(jit_state_t*,int32_t,int32_t,int32_t);
#define muli(r0,r1,i0) _muli(_jit,r0,r1,i0)
-static void _muli(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _muli(jit_state_t*,int32_t,int32_t,jit_word_t);
#define divr(r0,r1,r2) _divr(_jit,r0,r1,r2)
-static void _divr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr(jit_state_t*,int32_t,int32_t,int32_t);
#define divi(r0,r1,i0) _divi(_jit,r0,r1,i0)
-static void _divi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define divr_u(r0,r1,r2) _divr_u(_jit,r0,r1,r2)
-static void _divr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr_u(jit_state_t*,int32_t,int32_t,int32_t);
#define divi_u(r0,r1,i0) _divi_u(_jit,r0,r1,i0)
-static void _divi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define remr(r0,r1,r2) _remr(_jit,r0,r1,r2)
-static void _remr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr(jit_state_t*,int32_t,int32_t,int32_t);
#define remi(r0,r1,i0) _remi(_jit,r0,r1,i0)
-static void _remi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define remr_u(r0,r1,r2) _remr_u(_jit,r0,r1,r2)
-static void _remr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr_u(jit_state_t*,int32_t,int32_t,int32_t);
#define remi_u(r0,r1,i0) _remi_u(_jit,r0,r1,i0)
-static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define mulh(r0,r1,r2,sign) _mulh(_jit,r0,r1,r2,sign)
-static void _mulh(jit_state_t*,jit_bool_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _mulh(jit_state_t*,jit_bool_t,int32_t,int32_t,int32_t);
#define qmulr(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,1)
#define qmulr_u(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,0)
#define iqmulr(r0,r1,r2,r3,sign) _iqmulr(_jit,r0,r1,r2,r3,sign)
-static void _iqmulr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqmulr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
#define qmuli(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,1)
#define qmuli_u(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,0)
#define iqmuli(r0,r1,r2,i0,sign) _iqmuli(_jit,r0,r1,r2,i0,sign)
-static void _iqmuli(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqmuli(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
#define qdivr(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,1)
#define qdivr_u(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,0)
#define iqdivr(r0,r1,r2,r3,sign) _iqdivr(_jit,r0,r1,r2,r3,sign)
-static void _iqdivr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqdivr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
#define qdivi(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,1)
#define qdivi_u(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,0)
#define iqdivi(r0,r1,r2,i0,sign) _iqdivi(_jit,r0,r1,r2,i0,sign)
-static void _iqdivi(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqdivi(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
#define andr(r0,r1,r2) AND(r0,r1,r2)
#define andi(r0,r1,i0) _andi(_jit,r0,r1,i0)
-static void _andi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _andi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define orr(r0,r1,r2) OR(r0,r1,r2)
#define ori(r0,r1,i0) _ori(_jit,r0,r1,i0)
-static void _ori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ori(jit_state_t*,int32_t,int32_t,jit_word_t);
#define xorr(r0,r1,r2) XOR(r0,r1,r2)
#define xori(r0,r1,i0) _xori(_jit,r0,r1,i0)
-static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _xori(jit_state_t*,int32_t,int32_t,jit_word_t);
#define lshr(r0,r1,r2) SHL(r0,r1,r2)
#define lshi(r0,r1,i0) _lshi(_jit,r0,r1,i0)
-static void _lshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lshi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define rshr(r0,r1,r2) SHR(r0,r1,r2)
#define rshi(r0,r1,i0) _rshi(_jit,r0,r1,i0)
-static void _rshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define rshr_u(r0,r1,r2) SHR_U(r0,r1,r2)
#define rshi_u(r0,r1,i0) _rshi_u(_jit,r0,r1,i0)
-static void _rshi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ltr(r0,r1,r2) _ltr(_jit,r0,r1,r2)
-static void _ltr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ltr(jit_state_t*,int32_t,int32_t,int32_t);
#define lti(r0,r1,i0) _lti(_jit,r0,r1,i0)
-static void _lti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lti(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ltr_u(r0,r1,r2) _ltr_u(_jit,r0,r1,r2)
-static void _ltr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ltr_u(jit_state_t*,int32_t,int32_t,int32_t);
#define lti_u(r0,r1,i0) _lti_u(_jit,r0,r1,i0)
-static void _lti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lti_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ler(r0,r1,r2) _ler(_jit,r0,r1,r2)
-static void _ler(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ler(jit_state_t*,int32_t,int32_t,int32_t);
#define lei(r0,r1,i0) _lei(_jit,r0,r1,i0)
-static void _lei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lei(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ler_u(r0,r1,r2) _ler_u(_jit,r0,r1,r2)
-static void _ler_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ler_u(jit_state_t*,int32_t,int32_t,int32_t);
#define lei_u(r0,r1,i0) _lei_u(_jit,r0,r1,i0)
-static void _lei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lei_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define eqr(r0,r1,r2) _eqr(_jit,r0,r1,r2)
-static void _eqr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _eqr(jit_state_t*,int32_t,int32_t,int32_t);
#define eqi(r0,r1,i0) _eqi(_jit,r0,r1,i0)
-static void _eqi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _eqi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ger(r0,r1,r2) _ger(_jit,r0,r1,r2)
-static void _ger(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ger(jit_state_t*,int32_t,int32_t,int32_t);
#define gei(r0,r1,i0) _gei(_jit,r0,r1,i0)
-static void _gei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gei(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ger_u(r0,r1,r2) _ger_u(_jit,r0,r1,r2)
-static void _ger_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ger_u(jit_state_t*,int32_t,int32_t,int32_t);
#define gei_u(r0,r1,i0) _gei_u(_jit,r0,r1,i0)
-static void _gei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gei_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define gtr(r0,r1,r2) _gtr(_jit,r0,r1,r2)
-static void _gtr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _gtr(jit_state_t*,int32_t,int32_t,int32_t);
#define gti(r0,r1,i0) _gti(_jit,r0,r1,i0)
-static void _gti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gti(jit_state_t*,int32_t,int32_t,jit_word_t);
#define gtr_u(r0,r1,r2) _gtr_u(_jit,r0,r1,r2)
-static void _gtr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _gtr_u(jit_state_t*,int32_t,int32_t,int32_t);
#define gti_u(r0,r1,i0) _gti_u(_jit,r0,r1,i0)
-static void _gti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gti_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ner(r0,r1,r2) _ner(_jit,r0,r1,r2)
-static void _ner(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ner(jit_state_t*,int32_t,int32_t,int32_t);
#define nei(r0,r1,i0) _nei(_jit,r0,r1,i0)
-static void _nei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _nei(jit_state_t*,int32_t,int32_t,jit_word_t);
#define negr(r0,r1) subr(r0,0,r1)
#define comr(r0,r1) ANDCMI(r0,-1,r1)
#define movr(r0,r1) _movr(_jit,r0,r1)
-static void _movr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _movr(jit_state_t*,int32_t,int32_t);
#define movi(r0,i0) _movi(_jit,r0,i0)
-static void _movi(jit_state_t*,jit_int32_t,jit_word_t);
+static void _movi(jit_state_t*,int32_t,jit_word_t);
#define movi_p(r0,i0) _movi_p(_jit,r0,i0)
-static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
+static jit_word_t _movi_p(jit_state_t*,int32_t,jit_word_t);
#if __BYTE_ORDER == __LITTLE_ENDIAN
-# define htonr_us(r0,r1) _htonr_us(_jit,r0,r1)
-static void _htonr_us(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ui(r0,r1) _htonr_ui(_jit,r0,r1)
-static void _htonr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ul(r0,r1) MUX1(r0,r1,MUX_REV)
+# define bswapr_us(r0,r1) _bswapr_us(_jit,r0,r1)
+static void _bswapr_us(jit_state_t*,int32_t,int32_t);
+# define bswapr_ui(r0,r1) _bswapr_ui(_jit,r0,r1)
+static void _bswapr_ui(jit_state_t*,int32_t,int32_t);
+# define bswapr_ul(r0,r1) MUX1(r0,r1,MUX_REV)
#else
-# define htonr_us(r0,r1) extr_us(r0,r1)
-# define htonr_ui(r0,r1) extr_ui(r0,r1)
-# define htonr_ul(r0,r1) movr(r0,r1)
+# define bswapr_us(r0,r1) extr_us(r0,r1)
+# define bswapr_ui(r0,r1) extr_ui(r0,r1)
+# define bswapr_ul(r0,r1) movr(r0,r1)
#endif
#define extr_c(r0,r1) SXT1(r0,r1)
#define extr_uc(r0,r1) ZXT1(r0,r1)
@@ -1325,77 +1325,77 @@ static void _htonr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
#define extr_i(r0,r1) SXT4(r0,r1)
#define extr_ui(r0,r1) ZXT4(r0,r1)
#define bltr(i0,r0,r1) _bltr(_jit,i0,r0,r1)
-static jit_word_t _bltr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bltr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blti(i0,r0,i1) _blti(_jit,i0,r0,i1)
-static jit_word_t _blti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blti(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bltr_u(i0,r0,r1) _bltr_u(_jit,i0,r0,r1)
-static jit_word_t _bltr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bltr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blti_u(i0,r0,i1) _blti_u(_jit,i0,r0,i1)
-static jit_word_t _blti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blti_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bler(i0,r0,r1) _bler(_jit,i0,r0,r1)
-static jit_word_t _bler(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bler(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blei(i0,r0,i1) _blei(_jit,i0,r0,i1)
-static jit_word_t _blei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bler_u(i0,r0,r1) _bler_u(_jit,i0,r0,r1)
-static jit_word_t _bler_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bler_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blei_u(i0,r0,i1) _blei_u(_jit,i0,r0,i1)
-static jit_word_t _blei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blei_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define beqr(i0,r0,r1) _beqr(_jit,i0,r0,r1)
-static jit_word_t _beqr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _beqr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define beqi(i0,r0,i1) _beqi(_jit,i0,r0,i1)
-static jit_word_t _beqi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _beqi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bger(i0,r0,r1) _bger(_jit,i0,r0,r1)
-static jit_word_t _bger(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bger(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgei(i0,r0,i1) _bgei(_jit,i0,r0,i1)
-static jit_word_t _bgei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bger_u(i0,r0,r1) _bger_u(_jit,i0,r0,r1)
-static jit_word_t _bger_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bger_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgei_u(i0,r0,i1) _bgei_u(_jit,i0,r0,i1)
-static jit_word_t _bgei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgei_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bgtr(i0,r0,r1) _bgtr(_jit,i0,r0,r1)
-static jit_word_t _bgtr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bgtr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgti(i0,r0,i1) _bgti(_jit,i0,r0,i1)
-static jit_word_t _bgti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgti(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bgtr_u(i0,r0,r1) _bgtr_u(_jit,i0,r0,r1)
-static jit_word_t _bgtr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bgtr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgti_u(i0,r0,i1) _bgti_u(_jit,i0,r0,i1)
-static jit_word_t _bgti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgti_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bner(i0,r0,r1) _bner(_jit,i0,r0,r1)
-static jit_word_t _bner(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bner(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bnei(i0,r0,i1) _bnei(_jit,i0,r0,i1)
-static jit_word_t _bnei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bnei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bmsr(i0,r0,r1) _bmsr(_jit,i0,r0,r1)
-static jit_word_t _bmsr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bmsr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bmsi(i0,r0,i1) _bmsi(_jit,i0,r0,i1)
-static jit_word_t _bmsi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bmsi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bmcr(i0,r0,r1) _bmcr(_jit,i0,r0,r1)
-static jit_word_t _bmcr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bmcr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bmci(i0,r0,i1) _bmci(_jit,i0,r0,i1)
-static jit_word_t _bmci(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bmci(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define baddr(i0,r0,r1,cc) _baddr(_jit,i0,r0,r1,cc)
static jit_word_t _baddr(jit_state_t*,jit_word_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+ int32_t,int32_t,jit_bool_t);
#define baddi(i0,r0,i1,cc) _baddi(_jit,i0,r0,i1,cc)
static jit_word_t _baddi(jit_state_t*,jit_word_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+ int32_t,jit_word_t,jit_bool_t);
#define baddr_u(i0,r0,r1,cc) _baddr_u(_jit,i0,r0,r1,cc)
static jit_word_t _baddr_u(jit_state_t*,jit_word_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+ int32_t,int32_t,jit_bool_t);
#define baddi_u(i0,r0,i1,cc) _baddi_u(_jit,i0,r0,i1,cc)
static jit_word_t _baddi_u(jit_state_t*,jit_word_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+ int32_t,jit_word_t,jit_bool_t);
#define bsubr(i0,r0,r1,cc) _bsubr(_jit,i0,r0,r1,cc)
static jit_word_t _bsubr(jit_state_t*,jit_word_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+ int32_t,int32_t,jit_bool_t);
#define bsubi(i0,r0,i1,cc) _bsubi(_jit,i0,r0,i1,cc)
static jit_word_t _bsubi(jit_state_t*,jit_word_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+ int32_t,jit_word_t,jit_bool_t);
#define bsubr_u(i0,r0,r1,cc) _bsubr_u(_jit,i0,r0,r1,cc)
static jit_word_t _bsubr_u(jit_state_t*,jit_word_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+ int32_t,int32_t,jit_bool_t);
#define bsubi_u(i0,r0,i1,cc) _bsubi_u(_jit,i0,r0,i1,cc)
static jit_word_t _bsubi_u(jit_state_t*,jit_word_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+ int32_t,jit_word_t,jit_bool_t);
#define boaddr(i0,r0,r1) baddr(i0,r0,r1,1)
#define boaddi(i0,r0,i1) baddi(i0,r0,i1,1)
#define boaddr_u(i0,r0,r1) baddr_u(i0,r0,r1,1)
@@ -1413,93 +1413,93 @@ static jit_word_t _bsubi_u(jit_state_t*,jit_word_t,
#define bxsubr_u(i0,r0,r1) bsubr_u(i0,r0,r1,0)
#define bxsubi_u(i0,r0,i1) bsubi_u(i0,r0,i1,0)
#define ldr_c(r0,r1) _ldr_c(_jit,r0,r1)
-static void _ldr_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_c(jit_state_t*,int32_t,int32_t);
#define ldi_c(r0,i0) _ldi_c(_jit,r0,i0)
-static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_c(jit_state_t*,int32_t,jit_word_t);
#define ldr_uc(r0,r1) LD1(r0,r1)
#define ldi_uc(r0,i0) _ldi_uc(_jit,r0,i0)
-static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_uc(jit_state_t*,int32_t,jit_word_t);
#define ldr_s(r0,r1) _ldr_s(_jit,r0,r1)
-static void _ldr_s(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_s(jit_state_t*,int32_t,int32_t);
#define ldi_s(r0,i0) _ldi_s(_jit,r0,i0)
-static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_s(jit_state_t*,int32_t,jit_word_t);
#define ldr_us(r0,r1) LD2(r0,r1)
#define ldi_us(r0,i0) _ldi_us(_jit,r0,i0)
-static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_us(jit_state_t*,int32_t,jit_word_t);
#define ldr_i(r0,r1) _ldr_i(_jit,r0,r1)
-static void _ldr_i(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_i(jit_state_t*,int32_t,int32_t);
#define ldi_i(r0,i0) _ldi_i(_jit,r0,i0)
-static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_i(jit_state_t*,int32_t,jit_word_t);
#define ldr_ui(r0,r1) LD4(r0,r1)
#define ldi_ui(r0,i0) _ldi_ui(_jit,r0,i0)
-static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_ui(jit_state_t*,int32_t,jit_word_t);
#define ldr_l(r0,r1) LD8(r0,r1)
#define ldi_l(r0,i0) _ldi_l(_jit,r0,i0)
-static void _ldi_l(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_l(jit_state_t*,int32_t,jit_word_t);
#define ldxr_c(r0,r1,r2) _ldxr_c(_jit,r0,r1,r2)
-static void _ldxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_c(jit_state_t*,int32_t,int32_t,int32_t);
#define ldxi_c(r0,r1,i0) _ldxi_c(_jit,r0,r1,i0)
-static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_c(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldxr_uc(r0,r1,r2) _ldxr_uc(_jit,r0,r1,r2)
-static void _ldxr_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_uc(jit_state_t*,int32_t,int32_t,int32_t);
#define ldxi_uc(r0,r1,i0) _ldxi_uc(_jit,r0,r1,i0)
-static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_uc(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldxr_s(r0,r1,r2) _ldxr_s(_jit,r0,r1,r2)
-static void _ldxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_s(jit_state_t*,int32_t,int32_t,int32_t);
#define ldxi_s(r0,r1,i0) _ldxi_s(_jit,r0,r1,i0)
-static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_s(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldxr_us(r0,r1,r2) _ldxr_us(_jit,r0,r1,r2)
-static void _ldxr_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_us(jit_state_t*,int32_t,int32_t,int32_t);
#define ldxi_us(r0,r1,i0) _ldxi_us(_jit,r0,r1,i0)
-static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_us(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldxr_i(r0,r1,r2) _ldxr_i(_jit,r0,r1,r2)
-static void _ldxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_i(jit_state_t*,int32_t,int32_t,int32_t);
#define ldxi_i(r0,r1,i0) _ldxi_i(_jit,r0,r1,i0)
-static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_i(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldxr_ui(r0,r1,r2) _ldxr_ui(_jit,r0,r1,r2)
-static void _ldxr_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_ui(jit_state_t*,int32_t,int32_t,int32_t);
#define ldxi_ui(r0,r1,i0) _ldxi_ui(_jit,r0,r1,i0)
-static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_ui(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ldxr_l(r0,r1,r2) _ldxr_l(_jit,r0,r1,r2)
-static void _ldxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_l(jit_state_t*,int32_t,int32_t,int32_t);
#define ldxi_l(r0,r1,i0) _ldxi_l(_jit,r0,r1,i0)
-static void _ldxi_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_l(jit_state_t*,int32_t,int32_t,jit_word_t);
#define str_c(r0,r1) ST1(r0,r1)
#define sti_c(i0,r0) _sti_c(_jit,i0,r0)
-static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_c(jit_state_t*,jit_word_t,int32_t);
#define str_s(r0,r1) ST2(r0,r1)
#define sti_s(i0,r0) _sti_s(_jit,i0,r0)
-static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_s(jit_state_t*,jit_word_t,int32_t);
#define str_i(r0,r1) ST4(r0,r1)
#define sti_i(i0,r0) _sti_i(_jit,i0,r0)
-static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_i(jit_state_t*,jit_word_t,int32_t);
#define str_l(r0,r1) ST8(r0,r1)
#define sti_l(i0,r0) _sti_l(_jit,i0,r0)
-static void _sti_l(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_l(jit_state_t*,jit_word_t,int32_t);
#define stxr_c(r0,r1,r2) _stxr_c(_jit,r0,r1,r2)
-static void _stxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_c(jit_state_t*,int32_t,int32_t,int32_t);
#define stxi_c(i0,r0,r1) _stxi_c(_jit,i0,r0,r1)
-static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_c(jit_state_t*,jit_word_t,int32_t,int32_t);
#define stxr_s(r0,r1,r2) _stxr_s(_jit,r0,r1,r2)
-static void _stxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_s(jit_state_t*,int32_t,int32_t,int32_t);
#define stxi_s(i0,r0,r1) _stxi_s(_jit,i0,r0,r1)
-static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_s(jit_state_t*,jit_word_t,int32_t,int32_t);
#define stxr_i(r0,r1,r2) _stxr_i(_jit,r0,r1,r2)
-static void _stxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_i(jit_state_t*,int32_t,int32_t,int32_t);
#define stxi_i(i0,r0,r1) _stxi_i(_jit,i0,r0,r1)
-static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_i(jit_state_t*,jit_word_t,int32_t,int32_t);
#define stxr_l(r0,r1,r2) _stxr_l(_jit,r0,r1,r2)
-static void _stxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_l(jit_state_t*,int32_t,int32_t,int32_t);
#define stxi_l(i0,r0,r1) _stxi_l(_jit,i0,r0,r1)
-static void _stxi_l(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_l(jit_state_t*,jit_word_t,int32_t,int32_t);
#define jmpr(r0) _jmpr(_jit,r0)
-static void _jmpr(jit_state_t*,jit_int32_t);
+static void _jmpr(jit_state_t*,int32_t);
#define jmpi(i0) _jmpi(_jit,i0)
static void _jmpi(jit_state_t*,jit_word_t);
#define jmpi_p(i0) _jmpi_p(_jit,i0)
static jit_word_t _jmpi_p(jit_state_t*,jit_word_t);
#define callr(r0) _callr(_jit,r0)
-static void _callr(jit_state_t*,jit_int32_t);
+static void _callr(jit_state_t*,int32_t);
#define calli(i0) _calli(_jit,i0)
static void _calli(jit_state_t*,jit_word_t);
#define calli_p(i0) _calli_p(_jit,i0)
@@ -1509,9 +1509,9 @@ static void _prolog(jit_state_t*,jit_node_t*);
#define epilog(node) _epilog(_jit,node)
static void _epilog(jit_state_t*,jit_node_t*);
# define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
+static void _vastart(jit_state_t*, int32_t);
# define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vaarg(jit_state_t*, int32_t, int32_t);
#define patch_at(node,instr,label) _patch_at(_jit,node,instr,label)
static void _patch_at(jit_state_t*,jit_code_t,jit_word_t,jit_word_t);
#endif
@@ -2116,7 +2116,7 @@ _flush(jit_state_t *_jit)
}
static void
-_inst(jit_state_t *_jit, jit_word_t i, jit_uint8_t t)
+_inst(jit_state_t *_jit, jit_word_t i, uint8_t t)
{
if (_jitc->ioff > 2)
flush();
@@ -2685,7 +2685,7 @@ static void
_I24(jit_state_t *_jit, jit_word_t _p,
jit_word_t im)
{
- jit_uint8_t cc = INST_I;
+ uint8_t cc = INST_I;
assert(!(_p & ~0x3fL));
assert(!(im & ~0xfffffffL));
TSTPRED(_p);
@@ -2817,7 +2817,7 @@ static void
_M3(jit_state_t *_jit, jit_word_t _p,
jit_word_t x6, jit_word_t ht, jit_word_t r3, jit_word_t im, jit_word_t r1)
{
- jit_uint8_t cc = INST_M;
+ uint8_t cc = INST_M;
assert(!(_p & ~0x3fL));
assert(!(x6 & ~0x3fL));
assert(!(ht & ~0x3L));
@@ -3451,7 +3451,7 @@ _X5(jit_state_t *_jit, jit_word_t _p,
}
static void
-_movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_movr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
/* patch pushargr */
if (r0 >= 120)
@@ -3461,7 +3461,7 @@ _movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
/* patch pushargi */
if (r0 >= 120)
@@ -3474,7 +3474,7 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t w;
sync();
@@ -3484,9 +3484,9 @@ _movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -8192 && i0 <= 8191)
ADDS(r0, i0, r1);
else if (!(r1 & ~3) && i0 >= -2097152 && i0 <= 2097151)
@@ -3500,9 +3500,9 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -3519,9 +3519,9 @@ _addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -3538,9 +3538,9 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -3550,9 +3550,9 @@ _addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -3562,9 +3562,9 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
subr(r0, r1, rn(reg));
@@ -3572,9 +3572,9 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -3591,9 +3591,9 @@ _subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -3610,9 +3610,9 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -3622,9 +3622,9 @@ _subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -3634,9 +3634,9 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rsbi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -128 && i0 <= 127)
SUBI(r0, i0, r1);
else if (!(r1 & ~3) && i0 >= -2097151 && i0 <= 2097152)
@@ -3650,9 +3650,9 @@ _rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_mulr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t f0, f1;
+ int32_t f0, f1;
f0 = jit_get_reg(jit_class_fpr);
f1 = jit_get_reg(jit_class_fpr);
SETF_SIG(rn(f0), r1);
@@ -3664,9 +3664,9 @@ _mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
mulr(r0, r1, rn(reg));
@@ -3700,7 +3700,7 @@ __umoddi3(unsigned long u, unsigned long v)
#endif
static void
-_divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
MOV(_jitc->rout, r1);
MOV(_jitc->rout + 1, r2);
@@ -3709,9 +3709,9 @@ _divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
switch (i0) {
case 1:
movr(r0, r1);
@@ -3734,7 +3734,7 @@ _divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
MOV(_jitc->rout, r1);
MOV(_jitc->rout + 1, r2);
@@ -3743,9 +3743,9 @@ _divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 1) {
movr(r0, r1);
return;
@@ -3762,7 +3762,7 @@ _divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
MOV(_jitc->rout, r1);
MOV(_jitc->rout + 1, r2);
@@ -3771,9 +3771,9 @@ _remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 1 || i0 == -1) {
MOV(r0, GR_0);
return;
@@ -3785,7 +3785,7 @@ _remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
MOV(_jitc->rout, r1);
MOV(_jitc->rout + 1, r2);
@@ -3794,9 +3794,9 @@ _remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 1) {
MOV(r0, GR_0);
return;
@@ -3813,9 +3813,9 @@ _remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
static void
_mulh(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_bool_t sign)
+ int32_t r0, int32_t r1, int32_t r2, jit_bool_t sign)
{
- jit_int32_t f0, f1;
+ int32_t f0, f1;
f0 = jit_get_reg(jit_class_fpr);
f1 = jit_get_reg(jit_class_fpr);
SETF_SIG(rn(f0), r1);
@@ -3830,10 +3830,10 @@ _mulh(jit_state_t *_jit,
}
static void
-_iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqmulr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2 || r0 == r3) {
reg = jit_get_reg(jit_class_gpr);
mulr(rn(reg), r2, r3);
@@ -3848,10 +3848,10 @@ _iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqmuli(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
iqmulr(r0, r1, r2, rn(reg), sign);
@@ -3859,11 +3859,11 @@ _iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqdivr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
- jit_int32_t sv0, rg0;
- jit_int32_t sv1, rg1;
+ int32_t sv0, rg0;
+ int32_t sv1, rg1;
if (r0 == r2 || r0 == r3) {
sv0 = jit_get_reg(jit_class_gpr);
@@ -3895,10 +3895,10 @@ _iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqdivi(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
iqdivr(r0, r1, r2, rn(reg), sign);
@@ -3906,9 +3906,9 @@ _iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -128 && i0 <= 127)
ANDI(r0, i0, r1);
else if (~i0 >= -128 && ~i0 <= 127)
@@ -3922,9 +3922,9 @@ _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -128 && i0 <= 127)
ORI(r0, i0, r1);
else {
@@ -3936,9 +3936,9 @@ _ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -128 && i0 <= 127)
XORI(r0, i0, r1);
else {
@@ -3951,9 +3951,9 @@ _xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
#if __BYTE_ORDER == __LITTLE_ENDIAN
static void
-_htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr);
rshi(rn(t0), r1, 8);
andi(r0, r1, 0xff);
@@ -3964,11 +3964,11 @@ _htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
t0 = jit_get_reg(jit_class_gpr);
t1 = jit_get_reg(jit_class_gpr);
t2 = jit_get_reg(jit_class_gpr);
@@ -3992,9 +3992,9 @@ _htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
#endif
static void
-_lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
lshr(r0, r1, rn(reg));
@@ -4002,9 +4002,9 @@ _lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
rshr(r0, r1, rn(reg));
@@ -4012,9 +4012,9 @@ _rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
rshr_u(r0, r1, rn(reg));
@@ -4022,7 +4022,7 @@ _rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ltr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ltr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_LT(PR_6, PR_7, r1, r2);
MOVI_p(r0, 1, PR_6);
@@ -4030,9 +4030,9 @@ _ltr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lti(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -127 && i0 <= 128)
CMPI_LT(PR_7, PR_6, i0 - 1, r1);
else {
@@ -4046,7 +4046,7 @@ _lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ltr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ltr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_LTU(PR_6, PR_7, r1, r2);
MOVI_p(r0, 1, PR_6);
@@ -4054,9 +4054,9 @@ _ltr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_lti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lti_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -127 && i0 <= 128)
CMPI_LTU(PR_7, PR_6, i0 - 1, r1);
else {
@@ -4070,7 +4070,7 @@ _lti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ler(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ler(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_LT(PR_6, PR_7, r2, r1);
MOV_p(r0, GR_0, PR_6);
@@ -4078,9 +4078,9 @@ _ler(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_lei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
ler(r0, r1, rn(reg));
@@ -4088,7 +4088,7 @@ _lei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ler_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ler_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_LTU(PR_6, PR_7, r2, r1);
MOV_p(r0, GR_0, PR_6);
@@ -4096,9 +4096,9 @@ _ler_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_lei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lei_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
ler_u(r0, r1, rn(reg));
@@ -4106,7 +4106,7 @@ _lei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_eqr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_eqr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_EQ(PR_6, PR_7, r1, r2);
MOVI_p(r0, 1, PR_6);
@@ -4114,9 +4114,9 @@ _eqr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_eqi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_eqi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -128 && i0 <= 127)
CMPI_EQ(PR_6, PR_7, i0, r1);
else {
@@ -4130,7 +4130,7 @@ _eqi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ger(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ger(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_LT(PR_6, PR_7, r1, r2);
MOV_p(r0, GR_0, PR_6);
@@ -4138,9 +4138,9 @@ _ger(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -127 && i0 <= 128)
CMPI_LT(PR_7, PR_6, i0 - 1, r1);
else {
@@ -4154,7 +4154,7 @@ _gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ger_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ger_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_LTU(PR_6, PR_7, r1, r2);
MOV_p(r0, GR_0, PR_6);
@@ -4162,9 +4162,9 @@ _ger_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gei_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -127 && i0 <= 128)
CMPI_LTU(PR_7, PR_6, i0 - 1, r1);
else {
@@ -4178,7 +4178,7 @@ _gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gtr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_gtr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_LT(PR_6, PR_7, r2, r1);
MOVI_p(r0, 1, PR_6);
@@ -4186,9 +4186,9 @@ _gtr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_gti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gti(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
gtr(r0, r1, rn(reg));
@@ -4196,7 +4196,7 @@ _gti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gtr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_gtr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_LTU(PR_6, PR_7, r2, r1);
MOVI_p(r0, 1, PR_6);
@@ -4204,9 +4204,9 @@ _gtr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_gti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gti_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
gtr_u(r0, r1, rn(reg));
@@ -4214,7 +4214,7 @@ _gti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ner(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ner(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMP_EQ(PR_6, PR_7, r1, r2);
MOV_p(r0, GR_0, PR_6);
@@ -4222,9 +4222,9 @@ _ner(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_nei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 >= -128 && i0 <= 127)
CMPI_EQ(PR_6, PR_7, i0, r1);
else {
@@ -4238,16 +4238,16 @@ _nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ldr_uc(r0, r1);
extr_c(r0, r0);
}
static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_c(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_c(r0, rn(reg));
@@ -4255,9 +4255,9 @@ _ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_uc(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_uc(r0, rn(reg));
@@ -4265,16 +4265,16 @@ _ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ldr_us(r0, r1);
extr_s(r0, r0);
}
static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_s(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_s(r0, rn(reg));
@@ -4282,9 +4282,9 @@ _ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_us(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_us(r0, rn(reg));
@@ -4292,16 +4292,16 @@ _ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_i(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ldr_ui(r0, r1);
extr_i(r0, r0);
}
static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_i(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_i(r0, rn(reg));
@@ -4309,9 +4309,9 @@ _ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_ui(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_ui(r0, rn(reg));
@@ -4319,9 +4319,9 @@ _ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_l(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_l(r0, rn(reg));
@@ -4329,9 +4329,9 @@ _ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_c(r0, rn(reg));
@@ -4339,9 +4339,9 @@ _ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -4353,9 +4353,9 @@ _ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_uc(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_uc(r0, rn(reg));
@@ -4363,9 +4363,9 @@ _ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -4377,9 +4377,9 @@ _ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_s(r0, rn(reg));
@@ -4387,9 +4387,9 @@ _ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -4401,9 +4401,9 @@ _ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_us(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_us(r0, rn(reg));
@@ -4411,9 +4411,9 @@ _ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -4425,9 +4425,9 @@ _ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_i(r0, rn(reg));
@@ -4435,9 +4435,9 @@ _ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -4449,9 +4449,9 @@ _ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_ui(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_ui(r0, rn(reg));
@@ -4459,9 +4459,9 @@ _ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -4473,9 +4473,9 @@ _ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_l(r0, rn(reg));
@@ -4483,9 +4483,9 @@ _ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -4497,9 +4497,9 @@ _ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_c(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_c(rn(reg), r0);
@@ -4507,9 +4507,9 @@ _sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_s(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_s(rn(reg), r0);
@@ -4517,9 +4517,9 @@ _sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_i(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_i(rn(reg), r0);
@@ -4527,9 +4527,9 @@ _sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_l(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_l(rn(reg), r0);
@@ -4537,9 +4537,9 @@ _sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_c(rn(reg), r2);
@@ -4547,9 +4547,9 @@ _stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r0, i0);
@@ -4561,9 +4561,9 @@ _stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_s(rn(reg), r2);
@@ -4571,9 +4571,9 @@ _stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r0, i0);
@@ -4585,9 +4585,9 @@ _stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_i(rn(reg), r2);
@@ -4595,9 +4595,9 @@ _stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r0, i0);
@@ -4609,9 +4609,9 @@ _stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_l(rn(reg), r2);
@@ -4619,9 +4619,9 @@ _stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0) {
reg = jit_get_reg(jit_class_gpr);
addi(rn(reg), r0, i0);
@@ -4633,7 +4633,7 @@ _stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bltr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bltr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_LT(PR_6, PR_7, r0, r1);
@@ -4644,10 +4644,10 @@ _bltr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blti(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -127 && i1 <= 128)
CMPI_LT(PR_7, PR_6, i1 - 1, r0);
else {
@@ -4663,7 +4663,7 @@ _blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bltr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bltr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_LTU(PR_6, PR_7, r0, r1);
@@ -4674,10 +4674,10 @@ _bltr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blti_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -127 && i1 <= 128)
CMPI_LTU(PR_7, PR_6, i1 - 1, r0);
else {
@@ -4693,7 +4693,7 @@ _blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bler(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bler(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_LT(PR_6, PR_7, r1, r0);
@@ -4704,10 +4704,10 @@ _bler(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blei(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bler(i0, r0, rn(reg));
@@ -4716,7 +4716,7 @@ _blei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bler_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bler_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_LTU(PR_6, PR_7, r1, r0);
@@ -4727,10 +4727,10 @@ _bler_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blei_u(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bler_u(i0, r0, rn(reg));
@@ -4739,7 +4739,7 @@ _blei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_beqr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_beqr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_EQ(PR_6, PR_7, r0, r1);
@@ -4750,10 +4750,10 @@ _beqr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_beqi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -128 && i1 <= 127)
CMPI_EQ(PR_6, PR_7, i1, r0);
else {
@@ -4769,7 +4769,7 @@ _beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bger(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bger(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_LT(PR_6, PR_7, r0, r1);
@@ -4780,10 +4780,10 @@ _bger(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -127 && i1 <= 128)
CMPI_LT(PR_7, PR_6, i1 - 1, r0);
else {
@@ -4799,7 +4799,7 @@ _bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bger_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bger_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_LTU(PR_6, PR_7, r0, r1);
@@ -4810,10 +4810,10 @@ _bger_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgei_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -127 && i1 <= 128)
CMPI_LTU(PR_7, PR_6, i1 - 1, r0);
else {
@@ -4829,7 +4829,7 @@ _bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bgtr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bgtr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_LT(PR_6, PR_7, r1, r0);
@@ -4840,10 +4840,10 @@ _bgtr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgti(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bgtr(i0, r0, rn(reg));
@@ -4852,7 +4852,7 @@ _bgti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bgtr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bgtr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_LTU(PR_6, PR_7, r1, r0);
@@ -4863,10 +4863,10 @@ _bgtr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgti_u(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bgtr_u(i0, r0, rn(reg));
@@ -4875,7 +4875,7 @@ _bgti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bner(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bner(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_EQ(PR_6, PR_7, r0, r1);
@@ -4886,10 +4886,10 @@ _bner(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bnei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 >= -128 && i1 <= 127)
CMPI_EQ(PR_6, PR_7, i1, r0);
else {
@@ -4905,10 +4905,10 @@ _bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bmsr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmsr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
andr(rn(reg), r0, r1);
CMPI_EQ(PR_6, PR_7, 0, rn(reg));
@@ -4920,10 +4920,10 @@ _bmsr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bmsi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmsi(jit_state_t *_jit, 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_gpr);
movi(rn(reg), i1);
andr(rn(reg), r0, rn(reg));
@@ -4936,10 +4936,10 @@ _bmsi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bmcr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmcr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
andr(rn(reg), r0, r1);
CMPI_EQ(PR_6, PR_7, 0, rn(reg));
@@ -4951,10 +4951,10 @@ _bmcr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bmci(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmci(jit_state_t *_jit, 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_gpr);
movi(rn(reg), i1);
andr(rn(reg), r0, rn(reg));
@@ -4967,13 +4967,13 @@ _bmci(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_baddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
+_baddr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
/* t1 = r0 + r1; overflow = r1 < 0 ? r0 < t1 : t1 < r0 */
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -4996,11 +4996,11 @@ _baddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
}
static jit_word_t
-_baddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
+_baddi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = baddr(i0, r0, rn(reg), carry);
@@ -5009,12 +5009,12 @@ _baddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
}
static jit_word_t
-_baddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
+_baddr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
addr(rn(t0), r0, r1);
@@ -5030,11 +5030,11 @@ _baddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
}
static jit_word_t
-_baddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
+_baddi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = baddr_u(i0, r0, rn(reg), carry);
@@ -5043,13 +5043,13 @@ _baddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
}
static jit_word_t
-_bsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
+_bsubr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
/* t1 = r0 - r1; overflow = 0 < r1 ? r0 < t1 : t1 < r0 */
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -5072,11 +5072,11 @@ _bsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
}
static jit_word_t
-_bsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
+_bsubi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bsubr(i0, r0, rn(reg), carry);
@@ -5085,12 +5085,12 @@ _bsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
}
static jit_word_t
-_bsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
+_bsubr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
subr(rn(t0), r0, r1);
@@ -5106,11 +5106,11 @@ _bsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
}
static jit_word_t
-_bsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
+_bsubi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1,
jit_bool_t carry)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bsubr_u(i0, r0, rn(reg), carry);
@@ -5119,7 +5119,7 @@ _bsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1,
}
static void
-_jmpr(jit_state_t *_jit, jit_int32_t r0)
+_jmpr(jit_state_t *_jit, int32_t r0)
{
MOV_br_rn(BR_6, r0);
BR(BR_6);
@@ -5149,9 +5149,9 @@ _jmpi_p(jit_state_t *_jit, jit_word_t i0)
}
static void
-_callr(jit_state_t *_jit, jit_int32_t r0)
+_callr(jit_state_t *_jit, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
LD8_inc(rn(reg), r0, 8);
MOV_br_rn(BR_6, rn(reg));
@@ -5163,7 +5163,7 @@ _callr(jit_state_t *_jit, jit_int32_t r0)
static void
_calli(jit_state_t *_jit, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
callr(rn(reg));
@@ -5174,7 +5174,7 @@ static jit_word_t
_calli_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
w = movi_p(rn(reg), i0);
callr(rn(reg));
@@ -5185,10 +5185,10 @@ _calli_p(jit_state_t *_jit, jit_word_t i0)
static void
_prolog(jit_state_t *_jit, jit_node_t *node)
{
- jit_int32_t reg, ruse, rout;
+ int32_t reg, ruse, rout;
if (_jitc->function->define_frame || _jitc->function->assume_frame) {
- jit_int32_t frame = -_jitc->function->frame;
+ int32_t frame = -_jitc->function->frame;
assert(_jitc->function->self.aoff >= frame);
if (_jitc->function->assume_frame)
return;
@@ -5312,7 +5312,7 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
}
static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
+_vastart(jit_state_t *_jit, int32_t r0)
{
assert(_jitc->function->self.call & jit_call_varargs);
/* Initialize va_list to the first stack argument. */
@@ -5323,7 +5323,7 @@ _vastart(jit_state_t *_jit, jit_int32_t r0)
}
static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vaarg(jit_state_t *_jit, int32_t r0, int32_t r1)
{
assert(_jitc->function->self.call & jit_call_varargs);
/* Load argument. */
diff --git a/libguile/lightning/lib/jit_ia64-fpu.c b/libguile/lightning/jit/ia64-fpu.c
index e152671f4..9c3146ffe 100644
--- a/libguile/lightning/lib/jit_ia64-fpu.c
+++ b/libguile/lightning/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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,int32_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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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, 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, 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, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, int32_t r1)
{
assert(_jitc->function->self.call & jit_call_varargs);
/* Load argument. */
diff --git a/libguile/lightning/lib/jit_ia64.c b/libguile/lightning/jit/ia64.c
index 6b756bfcc..185d41cbf 100644
--- a/libguile/lightning/lib/jit_ia64.c
+++ b/libguile/lightning/jit/ia64.c
@@ -17,9 +17,6 @@
* Paulo Cesar Pereira de Andrade
*/
-#include <lightning.h>
-#include <lightning/jit_private.h>
-
#define jit_arg_reg_p(i) ((i) >= 0 && (i) < 8)
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define C_DISP 0
@@ -27,9 +24,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
@@ -50,14 +47,14 @@ extern void __clear_cache(void *, void *);
#endif
#define PROTO 1
-# include "jit_ia64-cpu.c"
-# include "jit_ia64-fpu.c"
+# include "ia64-cpu.c"
+# include "ia64-fpu.c"
#undef PROTO
/*
* Initialization
*/
-jit_register_t _rvs[] = {
+static const jit_register_t _rvs[] = {
/* Always 0 */
{ 0, "r0" },
/* Global Pointer */
@@ -251,7 +248,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 +270,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 +289,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 +308,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, 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 +341,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 +359,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 +377,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 +430,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 +441,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 +459,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 +482,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 +502,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 +514,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 +526,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 +538,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 +550,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 +562,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 +574,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 +586,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 +600,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 +615,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 +629,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 +645,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 +662,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 +676,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 +692,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 +709,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 +728,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 +747,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 +772,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 +797,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 +821,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 +845,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 +887,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 +895,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 +903,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 +911,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 +919,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 +927,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 +935,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 +943,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 +951,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 +964,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
@@ -1099,6 +1096,9 @@ _emit_code(jit_state_t *_jit)
return (NULL);
value = jit_classify(node->code);
+#if GET_JIT_SIZE
+ sync();
+#endif
#if DEVEL_DISASSEMBLER
/* FIXME DEVEL_DISASSEMBLER should become DISASSEMBLER,
* but a "real" DEVEL_DISASSEMBLER should be required
@@ -1645,6 +1645,9 @@ _emit_code(jit_state_t *_jit)
break;
}
}
+#if GET_JIT_SIZE
+ sync();
+#endif
jit_regarg_clr(node, value);
if (jit_carry == _NOREG)
assert(jit_regset_cmp_ui(&_jitc->regarg, 0) == 0);
@@ -1682,8 +1685,8 @@ _emit_code(jit_state_t *_jit)
}
#define CODE 1
-# include "jit_ia64-cpu.c"
-# include "jit_ia64-fpu.c"
+# include "ia64-cpu.c"
+# include "ia64-fpu.c"
#undef CODE
void
@@ -1745,7 +1748,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)
diff --git a/libguile/lightning/include/lightning/jit_ia64.h b/libguile/lightning/jit/ia64.h
index 4723e70ce..4723e70ce 100644
--- a/libguile/lightning/include/lightning/jit_ia64.h
+++ b/libguile/lightning/jit/ia64.h
diff --git a/libguile/lightning/jit/jit.c b/libguile/lightning/jit/jit.c
new file mode 100644
index 000000000..666b1dfec
--- /dev/null
+++ b/libguile/lightning/jit/jit.c
@@ -0,0 +1,490 @@
+/*
+ * Copyright (C) 2012-2019 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU lightning.
+ *
+ * GNU lightning is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU lightning is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * Authors:
+ * Paulo Cesar Pereira de Andrade
+ */
+
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <assert.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <sys/mman.h>
+
+#include "../jit.h"
+
+#if defined(__GNUC__)
+# define maybe_unused __attribute__ ((unused))
+#else
+# define maybe_unused /**/
+#endif
+
+#define rc(value) jit_class_##value
+#define rn(reg) (jit_regno(_rvs[jit_regno(reg.bits)].spec))
+
+#if defined(__i386__) || defined(__x86_64__)
+# define JIT_SP JIT_GPR(_RSP)
+# define JIT_RET JIT_GPR(_RAX)
+# if __X32
+# define JIT_FRET JIT_FPR(_ST0)
+# else
+# if __CYGWIN__
+# define JIT_RA0 JIT_GPR(_RCX)
+# else
+# define JIT_RA0 JIT_GPR(_RDI)
+# endif
+# define JIT_FA0 JIT_FPR(_XMM0)
+# define JIT_FRET JIT_FPR(_XMM0)
+# endif
+#elif defined(__mips__)
+# define JIT_RA0 JIT_GPR(_A0)
+# define JIT_FA0 JIT_FPR(_F12)
+# define JIT_SP JIT_GPR(_SP)
+# define JIT_RET JIT_GPR(_V0)
+# define JIT_FRET JIT_FPR(_F0)
+#elif defined(__arm__)
+# define JIT_RA0 JIT_GPR(_R0)
+# define JIT_FA0 JIT_FPR(_D0)
+# define JIT_SP JIT_GPR(_R13)
+# define JIT_RET JIT_GPR(_R0)
+# if defined(__ARM_PCS_VFP)
+# define JIT_FRET JIT_FPR(_D0)
+# else
+# define JIT_FRET JIT_FPR(_R0)
+# endif
+#elif defined(__ppc__) || defined(__powerpc__)
+# define JIT_RA0 JIT_GPR(_R3)
+# define JIT_FA0 JIT_FPR(_F1)
+# define JIT_SP JIT_GPR(_R1)
+# define JIT_RET JIT_GPR(_R3)
+# define JIT_FRET JIT_FPR(_F1)
+#elif defined(__sparc__)
+# define JIT_SP JIT_GPR(_SP)
+# define JIT_RET JIT_GPR(_I0)
+# define JIT_FRET JIT_FPR(_F0)
+#elif defined(__ia64__)
+# define JIT_SP JIT_GPR(_R12)
+# define JIT_RET JIT_GPR(_R8)
+# define JIT_FRET JIT_FPR(_F8)
+#elif defined(__hppa__)
+# define JIT_SP JIT_GPR(_R30)
+# define JIT_RET JIT_GPR(_R28)
+# define JIT_FRET JIT_FPR(_F4)
+#elif defined(__aarch64__)
+# define JIT_RA0 JIT_GPR(_R0)
+# define JIT_FA0 JIT_FPR(_V0)
+# define JIT_SP JIT_GPR(_SP)
+# define JIT_RET JIT_GPR(_R0)
+# define JIT_FRET JIT_FPR(_V0)
+#elif defined(__s390__) || defined(__s390x__)
+# define JIT_SP JIT_GPR(_R15)
+# define JIT_RET JIT_GPR(_R2)
+# define JIT_FRET JIT_FPR(_F0)
+#elif defined(__alpha__)
+# define JIT_SP JIT_GPR(_SP)
+# define JIT_RET JIT_GPR(_V0)
+# define JIT_FRET JIT_FPR(_F0)
+#endif
+
+/*
+ * Private jit_class bitmasks
+ */
+#define jit_class_named 0x00400000 /* hit must be the named reg */
+#define jit_class_nospill 0x00800000 /* hint to fail if need spill */
+#define jit_class_sft 0x01000000 /* not a hardware register */
+#define jit_class_rg8 0x04000000 /* x86 8 bits */
+#define jit_class_xpr 0x80000000 /* float / vector */
+/* Used on sparc64 where %f0-%f31 can be encode for single float
+ * but %f32 to %f62 only as double precision */
+#define jit_class_sng 0x10000000 /* Single precision float */
+#define jit_class_dbl 0x20000000 /* Only double precision float */
+#define jit_regno_patch 0x00008000 /* this is a register
+ * returned by a "user" call
+ * to jit_get_reg() */
+
+union jit_pc
+{
+ uint8_t *uc;
+ uint16_t *us;
+ uint32_t *ui;
+ uint64_t *ul;
+ intptr_t w;
+ uintptr_t uw;
+};
+
+struct jit_state
+{
+ union jit_pc pc;
+ uint8_t *start;
+ uint8_t *last_instruction_start;
+ uint8_t *limit;
+ uint8_t temp_gpr_saved;
+ uint8_t temp_fpr_saved;
+ uint8_t overflow;
+};
+
+enum jit_reloc_flags
+{
+ JIT_RELOC_CAN_SHORTEN = 1<<0
+};
+
+struct jit_register
+{
+ jit_reg_t spec;
+ char *name;
+};
+
+typedef struct jit_register jit_register_t;
+
+static const jit_register_t _rvs[];
+
+#define jit_regload_reload 0 /* convert to reload */
+#define jit_regload_delete 1 /* just remove node */
+#define jit_regload_isdead 2 /* delete and unset live bit */
+
+#define ASSERT(x) do { if (!(x)) abort(); } while (0)
+#if defined(__GNUC__)
+# define UNLIKELY(exprn) __builtin_expect(exprn, 0)
+#else
+# define UNLIKELY(exprn) exprn
+#endif
+
+static jit_bool_t jit_get_cpu(void);
+static jit_bool_t jit_init(jit_state_t *);
+static void jit_flush(void *fptr, void *tptr);
+static void jit_try_shorten(jit_state_t *_jit, jit_reloc_t reloc);
+
+jit_bool_t
+init_jit(void)
+{
+ return jit_get_cpu ();
+}
+
+jit_state_t *
+jit_new_state(void)
+{
+ jit_state_t *_jit = malloc (sizeof (*_jit));
+ if (!_jit)
+ abort ();
+
+ memset(_jit, 0, sizeof (*_jit));
+
+ if (!jit_init (_jit));
+
+ return _jit;
+}
+
+void
+jit_destroy_state(jit_state_t *_jit)
+{
+ free (_jit);
+}
+
+jit_pointer_t
+jit_address(jit_state_t *_jit)
+{
+ return _jit->pc.uc;
+}
+
+void
+jit_begin(jit_state_t *_jit, uint8_t* buf, size_t length)
+{
+ ASSERT (!_jit->start);
+
+ _jit->start = buf;
+ _jit->limit = buf + length;
+ jit_reset(_jit);
+}
+
+jit_bool_t
+jit_has_overflow(jit_state_t *_jit)
+{
+ ASSERT (_jit->start);
+ return _jit->overflow;
+}
+
+void
+jit_reset(jit_state_t *_jit)
+{
+ ASSERT (_jit->start);
+ _jit->pc.uc = _jit->start;
+ _jit->overflow = 0;
+}
+
+void*
+jit_end(jit_state_t *_jit, size_t *length)
+{
+ uint8_t *code = _jit->start;
+ uint8_t *end = _jit->pc.uc;
+
+ ASSERT (code);
+ ASSERT (code <= end);
+ ASSERT (end <= _jit->limit);
+ ASSERT (!_jit->overflow);
+
+ jit_flush (code, end);
+
+ if (length) {
+ *length = end - code;
+ }
+
+ _jit->pc.uc = _jit->start = _jit->limit = NULL;
+ _jit->overflow = 0;
+
+ return code;
+}
+
+static int
+is_power_of_two (unsigned x)
+{
+ return x && !(x & (x-1));
+}
+
+void
+jit_align(jit_state_t *_jit, unsigned align)
+{
+ ASSERT (is_power_of_two (align));
+ uintptr_t here = _jit->pc.w;
+ uintptr_t there = (here + align - 1) & ~(align - 1);
+ if (there - here)
+ jit_nop(_jit, there - here);
+}
+
+static inline void emit_u8(jit_state_t *_jit, uint8_t u8) {
+ if (UNLIKELY(_jit->pc.uc + 1 > _jit->limit)) {
+ _jit->overflow = 1;
+ } else {
+ *_jit->pc.uc++ = u8;
+ }
+}
+
+static inline void emit_u16(jit_state_t *_jit, uint16_t u16) {
+ if (UNLIKELY(_jit->pc.us + 1 > (uint16_t*)_jit->limit)) {
+ _jit->overflow = 1;
+ } else {
+ *_jit->pc.us++ = u16;
+ }
+}
+
+static inline void emit_u32(jit_state_t *_jit, uint32_t u32) {
+ if (UNLIKELY(_jit->pc.ui + 1 > (uint32_t*)_jit->limit)) {
+ _jit->overflow = 1;
+ } else {
+ *_jit->pc.ui++ = u32;
+ }
+}
+
+static inline void emit_u64(jit_state_t *_jit, uint64_t u64) {
+ if (UNLIKELY(_jit->pc.ul + 1 > (uint64_t*)_jit->limit)) {
+ _jit->overflow = 1;
+ } else {
+ *_jit->pc.ul++ = u64;
+ }
+}
+
+static inline jit_reloc_t
+jit_reloc (jit_state_t *_jit, enum jit_reloc_kind kind,
+ uint8_t inst_start_offset, uint16_t flags)
+{
+ jit_reloc_t ret;
+
+ ret.kind = kind;
+ ret.inst_start_offset = inst_start_offset;
+ ret.flags = 0;
+ ret.offset = _jit->pc.uc - _jit->start;
+
+ switch (kind)
+ {
+ case JIT_RELOC_ABSOLUTE:
+ if (sizeof(intptr_t) == 4)
+ emit_u32 (_jit, 0);
+ else
+ emit_u64 (_jit, 0);
+ break;
+ case JIT_RELOC_REL8:
+ emit_u8 (_jit, 0);
+ break;
+ case JIT_RELOC_REL16:
+ emit_u16 (_jit, 0);
+ break;
+ case JIT_RELOC_REL32:
+ emit_u32 (_jit, 0);
+ break;
+ case JIT_RELOC_REL64:
+ emit_u64 (_jit, 0);
+ break;
+ default:
+ abort ();
+ }
+
+ return ret;
+}
+
+void
+jit_patch_here(jit_state_t *_jit, jit_reloc_t reloc)
+{
+ jit_patch_there (_jit, reloc, jit_address (_jit));
+}
+
+void
+jit_patch_there(jit_state_t* _jit, jit_reloc_t reloc, jit_pointer_t addr)
+{
+ if (_jit->overflow)
+ return;
+ union jit_pc loc;
+ loc.uc = _jit->start + reloc.offset;
+ ptrdiff_t diff;
+
+ switch (reloc.kind)
+ {
+ case JIT_RELOC_ABSOLUTE:
+ if (sizeof(diff) == 4)
+ *loc.ui = (uintptr_t)addr;
+ else
+ *loc.ul = (uintptr_t)addr;
+ if (loc.uc + sizeof(diff) == _jit->pc.uc &&
+ (reloc.flags & JIT_RELOC_CAN_SHORTEN))
+ jit_try_shorten (_jit, reloc);
+ break;
+ case JIT_RELOC_REL8:
+ diff = ((uint8_t*)addr) - (loc.uc + 1);
+ ASSERT (INT8_MIN <= diff && diff <= INT8_MAX);
+ *loc.uc = diff;
+ break;
+ case JIT_RELOC_REL16:
+ diff = ((uint8_t*)addr) - (loc.uc + 2);
+ ASSERT (INT16_MIN <= diff && diff <= INT16_MAX);
+ *loc.us = diff;
+ if ((loc.uc + 1) == _jit->pc.uc && (reloc.flags & JIT_RELOC_CAN_SHORTEN))
+ jit_try_shorten (_jit, reloc);
+ break;
+ case JIT_RELOC_REL32:
+ diff = ((uint8_t*)addr) - (loc.uc + 4);
+ ASSERT (INT32_MIN <= diff && diff <= INT32_MAX);
+ *loc.ui = diff;
+ if ((loc.ui + 1) == _jit->pc.ui && (reloc.flags & JIT_RELOC_CAN_SHORTEN))
+ jit_try_shorten (_jit, reloc);
+ break;
+ case JIT_RELOC_REL64:
+ diff = ((uint8_t*)addr) - (loc.uc + 8);
+ *loc.ul = diff;
+ if ((loc.ul + 1) == _jit->pc.ul && (reloc.flags & JIT_RELOC_CAN_SHORTEN))
+ jit_try_shorten (_jit, reloc);
+ break;
+ default:
+ abort ();
+ }
+}
+
+#if defined(__i386__) || defined(__x86_64__)
+# include "x86.c"
+#elif defined(__mips__)
+# include "mips.c"
+#elif defined(__arm__)
+# include "arm.c"
+#elif defined(__ppc__) || defined(__powerpc__)
+# include "ppc.c"
+#elif defined(__sparc__)
+# include "sparc.c"
+#elif defined(__ia64__)
+# include "ia64.c"
+#elif defined(__hppa__)
+# include "hppa.c"
+#elif defined(__aarch64__)
+# include "aarch64.c"
+#elif defined(__s390__) || defined(__s390x__)
+# include "s390.c"
+#elif defined(__alpha__)
+# include "alpha.c"
+#endif
+
+#define JIT_IMPL_0(stem, ret) \
+ ret jit_##stem (jit_state_t* _jit) \
+ { \
+ return stem(_jit); \
+ }
+#define JIT_IMPL_1(stem, ret, ta) \
+ ret jit_##stem (jit_state_t* _jit, jit_##ta##_t a) \
+ { \
+ return stem(_jit, unwrap_##ta(a)); \
+ }
+#define JIT_IMPL_2(stem, ret, ta, tb) \
+ ret jit_##stem (jit_state_t* _jit, jit_##ta##_t a, jit_##tb##_t b) \
+ { \
+ return stem(_jit, unwrap_##ta(a), unwrap_##tb(b)); \
+ }
+#define JIT_IMPL_3(stem, ret, ta, tb, tc) \
+ ret jit_##stem (jit_state_t* _jit, jit_##ta##_t a, jit_##tb##_t b, jit_##tc##_t c) \
+ { \
+ return stem(_jit, unwrap_##ta(a), unwrap_##tb(b), unwrap_##tc(c)); \
+ }
+#define JIT_IMPL_4(stem, ret, ta, tb, tc, td) \
+ ret jit_##stem (jit_state_t* _jit, jit_##ta##_t a, jit_##tb##_t b, jit_##tc##_t c, jit_##td##_t d) \
+ { \
+ return stem(_jit, unwrap_##ta(a), unwrap_##tb(b), unwrap_##tc(c), unwrap_##td(d)); \
+ }
+
+#define JIT_IMPL_RFF__(stem) JIT_IMPL_2(stem, jit_reloc_t, fpr, fpr)
+#define JIT_IMPL_RGG__(stem) JIT_IMPL_2(stem, jit_reloc_t, gpr, gpr)
+#define JIT_IMPL_RG___(stem) JIT_IMPL_1(stem, jit_reloc_t, gpr)
+#define JIT_IMPL_RGi__(stem) JIT_IMPL_2(stem, jit_reloc_t, gpr, imm)
+#define JIT_IMPL_RGu__(stem) JIT_IMPL_2(stem, jit_reloc_t, gpr, uimm)
+#define JIT_IMPL_R____(stem) JIT_IMPL_0(stem, jit_reloc_t)
+#define JIT_IMPL__FFF_(stem) JIT_IMPL_3(stem, void, fpr, fpr, fpr)
+#define JIT_IMPL__FF__(stem) JIT_IMPL_2(stem, void, fpr, fpr)
+#define JIT_IMPL__FGG_(stem) JIT_IMPL_3(stem, void, fpr, gpr, gpr)
+#define JIT_IMPL__FG__(stem) JIT_IMPL_2(stem, void, fpr, gpr)
+#define JIT_IMPL__FGo_(stem) JIT_IMPL_3(stem, void, fpr, gpr, off)
+#define JIT_IMPL__F___(stem) JIT_IMPL_1(stem, void, fpr)
+#define JIT_IMPL__Fd__(stem) JIT_IMPL_2(stem, void, fpr, float64)
+#define JIT_IMPL__Ff__(stem) JIT_IMPL_2(stem, void, fpr, float32)
+#define JIT_IMPL__Fp__(stem) JIT_IMPL_2(stem, void, fpr, pointer)
+#define JIT_IMPL__GF__(stem) JIT_IMPL_2(stem, void, gpr, fpr)
+#define JIT_IMPL__GGF_(stem) JIT_IMPL_3(stem, void, gpr, gpr, fpr)
+#define JIT_IMPL__GGGG(stem) JIT_IMPL_4(stem, void, gpr, gpr, gpr, gpr)
+#define JIT_IMPL__GGG_(stem) JIT_IMPL_3(stem, void, gpr, gpr, gpr)
+#define JIT_IMPL__GGGi(stem) JIT_IMPL_4(stem, void, gpr, gpr, gpr, imm)
+#define JIT_IMPL__GGGu(stem) JIT_IMPL_4(stem, void, gpr, gpr, gpr, uimm)
+#define JIT_IMPL__GG__(stem) JIT_IMPL_2(stem, void, gpr, gpr)
+#define JIT_IMPL__GGi_(stem) JIT_IMPL_3(stem, void, gpr, gpr, imm)
+#define JIT_IMPL__GGo_(stem) JIT_IMPL_3(stem, void, gpr, gpr, off)
+#define JIT_IMPL__GGu_(stem) JIT_IMPL_3(stem, void, gpr, gpr, uimm)
+#define JIT_IMPL__G___(stem) JIT_IMPL_1(stem, void, gpr)
+#define JIT_IMPL__Gi__(stem) JIT_IMPL_2(stem, void, gpr, imm)
+#define JIT_IMPL__Gp__(stem) JIT_IMPL_2(stem, void, gpr, pointer)
+#define JIT_IMPL______(stem) JIT_IMPL_0(stem, void)
+#define JIT_IMPL__i___(stem) JIT_IMPL_1(stem, void, imm)
+#define JIT_IMPL__oGF_(stem) JIT_IMPL_3(stem, void, off, gpr, fpr)
+#define JIT_IMPL__oGG_(stem) JIT_IMPL_3(stem, void, off, gpr, gpr)
+#define JIT_IMPL__pF__(stem) JIT_IMPL_2(stem, void, pointer, fpr)
+#define JIT_IMPL__pG__(stem) JIT_IMPL_2(stem, void, pointer, gpr)
+#define JIT_IMPL__p___(stem) JIT_IMPL_1(stem, void, pointer)
+
+#define unwrap_gpr(r) rn(r)
+#define unwrap_fpr(r) rn(r)
+#define unwrap_imm(i) i
+#define unwrap_uimm(u) u
+#define unwrap_off(o) o
+#define unwrap_pointer(p) ((uintptr_t) p)
+#define unwrap_float32(f) f
+#define unwrap_float64(d) d
+
+#define IMPL_INSTRUCTION(kind, stem) JIT_IMPL_##kind(stem)
+FOR_EACH_INSTRUCTION(IMPL_INSTRUCTION)
+#undef IMPL_INSTRUCTION
diff --git a/libguile/lightning/lib/jit_mips-cpu.c b/libguile/lightning/jit/mips-cpu.c
index f68040f35..7ab58b873 100644
--- a/libguile/lightning/lib/jit_mips-cpu.c
+++ b/libguile/lightning/jit/mips-cpu.c
@@ -20,37 +20,37 @@
#if PROTO
typedef union {
#if __BYTE_ORDER == __LITTLE_ENDIAN
- struct { jit_uint32_t _:26; jit_uint32_t b : 6; } hc;
- struct { jit_uint32_t _:21; jit_uint32_t b : 5; } rs;
- struct { jit_uint32_t _:21; jit_uint32_t b : 5; } fm;
- struct { jit_uint32_t _:16; jit_uint32_t b : 5; } rt;
- struct { jit_uint32_t _:16; jit_uint32_t b : 5; } ft;
- struct { jit_uint32_t _:11; jit_uint32_t b : 5; } rd;
- struct { jit_uint32_t _:11; jit_uint32_t b : 5; } fs;
- struct { jit_uint32_t _: 6; jit_uint32_t b : 5; } ic;
- struct { jit_uint32_t _: 6; jit_uint32_t b : 5; } fd;
- struct { jit_uint32_t _: 6; jit_uint32_t b : 10; } tr;
- struct { jit_uint32_t _: 6; jit_uint32_t b : 20; } br;
- struct { jit_uint32_t b : 6; } tc;
- struct { jit_uint32_t b : 11; } cc;
- struct { jit_uint32_t b : 16; } is;
- struct { jit_uint32_t b : 26; } ii;
+ struct { uint32_t _:26; uint32_t b : 6; } hc;
+ struct { uint32_t _:21; uint32_t b : 5; } rs;
+ struct { uint32_t _:21; uint32_t b : 5; } fm;
+ struct { uint32_t _:16; uint32_t b : 5; } rt;
+ struct { uint32_t _:16; uint32_t b : 5; } ft;
+ struct { uint32_t _:11; uint32_t b : 5; } rd;
+ struct { uint32_t _:11; uint32_t b : 5; } fs;
+ struct { uint32_t _: 6; uint32_t b : 5; } ic;
+ struct { uint32_t _: 6; uint32_t b : 5; } fd;
+ struct { uint32_t _: 6; uint32_t b : 10; } tr;
+ struct { uint32_t _: 6; uint32_t b : 20; } br;
+ struct { uint32_t b : 6; } tc;
+ struct { uint32_t b : 11; } cc;
+ struct { uint32_t b : 16; } is;
+ struct { uint32_t b : 26; } ii;
#else
- struct { jit_uint32_t b : 6; } hc;
- struct { jit_uint32_t _: 6; jit_uint32_t b : 5; } rs;
- struct { jit_uint32_t _: 6; jit_uint32_t b : 5; } fm;
- struct { jit_uint32_t _:11; jit_uint32_t b : 5; } rt;
- struct { jit_uint32_t _:11; jit_uint32_t b : 5; } ft;
- struct { jit_uint32_t _:16; jit_uint32_t b : 5; } rd;
- struct { jit_uint32_t _:16; jit_uint32_t b : 5; } fs;
- struct { jit_uint32_t _:21; jit_uint32_t b : 5; } ic;
- struct { jit_uint32_t _:21; jit_uint32_t b : 5; } fd;
- struct { jit_uint32_t _:21; jit_uint32_t b : 10; } tr;
- struct { jit_uint32_t _:21; jit_uint32_t b : 20; } br;
- struct { jit_uint32_t _:26; jit_uint32_t b : 6; } tc;
- struct { jit_uint32_t _:21; jit_uint32_t b : 11; } cc;
- struct { jit_uint32_t _:16; jit_uint32_t b : 16; } is;
- struct { jit_uint32_t _: 6; jit_uint32_t b : 26; } ii;
+ struct { uint32_t b : 6; } hc;
+ struct { uint32_t _: 6; uint32_t b : 5; } rs;
+ struct { uint32_t _: 6; uint32_t b : 5; } fm;
+ struct { uint32_t _:11; uint32_t b : 5; } rt;
+ struct { uint32_t _:11; uint32_t b : 5; } ft;
+ struct { uint32_t _:16; uint32_t b : 5; } rd;
+ struct { uint32_t _:16; uint32_t b : 5; } fs;
+ struct { uint32_t _:21; uint32_t b : 5; } ic;
+ struct { uint32_t _:21; uint32_t b : 5; } fd;
+ struct { uint32_t _:21; uint32_t b : 10; } tr;
+ struct { uint32_t _:21; uint32_t b : 20; } br;
+ struct { uint32_t _:26; uint32_t b : 6; } tc;
+ struct { uint32_t _:21; uint32_t b : 11; } cc;
+ struct { uint32_t _:16; uint32_t b : 16; } is;
+ struct { uint32_t _: 6; uint32_t b : 26; } ii;
#endif
int op;
} jit_instr_t;
@@ -296,18 +296,18 @@ typedef union {
# define MIPS_SDBPP 0x3f
# define ii(i) *_jit->pc.ui++ = i
static void
-_hrrrit(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t);
+_hrrrit(jit_state_t*,int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t);
# define hrrrit(hc,rs,rt,rd,im,tc) _hrrrit(_jit,hc,rs,rt,rd,im,tc)
# define hrrr_t(hc,rs,rt,rd,tc) hrrrit(hc,rs,rt,rd,0,tc)
# define rrr_t(rs,rt,rd,tc) hrrr_t(0,rs,rt,rd,tc)
# define hrri(hc,rs,rt,im) _hrri(_jit,hc,rs,rt,im)
-static void _hrri(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _hrri(jit_state_t*,int32_t,int32_t,int32_t,int32_t);
# define hi(hc,im) _hi(_jit,hc,im)
-static void _hi(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _hi(jit_state_t*,int32_t,int32_t);
# define NOP(i0) ii(0)
# define nop(i0) _nop(_jit,i0)
-static void _nop(jit_state_t*,jit_int32_t);
+static void _nop(jit_state_t*,int32_t);
# define h_ri(hc,rt,im) _hrri(_jit,hc,0,rt,im)
# define rrit(rt,rd,im,tc) _hrrrit(_jit,0,0,rt,rd,im,tc)
# define LUI(rt,im) h_ri(MIPS_LUI,rt,im)
@@ -402,67 +402,67 @@ static void _nop(jit_state_t*,jit_int32_t);
# define divu(rs,rt) DDIVU(rs,rt)
# endif
# define addi(r0,r1,i0) _addi(_jit,r0,r1,i0)
-static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define addcr(r0,r1,r2) _addcr(_jit,r0,r1,r2)
-static void _addcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addcr(jit_state_t*,int32_t,int32_t,int32_t);
#define addci(r0,r1,i0) _addci(_jit,r0,r1,i0)
-static void _addci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addxr(r0,r1,r2) _addxr(_jit,r0,r1,r2)
-static void _addxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addxr(jit_state_t*,int32_t,int32_t,int32_t);
# define addxi(r0,r1,i0) _addxi(_jit,r0,r1,i0)
-static void _addxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subi(r0,r1,i0) _subi(_jit,r0,r1,i0)
-static void _subi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subcr(r0,r1,r2) _subcr(_jit,r0,r1,r2)
-static void _subcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subcr(jit_state_t*,int32_t,int32_t,int32_t);
# define subci(r0,r1,i0) _subci(_jit,r0,r1,i0)
-static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subxr(r0,r1,r2) _subxr(_jit,r0,r1,r2)
-static void _subxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subxr(jit_state_t*,int32_t,int32_t,int32_t);
# define subxi(r0,r1,i0) _subxi(_jit,r0,r1,i0)
-static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rsbi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define mulr(r0,r1,r2) _mulr(_jit,r0,r1,r2)
-static void _mulr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _mulr(jit_state_t*,int32_t,int32_t,int32_t);
# define muli(r0,r1,i0) _muli(_jit,r0,r1,i0)
-static void _muli(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _muli(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qmulr(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,1)
# define qmulr_u(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,0)
# define iqmulr(r0,r1,r2,r3,cc) _iqmulr(_jit,r0,r1,r2,r3,cc)
-static void _iqmulr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqmulr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
# define qmuli(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,1)
# define qmuli_u(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,0)
# define iqmuli(r0,r1,r2,i0,cc) _iqmuli(_jit,r0,r1,r2,i0,cc)
-static void _iqmuli(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqmuli(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
# define divr(r0,r1,r2) _divr(_jit,r0,r1,r2)
-static void _divr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr(jit_state_t*,int32_t,int32_t,int32_t);
# define divi(r0,r1,i0) _divi(_jit,r0,r1,i0)
-static void _divi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define divr_u(r0,r1,r2) _divr_u(_jit,r0,r1,r2)
-static void _divr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define divi_u(r0,r1,i0) _divi_u(_jit,r0,r1,i0)
-static void _divi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qdivr(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,1)
# define qdivr_u(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,0)
# define iqdivr(r0,r1,r2,r3,cc) _iqdivr(_jit,r0,r1,r2,r3,cc)
-static void _iqdivr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqdivr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
# define qdivi(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,1)
# define qdivi_u(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,0)
# define iqdivi(r0,r1,r2,i0,cc) _iqdivi(_jit,r0,r1,r2,i0,cc)
-static void _iqdivi(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqdivi(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
# define remr(r0,r1,r2) _remr(_jit,r0,r1,r2)
-static void _remr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr(jit_state_t*,int32_t,int32_t,int32_t);
# define remi(r0,r1,i0) _remi(_jit,r0,r1,i0)
-static void _remi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define remr_u(r0,r1,r2) _remr_u(_jit,r0,r1,r2)
-static void _remr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define remi_u(r0,r1,i0) _remi_u(_jit,r0,r1,i0)
-static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define lshr(r0,r1,r2) SLLV(r0,r1,r2)
# define lshi(r0,r1,i0) SLL(r0,r1,i0)
@@ -473,264 +473,264 @@ static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
# else
# define lshr(r0,r1,r2) DSLLV(r0,r1,r2)
# define lshi(r0,r1,i0) _lshi(_jit,r0,r1,i0)
-static void _lshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rshr(r0,r1,r2) DSRAV(r0,r1,r2)
# define rshi(r0,r1,i0) _rshi(_jit,r0,r1,i0)
-static void _rshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rshr_u(r0,r1,r2) DSRLV(r0,r1,r2)
# define rshi_u(r0,r1,i0) _rshi_u(_jit,r0,r1,i0)
-static void _rshi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# endif
# define andr(r0,r1,r2) AND(r0,r1,r2)
# define andi(r0,r1,i0) _andi(_jit,r0,r1,i0)
-static void _andi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _andi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define orr(r0,r1,r2) OR(r0,r1,r2)
# define ori(r0,r1,i0) _ori(_jit,r0,r1,i0)
-static void _ori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define xorr(r0,r1,r2) XOR(r0,r1,r2)
# define xori(r0,r1,i0) _xori(_jit,r0,r1,i0)
-static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _xori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define movr(r0,r1) orr(r0,r1,_ZERO_REGNO)
# define movi(r0,i0) _movi(_jit,r0,i0)
-static void _movi(jit_state_t*,jit_int32_t,jit_word_t);
+static void _movi(jit_state_t*,int32_t,jit_word_t);
# define movi_p(r0,i0) _movi_p(_jit,r0,i0)
-static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
+static jit_word_t _movi_p(jit_state_t*,int32_t,jit_word_t);
# define ldr_c(r0,r1) LB(r0,0,r1)
# define ldi_c(r0,i0) _ldi_c(_jit,r0,i0)
-static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_c(jit_state_t*,int32_t,jit_word_t);
# define ldr_uc(r0,r1) LBU(r0,0,r1)
# define ldi_uc(r0,i0) _ldi_uc(_jit,r0,i0)
-static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_uc(jit_state_t*,int32_t,jit_word_t);
# define ldr_s(r0,r1) LH(r0,0,r1)
# define ldi_s(r0,i0) _ldi_s(_jit,r0,i0)
-static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_s(jit_state_t*,int32_t,jit_word_t);
# define ldr_us(r0,r1) LHU(r0,0,r1)
# define ldi_us(r0,i0) _ldi_us(_jit,r0,i0)
-static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_us(jit_state_t*,int32_t,jit_word_t);
# define ldr_i(r0,r1) LW(r0,0,r1)
# define ldi_i(r0,i0) _ldi_i(_jit,r0,i0)
-static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_i(jit_state_t*,int32_t,jit_word_t);
# if __WORDSIZE == 64
# define ldr_ui(r0,r1) LWU(r0,0,r1)
# define ldi_ui(r0,i0) _ldi_ui(_jit,r0,i0)
-static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_ui(jit_state_t*,int32_t,jit_word_t);
# define ldr_l(r0,r1) LD(r0,0,r1)
# define ldi_l(r0,i0) _ldi_l(_jit,r0,i0)
-static void _ldi_l(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_l(jit_state_t*,int32_t,jit_word_t);
# endif
# define ldxr_c(r0,r1,r2) _ldxr_c(_jit,r0,r1,r2)
-static void _ldxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_c(r0,r1,i0) _ldxi_c(_jit,r0,r1,i0)
-static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_c(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_uc(r0,r1,r2) _ldxr_uc(_jit,r0,r1,r2)
-static void _ldxr_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_uc(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_uc(r0,r1,i0) _ldxi_uc(_jit,r0,r1,i0)
-static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_uc(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_s(r0,r1,r2) _ldxr_s(_jit,r0,r1,r2)
-static void _ldxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_s(r0,r1,i0) _ldxi_s(_jit,r0,r1,i0)
-static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_s(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_us(r0,r1,r2) _ldxr_us(_jit,r0,r1,r2)
-static void _ldxr_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_us(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_us(r0,r1,i0) _ldxi_us(_jit,r0,r1,i0)
-static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_us(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_i(r0,r1,r2) _ldxr_i(_jit,r0,r1,r2)
-static void _ldxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_i(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_i(r0,r1,i0) _ldxi_i(_jit,r0,r1,i0)
-static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_i(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 64
# define ldxr_ui(r0,r1,r2) _ldxr_ui(_jit,r0,r1,r2)
-static void _ldxr_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_ui(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_ui(r0,r1,i0) _ldxi_ui(_jit,r0,r1,i0)
-static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_ui(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_l(r0,r1,r2) _ldxr_l(_jit,r0,r1,r2)
-static void _ldxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_l(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_l(r0,r1,i0) _ldxi_l(_jit,r0,r1,i0)
-static void _ldxi_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_l(jit_state_t*,int32_t,int32_t,jit_word_t);
# endif
# define str_c(r0,r1) SB(r1,0,r0)
# define sti_c(i0,r0) _sti_c(_jit,i0,r0)
-static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_c(jit_state_t*,jit_word_t,int32_t);
# define str_s(r0,r1) SH(r1,0,r0)
# define sti_s(i0,r0) _sti_s(_jit,i0,r0)
-static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_s(jit_state_t*,jit_word_t,int32_t);
# define str_i(r0,r1) SW(r1,0,r0)
# define sti_i(i0,r0) _sti_i(_jit,i0,r0)
-static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_i(jit_state_t*,jit_word_t,int32_t);
# if __WORDSIZE == 64
# define str_l(r0,r1) SD(r1,0,r0)
# define sti_l(i0,r0) _sti_l(_jit,i0,r0)
-static void _sti_l(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_l(jit_state_t*,jit_word_t,int32_t);
# endif
# define stxr_c(r0,r1,r2) _stxr_c(_jit,r0,r1,r2)
-static void _stxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_c(i0,r0,r1) _stxi_c(_jit,i0,r0,r1)
-static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_c(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxr_s(r0,r1,r2) _stxr_s(_jit,r0,r1,r2)
-static void _stxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_s(i0,r0,r1) _stxi_s(_jit,i0,r0,r1)
-static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_s(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxr_i(r0,r1,r2) _stxr_i(_jit,r0,r1,r2)
-static void _stxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_i(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_i(i0,r0,r1) _stxi_i(_jit,i0,r0,r1)
-static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_i(jit_state_t*,jit_word_t,int32_t,int32_t);
# if __WORDSIZE == 64
# define stxr_l(r0,r1,r2) _stxr_l(_jit,r0,r1,r2)
-static void _stxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_l(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_l(i0,r0,r1) _stxi_l(_jit,i0,r0,r1)
-static void _stxi_l(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_l(jit_state_t*,jit_word_t,int32_t,int32_t);
# endif
# if __BYTE_ORDER == __LITTLE_ENDIAN
-# define htonr_us(r0,r1) _htonr_us(_jit,r0,r1)
-static void _htonr_us(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ui(r0,r1) _htonr_ui(_jit,r0,r1)
-static void _htonr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
+# define bswapr_us(r0,r1) _bswapr_us(_jit,r0,r1)
+static void _bswapr_us(jit_state_t*,int32_t,int32_t);
+# define bswapr_ui(r0,r1) _bswapr_ui(_jit,r0,r1)
+static void _bswapr_ui(jit_state_t*,int32_t,int32_t);
# if __WORDSIZE == 64
-# define htonr_ul(r0,r1) _htonr_ul(_jit,r0,r1)
-static void _htonr_ul(jit_state_t*,jit_int32_t,jit_int32_t);
+# define bswapr_ul(r0,r1) _bswapr_ul(_jit,r0,r1)
+static void _bswapr_ul(jit_state_t*,int32_t,int32_t);
# endif
# else
-# define htonr_us(r0,r1) extr_us(r0,r1)
+# define bswapr_us(r0,r1) extr_us(r0,r1)
# if __WORDSIZE == 32
-# define htonr_ui(r0,r1) movr(r0,r1)
+# define bswapr_ui(r0,r1) movr(r0,r1)
# else
-# define htonr_ui(r0,r1) extr_ui(r0,r1)
-# define htonr_ul(r0,r1) movr(r0,r1)
+# define bswapr_ui(r0,r1) extr_ui(r0,r1)
+# define bswapr_ul(r0,r1) movr(r0,r1)
# endif
# endif
# define extr_c(r0,r1) _extr_c(_jit,r0,r1)
-static void _extr_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_c(jit_state_t*,int32_t,int32_t);
# define extr_uc(r0,r1) ANDI(r0,r1,0xff)
# define extr_s(r0,r1) _extr_s(_jit,r0,r1)
-static void _extr_s(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_s(jit_state_t*,int32_t,int32_t);
# define extr_us(r0,r1) ANDI(r0,r1,0xffff)
# if __WORDSIZE == 64
# define extr_i(r0,r1) SLL(r0,r1,0)
# define extr_ui(r0,r1) _extr_ui(_jit,r0,r1)
-static void _extr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_ui(jit_state_t*,int32_t,int32_t);
# endif
# define ltr(r0,r1,r2) SLT(r0,r1,r2)
# define lti(r0,r1,i0) _lti(_jit,r0,r1,i0)
-static void _lti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lti(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ltr_u(r0,r1,r2) SLTU(r0,r1,r2)
# define lti_u(r0,r1,i0) _lti_u(_jit,r0,r1,i0)
-static void _lti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lti_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ler(r0,r1,r2) _ler(_jit,r0,r1,r2)
-static void _ler(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ler(jit_state_t*,int32_t,int32_t,int32_t);
#define lei(r0,r1,i0) _lei(_jit,r0,r1,i0)
-static void _lei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lei(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ler_u(r0,r1,r2) _ler_u(_jit,r0,r1,r2)
-static void _ler_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ler_u(jit_state_t*,int32_t,int32_t,int32_t);
#define lei_u(r0,r1,i0) _lei_u(_jit,r0,r1,i0)
-static void _lei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lei_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define eqr(r0,r1,r2) _eqr(_jit,r0,r1,r2)
-static void _eqr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _eqr(jit_state_t*,int32_t,int32_t,int32_t);
#define eqi(r0,r1,i0) _eqi(_jit,r0,r1,i0)
-static void _eqi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _eqi(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ger(r0,r1,r2) _ger(_jit,r0,r1,r2)
-static void _ger(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ger(jit_state_t*,int32_t,int32_t,int32_t);
#define gei(r0,r1,i0) _gei(_jit,r0,r1,i0)
-static void _gei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gei(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ger_u(r0,r1,i0) _ger_u(_jit,r0,r1,i0)
-static void _ger_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ger_u(jit_state_t*,int32_t,int32_t,int32_t);
#define gei_u(r0,r1,i0) _gei_u(_jit,r0,r1,i0)
-static void _gei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gei_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define gtr(r0,r1,r2) SLT(r0,r2,r1)
#define gti(r0,r1,i0) _gti(_jit,r0,r1,i0)
-static void _gti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gti(jit_state_t*,int32_t,int32_t,jit_word_t);
# define gtr_u(r0,r1,r2) SLTU(r0,r2,r1)
# define gti_u(r0,r1,i0) _gti_u(_jit,r0,r1,i0)
-static void _gti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gti_u(jit_state_t*,int32_t,int32_t,jit_word_t);
#define ner(r0,r1,r2) _ner(_jit,r0,r1,r2)
-static void _ner(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ner(jit_state_t*,int32_t,int32_t,int32_t);
#define nei(r0,r1,i0) _nei(_jit,r0,r1,i0)
-static void _nei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _nei(jit_state_t*,int32_t,int32_t,jit_word_t);
#define bltr(i0,r0,r1) _bltr(_jit,i0,r0,r1)
-static jit_word_t _bltr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bltr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bltr_u(i0,r0,r1) _bltr_u(_jit,i0,r0,r1)
-static jit_word_t _bltr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bltr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blti(i0,r0,i1) _blti(_jit,i0,r0,i1)
-static jit_word_t _blti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blti(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define blti_u(i0,r0,i1) _blti_u(_jit,i0,r0,i1)
-static jit_word_t _blti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blti_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bler(i0,r0,r1) _bler(_jit,i0,r0,r1)
-static jit_word_t _bler(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bler(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bler_u(i0,r0,r1) _bler_u(_jit,i0,r0,r1)
-static jit_word_t _bler_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bler_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blei(i0,r0,i1) _blei(_jit,i0,r0,i1)
-static jit_word_t _blei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define blei_u(i0,r0,i1) _blei_u(_jit,i0,r0,i1)
-static jit_word_t _blei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blei_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define beqr(i0,r0,r1) _beqr(_jit,i0,r0,r1)
-static jit_word_t _beqr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _beqr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define beqi(i0,r0,i1) _beqi(_jit,i0,r0,i1)
-static jit_word_t _beqi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _beqi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bger(i0,r0,r1) _bger(_jit,i0,r0,r1)
-static jit_word_t _bger(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bger(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bger_u(i0,r0,r1) _bger_u(_jit,i0,r0,r1)
-static jit_word_t _bger_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bger_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgei(i0,r0,i1) _bgei(_jit,i0,r0,i1)
-static jit_word_t _bgei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bgei_u(i0,r0,i1) _bgei_u(_jit,i0,r0,i1)
-static jit_word_t _bgei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgei_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bgtr(i0,r0,r1) _bgtr(_jit,i0,r0,r1)
-static jit_word_t _bgtr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bgtr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgtr_u(i0,r0,r1) _bgtr_u(_jit,i0,r0,r1)
-static jit_word_t _bgtr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bgtr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgti(i0,r0,i1) _bgti(_jit,i0,r0,i1)
-static jit_word_t _bgti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgti(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bgti_u(i0,r0,i1) _bgti_u(_jit,i0,r0,i1)
-static jit_word_t _bgti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgti_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bner(i0,r0,r1) _bner(_jit,i0,r0,r1)
-static jit_word_t _bner(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bner(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bnei(i0,r0,i1) _bnei(_jit,i0,r0,i1)
-static jit_word_t _bnei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bnei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define jmpr(r0) _jmpr(_jit,r0)
-static void _jmpr(jit_state_t*,jit_int32_t);
+static void _jmpr(jit_state_t*,int32_t);
# define jmpi(i0) _jmpi(_jit,i0)
static jit_word_t _jmpi(jit_state_t*,jit_word_t);
# define boaddr(i0,r0,r1) _boaddr(_jit,i0,r0,r1)
-static jit_word_t _boaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _boaddr(jit_state_t*,jit_word_t,int32_t,int32_t);
# define boaddi(i0,r0,i1) _boaddi(_jit,i0,r0,i1)
-static jit_word_t _boaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _boaddi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define boaddr_u(i0,r0,r1) _boaddr_u(_jit,i0,r0,r1)
-static jit_word_t _boaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _boaddr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
# define boaddi_u(i0,r0,i1) _boaddi_u(_jit,i0,r0,i1)
-static jit_word_t _boaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _boaddi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bxaddr(i0,r0,r1) _bxaddr(_jit,i0,r0,r1)
-static jit_word_t _bxaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxaddr(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bxaddi(i0,r0,i1) _bxaddi(_jit,i0,r0,i1)
-static jit_word_t _bxaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxaddi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bxaddr_u(i0,r0,r1) _bxaddr_u(_jit,i0,r0,r1)
-static jit_word_t _bxaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxaddr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bxaddi_u(i0,r0,i1) _bxaddi_u(_jit,i0,r0,i1)
-static jit_word_t _bxaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxaddi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bosubr(i0,r0,r1) _bosubr(_jit,i0,r0,r1)
-static jit_word_t _bosubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bosubr(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bosubi(i0,r0,i1) _bosubi(_jit,i0,r0,i1)
-static jit_word_t _bosubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bosubi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bosubr_u(i0,r0,r1) _bosubr_u(_jit,i0,r0,r1)
-static jit_word_t _bosubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bosubr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bosubi_u(i0,r0,i1) _bosubi_u(_jit,i0,r0,i1)
-static jit_word_t _bosubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bosubi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bxsubr(i0,r0,r1) _bxsubr(_jit,i0,r0,r1)
-static jit_word_t _bxsubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxsubr(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bxsubi(i0,r0,i1) _bxsubi(_jit,i0,r0,i1)
-static jit_word_t _bxsubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxsubi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bxsubr_u(i0,r0,r1) _bxsubr_u(_jit,i0,r0,r1)
-static jit_word_t _bxsubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxsubr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bxsubi_u(i0,r0,i1) _bxsubi_u(_jit,i0,r0,i1)
-static jit_word_t _bxsubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxsubi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bmsr(i0,r0,r1) _bmsr(_jit,i0,r0,r1)
-static jit_word_t _bmsr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bmsr(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bmsi(i0,r0,i1) _bmsi(_jit,i0,r0,i1)
-static jit_word_t _bmsi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bmsi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define bmcr(i0,r0,r1) _bmcr(_jit,i0,r0,r1)
-static jit_word_t _bmcr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bmcr(jit_state_t*,jit_word_t,int32_t,int32_t);
# define bmci(i0,r0,i1) _bmci(_jit,i0,r0,i1)
-static jit_word_t _bmci(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bmci(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define callr(r0) _callr(_jit,r0)
-static void _callr(jit_state_t*,jit_int32_t);
+static void _callr(jit_state_t*,int32_t);
# define calli(i0) _calli(_jit,i0)
static void _calli(jit_state_t*,jit_word_t);
# define calli_p(i0) _calli_p(_jit,i0)
@@ -740,9 +740,9 @@ static void _prolog(jit_state_t*,jit_node_t*);
# define epilog(node) _epilog(_jit,node)
static void _epilog(jit_state_t*,jit_node_t*);
# define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
+static void _vastart(jit_state_t*, int32_t);
# define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vaarg(jit_state_t*, int32_t, int32_t);
#define patch_abs(instr,label) _patch_abs(_jit,instr,label)
static void _patch_abs(jit_state_t*,jit_word_t,jit_word_t);
#define patch_at(jump,label) _patch_at(_jit,jump,label)
@@ -751,9 +751,9 @@ static void _patch_at(jit_state_t*,jit_word_t,jit_word_t);
#if CODE
static void
-_hrrrit(jit_state_t *_jit,jit_int32_t hc,
- jit_int32_t rs, jit_int32_t rt, jit_int32_t rd,
- jit_int32_t ic, jit_int32_t tc)
+_hrrrit(jit_state_t *_jit,int32_t hc,
+ int32_t rs, int32_t rt, int32_t rd,
+ int32_t ic, int32_t tc)
{
jit_instr_t i;
i.tc.b = tc;
@@ -766,8 +766,8 @@ _hrrrit(jit_state_t *_jit,jit_int32_t hc,
}
static void
-_hrri(jit_state_t *_jit, jit_int32_t hc,
- jit_int32_t rs, jit_int32_t rt, jit_int32_t im)
+_hrri(jit_state_t *_jit, int32_t hc,
+ int32_t rs, int32_t rt, int32_t im)
{
jit_instr_t i;
i.op = 0;
@@ -779,7 +779,7 @@ _hrri(jit_state_t *_jit, jit_int32_t hc,
}
static void
-_hi(jit_state_t *_jit, jit_int32_t hc, jit_int32_t im)
+_hi(jit_state_t *_jit, int32_t hc, int32_t im)
{
jit_instr_t i;
i.ii.b = im;
@@ -788,7 +788,7 @@ _hi(jit_state_t *_jit, jit_int32_t hc, jit_int32_t im)
}
static void
-_nop(jit_state_t *_jit, jit_int32_t i0)
+_nop(jit_state_t *_jit, int32_t i0)
{
for (; i0 > 0; i0 -= 4)
NOP();
@@ -796,9 +796,9 @@ _nop(jit_state_t *_jit, jit_int32_t i0)
}
static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
movr(r0, r1);
else if (can_sign_extend_short_p(i0))
@@ -812,9 +812,9 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t t0;
+ int32_t t0;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
@@ -832,9 +832,9 @@ _addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t t0;
+ int32_t t0;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
@@ -862,9 +862,9 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t t0;
+ int32_t t0;
assert(jit_carry != _NOREG);
t0 = jit_get_reg(jit_class_gpr);
@@ -875,9 +875,9 @@ _addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t t0;
+ int32_t t0;
assert(jit_carry != _NOREG);
t0 = jit_get_reg(jit_class_gpr);
@@ -888,9 +888,9 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
movr(r0, r1);
else if (can_sign_extend_short_p(i0) && (i0 & 0xffff) != 0x8000)
@@ -904,9 +904,9 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t t0;
+ int32_t t0;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
@@ -924,9 +924,9 @@ _subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t t0;
+ int32_t t0;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
@@ -954,9 +954,9 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t t0;
+ int32_t t0;
assert(jit_carry != _NOREG);
t0 = jit_get_reg(jit_class_gpr);
@@ -967,9 +967,9 @@ _subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t t0;
+ int32_t t0;
assert(jit_carry != _NOREG);
t0 = jit_get_reg(jit_class_gpr);
@@ -980,23 +980,23 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rsbi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
subi(r0, r1, i0);
negr(r0, r0);
}
static void
-_mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_mulr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
multu(r1, r2);
MFLO(r0);
}
static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -1005,8 +1005,8 @@ _muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqmulr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
if (sign)
mult(r2, r3);
@@ -1017,10 +1017,10 @@ _iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqmuli(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
iqmulr(r0, r1, r2, rn(reg), sign);
@@ -1028,16 +1028,16 @@ _iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
div(r1, r2);
MFLO(r0);
}
static void
-_divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
divr(r0, r1, rn(reg));
@@ -1045,16 +1045,16 @@ _divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
divu(r1, r2);
MFLO(r0);
}
static void
-_divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
divr_u(r0, r1, rn(reg));
@@ -1062,8 +1062,8 @@ _divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqdivr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
if (sign)
div(r2, r3);
@@ -1074,10 +1074,10 @@ _iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqdivi(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
iqdivr(r0, r1, r2, rn(reg), sign);
@@ -1085,16 +1085,16 @@ _iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
div(r1, r2);
MFHI(r0);
}
static void
-_remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr(r0, r1, rn(reg));
@@ -1102,16 +1102,16 @@ _remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
divu(r1, r2);
MFHI(r0);
}
static void
-_remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr_u(r0, r1, rn(reg));
@@ -1120,7 +1120,7 @@ _remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
#if __WORDSIZE == 64
static void
-_lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
assert(i0 >= 0 && i0 <= 63);
if (i0 < 32)
@@ -1130,7 +1130,7 @@ _lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
assert(i0 >= 0 && i0 <= 63);
if (i0 < 32)
@@ -1140,7 +1140,7 @@ _rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
assert(i0 >= 0 && i0 <= 63);
if (i0 < 32)
@@ -1151,9 +1151,9 @@ _rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
#endif
static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
ANDI(r0, r1, i0);
else {
@@ -1165,9 +1165,9 @@ _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
ORI(r0, r1, i0);
else {
@@ -1179,9 +1179,9 @@ _ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
XORI(r0, r1, i0);
else {
@@ -1193,7 +1193,7 @@ _xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
if (i0 == 0)
OR(r0, _ZERO_REGNO, _ZERO_REGNO);
@@ -1228,7 +1228,7 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t w;
@@ -1249,9 +1249,9 @@ _movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_c(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LB(r0, i0, _ZERO_REGNO);
else {
@@ -1263,9 +1263,9 @@ _ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_uc(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LBU(r0, i0, _ZERO_REGNO);
else {
@@ -1277,9 +1277,9 @@ _ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_s(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LH(r0, i0, _ZERO_REGNO);
else {
@@ -1291,9 +1291,9 @@ _ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_us(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LHU(r0, i0, _ZERO_REGNO);
else {
@@ -1305,9 +1305,9 @@ _ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_i(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LW(r0, i0, _ZERO_REGNO);
else {
@@ -1320,9 +1320,9 @@ _ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
#if __WORDSIZE == 64
static void
-_ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_ui(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LWU(r0, i0, _ZERO_REGNO);
else {
@@ -1334,9 +1334,9 @@ _ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_l(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LD(r0, i0, _ZERO_REGNO);
else {
@@ -1349,9 +1349,9 @@ _ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
#endif
static void
-_ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_c(r0, rn(reg));
@@ -1359,9 +1359,9 @@ _ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LB(r0, i0, r1);
else {
@@ -1373,9 +1373,9 @@ _ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_ldxr_uc(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_uc(r0, rn(reg));
@@ -1383,9 +1383,9 @@ _ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LBU(r0, i0, r1);
else {
@@ -1397,9 +1397,9 @@ _ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_ldxr_s(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_s(r0, rn(reg));
@@ -1407,9 +1407,9 @@ _ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LH(r0, i0, r1);
else {
@@ -1421,9 +1421,9 @@ _ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_ldxr_us(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_us(r0, rn(reg));
@@ -1431,9 +1431,9 @@ _ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LHU(r0, i0, r1);
else {
@@ -1445,9 +1445,9 @@ _ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_ldxr_i(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_i(r0, rn(reg));
@@ -1455,9 +1455,9 @@ _ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LW(r0, i0, r1);
else {
@@ -1470,9 +1470,9 @@ _ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
#if __WORDSIZE == 64
static void
-_ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_ldxr_ui(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_ui(r0, rn(reg));
@@ -1480,9 +1480,9 @@ _ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LWU(r0, i0, r1);
else {
@@ -1494,9 +1494,9 @@ _ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_ldxr_l(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r1, r2);
ldr_l(r0, rn(reg));
@@ -1504,9 +1504,9 @@ _ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LD(r0, i0, r1);
else {
@@ -1519,9 +1519,9 @@ _ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
#endif
static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_c(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SB(r0, i0, _ZERO_REGNO);
else {
@@ -1533,9 +1533,9 @@ _sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_s(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SH(r0, i0, _ZERO_REGNO);
else {
@@ -1547,9 +1547,9 @@ _sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_i(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SW(r0, i0, _ZERO_REGNO);
else {
@@ -1562,9 +1562,9 @@ _sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
#if __WORDSIZE == 64
static void
-_sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_l(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SD(r0, i0, _ZERO_REGNO);
else {
@@ -1577,9 +1577,9 @@ _sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
#endif
static void
-_stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_c(rn(reg), r2);
@@ -1587,9 +1587,9 @@ _stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SB(r1, i0, r0);
else {
@@ -1601,9 +1601,9 @@ _stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_s(rn(reg), r2);
@@ -1611,9 +1611,9 @@ _stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SH(r1, i0, r0);
else {
@@ -1625,9 +1625,9 @@ _stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_i(rn(reg), r2);
@@ -1635,9 +1635,9 @@ _stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SW(r1, i0, r0);
else {
@@ -1650,9 +1650,9 @@ _stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
#if __WORDSIZE == 64
static void
-_stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
+_stxr_l(jit_state_t *_jit, int32_t r0, int32_t r1 ,int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
addr(rn(reg), r0, r1);
str_l(rn(reg), r2);
@@ -1660,9 +1660,9 @@ _stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1 ,jit_int32_t r2)
}
static void
-_stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SD(r1, i0, r0);
else {
@@ -1676,9 +1676,9 @@ _stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
# if __BYTE_ORDER == __LITTLE_ENDIAN
static void
-_htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr);
rshi(rn(t0), r1, 8);
andi(r0, r1, 0xff);
@@ -1689,11 +1689,11 @@ _htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
t0 = jit_get_reg(jit_class_gpr);
t1 = jit_get_reg(jit_class_gpr);
t2 = jit_get_reg(jit_class_gpr);
@@ -1716,13 +1716,13 @@ _htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_htonr_ul(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_ul(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
rshi_u(rn(reg), r1, 32);
- htonr_ui(r0, r1);
- htonr_ui(rn(reg), rn(reg));
+ bswapr_ui(r0, r1);
+ bswapr, 2019_ui(rn(reg), rn(reg));
lshi(r0, r0, 32);
orr(r0, r0, rn(reg));
jit_unget_reg(reg);
@@ -1730,7 +1730,7 @@ _htonr_ul(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif
static void
-_extr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_mips2_p())
SEB(r0, r1);
@@ -1741,7 +1741,7 @@ _extr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_extr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (jit_mips2_p())
SEH(r0, r1);
@@ -1753,7 +1753,7 @@ _extr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# if __WORDSIZE == 64
static void
-_extr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, 32);
rshi_u(r0, r0, 32);
@@ -1761,9 +1761,9 @@ _extr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif
static void
-_lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lti(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SLTI(r0, r1, i0);
@@ -1776,9 +1776,9 @@ _lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_lti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lti_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SLTIU(r0, r1, i0);
@@ -1791,16 +1791,16 @@ _lti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ler(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ler(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
SLT(r0, r2, r1);
XORI(r0, r0, 1);
}
static void
-_lei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0) {
SLT(r0, _ZERO_REGNO, r1);
@@ -1815,16 +1815,16 @@ _lei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ler_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ler_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
SLTU(r0, r2, r1);
XORI(r0, r0, 1);
}
static void
-_lei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lei_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0) {
SLTU(r0, _ZERO_REGNO, r1);
@@ -1839,7 +1839,7 @@ _lei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_eqr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_eqr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
subr(r0, r1, r2);
SLTU(r0, _ZERO_REGNO, r0);
@@ -1847,7 +1847,7 @@ _eqr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_eqi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_eqi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
if (i0) {
subi(r0, r1, i0);
@@ -1859,16 +1859,16 @@ _eqi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ger(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ger(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
SLT(r0, r1, r2);
XORI(r0, r0, 1);
}
static void
-_gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -1877,16 +1877,16 @@ _gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ger_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ger_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
SLTU(r0, r1, r2);
XORI(r0, r0, 1);
}
static void
-_gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gei_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
@@ -1895,9 +1895,9 @@ _gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gti(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
SLT(r0, _ZERO_REGNO, r1);
@@ -1910,9 +1910,9 @@ _gti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gti_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
SLTU(r0, _ZERO_REGNO, r1);
@@ -1925,14 +1925,14 @@ _gti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ner(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ner(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
subr(r0, r1, r2);
SLTU(r0, _ZERO_REGNO, r0);
}
static void
-_nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_nei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
if (i0) {
subi(r0, r1, i0);
@@ -1943,10 +1943,10 @@ _nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static jit_word_t
-_bltr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bltr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
SLT(rn(reg), r0, r1);
@@ -1959,10 +1959,10 @@ _bltr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bltr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bltr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
SLTU(rn(reg), r0, r1);
@@ -1975,11 +1975,11 @@ _bltr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blti(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
jit_bool_t zero_p;
if (!(zero_p = i1 == 0))
@@ -2006,10 +2006,10 @@ _blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blti_u(jit_state_t *_jit, 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_gpr|jit_class_nospill);
if (can_sign_extend_short_p(i1)) {
@@ -2028,10 +2028,10 @@ _blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bler(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bler(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
SLT(rn(reg), r1, r0);
@@ -2044,10 +2044,10 @@ _bler(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bler_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bler_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
SLTU(rn(reg), r1, r0);
@@ -2060,10 +2060,10 @@ _bler_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
@@ -2081,10 +2081,10 @@ _blei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_blei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blei_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
@@ -2102,7 +2102,7 @@ _blei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_beqr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_beqr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
@@ -2114,10 +2114,10 @@ _beqr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_beqi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
@@ -2135,10 +2135,10 @@ _beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bger(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bger(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
SLT(rn(reg), r0, r1);
@@ -2151,10 +2151,10 @@ _bger(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bger_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bger_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
SLTU(rn(reg), r0, r1);
@@ -2167,11 +2167,11 @@ _bger_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
jit_bool_t zero_p;
if (!(zero_p = i1 == 0))
@@ -2198,10 +2198,10 @@ _bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgei_u(jit_state_t *_jit, 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_gpr|jit_class_nospill);
if (can_sign_extend_short_p(i1)) {
@@ -2220,10 +2220,10 @@ _bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bgtr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bgtr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
SLT(rn(reg), r1, r0);
@@ -2236,10 +2236,10 @@ _bgtr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgtr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bgtr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
SLTU(rn(reg), r1, r0);
@@ -2252,10 +2252,10 @@ _bgtr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgti(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
@@ -2273,10 +2273,10 @@ _bgti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bgti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgti_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
@@ -2294,7 +2294,7 @@ _bgti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bner(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bner(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
@@ -2306,10 +2306,10 @@ _bner(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bnei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (i1 == 0) {
w = _jit->pc.w;
@@ -2327,7 +2327,7 @@ _bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static void
-_jmpr(jit_state_t *_jit, jit_int32_t r0)
+_jmpr(jit_state_t *_jit, int32_t r0)
{
JR(r0);
NOP(1);
@@ -2337,10 +2337,10 @@ static jit_word_t
_jmpi(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
w = _jit->pc.w;
- if (((w + sizeof(jit_int32_t)) & 0xf0000000) == (i0 & 0xf0000000)) {
+ if (((w + sizeof(int32_t)) & 0xf0000000) == (i0 & 0xf0000000)) {
J((i0 & ~0xf0000000) >> 2);
NOP(1);
}
@@ -2355,12 +2355,12 @@ _jmpi(jit_state_t *_jit, jit_word_t i0)
}
static jit_word_t
-_boaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_boaddr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
/* t1 = r0 + r1; overflow = r1 < 0 ? r0 < t1 : t1 < r0 */
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2383,12 +2383,12 @@ _boaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_boaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_boaddi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
if (can_sign_extend_short_p(i1)) {
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2417,11 +2417,11 @@ _boaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_boaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_boaddr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2437,11 +2437,11 @@ _boaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_boaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_boaddi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
if (can_sign_extend_short_p(i0)) {
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2465,12 +2465,12 @@ _boaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxaddr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
/* t1 = r0 + r1; overflow = r1 < 0 ? r0 < t1 : t1 < r0 */
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2493,12 +2493,12 @@ _bxaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxaddi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
if (can_sign_extend_short_p(i1)) {
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2527,11 +2527,11 @@ _bxaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxaddr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2547,11 +2547,11 @@ _bxaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxaddi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
if (can_sign_extend_short_p(i0)) {
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2575,12 +2575,12 @@ _bxaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bosubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bosubr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
/* t1 = r0 - r1; overflow = 0 < r1 ? r0 < t1 : t1 < r0 */
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2603,12 +2603,12 @@ _bosubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bosubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bosubi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
if (can_sign_extend_short_p(i1) && (i1 & 0xffff) != 0x8000) {
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2637,11 +2637,11 @@ _bosubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bosubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bosubr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2657,11 +2657,11 @@ _bosubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bosubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bosubi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
if (can_sign_extend_short_p(i0) && (i0 & 0xffff) != 0x8000) {
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2685,12 +2685,12 @@ _bosubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxsubr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
/* t1 = r0 - r1; overflow = 0 < r1 ? r0 < t1 : t1 < r0 */
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2713,12 +2713,12 @@ _bxsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxsubi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
- jit_int32_t t2;
+ int32_t t0;
+ int32_t t1;
+ int32_t t2;
if (can_sign_extend_short_p(i1) && (i1 & 0xffff) != 0x8000) {
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2747,11 +2747,11 @@ _bxsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxsubr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
t1 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2767,11 +2767,11 @@ _bxsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxsubi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
- jit_int32_t t1;
+ int32_t t0;
+ int32_t t1;
if (can_sign_extend_short_p(i0) && (i0 & 0xffff) != 0x8000) {
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
@@ -2795,10 +2795,10 @@ _bxsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bmsr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmsr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
AND(rn(t0), r0, r1);
w = _jit->pc.w;
@@ -2809,10 +2809,10 @@ _bmsr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bmsi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmsi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
if (can_zero_extend_short_p(i1)) {
ANDI(rn(t0), r0, i1);
@@ -2829,10 +2829,10 @@ _bmsi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bmcr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmcr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
AND(rn(t0), r0, r1);
w = _jit->pc.w;
@@ -2843,10 +2843,10 @@ _bmcr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bmci(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmci(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr|jit_class_nospill);
if (can_zero_extend_short_p(i1)) {
ANDI(rn(t0), r0, i1);
@@ -2863,7 +2863,7 @@ _bmci(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static void
-_callr(jit_state_t *_jit, jit_int32_t r0)
+_callr(jit_state_t *_jit, int32_t r0)
{
if (r0 != _T9_REGNO)
movr(_T9_REGNO, r0);
@@ -2892,24 +2892,24 @@ _calli_p(jit_state_t *_jit, jit_word_t i0)
return (word);
}
-static jit_int32_t fregs[] = {
+static int32_t fregs[] = {
_F30, _F28, _F26, _F24, _F22, _F20,
#if !NEW_ABI
_F18, _F16,
#endif
};
-static jit_int32_t iregs[] = {
+static int32_t iregs[] = {
_S7, _S6, _S5, _S4, _S3, _S2, _S1, _S0,
};
static void
_prolog(jit_state_t *_jit, jit_node_t *node)
{
- jit_int32_t index;
- jit_int32_t offset;
+ int32_t index;
+ int32_t offset;
if (_jitc->function->define_frame || _jitc->function->assume_frame) {
- jit_int32_t frame = -_jitc->function->frame;
+ int32_t frame = -_jitc->function->frame;
assert(_jitc->function->self.aoff >= frame);
if (_jitc->function->assume_frame)
return;
@@ -2981,8 +2981,8 @@ _prolog(jit_state_t *_jit, jit_node_t *node)
static void
_epilog(jit_state_t *_jit, jit_node_t *node)
{
- jit_int32_t index;
- jit_int32_t offset;
+ int32_t index;
+ int32_t offset;
if (_jitc->function->assume_frame)
return;
/* callee save registers */
@@ -3012,21 +3012,21 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
}
static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
+_vastart(jit_state_t *_jit, int32_t r0)
{
assert(_jitc->function->self.call & jit_call_varargs);
/* Initialize va_list to the first stack argument. */
#if NEW_ABI
if (jit_arg_reg_p(_jitc->function->vagp))
addi(r0, _BP_REGNO, stack_framesize + _jitc->function->vagp *
- sizeof(jit_int64_t));
+ sizeof(int64_t));
else
#endif
addi(r0, _BP_REGNO, _jitc->function->self.size);
}
static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vaarg(jit_state_t *_jit, int32_t r0, int32_t r1)
{
/* Load argument. */
#if WORD_ADJUST
@@ -3044,7 +3044,7 @@ _patch_abs(jit_state_t *_jit, jit_word_t instr, jit_word_t label)
{
jit_instr_t i;
union {
- jit_int32_t *i;
+ int32_t *i;
jit_word_t w;
} u;
@@ -3085,7 +3085,7 @@ _patch_at(jit_state_t *_jit, jit_word_t instr, jit_word_t label)
{
jit_instr_t i;
union {
- jit_int32_t *i;
+ int32_t *i;
jit_word_t w;
} u;
@@ -3139,7 +3139,7 @@ _patch_at(jit_state_t *_jit, jit_word_t instr, jit_word_t label)
case MIPS_J: case MIPS_JAL:
case MIPS_JALX:
- assert(((instr + sizeof(jit_int32_t)) & 0xf0000000) ==
+ assert(((instr + sizeof(int32_t)) & 0xf0000000) ==
(label & 0xf0000000));
i.ii.b = (label & ~0xf0000000) >> 2;
u.i[0] = i.op;
diff --git a/libguile/lightning/lib/jit_mips-fpu.c b/libguile/lightning/jit/mips-fpu.c
index 35fdf8e3d..cc9be6c66 100644
--- a/libguile/lightning/lib/jit_mips-fpu.c
+++ b/libguile/lightning/jit/mips-fpu.c
@@ -181,38 +181,38 @@
# define C_UGT_PS(fs,ft) c_cond_fmt(MIPS_fmt_PS,ft,fs,MIPS_cond_UGT)
# define c_cond_fmt(fm,ft,fs,cc) _c_cond_fmt(_jit,fm,ft,fs,cc)
static void
-_c_cond_fmt(jit_state_t *_jit, jit_int32_t fm,
- jit_int32_t ft, jit_int32_t fs, jit_int32_t cc);
+_c_cond_fmt(jit_state_t *_jit, int32_t fm,
+ int32_t ft, int32_t fs, int32_t cc);
# define addr_f(r0,r1,r2) ADD_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,int32_t,jit_float32_t*);
# define addr_d(r0,r1,r2) ADD_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,int32_t,jit_float64_t*);
# define subr_f(r0,r1,r2) SUB_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,int32_t,jit_float32_t*);
# define subr_d(r0,r1,r2) SUB_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,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,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,int32_t,jit_float64_t*);
# define mulr_f(r0,r1,r2) MUL_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,int32_t,jit_float32_t*);
# define mulr_d(r0,r1,r2) MUL_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,int32_t,jit_float64_t*);
# define divr_f(r0,r1,r2) DIV_S(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,int32_t,jit_float32_t*);
# define divr_d(r0,r1,r2) DIV_D(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,int32_t,jit_float64_t*);
# define absr_f(r0,r1) ABS_S(r0,r1)
# define absr_d(r0,r1) ABS_D(r0,r1)
# define negr_f(r0,r1) NEG_S(r0,r1)
@@ -222,342 +222,342 @@ static void _divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
# define movr_w_f(r0, r1) MTC1(r1, r0)
# define movr_f_w(r0, r1) MFC1(r1, r0)
# 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 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,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,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,int32_t);
# endif
# define extr_d_f(r0, r1) CVT_S_D(r0, r1)
# define ldr_f(r0, r1) LWC1(r0, 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 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,int32_t,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,int32_t,jit_word_t);
# define str_f(r0, r1) SWC1(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);
# 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,int32_t,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,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,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*);
# if NEW_ABI
# if __WORDSIZE == 32
# define movi64(r0, i0) _movi64(_jit, r0, i0)
-static void _movi64(jit_state_t*,jit_int32_t,jit_int64_t);
+static void _movi64(jit_state_t*,int32_t,int64_t);
# else
# define movi64(r0, i0) movi(r0, i0)
# endif
# define movr_w_d(r0, r1) DMTC1(r1, r0)
# define movr_d_w(r0, r1) DMFC1(r0, r1)
# 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*);
# else
# define movr_ww_d(r0, r1, r2) _movr_ww_d(_jit, r0, r1, r2)
-static void _movr_ww_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _movr_ww_d(jit_state_t*,int32_t,int32_t,int32_t);
# define movr_d_ww(r0, r1, r2) _movr_d_ww(_jit, r0, r1, r2)
-static void _movr_d_ww(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _movr_d_ww(jit_state_t*,int32_t,int32_t,int32_t);
# define movi_d_ww(r0, r1, i0) _movi_d_ww(_jit, r0, r1, i0)
-static void _movi_d_ww(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _movi_d_ww(jit_state_t*,int32_t,int32_t,jit_float64_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,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,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,int32_t);
# endif
# 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,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,int32_t,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,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,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,int32_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,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,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 ltr_f(r0, r1, r2) _ltr_f(_jit, r0, r1, r2)
-static void _ltr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ltr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define lti_f(r0, r1, i2) _lti_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define ler_f(r0, r1, r2) _ler_f(_jit, r0, r1, r2)
-static void _ler_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ler_f(jit_state_t*,int32_t,int32_t,int32_t);
# define lei_f(r0, r1, i2) _lei_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define eqr_f(r0, r1, r2) _eqr_f(_jit, r0, r1, r2)
-static void _eqr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _eqr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define eqi_f(r0, r1, i2) _eqi_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define ger_f(r0, r1, r2) _ger_f(_jit, r0, r1, r2)
-static void _ger_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ger_f(jit_state_t*,int32_t,int32_t,int32_t);
# define gei_f(r0, r1, i2) _gei_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define gtr_f(r0, r1, r2) _gtr_f(_jit, r0, r1, r2)
-static void _gtr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _gtr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define gti_f(r0, r1, i2) _gti_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define ner_f(r0, r1, r2) _ner_f(_jit, r0, r1, r2)
-static void _ner_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ner_f(jit_state_t*,int32_t,int32_t,int32_t);
# define nei_f(r0, r1, i2) _nei_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define unltr_f(r0, r1, r2) _unltr_f(_jit, r0, r1, r2)
-static void _unltr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _unltr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define unlti_f(r0, r1, i2) _unlti_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define unler_f(r0, r1, r2) _unler_f(_jit, r0, r1, r2)
-static void _unler_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _unler_f(jit_state_t*,int32_t,int32_t,int32_t);
# define unlei_f(r0, r1, i2) _unlei_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# 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,int32_t,int32_t);
# define uneqi_f(r0, r1, i2) _uneqi_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define unger_f(r0, r1, r2) _unger_f(_jit, r0, r1, r2)
-static void _unger_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _unger_f(jit_state_t*,int32_t,int32_t,int32_t);
# define ungei_f(r0, r1, i2) _ungei_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define ungtr_f(r0, r1, r2) _ungtr_f(_jit, r0, r1, r2)
-static void _ungtr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ungtr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define ungti_f(r0, r1, i2) _ungti_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# 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,int32_t,int32_t);
# define ltgti_f(r0, r1, i2) _ltgti_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define ordr_f(r0, r1, r2) _ordr_f(_jit, r0, r1, r2)
-static void _ordr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ordr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define ordi_f(r0, r1, i2) _ordi_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define unordr_f(r0, r1, r2) _unordr_f(_jit, r0, r1, r2)
-static void _unordr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _unordr_f(jit_state_t*,int32_t,int32_t,int32_t);
# define unordi_f(r0, r1, i2) _unordi_f(_jit, r0, r1, i2)
-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,int32_t,jit_float32_t*);
# define bltr_f(i0, r0, r1) _bltr_f(_jit, i0, r0, r1)
-static jit_word_t _bltr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bltr_f(jit_state_t*,jit_word_t,int32_t,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*);
+_blti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bler_f(i0, r0, r1) _bler_f(_jit, i0, r0, r1)
-static jit_word_t _bler_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bler_f(jit_state_t*,jit_word_t,int32_t,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*);
+_blei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define beqr_f(i0, r0, r1) _beqr_f(_jit, i0, r0, r1)
-static jit_word_t _beqr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _beqr_f(jit_state_t*,jit_word_t,int32_t,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*);
+_beqi_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bger_f(i0, r0, r1) _bger_f(_jit, i0, r0, r1)
-static jit_word_t _bger_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bger_f(jit_state_t*,jit_word_t,int32_t,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*);
+_bgei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bgtr_f(i0, r0, r1) _bgtr_f(_jit, i0, r0, r1)
-static jit_word_t _bgtr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bgtr_f(jit_state_t*,jit_word_t,int32_t,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*);
+_bgti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bner_f(i0, r0, r1) _bner_f(_jit, i0, r0, r1)
-static jit_word_t _bner_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bner_f(jit_state_t*,jit_word_t,int32_t,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*);
+_bnei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bunltr_f(i0, r0, r1) _bunltr_f(_jit, i0, r0, r1)
-static jit_word_t _bunltr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bunltr_f(jit_state_t*,jit_word_t,int32_t,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*);
+_bunlti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bunler_f(i0, r0, r1) _bunler_f(_jit, i0, r0, r1)
-static jit_word_t _bunler_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bunler_f(jit_state_t*,jit_word_t,int32_t,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*);
+_bunlei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# 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,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*);
+_buneqi_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bunger_f(i0, r0, r1) _bunger_f(_jit, i0, r0, r1)
-static jit_word_t _bunger_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bunger_f(jit_state_t*,jit_word_t,int32_t,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*);
+_bungei_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bungtr_f(i0, r0, r1) _bungtr_f(_jit, i0, r0, r1)
-static jit_word_t _bungtr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bungtr_f(jit_state_t*,jit_word_t,int32_t,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*);
+_bungti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# 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,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*);
+_bltgti_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bordr_f(i0, r0, r1) _bordr_f(_jit, i0, r0, r1)
-static jit_word_t _bordr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bordr_f(jit_state_t*,jit_word_t,int32_t,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*);
+_bordi_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define bunordr_f(i0, r0, r1) _bunordr_f(_jit, i0, r0, r1)
-static jit_word_t _bunordr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bunordr_f(jit_state_t*,jit_word_t,int32_t,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*);
+_bunordi_f(jit_state_t*, jit_word_t, int32_t, jit_float32_t*);
# define extr_f_d(r0, r1) CVT_D_S(r0, r1)
# 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,int32_t,int32_t);
# define lti_d(r0, r1, i2) _lti_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define lei_d(r0, r1, i2) _lei_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define eqi_d(r0, r1, i2) _eqi_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define gei_d(r0, r1, i2) _gei_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define gti_d(r0, r1, i2) _gti_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define nei_d(r0, r1, i2) _nei_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define unlti_d(r0, r1, i2) _unlti_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define unlei_d(r0, r1, i2) _unlei_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_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,int32_t,int32_t);
# define uneqi_d(r0, r1, i2) _uneqi_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define ungei_d(r0, r1, i2) _ungei_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define ungti_d(r0, r1, i2) _ungti_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_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,int32_t,int32_t);
# define ltgti_d(r0, r1, i2) _ltgti_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define ordi_d(r0, r1, i2) _ordi_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_t,int32_t);
# define unordi_d(r0, r1, i2) _unordi_d(_jit, r0, r1, i2)
-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,int32_t,jit_float64_t*);
# 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,int32_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*);
+_blti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_blei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_beqi_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_bgei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_bgti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_bnei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_bunlti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_bunlei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,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*);
+_buneqi_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_bungei_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_bungti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,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*);
+_bltgti_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_bordi_d(jit_state_t*, jit_word_t, int32_t, jit_float64_t*);
# 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,int32_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*);
+_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, int32_t);
#endif
#if CODE
static void
-_c_cond_fmt(jit_state_t *_jit, jit_int32_t fm,
- jit_int32_t ft, jit_int32_t fs, jit_int32_t cc)
+_c_cond_fmt(jit_state_t *_jit, int32_t fm,
+ int32_t ft, int32_t fs, int32_t cc)
{
jit_instr_t i;
i.cc.b = cc;
@@ -571,10 +571,10 @@ _c_cond_fmt(jit_state_t *_jit, jit_int32_t fm,
# 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, 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); \
@@ -582,11 +582,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)); \
@@ -605,10 +605,10 @@ fopi(mul)
fopi(div)
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)
{
union {
- jit_int32_t i;
+ int32_t i;
jit_float32_t f;
} data;
@@ -617,9 +617,9 @@ _movi_f_w(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
}
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, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_fpr);
# if __WORDSIZE == 32
MTC1(r1, rn(t0));
@@ -632,9 +632,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, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_fpr);
TRUNC_W_S(rn(t0), r1);
MFC1(r0, rn(t0));
@@ -643,9 +643,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, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_fpr);
TRUNC_L_S(rn(t0), r1);
DMFC1(r0, rn(t0));
@@ -654,9 +654,9 @@ _truncr_f_l(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 (can_sign_extend_short_p(i0))
LWC1(r0, i0, _ZERO_REGNO);
else {
@@ -668,9 +668,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, int32_t r1, 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));
@@ -678,9 +678,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, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
LWC1(r0, i0, r1);
else {
@@ -692,9 +692,9 @@ _ldxi_f(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;
if (can_sign_extend_short_p(i0))
SWC1(r0, i0, _ZERO_REGNO);
else {
@@ -706,9 +706,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, int32_t r1, 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);
@@ -716,9 +716,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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
SWC1(r1, i0, r0);
else {
@@ -730,20 +730,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, int32_t r1)
{
if (r0 != r1)
MOV_S(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;
data.f = *i0;
if (data.i) {
@@ -769,7 +769,7 @@ dopi(div)
#if NEW_ABI
/* n32 abi requires 64 bit cpu */
static void
-_movi64(jit_state_t *_jit, jit_int32_t r0, jit_int64_t i0)
+_movi64(jit_state_t *_jit, int32_t r0, int64_t i0)
{
if (i0 == 0)
OR(r0, _ZERO_REGNO, _ZERO_REGNO);
@@ -802,11 +802,11 @@ _movi64(jit_state_t *_jit, jit_int32_t r0, jit_int64_t i0)
}
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)
{
jit_word_t w;
union {
- jit_int64_t l;
+ int64_t l;
jit_float64_t d;
} data;
if (_jitc->no_data) {
@@ -826,7 +826,7 @@ _movi_d_w(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
#else
static void
-_movr_ww_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_movr_ww_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
assert(r1 == r2 - 1);
MTC1(r1, r0 + BE_P);
@@ -834,7 +834,7 @@ _movr_ww_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_movr_d_ww(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_movr_d_ww(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
assert(r0 == r1 - 1);
MFC1(r0, r2 + BE_P);
@@ -842,11 +842,11 @@ _movr_d_ww(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_movi_d_ww(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0)
+_movi_d_ww(jit_state_t *_jit, int32_t r0, int32_t r1, jit_float64_t *i0)
{
union {
- jit_int32_t i[2];
- jit_int64_t l;
+ int32_t i[2];
+ int64_t l;
jit_float64_t d;
} data;
@@ -857,9 +857,9 @@ _movi_d_ww(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_float64_t *i0)
#endif
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, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_fpr);
# if __WORDSIZE == 32
MTC1(r1, rn(t0));
@@ -872,9 +872,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, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_fpr);
TRUNC_W_D(rn(t0), r1);
MFC1(r0, rn(t0));
@@ -883,9 +883,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, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_fpr);
TRUNC_L_D(rn(t0), r1);
DMFC1(r0, rn(t0));
@@ -894,7 +894,7 @@ _truncr_d_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif
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, int32_t r1)
{
# if __WORDSIZE == 64 || NEW_ABI
LDC1(r0, 0, r1);
@@ -905,9 +905,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;
# if __WORDSIZE == 64 || NEW_ABI
if (can_sign_extend_short_p(i0))
LDC1(r0, i0, _ZERO_REGNO);
@@ -933,9 +933,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, int32_t r1, 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));
@@ -943,9 +943,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, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
# if __WORDSIZE == 64 || NEW_ABI
if (can_sign_extend_short_p(i0))
LDC1(r0, i0, r1);
@@ -964,7 +964,7 @@ _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, int32_t r1)
{
# if __WORDSIZE == 64 || NEW_ABI
SDC1(r1, 0, r0);
@@ -975,9 +975,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;
# if __WORDSIZE == 64 || NEW_ABI
if (can_sign_extend_short_p(i0))
SDC1(r0, i0, _ZERO_REGNO);
@@ -996,9 +996,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, int32_t r1, 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);
@@ -1006,9 +1006,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, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
# if __WORDSIZE == 64 || NEW_ABI
if (can_sign_extend_short_p(i0))
SDC1(r1, i0, r0);
@@ -1027,21 +1027,21 @@ _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, int32_t r1)
{
if (r0 != r1)
MOV_D(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_int32_t i[2];
- jit_int64_t l;
+ int32_t i[2];
+ int64_t l;
jit_float64_t d;
} data;
- jit_int32_t reg;
+ int32_t reg;
data.d = *i0;
# if __WORDSIZE == 64 || NEW_ABI
@@ -1086,7 +1086,7 @@ _movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
}
static void
-_ltr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ltr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLT_S(r1, r2);
@@ -1100,7 +1100,7 @@ _ltr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(lt)
static void
-_ler_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ler_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLE_S(r1, r2);
@@ -1114,7 +1114,7 @@ _ler_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(le)
static void
-_eqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_eqr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_EQ_S(r1, r2);
@@ -1128,7 +1128,7 @@ _eqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(eq)
static void
-_ger_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ger_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULT_S(r1, r2);
@@ -1142,7 +1142,7 @@ _ger_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(ge)
static void
-_gtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_gtr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULE_S(r1, r2);
@@ -1156,7 +1156,7 @@ _gtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(gt)
static void
-_ner_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ner_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_EQ_S(r1, r2);
@@ -1170,7 +1170,7 @@ _ner_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(ne)
static void
-_unltr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_unltr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULT_S(r1, r2);
@@ -1184,7 +1184,7 @@ _unltr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(unlt)
static void
-_unler_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_unler_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULE_S(r1, r2);
@@ -1198,7 +1198,7 @@ _unler_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(unle)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UEQ_S(r1, r2);
@@ -1212,7 +1212,7 @@ _uneqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(uneq)
static void
-_unger_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_unger_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLT_S(r1, r2);
@@ -1226,7 +1226,7 @@ _unger_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(unge)
static void
-_ungtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ungtr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLE_S(r1, r2);
@@ -1240,7 +1240,7 @@ _ungtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(ungt)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UEQ_S(r1, r2);
@@ -1254,7 +1254,7 @@ _ltgtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(ltgt)
static void
-_ordr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ordr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UN_S(r1, r2);
@@ -1268,7 +1268,7 @@ _ordr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(ord)
static void
-_unordr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_unordr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UN_S(r1, r2);
@@ -1282,7 +1282,7 @@ _unordr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
fopi(unord)
static jit_word_t
-_bltr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bltr_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLT_S(r1, r2);
@@ -1294,7 +1294,7 @@ _bltr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(lt)
static jit_word_t
-_bler_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bler_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLE_S(r1, r2);
@@ -1306,7 +1306,7 @@ _bler_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(le)
static jit_word_t
-_beqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_beqr_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_EQ_S(r1, r2);
@@ -1318,7 +1318,7 @@ _beqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(eq)
static jit_word_t
-_bger_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bger_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULT_S(r1, r2);
@@ -1330,7 +1330,7 @@ _bger_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(ge)
static jit_word_t
-_bgtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bgtr_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULE_S(r1, r2);
@@ -1342,7 +1342,7 @@ _bgtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(gt)
static jit_word_t
-_bner_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bner_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_EQ_S(r1, r2);
@@ -1354,7 +1354,7 @@ _bner_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(ne)
static jit_word_t
-_bunltr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bunltr_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULT_S(r1, r2);
@@ -1366,7 +1366,7 @@ _bunltr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(unlt)
static jit_word_t
-_bunler_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bunler_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULE_S(r1, r2);
@@ -1378,7 +1378,7 @@ _bunler_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(unle)
static jit_word_t
-_buneqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_buneqr_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UEQ_S(r1, r2);
@@ -1390,7 +1390,7 @@ _buneqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(uneq)
static jit_word_t
-_bunger_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bunger_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLT_S(r1, r2);
@@ -1402,7 +1402,7 @@ _bunger_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(unge)
static jit_word_t
-_bungtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bungtr_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLE_S(r1, r2);
@@ -1414,7 +1414,7 @@ _bungtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(ungt)
static jit_word_t
-_bltgtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bltgtr_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UEQ_S(r1, r2);
@@ -1426,7 +1426,7 @@ _bltgtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(ltgt)
static jit_word_t
-_bordr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bordr_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UN_S(r1, r2);
@@ -1438,7 +1438,7 @@ _bordr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(ord)
static jit_word_t
-_bunordr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bunordr_f(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UN_S(r1, r2);
@@ -1450,7 +1450,7 @@ _bunordr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
fbopi(unord)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLT_D(r1, r2);
@@ -1464,7 +1464,7 @@ _ltr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLE_D(r1, r2);
@@ -1478,7 +1478,7 @@ _ler_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_EQ_D(r1, r2);
@@ -1492,7 +1492,7 @@ _eqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULT_D(r1, r2);
@@ -1506,7 +1506,7 @@ _ger_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULE_D(r1, r2);
@@ -1520,7 +1520,7 @@ _gtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_EQ_D(r1, r2);
@@ -1534,7 +1534,7 @@ _ner_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULT_D(r1, r2);
@@ -1548,7 +1548,7 @@ _unltr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULE_D(r1, r2);
@@ -1562,7 +1562,7 @@ _unler_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UEQ_D(r1, r2);
@@ -1576,7 +1576,7 @@ _uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLT_D(r1, r2);
@@ -1590,7 +1590,7 @@ _unger_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLE_D(r1, r2);
@@ -1604,7 +1604,7 @@ _ungtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UEQ_D(r1, r2);
@@ -1618,7 +1618,7 @@ _ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UN_D(r1, r2);
@@ -1632,7 +1632,7 @@ _ordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UN_D(r1, r2);
@@ -1646,7 +1646,7 @@ _unordr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
dopi(unord)
static jit_word_t
-_bltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bltr_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLT_D(r1, r2);
@@ -1658,7 +1658,7 @@ _bltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(lt)
static jit_word_t
-_bler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bler_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLE_D(r1, r2);
@@ -1670,7 +1670,7 @@ _bler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(le)
static jit_word_t
-_beqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_beqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_EQ_D(r1, r2);
@@ -1682,7 +1682,7 @@ _beqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(eq)
static jit_word_t
-_bger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bger_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULT_D(r1, r2);
@@ -1694,7 +1694,7 @@ _bger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(ge)
static jit_word_t
-_bgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bgtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULE_D(r1, r2);
@@ -1706,7 +1706,7 @@ _bgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(gt)
static jit_word_t
-_bner_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bner_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_EQ_D(r1, r2);
@@ -1718,7 +1718,7 @@ _bner_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(ne)
static jit_word_t
-_bunltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bunltr_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULT_D(r1, r2);
@@ -1730,7 +1730,7 @@ _bunltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(unlt)
static jit_word_t
-_bunler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bunler_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_ULE_D(r1, r2);
@@ -1742,7 +1742,7 @@ _bunler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(unle)
static jit_word_t
-_buneqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_buneqr_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UEQ_D(r1, r2);
@@ -1754,7 +1754,7 @@ _buneqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(uneq)
static jit_word_t
-_bunger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bunger_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLT_D(r1, r2);
@@ -1766,7 +1766,7 @@ _bunger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(unge)
static jit_word_t
-_bungtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bungtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_OLE_D(r1, r2);
@@ -1778,7 +1778,7 @@ _bungtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(ungt)
static jit_word_t
-_bltgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bltgtr_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UEQ_D(r1, r2);
@@ -1790,7 +1790,7 @@ _bltgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(ltgt)
static jit_word_t
-_bordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bordr_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UN_D(r1, r2);
@@ -1802,7 +1802,7 @@ _bordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
dbopi(ord)
static jit_word_t
-_bunordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
+_bunordr_d(jit_state_t *_jit, jit_word_t i0, int32_t r1, int32_t r2)
{
jit_word_t w;
C_UN_D(r1, r2);
@@ -1814,10 +1814,10 @@ _bunordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r1, jit_int32_t r2)
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, int32_t r1)
{
#if !NEW_ABI
- jit_int32_t reg;
+ int32_t reg;
#endif
assert(_jitc->function->self.call & jit_call_varargs);
#if !NEW_ABI
diff --git a/libguile/lightning/lib/jit_mips.c b/libguile/lightning/jit/mips.c
index cca3d76d9..70b2d94ea 100644
--- a/libguile/lightning/lib/jit_mips.c
+++ b/libguile/lightning/jit/mips.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2012-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -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
/*
@@ -64,15 +64,15 @@ static jit_node_t *_jit_make_arg_d(jit_state_t*,jit_node_t*);
static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
#define PROTO 1
-# include "jit_rewind.c"
-# include "jit_mips-cpu.c"
-# include "jit_mips-fpu.c"
+# include "rewind.c"
+# include "mips-cpu.c"
+# include "mips-fpu.c"
#undef PROTO
/*
* Initialization
*/
-jit_register_t _rvs[] = {
+static const jit_register_t _rvs[] = {
{ rc(gpr) | 0x01, "at" },
{ rc(gpr) | 0x02, "v0" },
{ rc(gpr) | 0x03, "v1" },
@@ -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, 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;
@@ -1864,9 +1864,9 @@ _emit_code(jit_state_t *_jit)
}
#define CODE 1
-# include "jit_rewind.c"
-# include "jit_mips-cpu.c"
-# include "jit_mips-fpu.c"
+# include "rewind.c"
+# include "mips-cpu.c"
+# include ", 2018mips-fpu.c"
#undef CODE
void
@@ -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, 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, 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, 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, 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)
diff --git a/libguile/lightning/include/lightning/jit_mips.h b/libguile/lightning/jit/mips.h
index e669966aa..e669966aa 100644
--- a/libguile/lightning/include/lightning/jit_mips.h
+++ b/libguile/lightning/jit/mips.h
diff --git a/libguile/lightning/lib/jit_ppc-cpu.c b/libguile/lightning/jit/ppc-cpu.c
index 0fb695989..6f911dd1f 100644
--- a/libguile/lightning/lib/jit_ppc-cpu.c
+++ b/libguile/lightning/jit/ppc-cpu.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2012-2017, 2019 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -308,7 +308,7 @@ error handler to be invoked
# define MCRXR(d) FX(31,d<<2,0,0,512)
# else
# define MCRXR(cr) _MCRXR(_jit,cr);
-static void _MCRXR(jit_state_t*, jit_int32_t);
+static void _MCRXR(jit_state_t*, int32_t);
# endif
# define MFCR(d) FX(31,d,0,0,19)
# define MFMSR(d) FX(31,d,0,0,83)
@@ -492,13 +492,13 @@ static void _MCRXR(jit_state_t*, jit_int32_t);
# define XORI(s,a,u) FDu(26,a,s,u)
# define XORIS(s,a,u) FDu(27,a,s,u)
# define nop(c) _nop(_jit,c)
-static void _nop(jit_state_t*,jit_int32_t);
+static void _nop(jit_state_t*,int32_t);
# define movr(r0,r1) _movr(_jit,r0,r1)
-static void _movr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _movr(jit_state_t*,int32_t,int32_t);
# define movi(r0,i0) _movi(_jit,r0,i0)
-static void _movi(jit_state_t*,jit_int32_t,jit_word_t);
+static void _movi(jit_state_t*,int32_t,jit_word_t);
# define movi_p(r0,i0) _movi_p(_jit,r0,i0)
-static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
+static jit_word_t _movi_p(jit_state_t*,int32_t,jit_word_t);
# define negr(r0,r1) NEG(r0,r1)
# define comr(r0,r1) NOT(r0,r1)
# define extr_c(r0,r1) EXTSB(r0,r1)
@@ -510,43 +510,43 @@ static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
# define extr_ui(r0,r1) CLRLDI(r0,r1,32)
# endif
# if __BYTE_ORDER == __BIG_ENDIAN
-# define htonr_us(r0,r1) extr_us(r0,r1)
+# define bswapr_us(r0,r1) extr_us(r0,r1)
# if __WORDSIZE == 32
-# define htonr_ui(r0,r1) movr(r0,r1)
+# define bswapr_ui(r0,r1) movr(r0,r1)
# else
-# define htonr_ui(r0,r1) extr_ui(r0,r1)
-# define htonr_ul(r0,r1) movr(r0,r1)
+# define bswapr_ui(r0,r1) extr_ui(r0,r1)
+# define bswapr_ul(r0,r1) movr(r0,r1)
# endif
# else
-# define htonr_us(r0,r1) _htonr_us(_jit,r0,r1)
-static void _htonr_us(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ui(r0,r1) _htonr_ui(_jit,r0,r1)
-static void _htonr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
+# define bswapr_us(r0,r1) _bswapr_us(_jit,r0,r1)
+static void _bswapr_us(jit_state_t*,int32_t,int32_t);
+# define bswapr_ui(r0,r1) _bswapr_ui(_jit,r0,r1)
+static void _bswapr_ui(jit_state_t*,int32_t,int32_t);
# if __WORDSIZE == 64
-# define htonr_ul(r0,r1) _htonr_ul(_jit,r0,r1)
-static void _htonr_ul(jit_state_t*,jit_int32_t,jit_int32_t);
+# define bswapr_ul(r0,r1) _bswapr_ul(_jit,r0,r1)
+static void _bswapr_ul(jit_state_t*,int32_t,int32_t);
# endif
# endif
# define addr(r0,r1,r2) ADD(r0,r1,r2)
# define addi(r0,r1,i0) _addi(_jit,r0,r1,i0)
-static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addcr(r0,r1,r2) ADDC(r0,r1,r2)
# define addci(r0,r1,i0) _addci(_jit,r0,r1,i0)
-static void _addci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addxr(r0,r1,r2) ADDE(r0,r1,r2)
# define addxi(r0,r1,i0) _addxi(_jit,r0,r1,i0)
-static void _addxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subr(r0,r1,r2) SUB(r0,r1,r2)
# define subi(r0,r1,i0) _subi(_jit,r0,r1,i0)
-static void _subi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subcr(r0,r1,r2) SUBC(r0,r1,r2)
# define subci(r0,r1,i0) _subci(_jit,r0,r1,i0)
-static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subxr(r0,r1,r2) SUBFE(r0,r2,r1)
# define subxi(r0,r1,i0) _subxi(_jit,r0,r1,i0)
-static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rsbi(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define mulr(r0,r1,r2) MULLW(r0,r1,r2)
# define mullr(r0,r1,r2) MULLW(r0,r1,r2)
@@ -559,293 +559,293 @@ static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
# define mulhr_u(r0,r1,r2) MULHDU(r0,r1,r2)
# endif
# define muli(r0,r1,i0) _muli(_jit,r0,r1,i0)
-static void _muli(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _muli(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qmulr(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,1)
# define qmulr_u(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,0)
# define iqmulr(r0,r1,r2,r3,cc) _iqmulr(_jit,r0,r1,r2,r3,cc)
-static void _iqmulr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqmulr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
# define qmuli(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,1)
# define qmuli_u(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,0)
# define iqmuli(r0,r1,r2,i0,cc) _iqmuli(_jit,r0,r1,r2,i0,cc)
-static void _iqmuli(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqmuli(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
# if __WORDSIZE == 32
# define divr(r0,r1,r2) DIVW(r0,r1,r2)
# else
# define divr(r0,r1,r2) DIVD(r0,r1,r2)
# endif
# define divi(r0,r1,i0) _divi(_jit,r0,r1,i0)
-static void _divi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define divr_u(r0,r1,r2) DIVWU(r0,r1,r2)
# else
# define divr_u(r0,r1,r2) DIVDU(r0,r1,r2)
# endif
# define divi_u(r0,r1,i0) _divi_u(_jit,r0,r1,i0)
-static void _divi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qdivr(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,1)
# define qdivr_u(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,0)
# define iqdivr(r0,r1,r2,r3,cc) _iqdivr(_jit,r0,r1,r2,r3,cc)
-static void _iqdivr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqdivr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
# define qdivi(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,1)
# define qdivi_u(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,0)
# define iqdivi(r0,r1,r2,i0,cc) _iqdivi(_jit,r0,r1,r2,i0,cc)
-static void _iqdivi(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqdivi(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
# define remr(r0,r1,r2) _remr(_jit,r0,r1,r2)
-static void _remr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr(jit_state_t*,int32_t,int32_t,int32_t);
# define remi(r0,r1,i0) _remi(_jit,r0,r1,i0)
-static void _remi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define remr_u(r0,r1,r2) _remr_u(_jit,r0,r1,r2)
-static void _remr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define remi_u(r0,r1,i0) _remi_u(_jit,r0,r1,i0)
-static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define andr(r0,r1,r2) AND(r0,r1,r2)
# define andi(r0,r1,i0) _andi(_jit,r0,r1,i0)
-static void _andi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _andi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define orr(r0,r1,r2) OR(r0,r1,r2)
# define ori(r0,r1,i0) _ori(_jit,r0,r1,i0)
-static void _ori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define xorr(r0,r1,r2) XOR(r0,r1,r2)
# define xori(r0,r1,i0) _xori(_jit,r0,r1,i0)
-static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _xori(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define lshr(r0,r1,r2) SLW(r0,r1,r2)
# else
# define lshr(r0,r1,r2) SLD(r0,r1,r2)
# endif
# define lshi(r0,r1,i0) _lshi(_jit,r0,r1,i0)
-static void _lshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define rshr(r0,r1,r2) SRAW(r0,r1,r2)
# else
# define rshr(r0,r1,r2) SRAD(r0,r1,r2)
# endif
# define rshi(r0,r1,i0) _rshi(_jit,r0,r1,i0)
-static void _rshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define rshr_u(r0,r1,r2) SRW(r0,r1,r2)
# else
# define rshr_u(r0,r1,r2) SRD(r0,r1,r2)
# endif
# define rshi_u(r0,r1,i0) _rshi_u(_jit,r0,r1,i0)
-static void _rshi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ltr(r0,r1,r2) _ltr(_jit,r0,r1,r2)
-static void _ltr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ltr(jit_state_t*,int32_t,int32_t,int32_t);
# define lti(r0,r1,i0) _lti(_jit,r0,r1,i0)
-static void _lti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lti(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ltr_u(r0,r1,r2) _ltr_u(_jit,r0,r1,r2)
-static void _ltr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ltr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define lti_u(r0,r1,i0) _lti_u(_jit,r0,r1,i0)
-static void _lti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lti_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ler(r0,r1,r2) _ler(_jit,r0,r1,r2)
-static void _ler(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ler(jit_state_t*,int32_t,int32_t,int32_t);
# define lei(r0,r1,i0) _lei(_jit,r0,r1,i0)
-static void _lei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lei(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ler_u(r0,r1,r2) _ler_u(_jit,r0,r1,r2)
-static void _ler_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ler_u(jit_state_t*,int32_t,int32_t,int32_t);
# define lei_u(r0,r1,i0) _lei_u(_jit,r0,r1,i0)
-static void _lei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lei_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define eqr(r0,r1,r2) _eqr(_jit,r0,r1,r2)
-static void _eqr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _eqr(jit_state_t*,int32_t,int32_t,int32_t);
# define eqi(r0,r1,i0) _eqi(_jit,r0,r1,i0)
-static void _eqi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _eqi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ger(r0,r1,r2) _ger(_jit,r0,r1,r2)
-static void _ger(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ger(jit_state_t*,int32_t,int32_t,int32_t);
# define gei(r0,r1,i0) _gei(_jit,r0,r1,i0)
-static void _gei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gei(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ger_u(r0,r1,r2) _ger_u(_jit,r0,r1,r2)
-static void _ger_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ger_u(jit_state_t*,int32_t,int32_t,int32_t);
# define gei_u(r0,r1,i0) _gei_u(_jit,r0,r1,i0)
-static void _gei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gei_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define gtr(r0,r1,r2) _gtr(_jit,r0,r1,r2)
-static void _gtr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _gtr(jit_state_t*,int32_t,int32_t,int32_t);
# define gti(r0,r1,i0) _gti(_jit,r0,r1,i0)
-static void _gti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gti(jit_state_t*,int32_t,int32_t,jit_word_t);
# define gtr_u(r0,r1,r2) _gtr_u(_jit,r0,r1,r2)
-static void _gtr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _gtr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define gti_u(r0,r1,i0) _gti_u(_jit,r0,r1,i0)
-static void _gti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _gti_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ner(r0,r1,r2) _ner(_jit,r0,r1,r2)
-static void _ner(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ner(jit_state_t*,int32_t,int32_t,int32_t);
# define nei(r0,r1,i0) _nei(_jit,r0,r1,i0)
-static void _nei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _nei(jit_state_t*,int32_t,int32_t,jit_word_t);
#define bltr(i0,r0,r1) _bltr(_jit,i0,r0,r1)
-static jit_word_t _bltr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bltr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blti(i0,r0,i1) _blti(_jit,i0,r0,i1)
-static jit_word_t _blti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blti(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bltr_u(i0,r0,r1) _bltr_u(_jit,i0,r0,r1)
-static jit_word_t _bltr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bltr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blti_u(i0,r0,i1) _blti_u(_jit,i0,r0,i1)
-static jit_word_t _blti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blti_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bler(i0,r0,r1) _bler(_jit,i0,r0,r1)
-static jit_word_t _bler(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bler(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blei(i0,r0,i1) _blei(_jit,i0,r0,i1)
-static jit_word_t _blei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bler_u(i0,r0,r1) _bler_u(_jit,i0,r0,r1)
-static jit_word_t _bler_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bler_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define blei_u(i0,r0,i1) _blei_u(_jit,i0,r0,i1)
-static jit_word_t _blei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _blei_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define beqr(i0,r0,r1) _beqr(_jit,i0,r0,r1)
-static jit_word_t _beqr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _beqr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define beqi(i0,r0,i1) _beqi(_jit,i0,r0,i1)
-static jit_word_t _beqi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _beqi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bger(i0,r0,r1) _bger(_jit,i0,r0,r1)
-static jit_word_t _bger(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bger(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgei(i0,r0,i1) _bgei(_jit,i0,r0,i1)
-static jit_word_t _bgei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bger_u(i0,r0,r1) _bger_u(_jit,i0,r0,r1)
-static jit_word_t _bger_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bger_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgei_u(i0,r0,i1) _bgei_u(_jit,i0,r0,i1)
-static jit_word_t _bgei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgei_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bgtr(i0,r0,r1) _bgtr(_jit,i0,r0,r1)
-static jit_word_t _bgtr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bgtr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgti(i0,r0,i1) _bgti(_jit,i0,r0,i1)
-static jit_word_t _bgti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgti(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bgtr_u(i0,r0,r1) _bgtr_u(_jit,i0,r0,r1)
-static jit_word_t _bgtr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bgtr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bgti_u(i0,r0,i1) _bgti_u(_jit,i0,r0,i1)
-static jit_word_t _bgti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bgti_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bner(i0,r0,r1) _bner(_jit,i0,r0,r1)
-static jit_word_t _bner(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bner(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bnei(i0,r0,i1) _bnei(_jit,i0,r0,i1)
-static jit_word_t _bnei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bnei(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bmsr(i0,r0,r1) _bmsr(_jit,i0,r0,r1)
-static jit_word_t _bmsr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bmsr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bmsi(i0,r0,i1) _bmsi(_jit,i0,r0,i1)
-static jit_word_t _bmsi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bmsi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bmcr(i0,r0,r1) _bmcr(_jit,i0,r0,r1)
-static jit_word_t _bmcr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bmcr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bmci(i0,r0,i1) _bmci(_jit,i0,r0,i1)
-static jit_word_t _bmci(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bmci(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define boaddr(i0,r0,r1) _boaddr(_jit,i0,r0,r1)
-static jit_word_t _boaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _boaddr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define boaddi(i0,r0,i1) _boaddi(_jit,i0,r0,i1)
-static jit_word_t _boaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _boaddi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bxaddr(i0,r0,r1) _bxaddr(_jit,i0,r0,r1)
-static jit_word_t _bxaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxaddr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bxaddi(i0,r0,i1) _bxaddi(_jit,i0,r0,i1)
-static jit_word_t _bxaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxaddi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bosubr(i0,r0,r1) _bosubr(_jit,i0,r0,r1)
-static jit_word_t _bosubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bosubr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bosubi(i0,r0,i1) _bosubi(_jit,i0,r0,i1)
-static jit_word_t _bosubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bosubi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bxsubr(i0,r0,r1) _bxsubr(_jit,i0,r0,r1)
-static jit_word_t _bxsubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxsubr(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bxsubi(i0,r0,i1) _bxsubi(_jit,i0,r0,i1)
-static jit_word_t _bxsubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxsubi(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define boaddr_u(i0,r0,r1) _boaddr_u(_jit,i0,r0,r1)
-static jit_word_t _boaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _boaddr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define boaddi_u(i0,r0,i1) _boaddi_u(_jit,i0,r0,i1)
-static jit_word_t _boaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _boaddi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bxaddr_u(i0,r0,r1) _bxaddr_u(_jit,i0,r0,r1)
-static jit_word_t _bxaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxaddr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bxaddi_u(i0,r0,i1) _bxaddi_u(_jit,i0,r0,i1)
-static jit_word_t _bxaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxaddi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bosubr_u(i0,r0,r1) _bosubr_u(_jit,i0,r0,r1)
-static jit_word_t _bosubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bosubr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bosubi_u(i0,r0,i1) _bosubi_u(_jit,i0,r0,i1)
-static jit_word_t _bosubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bosubi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
#define bxsubr_u(i0,r0,r1) _bxsubr_u(_jit,i0,r0,r1)
-static jit_word_t _bxsubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bxsubr_u(jit_state_t*,jit_word_t,int32_t,int32_t);
#define bxsubi_u(i0,r0,i1) _bxsubi_u(_jit,i0,r0,i1)
-static jit_word_t _bxsubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bxsubi_u(jit_state_t*,jit_word_t,int32_t,jit_word_t);
# define ldr_c(r0,r1) _ldr_c(_jit,r0,r1)
-static void _ldr_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _ldr_c(jit_state_t*,int32_t,int32_t);
# define ldi_c(r0,i0) _ldi_c(_jit,r0,i0)
-static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_c(jit_state_t*,int32_t,jit_word_t);
# define ldxr_c(r0,r1,i0) _ldxr_c(_jit,r0,r1,i0)
-static void _ldxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_c(r0,r1,i0) _ldxi_c(_jit,r0,r1,i0)
-static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_c(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_uc(r0,r1) LBZX(r0, _R0_REGNO, r1)
# define ldi_uc(r0,i0) _ldi_uc(_jit,r0,i0)
-static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_uc(jit_state_t*,int32_t,jit_word_t);
# define ldxr_uc(r0,r1,r2) _ldxr_uc(_jit,r0,r1,r2)
-static void _ldxr_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_uc(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_uc(r0,r1,i0) _ldxi_uc(_jit,r0,r1,i0)
-static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_uc(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_s(r0,r1) LHAX(r0, _R0_REGNO, r1)
# define ldi_s(r0,i0) _ldi_s(_jit,r0,i0)
-static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_s(jit_state_t*,int32_t,jit_word_t);
# define ldxr_s(r0,r1,i0) _ldxr_s(_jit,r0,r1,i0)
-static void _ldxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_s(r0,r1,i0) _ldxi_s(_jit,r0,r1,i0)
-static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_s(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_us(r0,r1) LHZX(r0, _R0_REGNO, r1)
# define ldi_us(r0,i0) _ldi_us(_jit,r0,i0)
-static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_us(jit_state_t*,int32_t,jit_word_t);
# define ldxr_us(r0,r1,i0) _ldxr_us(_jit,r0,r1,i0)
-static void _ldxr_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_us(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_us(r0,r1,i0) _ldxi_us(_jit,r0,r1,i0)
-static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_us(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define ldr_i(r0,r1) LWZX(r0, _R0_REGNO, r1)
# else
# define ldr_i(r0,r1) LWAX(r0, _R0_REGNO, r1)
# endif
# define ldi_i(r0,i0) _ldi_i(_jit,r0,i0)
-static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_i(jit_state_t*,int32_t,jit_word_t);
# define ldxr_i(r0,r1,i0) _ldxr_i(_jit,r0,r1,i0)
-static void _ldxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_i(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_i(r0,r1,i0) _ldxi_i(_jit,r0,r1,i0)
-static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_i(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 64
# define ldr_ui(r0,r1) LWZX(r0, _R0_REGNO, r1)
# define ldi_ui(r0,i0) _ldi_ui(_jit,r0,i0)
-static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_ui(jit_state_t*,int32_t,jit_word_t);
# define ldxr_ui(r0,r1,i0) _ldxr_ui(_jit,r0,r1,i0)
-static void _ldxr_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_ui(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_ui(r0,r1,i0) _ldxi_ui(_jit,r0,r1,i0)
-static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_ui(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_l(r0,r1) LDX(r0, _R0_REGNO, r1)
# define ldi_l(r0,i0) _ldi_l(_jit,r0,i0)
-static void _ldi_l(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_l(jit_state_t*,int32_t,jit_word_t);
# define ldxr_l(r0,r1,i0) _ldxr_l(_jit,r0,r1,i0)
-static void _ldxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_l(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_l(r0,r1,i0) _ldxi_l(_jit,r0,r1,i0)
-static void _ldxi_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_l(jit_state_t*,int32_t,int32_t,jit_word_t);
# endif
# define str_c(r0,r1) STBX(r1, _R0_REGNO, r0)
# define sti_c(i0,r0) _sti_c(_jit,i0,r0)
-static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_c(jit_state_t*,jit_word_t,int32_t);
# define stxr_c(r0,r1,r2) _stxr_c(_jit,r0,r1,r2)
-static void _stxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_c(i0,r0,r1) _stxi_c(_jit,i0,r0,r1)
-static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_c(jit_state_t*,jit_word_t,int32_t,int32_t);
# define str_s(r0,r1) STHX(r1, _R0_REGNO, r0)
# define sti_s(i0,r0) _sti_s(_jit,i0,r0)
-static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_s(jit_state_t*,jit_word_t,int32_t);
# define stxr_s(r0,r1,r2) _stxr_s(_jit,r0,r1,r2)
-static void _stxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_s(i0,r0,r1) _stxi_s(_jit,i0,r0,r1)
-static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_s(jit_state_t*,jit_word_t,int32_t,int32_t);
# define str_i(r0,r1) STWX(r1, _R0_REGNO, r0)
# define sti_i(i0,r0) _sti_i(_jit,i0,r0)
-static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_i(jit_state_t*,jit_word_t,int32_t);
# define stxr_i(r0,r1,r2) _stxr_i(_jit,r0,r1,r2)
-static void _stxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_i(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_i(i0,r0,r1) _stxi_i(_jit,i0,r0,r1)
-static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_i(jit_state_t*,jit_word_t,int32_t,int32_t);
# if __WORDSIZE == 64
# define str_l(r0,r1) STDX(r1, _R0_REGNO, r0)
# define sti_l(i0,r0) _sti_l(_jit,i0,r0)
-static void _sti_l(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_l(jit_state_t*,jit_word_t,int32_t);
# define stxr_l(r0,r1,r2) _stxr_l(_jit,r0,r1,r2)
-static void _stxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_l(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_l(i0,r0,r1) _stxi_l(_jit,i0,r0,r1)
-static void _stxi_l(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_l(jit_state_t*,jit_word_t,int32_t,int32_t);
# endif
# define jmpr(r0) _jmpr(_jit,r0)
-static void _jmpr(jit_state_t*,jit_int32_t);
+static void _jmpr(jit_state_t*,int32_t);
# define jmpi(i0) _jmpi(_jit,i0)
static jit_word_t _jmpi(jit_state_t*,jit_word_t);
# define jmpi_p(i0) _jmpi_p(_jit,i0)
static jit_word_t _jmpi_p(jit_state_t*,jit_word_t) maybe_unused;
# define callr(r0) _callr(_jit,r0)
-static void _callr(jit_state_t*,jit_int32_t);
+static void _callr(jit_state_t*,int32_t);
# define calli(i0) _calli(_jit,i0)
static void _calli(jit_state_t*,jit_word_t);
# define calli_p(i0) _calli_p(_jit,i0)
@@ -855,9 +855,9 @@ static void _prolog(jit_state_t*, jit_node_t*);
# define epilog(node) _epilog(_jit, node)
static void _epilog(jit_state_t*, jit_node_t*);
# define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
+static void _vastart(jit_state_t*, int32_t);
# define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vaarg(jit_state_t*, int32_t, int32_t);
# define patch_at(i,l) _patch_at(_jit,i,l)
static void _patch_at(jit_state_t*,jit_word_t,jit_word_t);
#endif
@@ -1043,9 +1043,9 @@ _FXS(jit_state_t *_jit, int o, int s, int a, int h, int x, int i, int r)
* http://tenfourfox.blogspot.com/2011/04/attention-g5-owners-your-javascript-no.html
*/
static void
-_MCRXR(jit_state_t *_jit, jit_int32_t cr)
+_MCRXR(jit_state_t *_jit, int32_t cr)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
MFXER(rn(reg));
MTCRF(128, rn(reg));
@@ -1056,7 +1056,7 @@ _MCRXR(jit_state_t *_jit, jit_int32_t cr)
#endif
static void
-_nop(jit_state_t *_jit, jit_int32_t i0)
+_nop(jit_state_t *_jit, int32_t i0)
{
for (; i0 > 0; i0 -= 4)
NOP();
@@ -1064,32 +1064,32 @@ _nop(jit_state_t *_jit, jit_int32_t i0)
}
static void
-_movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_movr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (r0 != r1)
MR(r0, r1);
}
static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
if (can_sign_extend_short_p(i0))
LI(r0, i0);
else {
if (can_sign_extend_int_p(i0))
- LIS(r0, (jit_int16_t)(i0 >> 16));
+ LIS(r0, (int16_t)(i0 >> 16));
else if (can_zero_extend_int_p(i0)) {
if (i0 & 0xffff0000) {
- ORI(r0, r0, (jit_uint16_t)(i0 >> 16));
+ ORI(r0, r0, (uint16_t)(i0 >> 16));
SLWI(r0, r0, 16);
}
}
# if __WORDSIZE == 64
else {
- movi(r0, (jit_uint32_t)(i0 >> 32));
+ movi(r0, (uint32_t)(i0 >> 32));
if (i0 & 0xffff0000) {
SLDI(r0, r0, 16);
- ORI(r0, r0, (jit_uint16_t)(i0 >> 16));
+ ORI(r0, r0, (uint16_t)(i0 >> 16));
SLDI(r0, r0, 16);
}
else
@@ -1097,33 +1097,33 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
# endif
if (i0 & 0xffff)
- ORI(r0, r0, (jit_uint16_t)i0);
+ ORI(r0, r0, (uint16_t)i0);
}
}
static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t word = _jit->pc.w;
# if __WORDSIZE == 32
- LIS(r0, (jit_int16_t)(i0 >> 16));
- ORI(r0, r0, (jit_uint16_t)i0);
+ LIS(r0, (int16_t)(i0 >> 16));
+ ORI(r0, r0, (uint16_t)i0);
# else
- LIS(r0, (jit_int16_t)(i0 >> 48));
- ORI(r0, r0, (jit_uint16_t)(i0 >> 32));
+ LIS(r0, (int16_t)(i0 >> 48));
+ ORI(r0, r0, (uint16_t)(i0 >> 32));
SLDI(r0, r0, 16);
- ORI(r0, r0, (jit_uint16_t)(i0 >> 16));
+ ORI(r0, r0, (uint16_t)(i0 >> 16));
SLDI(r0, r0, 16);
- ORI(r0, r0, (jit_uint16_t)i0);
+ ORI(r0, r0, (uint16_t)i0);
# endif
return (word);
}
# if __BYTE_ORDER == __LITTLE_ENDIAN
static void
-_htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t t0;
+ int32_t t0;
t0 = jit_get_reg(jit_class_gpr);
rshi(rn(t0), r1, 8);
andi(r0, r1, 0xff);
@@ -1134,9 +1134,9 @@ _htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
ROTLWI(rn(reg), r1, 8);
RLWIMI(rn(reg), r1, 24, 0, 7);
@@ -1147,13 +1147,13 @@ _htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# if __WORDSIZE == 64
static void
-_htonr_ul(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_bswapr_ul(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
rshi_u(rn(reg), r1, 32);
- htonr_ui(r0, r1);
- htonr_ui(rn(reg), rn(reg));
+ bswapr_ui(r0, r1);
+ bswapr_ui(rn(reg), rn(reg));
lshi(r0, r0, 32);
orr(r0, r0, rn(reg));
jit_unget_reg(reg);
@@ -1162,9 +1162,9 @@ _htonr_ul(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
# endif
static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
ADDI(r0, r1, i0);
else if (can_zero_extend_int_p(i0) && !(i0 & 0x0000ffff))
@@ -1178,9 +1178,9 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
ADDIC(r0, r1, i0);
else {
@@ -1192,9 +1192,9 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
ADDE(r0, r1, rn(reg));
@@ -1202,9 +1202,9 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t ni0 = -i0;
if (can_sign_extend_short_p(ni0))
ADDI(r0, r1, ni0);
@@ -1219,9 +1219,9 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
SUBC(r0, r1, rn(reg));
@@ -1229,9 +1229,9 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
SUBE(r0, r1, rn(reg));
@@ -1239,16 +1239,16 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rsbi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
subi(r0, r1, i0);
negr(r0, r0);
}
static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
MULLI(r0, r1, i0);
else {
@@ -1260,10 +1260,10 @@ _muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqmulr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2 || r0 == r3) {
reg = jit_get_reg(jit_class_gpr);
mullr(rn(reg), r2, r3);
@@ -1281,10 +1281,10 @@ _iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqmuli(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
iqmulr(r0, r1, r2, rn(reg), sign);
@@ -1292,9 +1292,9 @@ _iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
divr(r0, r1, rn(reg));
@@ -1302,9 +1302,9 @@ _divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
divr_u(r0, r1, rn(reg));
@@ -1312,11 +1312,11 @@ _divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqdivr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
- jit_int32_t sv0, rg0;
- jit_int32_t sv1, rg1;
+ int32_t sv0, rg0;
+ int32_t sv1, rg1;
if (r0 == r2 || r0 == r3) {
sv0 = jit_get_reg(jit_class_gpr);
@@ -1348,10 +1348,10 @@ _iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqdivi(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
iqdivr(r0, r1, r2, rn(reg), sign);
@@ -1359,9 +1359,9 @@ _iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r1 || r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
divr(rn(reg), r1, r2);
@@ -1377,9 +1377,9 @@ _remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr(r0, r1, rn(reg));
@@ -1387,9 +1387,9 @@ _remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r1 || r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
divr_u(rn(reg), r1, r2);
@@ -1405,9 +1405,9 @@ _remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr_u(r0, r1, rn(reg));
@@ -1415,9 +1415,9 @@ _remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
ANDI_(r0, r1, i0);
else if (can_zero_extend_int_p(i0) && !(i0 & 0x0000ffff))
@@ -1431,9 +1431,9 @@ _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
ORI(r0, r1, i0);
else if (can_zero_extend_int_p(i0) && !(i0 & 0x0000ffff))
@@ -1447,9 +1447,9 @@ _ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
XORI(r0, r1, i0);
else if (can_zero_extend_int_p(i0) && !(i0 & 0x0000ffff))
@@ -1463,7 +1463,7 @@ _xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
if (i0 == 0)
movr(r0, r1);
@@ -1477,7 +1477,7 @@ _lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
if (i0 == 0)
movr(r0, r1);
@@ -1491,7 +1491,7 @@ _rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
if (i0 == 0)
movr(r0, r1);
@@ -1505,7 +1505,7 @@ _rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ltr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ltr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPW(r1, r2);
MFCR(r0);
@@ -1513,9 +1513,9 @@ _ltr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lti(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
CMPWI(r1, i0);
else {
@@ -1529,7 +1529,7 @@ _lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ltr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ltr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPLW(r1, r2);
MFCR(r0);
@@ -1537,9 +1537,9 @@ _ltr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_lti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lti_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
CMPLWI(r1, i0);
else {
@@ -1553,7 +1553,7 @@ _lti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ler(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ler(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPW(r1, r2);
CRNOT(CR_GT, CR_GT);
@@ -1562,9 +1562,9 @@ _ler(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_lei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
CMPWI(r1, i0);
else {
@@ -1579,7 +1579,7 @@ _lei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ler_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ler_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPLW(r1, r2);
CRNOT(CR_GT, CR_GT);
@@ -1588,9 +1588,9 @@ _ler_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_lei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lei_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
CMPLWI(r1, i0);
else {
@@ -1605,7 +1605,7 @@ _lei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_eqr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_eqr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPW(r1, r2);
MFCR(r0);
@@ -1613,9 +1613,9 @@ _eqr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_eqi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_eqi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
CMPWI(r1, i0);
else if (can_zero_extend_short_p(i0))
@@ -1631,7 +1631,7 @@ _eqi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ger(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ger(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPW(r1, r2);
CRNOT(CR_LT, CR_LT);
@@ -1640,9 +1640,9 @@ _ger(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
CMPWI(r1, i0);
else {
@@ -1657,7 +1657,7 @@ _gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ger_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ger_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPLW(r1, r2);
CRNOT(CR_LT, CR_LT);
@@ -1666,9 +1666,9 @@ _ger_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gei_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
CMPLWI(r1, i0);
else {
@@ -1683,7 +1683,7 @@ _gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gtr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_gtr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPW(r1, r2);
MFCR(r0);
@@ -1691,9 +1691,9 @@ _gtr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_gti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gti(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
CMPWI(r1, i0);
else {
@@ -1707,7 +1707,7 @@ _gti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_gtr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_gtr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPLW(r1, r2);
MFCR(r0);
@@ -1715,9 +1715,9 @@ _gtr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_gti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_gti_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_zero_extend_short_p(i0))
CMPLWI(r1, i0);
else {
@@ -1731,7 +1731,7 @@ _gti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ner(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ner(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
CMPW(r1, r2);
CRNOT(CR_EQ, CR_EQ);
@@ -1740,9 +1740,9 @@ _ner(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_nei(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (can_sign_extend_short_p(i0))
CMPWI(r1, i0);
else if (can_zero_extend_short_p(i0))
@@ -1759,7 +1759,7 @@ _nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static jit_word_t
-_bltr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bltr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPW(r0, r1);
@@ -1770,9 +1770,9 @@ _bltr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blti(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_sign_extend_short_p(i1))
CMPWI(r0, i1);
@@ -1789,7 +1789,7 @@ _blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bltr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bltr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPLW(r0, r1);
@@ -1800,9 +1800,9 @@ _bltr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blti_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_zero_extend_short_p(i1))
CMPLWI(r0, i1);
@@ -1819,7 +1819,7 @@ _blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bler(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bler(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPW(r0, r1);
@@ -1830,9 +1830,9 @@ _bler(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_sign_extend_short_p(i1))
CMPWI(r0, i1);
@@ -1849,7 +1849,7 @@ _blei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bler_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bler_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPLW(r0, r1);
@@ -1860,9 +1860,9 @@ _bler_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_blei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_blei_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_zero_extend_short_p(i1))
CMPLWI(r0, i1);
@@ -1879,7 +1879,7 @@ _blei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_beqr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_beqr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPW(r0, r1);
@@ -1890,9 +1890,9 @@ _beqr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_beqi(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_sign_extend_short_p(i1))
CMPWI(r0, i1);
@@ -1911,7 +1911,7 @@ _beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bger(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bger(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPW(r0, r1);
@@ -1922,9 +1922,9 @@ _bger(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_sign_extend_short_p(i1))
CMPWI(r0, i1);
@@ -1941,7 +1941,7 @@ _bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bger_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bger_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPLW(r0, r1);
@@ -1952,9 +1952,9 @@ _bger_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgei_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_zero_extend_short_p(i1))
CMPLWI(r0, i1);
@@ -1971,7 +1971,7 @@ _bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bgtr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bgtr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPW(r0, r1);
@@ -1982,9 +1982,9 @@ _bgtr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgti(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_sign_extend_short_p(i1))
CMPWI(r0, i1);
@@ -2001,7 +2001,7 @@ _bgti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bgtr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bgtr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPLW(r0, r1);
@@ -2012,9 +2012,9 @@ _bgtr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bgti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bgti_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_zero_extend_short_p(i1))
CMPLWI(r0, i1);
@@ -2031,7 +2031,7 @@ _bgti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bner(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bner(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
CMPW(r0, r1);
@@ -2042,9 +2042,9 @@ _bner(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bnei(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_sign_extend_short_p(i1))
CMPWI(r0, i1);
@@ -2063,10 +2063,10 @@ _bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bmsr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmsr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
andr(rn(reg), r0, r1);
w = bnei(i0, rn(reg), 0);
@@ -2075,10 +2075,10 @@ _bmsr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bmsi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmsi(jit_state_t *_jit, 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_gpr|jit_class_nospill);
andi(rn(reg), r0, i1);
w = bnei(i0, rn(reg), 0);
@@ -2087,10 +2087,10 @@ _bmsi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bmcr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmcr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
andr(rn(reg), r0, r1);
w = beqi(i0, rn(reg), 0);
@@ -2099,10 +2099,10 @@ _bmcr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bmci(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmci(jit_state_t *_jit, 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_gpr|jit_class_nospill);
andi(rn(reg), r0, i1);
w = beqi(i0, rn(reg), 0);
@@ -2111,7 +2111,7 @@ _bmci(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_boaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_boaddr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
ADDO(r0, r0, r1);
@@ -2123,10 +2123,10 @@ _boaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_boaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_boaddi(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = boaddr(i0, r0, rn(reg));
@@ -2135,7 +2135,7 @@ _boaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxaddr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
ADDO(r0, r0, r1);
@@ -2147,10 +2147,10 @@ _bxaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxaddi(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bxaddr(i0, r0, rn(reg));
@@ -2159,7 +2159,7 @@ _bxaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bosubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bosubr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
SUBO(r0, r0, r1);
@@ -2171,10 +2171,10 @@ _bosubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bosubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bosubi(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bosubr(i0, r0, rn(reg));
@@ -2183,7 +2183,7 @@ _bosubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxsubr(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
SUBO(r0, r0, r1);
@@ -2195,10 +2195,10 @@ _bxsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxsubi(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bxsubr(i0, r0, rn(reg));
@@ -2207,7 +2207,7 @@ _bxsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_boaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_boaddr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
ADDC(r0, r0, r1);
@@ -2219,9 +2219,9 @@ _boaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_boaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_boaddi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_sign_extend_short_p(i1)) {
ADDIC(r0, r0, i1);
@@ -2239,7 +2239,7 @@ _boaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxaddr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
ADDC(r0, r0, r1);
@@ -2251,9 +2251,9 @@ _bxaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxaddi_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t d, w;
if (can_sign_extend_short_p(i1)) {
ADDIC(r0, r0, i1);
@@ -2271,7 +2271,7 @@ _bxaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bosubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bosubr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
SUBC(r0, r0, r1);
@@ -2283,10 +2283,10 @@ _bosubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bosubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bosubi_u(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bosubr_u(i0, r0, rn(reg));
@@ -2295,7 +2295,7 @@ _bosubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static jit_word_t
-_bxsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bxsubr_u(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
SUBC(r0, r0, r1);
@@ -2307,10 +2307,10 @@ _bxsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static jit_word_t
-_bxsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bxsubi_u(jit_state_t *_jit, 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bxsubr_u(i0, r0, rn(reg));
@@ -2319,44 +2319,44 @@ _bxsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
}
static void
-_ldr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_ldr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
ldr_uc(r0, r1);
extr_c(r0, r0);
}
static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_c(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
ldi_uc(r0, i0);
extr_c(r0, r0);
}
static void
-_ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
ldxr_uc(r0, r1, r2);
extr_c(r0, r0);
}
static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
ldxi_uc(r0, r1, i0);
extr_c(r0, r0);
}
static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_uc(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))
LBZ(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);
@@ -2373,9 +2373,9 @@ _ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_uc(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r1 == _R0_REGNO) {
if (r2 != _R0_REGNO)
LBZX(r0, r2, r1);
@@ -2391,9 +2391,9 @@ _ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
ldr_uc(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -2415,16 +2415,16 @@ _ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_s(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))
LHA(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);
@@ -2441,9 +2441,9 @@ _ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r1 == _R0_REGNO) {
if (r2 != _R0_REGNO)
LHAX(r0, r2, r1);
@@ -2459,9 +2459,9 @@ _ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
ldr_s(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -2483,16 +2483,16 @@ _ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_us(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))
LHZ(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);
@@ -2509,9 +2509,9 @@ _ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_us(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r1 == _R0_REGNO) {
if (r2 != _R0_REGNO)
LHZX(r0, r2, r1);
@@ -2527,9 +2527,9 @@ _ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
ldr_us(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -2552,16 +2552,16 @@ _ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 32
static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_i(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))
LWZ(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);
@@ -2578,9 +2578,9 @@ _ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r1 == _R0_REGNO) {
if (r2 != _R0_REGNO)
LWZX(r0, r2, r1);
@@ -2596,9 +2596,9 @@ _ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
ldr_i(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -2621,16 +2621,16 @@ _ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# else
static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_i(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))
LWA(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);
@@ -2647,9 +2647,9 @@ _ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r1 == _R0_REGNO) {
if (r2 != _R0_REGNO)
LWZX(r0, r2, r1);
@@ -2665,9 +2665,9 @@ _ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
ldr_i(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -2689,16 +2689,16 @@ _ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_ui(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))
LWZ(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);
@@ -2715,9 +2715,9 @@ _ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_ui(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r1 == _R0_REGNO) {
if (r2 != _R0_REGNO)
LWZX(r0, r2, r1);
@@ -2733,9 +2733,9 @@ _ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
ldr_i(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -2757,16 +2757,16 @@ _ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_l(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))
LD(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);
@@ -2783,9 +2783,9 @@ _ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r1 == _R0_REGNO) {
if (r2 != _R0_REGNO)
LDX(r0, r2, r1);
@@ -2801,9 +2801,9 @@ _ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
ldr_l(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -2826,16 +2826,16 @@ _ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# endif
static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_c(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))
STB(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);
@@ -2852,9 +2852,9 @@ _sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == _R0_REGNO) {
if (r1 != _R0_REGNO)
STBX(r2, r1, r0);
@@ -2870,9 +2870,9 @@ _stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
str_c(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -2894,16 +2894,16 @@ _stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_s(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))
STH(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);
@@ -2920,9 +2920,9 @@ _sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == _R0_REGNO) {
if (r1 != _R0_REGNO)
STHX(r2, r1, r0);
@@ -2938,9 +2938,9 @@ _stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
str_s(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -2962,16 +2962,16 @@ _stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_i(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))
STW(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);
@@ -2988,9 +2988,9 @@ _sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == _R0_REGNO) {
if (r1 != _R0_REGNO)
STWX(r2, r1, r0);
@@ -3006,9 +3006,9 @@ _stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
str_i(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -3031,16 +3031,16 @@ _stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
# if __WORDSIZE == 64
static void
-_sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_l(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))
STD(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);
@@ -3057,9 +3057,9 @@ _sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == _R0_REGNO) {
if (r1 != _R0_REGNO)
STDX(r2, r1, r0);
@@ -3075,9 +3075,9 @@ _stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (i0 == 0)
str_l(r0, r1);
else if (can_sign_extend_short_p(i0)) {
@@ -3100,7 +3100,7 @@ _stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
# endif
static void
-_jmpr(jit_state_t *_jit, jit_int32_t r0)
+_jmpr(jit_state_t *_jit, int32_t r0)
{
#if 0
MTLR(r0);
@@ -3115,7 +3115,7 @@ _jmpr(jit_state_t *_jit, jit_int32_t r0)
static jit_word_t
_jmpi(jit_state_t *_jit, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
jit_word_t w, d;
w = _jit->pc.w;
d = (i0 - w) & ~3;
@@ -3135,7 +3135,7 @@ static jit_word_t
_jmpi_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
w = movi_p(rn(reg), i0);
jmpr(rn(reg));
@@ -3144,7 +3144,7 @@ _jmpi_p(jit_state_t *_jit, jit_word_t i0)
}
static void
-_callr(jit_state_t *_jit, jit_int32_t r0)
+_callr(jit_state_t *_jit, int32_t r0)
{
# if __powerpc__
# if ABI_ELFv2
@@ -3180,7 +3180,7 @@ _calli(jit_state_t *_jit, jit_word_t i0)
# if __ppc__
jit_word_t d;
# endif
- jit_int32_t reg;
+ int32_t reg;
# if __ppc__
d = (i0 - _jit->pc.w) & ~3;
if (can_sign_extend_jump_p(d))
@@ -3200,7 +3200,7 @@ static jit_word_t
_calli_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
w = movi_p(rn(reg), i0);
callr(rn(reg));
@@ -3210,7 +3210,7 @@ _calli_p(jit_state_t *_jit, jit_word_t i0)
# if __powerpc__
/* order is not guaranteed to be sequential */
-static jit_int32_t save[] = {
+static int32_t save[] = {
_R14, _R15, _R16, _R17, _R18, _R19, _R20, _R21, _R22,
_R23, _R24, _R25, _R26, _R27, _R28, _R29, _R30, _R31,
};
@@ -3223,7 +3223,7 @@ _prolog(jit_state_t *_jit, jit_node_t *node)
jit_word_t offset;
if (_jitc->function->define_frame || _jitc->function->assume_frame) {
- jit_int32_t frame = -_jitc->function->frame;
+ int32_t frame = -_jitc->function->frame;
assert(_jitc->function->self.aoff >= frame);
if (_jitc->function->assume_frame)
return;
@@ -3340,7 +3340,7 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
}
static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
+_vastart(jit_state_t *_jit, int32_t r0)
{
assert(_jitc->function->self.call & jit_call_varargs);
@@ -3349,7 +3349,7 @@ _vastart(jit_state_t *_jit, jit_int32_t r0)
}
static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vaarg(jit_state_t *_jit, int32_t r0, int32_t r1)
{
assert(_jitc->function->self.call & jit_call_varargs);
@@ -3365,7 +3365,7 @@ _patch_at(jit_state_t *_jit, jit_word_t instr, jit_word_t label)
{
jit_word_t d;
union {
- jit_int32_t *i;
+ int32_t *i;
jit_word_t w;
} u;
u.w = instr;
diff --git a/libguile/lightning/lib/jit_ppc-fpu.c b/libguile/lightning/jit/ppc-fpu.c
index 8db839a1f..da7ac0cbe 100644
--- a/libguile/lightning/lib/jit_ppc-fpu.c
+++ b/libguile/lightning/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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,int32_t,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,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,int32_t,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,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,int32_t,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,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,int32_t,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,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,int32_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,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, 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, 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, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, int32_t r1)
{
/* Load argument. */
ldr_d(r0, r1);
diff --git a/libguile/lightning/lib/jit_ppc.c b/libguile/lightning/jit/ppc.c
index 68db716aa..a6502cbac 100644
--- a/libguile/lightning/lib/jit_ppc.c
+++ b/libguile/lightning/jit/ppc.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2012-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -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
@@ -46,14 +46,14 @@ static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
extern void __clear_cache(void *, void *);
#define PROTO 1
-# include "jit_ppc-cpu.c"
-# include "jit_ppc-fpu.c"
+# include "ppc-cpu.c"
+# include "ppc-fpu.c"
#undef PROTO
/*
* Initialization
*/
-jit_register_t _rvs[] = {
+static const jit_register_t _rvs[] = {
{ rc(gpr) | 0, "r0" },
#if __ppc__
{ rc(gpr) | 11, "r11" },
@@ -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, 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;
@@ -1673,8 +1673,8 @@ _emit_code(jit_state_t *_jit)
}
#define CODE 1
-# include "jit_ppc-cpu.c"
-# include "jit_ppc-fpu.c"
+# include "ppc-cpu.c"
+# include ", 2018ppc-fpu.c"
#undef CODE
void
@@ -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, 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, 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, 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, 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)
diff --git a/libguile/lightning/include/lightning/jit_ppc.h b/libguile/lightning/jit/ppc.h
index 72b33bdd8..72b33bdd8 100644
--- a/libguile/lightning/include/lightning/jit_ppc.h
+++ b/libguile/lightning/jit/ppc.h
diff --git a/libguile/lightning/lib/jit_s390-cpu.c b/libguile/lightning/jit/s390-cpu.c
index 824a2c6e3..02f2675ec 100644
--- a/libguile/lightning/lib/jit_s390-cpu.c
+++ b/libguile/lightning/jit/s390-cpu.c
@@ -114,8 +114,8 @@ SLGR:
# define CC_NH 0xD
# define CC_NO 0xE
# define CC_AL 0xF
-# define _us jit_uint16_t
-# define _ui jit_uint32_t
+# define _us uint16_t
+# define _ui uint32_t
# define E_(Op) _E(_jit,Op)
static void _E(jit_state_t*,_ui);
# define I_(Op,I) _I(_jit,Op,I)
@@ -160,7 +160,7 @@ static void _SSE(jit_state_t*,_ui,_ui,_ui,_ui,_ui);
# undef _us
# undef _ui
# define nop(c) _nop(_jit,c)
-static void _nop(jit_state_t*,jit_int32_t);
+static void _nop(jit_state_t*,int32_t);
# if __WORDSIZE == 32
# define ADD_(r0,r1) AR(r0,r1)
# define ADDI_(r0,i0) AHI(r0,i0)
@@ -881,210 +881,210 @@ static void _nop(jit_state_t*,jit_int32_t);
/* TEST SUBCHANNEL */
# define TSCH(D2,B2) S_(0xB235,B2,D2)
# define xdivr(r0,r1) _xdivr(_jit,r0,r1)
-static jit_int32_t _xdivr(jit_state_t*,jit_int32_t,jit_int32_t);
+static int32_t _xdivr(jit_state_t*,int32_t,int32_t);
# define xdivr_u(r0,r1) _xdivr_u(_jit,r0,r1)
-static jit_int32_t _xdivr_u(jit_state_t*,jit_int32_t,jit_int32_t);
+static int32_t _xdivr_u(jit_state_t*,int32_t,int32_t);
# define xdivi(r0,i0) _xdivi(_jit,r0,i0)
-static jit_int32_t _xdivi(jit_state_t*,jit_int32_t,jit_word_t);
+static int32_t _xdivi(jit_state_t*,int32_t,jit_word_t);
# define xdivi_u(r0,i0) _xdivi_u(_jit,r0,i0)
-static jit_int32_t _xdivi_u(jit_state_t*,jit_int32_t,jit_word_t);
+static int32_t _xdivi_u(jit_state_t*,int32_t,jit_word_t);
# define crr(cc,r0,r1,r2) _crr(_jit,cc,r0,r1,r2)
static void _crr(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t);
# define cri(cc,r0,r1,i0) _cri(_jit,cc,r0,r1,i0)
static void _cri(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+ int32_t,int32_t,int32_t,jit_word_t);
# define crr_u(cc,r0,r1,r2) _crr_u(_jit,cc,r0,r1,r2)
static void _crr_u(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t);
# define cri_u(cc,r0,r1,i0) _cri_u(_jit,cc,r0,r1,i0)
static void _cri_u(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+ int32_t,int32_t,int32_t,jit_word_t);
# define brr(cc,i0,r0,r1) _brr(_jit,cc,i0,r0,r1)
-static void _brr(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static void _brr(jit_state_t*,int32_t,
+ jit_word_t,int32_t,int32_t);
# define brr_p(cc,i0,r0,r1) _brr_p(_jit,cc,i0,r0,r1)
-static jit_word_t _brr_p(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _brr_p(jit_state_t*,int32_t,
+ jit_word_t,int32_t,int32_t);
# define bri(cc,i0,r0,i1) _bri(_jit,cc,i0,r0,i1)
-static void _bri(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static void _bri(jit_state_t*,int32_t,
+ jit_word_t,int32_t,jit_word_t);
# define bri_p(cc,i0,r0,i1) _bri_p(_jit,cc,i0,r0,i1)
-static jit_word_t _bri_p(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bri_p(jit_state_t*,int32_t,
+ jit_word_t,int32_t,jit_word_t);
# define brr_u(cc,i0,r0,r1) _brr_u(_jit,cc,i0,r0,r1)
-static void _brr_u(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static void _brr_u(jit_state_t*,int32_t,
+ jit_word_t,int32_t,int32_t);
# define brr_u_p(cc,i0,r0,r1) _brr_u_p(_jit,cc,i0,r0,r1)
-static jit_word_t _brr_u_p(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _brr_u_p(jit_state_t*,int32_t,
+ jit_word_t,int32_t,int32_t);
# define bri_u(cc,i0,r0,i1) _bri_u(_jit,cc,i0,r0,i1)
-static void _bri_u(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static void _bri_u(jit_state_t*,int32_t,
+ jit_word_t,int32_t,jit_word_t);
# define bri_u_p(cc,i0,r0,i1) _bri_u_p(_jit,cc,i0,r0,i1)
-static jit_word_t _bri_u_p(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bri_u_p(jit_state_t*,int32_t,
+ jit_word_t,int32_t,jit_word_t);
# define baddr(c,s,i0,r0,r1) _baddr(_jit,c,s,i0,r0,r1)
-static void _baddr(jit_state_t*,jit_int32_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static void _baddr(jit_state_t*,int32_t,jit_bool_t,
+ jit_word_t,int32_t,int32_t);
# define baddr_p(c,s,i0,r0,r1) _baddr_p(_jit,c,s,i0,r0,r1)
-static jit_word_t _baddr_p(jit_state_t*,jit_int32_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _baddr_p(jit_state_t*,int32_t,jit_bool_t,
+ jit_word_t,int32_t,int32_t);
# define baddi(c,s,i0,r0,i1) _baddi(_jit,c,s,i0,r0,i1)
-static void _baddi(jit_state_t*,jit_int32_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static void _baddi(jit_state_t*,int32_t,jit_bool_t,
+ jit_word_t,int32_t,jit_word_t);
# define baddi_p(c,s,i0,r0,i1) _baddi_p(_jit,c,s,i0,r0,i1)
-static jit_word_t _baddi_p(jit_state_t*,jit_int32_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _baddi_p(jit_state_t*,int32_t,jit_bool_t,
+ jit_word_t,int32_t,jit_word_t);
# define bsubr(c,s,i0,r0,r1) _bsubr(_jit,c,s,i0,r0,r1)
-static void _bsubr(jit_state_t*,jit_int32_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static void _bsubr(jit_state_t*,int32_t,jit_bool_t,
+ jit_word_t,int32_t,int32_t);
# define bsubr_p(c,s,i0,r0,r1) _bsubr_p(_jit,c,s,i0,r0,r1)
-static jit_word_t _bsubr_p(jit_state_t*,jit_int32_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bsubr_p(jit_state_t*,int32_t,jit_bool_t,
+ jit_word_t,int32_t,int32_t);
# define bsubi(c,s,i0,r0,i1) _bsubi(_jit,c,s,i0,r0,i1)
-static void _bsubi(jit_state_t*,jit_int32_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static void _bsubi(jit_state_t*,int32_t,jit_bool_t,
+ jit_word_t,int32_t,jit_word_t);
# define bsubi_p(c,s,i0,r0,i1) _bsubi_p(_jit,c,s,i0,r0,i1)
-static jit_word_t _bsubi_p(jit_state_t*,jit_int32_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bsubi_p(jit_state_t*,int32_t,jit_bool_t,
+ jit_word_t,int32_t,jit_word_t);
# define bmxr(cc,i0,r0,r1) _bmxr(_jit,cc,i0,r0,r1)
-static void _bmxr(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static void _bmxr(jit_state_t*,int32_t,
+ jit_word_t,int32_t,int32_t);
# define bmxr_p(cc,i0,r0,r1) _bmxr_p(_jit,cc,i0,r0,r1)
-static jit_word_t _bmxr_p(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+static jit_word_t _bmxr_p(jit_state_t*,int32_t,
+ jit_word_t,int32_t,int32_t);
# define bmxi(cc,i0,r0,i1) _bmxi(_jit,cc,i0,r0,i1)
-static void _bmxi(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static void _bmxi(jit_state_t*,int32_t,
+ jit_word_t,int32_t,jit_word_t);
# define bmxi_p(cc,i0,r0,i1) _bmxi_p(_jit,cc,i0,r0,i1)
-static jit_word_t _bmxi_p(jit_state_t*,jit_int32_t,
- jit_word_t,jit_int32_t,jit_word_t);
+static jit_word_t _bmxi_p(jit_state_t*,int32_t,
+ jit_word_t,int32_t,jit_word_t);
# define movr(r0,r1) _movr(_jit,r0,r1)
-static void _movr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _movr(jit_state_t*,int32_t,int32_t);
# define movi(r0,i0) _movi(_jit,r0,i0)
-static void _movi(jit_state_t*,jit_int32_t,jit_word_t);
+static void _movi(jit_state_t*,int32_t,jit_word_t);
# define movi_p(r0,i0) _movi_p(_jit,r0,i0)
-static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
+static jit_word_t _movi_p(jit_state_t*,int32_t,jit_word_t);
# define addr(r0,r1,r2) _addr(_jit,r0,r1,r2)
-static void _addr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addr(jit_state_t*,int32_t,int32_t,int32_t);
# define addi(r0,r1,i0) _addi(_jit,r0,r1,i0)
-static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addcr(r0,r1,r2) _addcr(_jit,r0,r1,r2)
-static void _addcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addcr(jit_state_t*,int32_t,int32_t,int32_t);
# define addci(r0,r1,i0) _addci(_jit,r0,r1,i0)
-static void _addci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define addxr(r0,r1,r2) _addxr(_jit,r0,r1,r2)
-static void _addxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _addxr(jit_state_t*,int32_t,int32_t,int32_t);
# define addxi(r0,r1,i0) _addxi(_jit,r0,r1,i0)
-static void _addxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _addxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subr(r0,r1,r2) _subr(_jit,r0,r1,r2)
-static void _subr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subr(jit_state_t*,int32_t,int32_t,int32_t);
# define subi(r0,r1,i0) _subi(_jit,r0,r1,i0)
-static void _subi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subcr(r0,r1,r2) _subcr(_jit,r0,r1,r2)
-static void _subcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subcr(jit_state_t*,int32_t,int32_t,int32_t);
# define subci(r0,r1,i0) _subci(_jit,r0,r1,i0)
-static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subci(jit_state_t*,int32_t,int32_t,jit_word_t);
# define subxr(r0,r1,r2) _subxr(_jit,r0,r1,r2)
-static void _subxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _subxr(jit_state_t*,int32_t,int32_t,int32_t);
# define subxi(r0,r1,i0) _subxi(_jit,r0,r1,i0)
-static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _subxi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rsbi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define mulr(r0,r1,r2) _mulr(_jit,r0,r1,r2)
-static void _mulr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _mulr(jit_state_t*,int32_t,int32_t,int32_t);
# define muli(r0,r1,i0) _muli(_jit,r0,r1,i0)
-static void _muli(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _muli(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qmulr(r0,r1,r2,r3) _qmulr(_jit,r0,r1,r2,r3)
-static void _qmulr(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _qmulr(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t);
# define qmuli(r0,r1,r2,i0) _qmuli(_jit,r0,r1,r2,i0)
-static void _qmuli(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qmuli(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
# define qmulr_u(r0,r1,r2,r3) _qmulr_u(_jit,r0,r1,r2,r3)
-static void _qmulr_u(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _qmulr_u(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t);
# define qmuli_u(r0,r1,r2,i0) _qmuli_u(_jit,r0,r1,r2,i0)
-static void _qmuli_u(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qmuli_u(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
# define divr(r0,r1,r2) _divr(_jit,r0,r1,r2)
-static void _divr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr(jit_state_t*,int32_t,int32_t,int32_t);
# define divi(r0,r1,i0) _divi(_jit,r0,r1,i0)
-static void _divi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define divr_u(r0,r1,r2) _divr_u(_jit,r0,r1,r2)
-static void _divr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _divr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define divi_u(r0,r1,i0) _divi_u(_jit,r0,r1,i0)
-static void _divi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _divi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define remr(r0,r1,r2) _remr(_jit,r0,r1,r2)
-static void _remr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr(jit_state_t*,int32_t,int32_t,int32_t);
# define remi(r0,r1,i0) _remi(_jit,r0,r1,i0)
-static void _remi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define remr_u(r0,r1,r2) _remr_u(_jit,r0,r1,r2)
-static void _remr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _remr_u(jit_state_t*,int32_t,int32_t,int32_t);
# define remi_u(r0,r1,i0) _remi_u(_jit,r0,r1,i0)
-static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _remi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# define qdivr(r0,r1,r2,r3) _qdivr(_jit,r0,r1,r2,r3)
-static void _qdivr(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _qdivr(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t);
# define qdivi(r0,r1,r2,i0) _qdivi(_jit,r0,r1,r2,i0)
-static void _qdivi(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qdivi(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
# define qdivr_u(r0,r1,r2,r3) _qdivr_u(_jit,r0,r1,r2,r3)
-static void _qdivr_u(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t);
+static void _qdivr_u(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t);
# define qdivi_u(r0,r1,r2,i0) _qdivi_u(_jit,r0,r1,r2,i0)
-static void _qdivi_u(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_word_t);
+static void _qdivi_u(jit_state_t*,int32_t,
+ int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define lshr(r0,r1,r2) _lshr(_jit,r0,r1,r2)
-static void _lshr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _lshr(jit_state_t*,int32_t,int32_t,int32_t);
# else
# define lshr(r0,r1,r2) SLLG(r0,r1,0,r2)
# endif
# define lshi(r0,r1,i0) _lshi(_jit,r0,r1,i0)
-static void _lshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _lshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define rshr(r0,r1,r2) _rshr(_jit,r0,r1,r2)
-static void _rshr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _rshr(jit_state_t*,int32_t,int32_t,int32_t);
# else
# define rshr(r0,r1,r2) SRAG(r0,r1,0,r2)
# endif
# define rshi(r0,r1,i0) _rshi(_jit,r0,r1,i0)
-static void _rshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define rshr_u(r0,r1,r2) _rshr_u(_jit,r0,r1,r2)
-static void _rshr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _rshr_u(jit_state_t*,int32_t,int32_t,int32_t);
# else
# define rshr_u(r0,r1,r2) SRLG(r0,r1,0,r2)
# endif
# define rshi_u(r0,r1,i0) _rshi_u(_jit,r0,r1,i0)
-static void _rshi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rshi_u(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define negr(r0,r1) LCR(r0,r1)
# else
# define negr(r0,r1) LCGR(r0,r1)
# endif
# define comr(r0,r1) _comr(_jit,r0,r1)
-static void _comr(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _comr(jit_state_t*,int32_t,int32_t);
# define andr(r0,r1,r2) _andr(_jit,r0,r1,r2)
-static void _andr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _andr(jit_state_t*,int32_t,int32_t,int32_t);
# define andi(r0,r1,i0) _andi(_jit,r0,r1,i0)
-static void _andi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _andi(jit_state_t*,int32_t,int32_t,jit_word_t);
# define orr(r0,r1,r2) _orr(_jit,r0,r1,r2)
-static void _orr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _orr(jit_state_t*,int32_t,int32_t,int32_t);
# define ori(r0,r1,i0) _ori(_jit,r0,r1,i0)
-static void _ori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ori(jit_state_t*,int32_t,int32_t,jit_word_t);
# define xorr(r0,r1,r2) _xorr(_jit,r0,r1,r2)
-static void _xorr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _xorr(jit_state_t*,int32_t,int32_t,int32_t);
# define xori(r0,r1,i0) _xori(_jit,r0,r1,i0)
-static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-# define htonr_us(r0,r1) extr_us(r0,r1)
+static void _xori(jit_state_t*,int32_t,int32_t,jit_word_t);
+# define bswapr_us(r0,r1) extr_us(r0,r1)
# if __WORDSIZE == 32
-# define htonr_ui(r0,r1) movr(r0,r1)
+# define bswapr_ui(r0,r1) movr(r0,r1)
# else
-# define htonr_ui(r0,r1) extr_ui(r0,r1)
-# define htonr_ul(r0,r1) movr(r0,r1)
+# define bswapr_ui(r0,r1) extr_ui(r0,r1)
+# define bswapr, 2019_ul(r0,r1) movr(r0,r1)
# endif
# define extr_c(r0,r1) LGBR(r0,r1)
# define extr_uc(r0,r1) LLGCR(r0,r1)
@@ -1096,92 +1096,92 @@ static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
# endif
# define ldr_c(r0,r1) LGB(r0,0,0,r1)
# define ldi_c(r0,i0) _ldi_c(_jit,r0,i0)
-static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_c(jit_state_t*,int32_t,jit_word_t);
# define ldxr_c(r0,r1,r2) _ldxr_c(_jit,r0,r1,r2)
-static void _ldxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_c(r0,r1,i0) _ldxi_c(_jit,r0,r1,i0)
-static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_c(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_uc(r0,r1) LLGC(r0,0,0,r1)
# define ldi_uc(r0,i0) _ldi_uc(_jit,r0,i0)
-static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_uc(jit_state_t*,int32_t,jit_word_t);
# define ldxr_uc(r0,r1,r2) _ldxr_uc(_jit,r0,r1,r2)
-static void _ldxr_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_uc(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_uc(r0,r1,i0) _ldxi_uc(_jit,r0,r1,i0)
-static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_uc(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define ldr_s(r0,r1) LH(r0,0,0,r1)
# else
# define ldr_s(r0,r1) LGH(r0,0,0,r1)
# endif
# define ldi_s(r0,i0) _ldi_s(_jit,r0,i0)
-static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_s(jit_state_t*,int32_t,jit_word_t);
# define ldxr_s(r0,r1,r2) _ldxr_s(_jit,r0,r1,r2)
-static void _ldxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_s(r0,r1,i0) _ldxi_s(_jit,r0,r1,i0)
-static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_s(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_us(r0,r1) LLGH(r0,0,0,r1)
# define ldi_us(r0,i0) _ldi_us(_jit,r0,i0)
-static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_us(jit_state_t*,int32_t,jit_word_t);
# define ldxr_us(r0,r1,r2) _ldxr_us(_jit,r0,r1,r2)
-static void _ldxr_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_us(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_us(r0,r1,i0) _ldxi_us(_jit,r0,r1,i0)
-static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_us(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define ldr_i(r0,r1) LLGF(r0,0,0,r1)
# else
# define ldr_i(r0,r1) LGF(r0,0,0,r1)
# endif
# define ldi_i(r0,i0) _ldi_i(_jit,r0,i0)
-static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_i(jit_state_t*,int32_t,jit_word_t);
# define ldxr_i(r0,r1,r2) _ldxr_i(_jit,r0,r1,r2)
-static void _ldxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_i(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_i(r0,r1,i0) _ldxi_i(_jit,r0,r1,i0)
-static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_i(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 64
# define ldr_ui(r0,r1) LLGF(r0,0,0,r1)
# define ldi_ui(r0,i0) _ldi_ui(_jit,r0,i0)
-static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_ui(jit_state_t*,int32_t,jit_word_t);
# define ldxr_ui(r0,r1,r2) _ldxr_ui(_jit,r0,r1,r2)
-static void _ldxr_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_ui(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_ui(r0,r1,i0) _ldxi_ui(_jit,r0,r1,i0)
-static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_ui(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldr_l(r0,r1) LG(r0,0,0,r1)
# define ldi_l(r0,i0) _ldi_l(_jit,r0,i0)
-static void _ldi_l(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_l(jit_state_t*,int32_t,jit_word_t);
# define ldxr_l(r0,r1,r2) _ldxr_l(_jit,r0,r1,r2)
-static void _ldxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _ldxr_l(jit_state_t*,int32_t,int32_t,int32_t);
# define ldxi_l(r0,r1,i0) _ldxi_l(_jit,r0,r1,i0)
-static void _ldxi_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_l(jit_state_t*,int32_t,int32_t,jit_word_t);
# endif
# define str_c(r0,r1) STC(r1,0,0,r0)
# define sti_c(i0,r0) _sti_c(_jit,i0,r0)
-static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_c(jit_state_t*,jit_word_t,int32_t);
# define stxr_c(r0,r1,r2) _stxr_c(_jit,r0,r1,r2)
-static void _stxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_c(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_c(i0,r0,r1) _stxi_c(_jit,i0,r0,r1)
-static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_c(jit_state_t*,jit_word_t,int32_t,int32_t);
# define str_s(r0,r1) STH(r1,0,0,r0)
# define sti_s(i0,r0) _sti_s(_jit,i0,r0)
-static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_s(jit_state_t*,jit_word_t,int32_t);
# define stxr_s(r0,r1,r2) _stxr_s(_jit,r0,r1,r2)
-static void _stxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_s(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_s(i0,r0,r1) _stxi_s(_jit,i0,r0,r1)
-static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_s(jit_state_t*,jit_word_t,int32_t,int32_t);
# define str_i(r0,r1) ST(r1,0,0,r0)
# define sti_i(i0,r0) _sti_i(_jit,i0,r0)
-static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_i(jit_state_t*,jit_word_t,int32_t);
# define stxr_i(r0,r1,r2) _stxr_i(_jit,r0,r1,r2)
-static void _stxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_i(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_i(i0,r0,r1) _stxi_i(_jit,i0,r0,r1)
-static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_i(jit_state_t*,jit_word_t,int32_t,int32_t);
# if __WORDSIZE == 64
# define str_l(r0,r1) STG(r1,0,0,r0)
# define sti_l(i0,r0) _sti_l(_jit,i0,r0)
-static void _sti_l(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_l(jit_state_t*,jit_word_t,int32_t);
# define stxr_l(r0,r1,r2) _stxr_l(_jit,r0,r1,r2)
-static void _stxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _stxr_l(jit_state_t*,int32_t,int32_t,int32_t);
# define stxi_l(i0,r0,r1) _stxi_l(_jit,i0,r0,r1)
-static void _stxi_l(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_l(jit_state_t*,jit_word_t,int32_t,int32_t);
# endif
# define ltr(r0,r1,r2) crr(CC_L,r0,r1,r2)
# define lti(r0,r1,i0) cri(CC_L,r0,r1,i0)
@@ -1298,16 +1298,16 @@ static void _prolog(jit_state_t*,jit_node_t*);
# define epilog(i0) _epilog(_jit,i0)
static void _epilog(jit_state_t*,jit_node_t*);
# define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
+static void _vastart(jit_state_t*, int32_t);
# define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vaarg(jit_state_t*, int32_t, int32_t);
# define patch_at(instr,label) _patch_at(_jit,instr,label)
static void _patch_at(jit_state_t*,jit_word_t,jit_word_t);
#endif
#if CODE
-# define _us jit_uint16_t
-# define _ui jit_uint32_t
+# define _us uint16_t
+# define _ui uint32_t
static void
_E(jit_state_t *_jit, _ui Op)
{
@@ -1938,7 +1938,7 @@ _SSE(jit_state_t *_jit, _ui Op, _ui B1, _ui D1, _ui B2, _ui D2)
# undef _ui
static void
-_nop(jit_state_t *_jit, jit_int32_t c)
+_nop(jit_state_t *_jit, int32_t c)
{
assert(c >= 0 && !(c & 1));
while (c) {
@@ -1947,10 +1947,10 @@ _nop(jit_state_t *_jit, jit_int32_t c)
}
}
-static jit_int32_t
-_xdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+static int32_t
+_xdivr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t regno;
+ int32_t regno;
regno = jit_get_reg_pair();
#if __WORDSIZE == 32
movr(rn(regno), r0);
@@ -1963,10 +1963,10 @@ _xdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
return (regno);
}
-static jit_int32_t
-_xdivr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+static int32_t
+_xdivr_u(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t regno;
+ int32_t regno;
regno = jit_get_reg_pair();
#if __WORDSIZE == 32
movr(rn(regno), r0);
@@ -1980,10 +1980,10 @@ _xdivr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
return (regno);
}
-static jit_int32_t
-_xdivi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+static int32_t
+_xdivi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t imm, regno;
+ int32_t imm, regno;
regno = jit_get_reg_pair();
imm = jit_get_reg(jit_class_gpr);
#if __WORDSIZE == 32
@@ -1999,11 +1999,11 @@ _xdivi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
return (regno);
}
-static jit_int32_t
-_xdivi_u(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+static int32_t
+_xdivi_u(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
/* cannot overlap because operand is 128-bit */
- jit_int32_t imm, regno;
+ int32_t imm, regno;
regno = jit_get_reg_pair();
imm = jit_get_reg(jit_class_gpr);
#if __WORDSIZE == 32
@@ -2021,11 +2021,11 @@ _xdivi_u(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_crr(jit_state_t *_jit, jit_int32_t cc,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_crr(jit_state_t *_jit, int32_t cc,
+ int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
- jit_int32_t reg, rg;
+ int32_t reg, rg;
if (r0 == r1 || r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
rg = rn(reg);
@@ -2045,10 +2045,10 @@ _crr(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_cri(jit_state_t *_jit, jit_int32_t cc,
- jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_cri(jit_state_t *_jit, int32_t cc,
+ int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
crr(cc, r0, r1, rn(reg));
@@ -2056,11 +2056,11 @@ _cri(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_crr_u(jit_state_t *_jit, jit_int32_t cc,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_crr_u(jit_state_t *_jit, int32_t cc,
+ int32_t r0, int32_t r1, int32_t r2)
{
jit_word_t w;
- jit_int32_t reg, rg;
+ int32_t reg, rg;
if (r0 == r1 || r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
rg = rn(reg);
@@ -2080,10 +2080,10 @@ _crr_u(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_cri_u(jit_state_t *_jit, jit_int32_t cc,
- jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_cri_u(jit_state_t *_jit, int32_t cc,
+ int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
crr_u(cc, r0, r1, rn(reg));
@@ -2091,8 +2091,8 @@ _cri_u(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_brr(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_brr(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d;
CMP_(r0, r1);
@@ -2106,8 +2106,8 @@ _brr(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_brr_p(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_brr_p(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP_(r0, r1);
@@ -2117,10 +2117,10 @@ _brr_p(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_bri(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bri(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
brr(cc, i0, r0, rn(reg));
@@ -2128,11 +2128,11 @@ _bri(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bri_p(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bri_p(jit_state_t *_jit, int32_t cc,
+ 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = brr_p(cc, i0, r0, rn(reg));
@@ -2141,8 +2141,8 @@ _bri_p(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_brr_u(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_brr_u(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d;
CMPU_(r0, r1);
@@ -2156,8 +2156,8 @@ _brr_u(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_brr_u_p(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_brr_u_p(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMPU_(r0, r1);
@@ -2167,10 +2167,10 @@ _brr_u_p(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_bri_u(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bri_u(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
brr_u(cc, i0, r0, rn(reg));
@@ -2178,11 +2178,11 @@ _bri_u(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bri_u_p(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bri_u_p(jit_state_t *_jit, int32_t cc,
+ 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = brr_u_p(cc, i0, r0, rn(reg));
@@ -2191,8 +2191,8 @@ _bri_u_p(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_baddr(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_baddr(jit_state_t *_jit, int32_t c, jit_bool_t s,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d;
if (s) addr(r0, r0, r1);
@@ -2207,10 +2207,10 @@ _baddr(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
}
static void
-_baddi(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_baddi(jit_state_t *_jit, int32_t c, jit_bool_t s,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
baddr(c, s, i0, r0, rn(reg));
@@ -2218,8 +2218,8 @@ _baddi(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
}
static jit_word_t
-_baddr_p(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_baddr_p(jit_state_t *_jit, int32_t c, jit_bool_t s,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
if (s) addr(r0, r0, r1);
@@ -2231,11 +2231,11 @@ _baddr_p(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
}
static jit_word_t
-_baddi_p(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_baddi_p(jit_state_t *_jit, int32_t c, jit_bool_t s,
+ 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = baddr_p(c, s, i0, r0, rn(reg));
@@ -2244,8 +2244,8 @@ _baddi_p(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
}
static void
-_bsubr(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bsubr(jit_state_t *_jit, int32_t c, jit_bool_t s,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d;
if (s) subr(r0, r0, r1);
@@ -2260,10 +2260,10 @@ _bsubr(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
}
static void
-_bsubi(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bsubi(jit_state_t *_jit, int32_t c, jit_bool_t s,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
movi(rn(reg), i1);
bsubr(c, s, i0, r0, rn(reg));
@@ -2271,8 +2271,8 @@ _bsubi(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
}
static jit_word_t
-_bsubr_p(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bsubr_p(jit_state_t *_jit, int32_t c, jit_bool_t s,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d, w;
if (s) subr(r0, r0, r1);
@@ -2284,11 +2284,11 @@ _bsubr_p(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
}
static jit_word_t
-_bsubi_p(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bsubi_p(jit_state_t *_jit, int32_t c, jit_bool_t s,
+ 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_gpr|jit_class_nospill);
movi(rn(reg), i1);
w = bsubr_p(c, s, i0, r0, rn(reg));
@@ -2297,11 +2297,11 @@ _bsubi_p(jit_state_t *_jit, jit_int32_t c, jit_bool_t s,
}
static void
-_bmxr(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmxr(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), r0);
andr(rn(reg), rn(reg), r1);
@@ -2317,11 +2317,11 @@ _bmxr(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bmxr_p(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_bmxr_p(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), r0);
andr(rn(reg), rn(reg), r1);
@@ -2333,11 +2333,11 @@ _bmxr_p(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_bmxi(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmxi(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i1);
andr(rn(reg), rn(reg), r0);
@@ -2353,11 +2353,11 @@ _bmxi(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bmxi_p(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bmxi_p(jit_state_t *_jit, int32_t cc,
+ 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_gpr);
movi(rn(reg), i1);
andr(rn(reg), rn(reg), r0);
@@ -2369,7 +2369,7 @@ _bmxi_p(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_movr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
#if __WORDSIZE == 32
if (r0 != r1)
@@ -2381,11 +2381,11 @@ _movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t d;
#if __WORDSIZE == 64
- jit_int32_t bits;
+ int32_t bits;
#endif
d = (i0 - _jit->pc.w) >> 1;
if (s16_p(i0)) {
@@ -2425,7 +2425,7 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t w;
w = _jit->pc.w;
@@ -2443,7 +2443,7 @@ _movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_addr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2)
ADD_(r0, r1);
@@ -2454,9 +2454,9 @@ _addr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r1 && s16_p(i0))
ADDI_(r0, x16(i0));
#if __WORDSIZE == 64
@@ -2472,7 +2472,7 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2)
ADDC_(r0, r1);
@@ -2483,9 +2483,9 @@ _addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
addcr(r0, r1, rn(reg));
@@ -2493,7 +2493,7 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2)
ADDX_(r0, r1);
@@ -2504,9 +2504,9 @@ _addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
addxr(r0, r1, rn(reg));
@@ -2514,9 +2514,9 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), r2);
@@ -2531,9 +2531,9 @@ _subr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r1 && s16_p(-i0))
ADDI_(r0, x16(-i0));
#if __WORDSIZE == 64
@@ -2549,9 +2549,9 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), r2);
@@ -2566,9 +2566,9 @@ _subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
subcr(r0, r1, rn(reg));
@@ -2576,9 +2576,9 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), r2);
@@ -2593,9 +2593,9 @@ _subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
subxr(r0, r1, rn(reg));
@@ -2603,14 +2603,14 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rsbi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
subi(r0, r1, i0);
negr(r0, r0);
}
static void
-_mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_mulr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2)
MUL_(r0, r1);
@@ -2621,9 +2621,9 @@ _mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s16_p(i0)) {
movr(r0, r1);
MULI_(r0, x16(i0));
@@ -2638,11 +2638,11 @@ _muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
static void
_qmulr(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t reg;
+ int32_t reg;
/* The only invalid condition is r0 == r1 */
- jit_int32_t t2, t3, s2, s3;
+ int32_t t2, t3, s2, s3;
if (r2 == r0 || r2 == r1) {
s2 = jit_get_reg(jit_class_gpr);
t2 = rn(s2);
@@ -2676,9 +2676,9 @@ _qmulr(jit_state_t *_jit,
static void
_qmuli(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
qmulr(r0, r1, r2, rn(reg));
@@ -2687,9 +2687,9 @@ _qmuli(jit_state_t *_jit,
static void
_qmulr_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t regno;
+ int32_t regno;
regno = jit_get_reg_pair();
movr(rn(regno) + 1, r2);
MULU_(rn(regno), r3);
@@ -2700,9 +2700,9 @@ _qmulr_u(jit_state_t *_jit,
static void
_qmuli_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t regno;
+ int32_t regno;
regno = jit_get_reg_pair();
movr(rn(regno) + 1, r2);
movi(rn(regno), i0);
@@ -2713,74 +2713,74 @@ _qmuli_u(jit_state_t *_jit,
}
static void
-_divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivr(r1, r2);
movr(r0, rn(regno) + 1);
}
static void
-_divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivi(r1, i0);
movr(r0, rn(regno) + 1);
}
static void
-_divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivr_u(r1, r2);
movr(r0, rn(regno) + 1);
}
static void
-_divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivi_u(r1, i0);
movr(r0, rn(regno) + 1);
}
static void
-_remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivr(r1, r2);
movr(r0, rn(regno));
}
static void
-_remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivi(r1, i0);
movr(r0, rn(regno));
}
static void
-_remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivr_u(r1, r2);
movr(r0, rn(regno));
}
static void
-_remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivi_u(r1, i0);
movr(r0, rn(regno));
}
static void
_qdivr(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivr(r2, r3);
movr(r0, rn(regno) + 1);
movr(r1, rn(regno));
@@ -2788,9 +2788,9 @@ _qdivr(jit_state_t *_jit,
static void
_qdivi(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivi(r2, i0);
movr(r0, rn(regno) + 1);
movr(r1, rn(regno));
@@ -2798,9 +2798,9 @@ _qdivi(jit_state_t *_jit,
static void
_qdivr_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+ int32_t r0, int32_t r1, int32_t r2, int32_t r3)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivr_u(r2, r3);
movr(r0, rn(regno) + 1);
movr(r1, rn(regno));
@@ -2808,9 +2808,9 @@ _qdivr_u(jit_state_t *_jit,
static void
_qdivi_u(jit_state_t *_jit,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_word_t i0)
+ int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
{
- jit_int32_t regno;
+ int32_t regno;
regno = xdivi_u(r2, i0);
movr(r0, rn(regno) + 1);
movr(r1, rn(regno));
@@ -2818,9 +2818,9 @@ _qdivi_u(jit_state_t *_jit,
# if __WORDSIZE == 32
static void
-_lshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_lshr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2) {
reg = jit_get_reg_but_zero(0);
movr(rn(reg), r2);
@@ -2836,9 +2836,9 @@ _lshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
#endif
static void
-_lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_lshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg_but_zero(0);
movi(rn(reg), i0);
lshr(r0, r1, rn(reg));
@@ -2847,9 +2847,9 @@ _lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 32
static void
-_rshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_rshr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2) {
reg = jit_get_reg_but_zero(0);
movr(rn(reg), r2);
@@ -2865,9 +2865,9 @@ _rshr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
#endif
static void
-_rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg_but_zero(0);
movi(rn(reg), i0);
rshr(r0, r1, rn(reg));
@@ -2876,9 +2876,9 @@ _rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 32
static void
-_rshr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_rshr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r2) {
reg = jit_get_reg_but_zero(0);
movr(rn(reg), r2);
@@ -2894,9 +2894,9 @@ _rshr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
#endif
static void
-_rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rshi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg_but_zero(0);
movi(rn(reg), i0);
rshr_u(r0, r1, rn(reg));
@@ -2904,9 +2904,9 @@ _rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_comr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_comr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), -1);
movr(r0, r1);
@@ -2915,7 +2915,7 @@ _comr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
}
static void
-_andr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_andr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2)
AND_(r0, r1);
@@ -2926,7 +2926,7 @@ _andr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(r0, r1);
NILL(r0, x16(i0));
@@ -2938,7 +2938,7 @@ _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_orr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_orr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2)
OR_(r0, r1);
@@ -2949,7 +2949,7 @@ _orr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
movr(r0, r1);
OILL(r0, x16(i0));
@@ -2961,7 +2961,7 @@ _ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_xorr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_xorr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2)
XOR_(r0, r1);
@@ -2972,9 +2972,9 @@ _xorr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
xorr(r0, r1, rn(reg));
@@ -2982,14 +2982,14 @@ _xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_c(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
movi(r0, i0);
ldr_c(r0, r0);
}
static void
-_ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2) {
addr(r0, r0, r1);
@@ -3003,9 +3003,9 @@ _ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s20_p(i0)) {
#if __WORDSIZE == 32
LB(r0, x20(i0), 0, r1);
@@ -3028,14 +3028,14 @@ _ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_uc(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
movi(r0, i0);
ldr_uc(r0, r0);
}
static void
-_ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_uc(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2) {
addr(r0, r0, r1);
@@ -3049,9 +3049,9 @@ _ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s20_p(i0))
LLGC(r0, x20(i0), 0, r1);
else if (r0 != r1) {
@@ -3069,14 +3069,14 @@ _ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_s(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
movi(r0, i0);
ldr_s(r0, r0);
}
static void
-_ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2) {
addr(r0, r0, r1);
@@ -3090,9 +3090,9 @@ _ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
#if __WORDSIZE == 32
if (u12_p(i0))
LH(r0, i0, 0, r1);
@@ -3120,14 +3120,14 @@ _ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_us(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
movi(r0, i0);
ldr_us(r0, r0);
}
static void
-_ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_us(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2) {
addr(r0, r0, r1);
@@ -3141,9 +3141,9 @@ _ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s20_p(i0))
LLGH(r0, x20(i0), 0, r1);
else if (r0 != r1) {
@@ -3161,14 +3161,14 @@ _ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_i(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
movi(r0, i0);
ldr_i(r0, r0);
}
static void
-_ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2) {
addr(r0, r0, r1);
@@ -3182,9 +3182,9 @@ _ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s20_p(i0))
LGF(r0, x20(i0), 0, r1);
else if (r0 != r1) {
@@ -3203,14 +3203,14 @@ _ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
#if __WORDSIZE == 64
static void
-_ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_ui(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
movi(r0, i0);
ldr_ui(r0, r0);
}
static void
-_ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_ui(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2) {
addr(r0, r0, r1);
@@ -3224,9 +3224,9 @@ _ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s20_p(i0))
LLGF(r0, x20(i0), 0, r1);
else if (r0 != r1) {
@@ -3244,14 +3244,14 @@ _ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_l(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
movi(r0, i0);
ldr_l(r0, r0);
}
static void
-_ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_ldxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
if (r0 == r2) {
addr(r0, r0, r1);
@@ -3265,9 +3265,9 @@ _ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s20_p(i0))
LG(r0, x20(i0), 0, r1);
else if (r0 != r1) {
@@ -3286,9 +3286,9 @@ _ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
#endif
static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_c(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_c(rn(reg), r0);
@@ -3296,9 +3296,9 @@ _sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, 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);
@@ -3307,9 +3307,9 @@ _stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (u12_p(i0))
STC(r1, i0, 0, r0);
else if (s20_p(i0))
@@ -3323,9 +3323,9 @@ _stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_s(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_s(rn(reg), r0);
@@ -3333,9 +3333,9 @@ _sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, 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);
@@ -3344,9 +3344,9 @@ _stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (u12_p(i0))
STH(r1, i0, 0, r0);
else if (s20_p(i0))
@@ -3360,9 +3360,9 @@ _stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_i(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_i(rn(reg), r0);
@@ -3370,9 +3370,9 @@ _sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, 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);
@@ -3381,9 +3381,9 @@ _stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (u12_p(i0))
ST(r1, i0, 0, r0);
else if (s20_p(i0))
@@ -3398,9 +3398,9 @@ _stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
#if __WORDSIZE == 64
static void
-_sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_l(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_l(rn(reg), r0);
@@ -3408,9 +3408,9 @@ _sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_stxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, 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);
@@ -3419,9 +3419,9 @@ _stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (s20_p(i0))
STG(r1, x20(i0), 0, r0);
else {
@@ -3437,7 +3437,7 @@ static void
_jmpi(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
d = (i0 - _jit->pc.w) >> 1;
if (s16_p(d))
J(x16(d));
@@ -3455,7 +3455,7 @@ static jit_word_t
_jmpi_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg_but_zero(jit_class_nospill);
w = movi_p(rn(reg), i0);
jmpr(rn(reg));
@@ -3467,7 +3467,7 @@ static void
_calli(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t d;
- jit_int32_t reg;
+ int32_t reg;
d = (i0 - _jit->pc.w) >> 1;
if (s32_p(d))
BRASL(_R14_REGNO, d);
@@ -3483,7 +3483,7 @@ static jit_word_t
_calli_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg_but_zero(0);
w = movi_p(rn(reg), i0);
callr(rn(reg));
@@ -3491,7 +3491,7 @@ _calli_p(jit_state_t *_jit, jit_word_t i0)
return (w);
}
-static jit_int32_t gprs[] = {
+static int32_t gprs[] = {
_R2, _R3, _R4, _R5,
_R6, _R7, _R8, _R9, _R10, _R11, _R12, _R13
};
@@ -3499,9 +3499,9 @@ static jit_int32_t gprs[] = {
static void
_prolog(jit_state_t *_jit, jit_node_t *i0)
{
- jit_int32_t regno, offset;
+ int32_t regno, offset;
if (_jitc->function->define_frame || _jitc->function->assume_frame) {
- jit_int32_t frame = -_jitc->function->frame;
+ int32_t frame = -_jitc->function->frame;
assert(_jitc->function->self.aoff >= frame);
if (_jitc->function->assume_frame)
return;
@@ -3602,7 +3602,7 @@ _prolog(jit_state_t *_jit, jit_node_t *i0)
static void
_epilog(jit_state_t *_jit, jit_node_t *i0)
{
- jit_int32_t regno, offset;
+ int32_t regno, offset;
if (_jitc->function->assume_frame)
return;
if ((_jitc->function->self.call & jit_call_varargs) &&
@@ -3670,9 +3670,9 @@ _epilog(jit_state_t *_jit, jit_node_t *i0)
}
static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
+_vastart(jit_state_t *_jit, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
assert(_jitc->function->self.call & jit_call_varargs);
@@ -3699,11 +3699,11 @@ _vastart(jit_state_t *_jit, jit_int32_t r0)
}
static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vaarg(jit_state_t *_jit, int32_t r0, 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;
@@ -3771,30 +3771,30 @@ _patch_at(jit_state_t *_jit, jit_word_t instr, jit_word_t label)
{
jit_word_t d;
union {
- jit_uint16_t *s;
+ uint16_t *s;
jit_word_t w;
} u;
u.w = instr;
union {
struct {
- jit_uint16_t op : 8;
- jit_uint16_t r1 : 4;
- jit_uint16_t r3 : 4;
+ uint16_t op : 8;
+ uint16_t r1 : 4;
+ uint16_t r3 : 4;
} b;
- jit_uint16_t s;
+ uint16_t s;
} i0;
union {
struct {
- jit_uint16_t i2;
+ uint16_t i2;
} b;
- jit_uint16_t s;
+ uint16_t s;
} i1;
union {
struct {
- jit_uint32_t ih : 16;
- jit_uint32_t il : 16;
+ uint32_t ih : 16;
+ uint32_t il : 16;
} b;
- jit_uint32_t i;
+ uint32_t i;
} i12;
i0.s = u.s[0];
/* movi_p */
diff --git a/libguile/lightning/lib/jit_s390-fpu.c b/libguile/lightning/jit/s390-fpu.c
index cb35241df..386664369 100644
--- a/libguile/lightning/lib/jit_s390-fpu.c
+++ b/libguile/lightning/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,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,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,int32_t,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,int32_t,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,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,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,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,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,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,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,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,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,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,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,int32_t,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,int32_t,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,int32_t,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,int32_t,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,int32_t,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,int32_t,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,int32_t,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,int32_t,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,int32_t,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,int32_t,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,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,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,int32_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,int32_t,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,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,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,int32_t,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,int32_t,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,int32_t,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,int32_t,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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, int32_t r1, 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, 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;
diff --git a/libguile/lightning/lib/jit_s390.c b/libguile/lightning/jit/s390.c
index 27e887100..0dc109a9f 100644
--- a/libguile/lightning/lib/jit_s390.c
+++ b/libguile/lightning/jit/s390.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2013-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -17,9 +17,6 @@
* Paulo Cesar Pereira de Andrade
*/
-#include <lightning.h>
-#include <lightning/jit_private.h>
-
#if __WORDSIZE == 32
# define NUM_FLOAT_REG_ARGS 2
#else
@@ -73,11 +70,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*,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*);
@@ -86,14 +83,14 @@ static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
extern void __clear_cache(void *, void *);
#define PROTO 1
-# include "jit_s390-cpu.c"
-# include "jit_s390-fpu.c"
+# include "s390-cpu.c"
+# include "s390-fpu.c"
#undef PROTO
/*
* Initialization
*/
-jit_register_t _rvs[] = {
+static const jit_register_t _rvs[] = {
{ rc(gpr) | 0x0, "%r0" },
{ rc(gpr) | 0x1, "%r1" },
{ rc(gpr) | rc(sav) | 0xc, "%r12" },
@@ -147,7 +144,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 +166,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 +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) {
@@ -207,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, 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 +237,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 +255,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 +273,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 +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);
@@ -355,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++;
@@ -373,7 +370,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 +388,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 +403,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 +411,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 +424,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 +437,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 +450,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 +468,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 +482,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 +500,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 +514,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 +529,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 +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);
@@ -567,7 +564,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 +583,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 +595,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 +609,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 +624,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 +643,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 +662,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 +685,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 +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);
@@ -730,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();
@@ -749,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 = _R2 - regno;
@@ -767,7 +764,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 +799,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 +807,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 +815,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 +823,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 +831,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 +844,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 +852,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 +861,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 +869,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 +882,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;
@@ -1549,8 +1546,8 @@ _emit_code(jit_state_t *_jit)
}
#define CODE 1
-# include "jit_s390-cpu.c"
-# include "jit_s390-fpu.c"
+# include "s390-cpu.c"
+# include "s390-fpu.c"
#undef CODE
void
@@ -1590,10 +1587,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 +1635,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 +1652,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 +1667,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)
diff --git a/libguile/lightning/include/lightning/jit_s390.h b/libguile/lightning/jit/s390.h
index 0e74b2e25..0e74b2e25 100644
--- a/libguile/lightning/include/lightning/jit_s390.h
+++ b/libguile/lightning/jit/s390.h
diff --git a/libguile/lightning/lib/jit_sparc-cpu.c b/libguile/lightning/jit/sparc-cpu.c
index a4d88d1ca..81f92ce23 100644
--- a/libguile/lightning/lib/jit_sparc-cpu.c
+++ b/libguile/lightning/jit/sparc-cpu.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2013-2017, 2019 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -49,32 +49,32 @@
*/
# define stack_framesize ((16 + (__WORDSIZE == 32) + 6) * sizeof(jit_word_t))
typedef union {
- struct { jit_uint32_t b: 2; } op;
- struct { jit_uint32_t _: 2; jit_uint32_t b: 1; } a;
- struct { jit_uint32_t _: 2; jit_uint32_t b: 5; } rd;
- struct { jit_uint32_t _: 2; jit_uint32_t b: 30; } disp30;
- struct { jit_uint32_t _: 3; jit_uint32_t b: 4; } cond;
- struct { jit_uint32_t _: 7; jit_uint32_t b: 3; } op2;
- struct { jit_uint32_t _: 7; jit_uint32_t b: 6; } op3;
- struct { jit_uint32_t _: 10; jit_uint32_t b: 1; } cc1;
- struct { jit_uint32_t _: 10; jit_uint32_t b: 22; } imm22;
- struct { jit_uint32_t _: 10; jit_uint32_t b: 22; } disp22;
- struct { jit_uint32_t _: 11; jit_uint32_t b: 1; } cc0;
- struct { jit_uint32_t _: 12; jit_uint32_t b: 1; } p;
- struct { jit_uint32_t _: 13; jit_uint32_t b: 19; } disp19;
- struct { jit_uint32_t _: 13; jit_uint32_t b: 5; } rs1;
- struct { jit_uint32_t _: 18; jit_uint32_t b: 1; } i;
- struct { jit_uint32_t _: 18; jit_uint32_t b: 9; } opf;
- struct { jit_uint32_t _: 19; jit_uint32_t b: 1; } x;
- struct { jit_uint32_t _: 19; jit_uint32_t b: 8; } asi;
- struct { jit_uint32_t _: 19; jit_uint32_t b: 6; } res;
- struct { jit_uint32_t _: 19; jit_uint32_t b: 13; } simm13;
- struct { jit_uint32_t _: 20; jit_uint32_t b: 7; } asix;
- struct { jit_uint32_t _: 20; jit_uint32_t b: 6; } asis;
- struct { jit_uint32_t _: 26; jit_uint32_t b: 6; } shim;
- struct { jit_uint32_t _: 25; jit_uint32_t b: 7; } imm7;
- struct { jit_uint32_t _: 27; jit_uint32_t b: 5; } rs2;
- jit_int32_t v;
+ struct { uint32_t b: 2; } op;
+ struct { uint32_t _: 2; uint32_t b: 1; } a;
+ struct { uint32_t _: 2; uint32_t b: 5; } rd;
+ struct { uint32_t _: 2; uint32_t b: 30; } disp30;
+ struct { uint32_t _: 3; uint32_t b: 4; } cond;
+ struct { uint32_t _: 7; uint32_t b: 3; } op2;
+ struct { uint32_t _: 7; uint32_t b: 6; } op3;
+ struct { uint32_t _: 10; uint32_t b: 1; } cc1;
+ struct { uint32_t _: 10; uint32_t b: 22; } imm22;
+ struct { uint32_t _: 10; uint32_t b: 22; } disp22;
+ struct { uint32_t _: 11; uint32_t b: 1; } cc0;
+ struct { uint32_t _: 12; uint32_t b: 1; } p;
+ struct { uint32_t _: 13; uint32_t b: 19; } disp19;
+ struct { uint32_t _: 13; uint32_t b: 5; } rs1;
+ struct { uint32_t _: 18; uint32_t b: 1; } i;
+ struct { uint32_t _: 18; uint32_t b: 9; } opf;
+ struct { uint32_t _: 19; uint32_t b: 1; } x;
+ struct { uint32_t _: 19; uint32_t b: 8; } asi;
+ struct { uint32_t _: 19; uint32_t b: 6; } res;
+ struct { uint32_t _: 19; uint32_t b: 13; } simm13;
+ struct { uint32_t _: 20; uint32_t b: 7; } asix;
+ struct { uint32_t _: 20; uint32_t b: 6; } asis;
+ struct { uint32_t _: 26; uint32_t b: 6; } shim;
+ struct { uint32_t _: 25; uint32_t b: 7; } imm7;
+ struct { uint32_t _: 27; uint32_t b: 5; } rs2;
+ int32_t v;
} jit_instr_t;
# define ii(i) *_jit->pc.ui++ = i
# define s7_p(imm) ((imm) <= 63 && (imm) >= -64)
@@ -83,39 +83,39 @@ typedef union {
# define s22_p(imm) ((imm) <= 2097151 && (imm) >= -20971512)
# define s30_p(imm) ((imm) <= 536870911 && (imm) >= -536870912)
# define f1(op, disp30) _f1(_jit, op, disp30)
-static void _f1(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _f1(jit_state_t*,int32_t,int32_t);
# define f2r(op, rd, op2, imm22) _f2r(_jit, op, rd, op2, imm22)
-static void _f2r(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _f2r(jit_state_t*,int32_t,int32_t,int32_t,int32_t);
# define f2b(op, a, cond, op2, disp22) _f2b(_jit, op, a, cond, op2, disp22)
static void
-_f2b(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+_f2b(jit_state_t*,int32_t,int32_t,int32_t,int32_t,int32_t);
# if __WORDSIZE == 64
# define f2bp(op,a,cond,op2,cc1,cc0,p,disp19) \
_f2bp(_jit,op,a,cond,op2,cc1,cc0,p,disp19)
static void
-_f2bp(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);
+_f2bp(jit_state_t*,int32_t,int32_t,int32_t,int32_t,int32_t,
+ int32_t,int32_t,int32_t);
# endif
# define f3r(op, rd, op3, rs1, rs2) _f3r(_jit, op, rd, op3, rs1, rs2)
static void _f3r(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t,int32_t);
# if __WORDSIZE == 64
# define f3rx(op, rd, op3, rs1, rs2) _f3rx(_jit, op, rd, op3, rs1, rs2)
static void _f3rx(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t,int32_t);
# endif
# define f3i(op, rd, op3, rs1, simm13) _f3i(_jit, op, rd, op3, rs1, simm13)
static void _f3i(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t,int32_t);
# define f3s(op, rd, op3, rs1, simm13) _f3s(_jit, op, rd, op3, rs1, simm13)
static void _f3s(jit_state_t*,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+ int32_t,int32_t,int32_t,int32_t,int32_t);
# define f3t(cond, rs1, i, ri) _f3t(_jit, cond, rs1, i, ri)
-static void _f3t(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t)
+static void _f3t(jit_state_t*,int32_t,int32_t,int32_t,int32_t)
maybe_unused;
# define f3a(op, rd, op3, rs1, rs2) _f3a(_jit, op, rd, op3, rs1, asi, rs2)
-static void _f3a(jit_state_t*,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t)
+static void _f3a(jit_state_t*,int32_t,
+ int32_t,int32_t,int32_t,int32_t,int32_t)
maybe_unused;
# define LDSB(rs1, rs2, rd) f3r(3, rd, 9, rs1, rs2)
# define LDSBI(rs1, imm, rd) f3i(3, rd, 9, rs1, imm)
@@ -538,122 +538,122 @@ static void _f3a(jit_state_t*,jit_int32_t,
# define FLUSH(rs1, rs2) f3r(2, 0, 59, rs1, rs2)
# define FLUSHI(rs1, im) f3i(2, 0, 59, rs1, imm)
# define nop(i0) _nop(_jit, i0)
-static void _nop(jit_state_t*, jit_int32_t);
+static void _nop(jit_state_t*, int32_t);
# define movr(r0, r1) _movr(_jit, r0, r1)
-static void _movr(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _movr(jit_state_t*, int32_t, int32_t);
# define movi(r0, i0) _movi(_jit, r0, i0)
-static void _movi(jit_state_t*, jit_int32_t, jit_word_t);
+static void _movi(jit_state_t*, int32_t, jit_word_t);
# define movi_p(r0, i0) _movi_p(_jit, r0, i0)
-static jit_word_t _movi_p(jit_state_t*, jit_int32_t, jit_word_t);
+static jit_word_t _movi_p(jit_state_t*, int32_t, jit_word_t);
# define comr(r0, r1) XNOR(r1, 0, r0)
# define negr(r0, r1) NEG(r1, r0)
# define addr(r0, r1, r2) ADD(r1, r2, r0)
# define addi(r0, r1, i0) _addi(_jit, r0, r1, i0)
-static void _addi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _addi(jit_state_t*, int32_t, int32_t, jit_word_t);
# if __WORDSIZE == 32
# define addcr(r0, r1, r2) ADDcc(r1, r2, r0)
# else
# define addcr(r0, r1, r2) _addcr(_jit, r0, r1, r2)
-static void _addcr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _addcr(jit_state_t*, int32_t, int32_t, int32_t);
# endif
# define addci(r0, r1, i0) _addci(_jit, r0, r1, i0)
-static void _addci(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _addci(jit_state_t*, int32_t, int32_t, jit_word_t);
# if __WORDSIZE == 32
# define addxr(r0, r1, r2) ADDXcc(r1, r2, r0)
# else
# define addxr(r0, r1, r2) _addxr(_jit, r0, r1, r2)
-static void _addxr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _addxr(jit_state_t*, int32_t, int32_t, int32_t);
# endif
# define addxi(r0, r1, i0) _addxi(_jit, r0, r1, i0)
-static void _addxi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _addxi(jit_state_t*, int32_t, int32_t, jit_word_t);
# define subr(r0, r1, r2) SUB(r1, r2, r0)
# define subi(r0, r1, i0) _subi(_jit, r0, r1, i0)
-static void _subi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _subi(jit_state_t*, int32_t, int32_t, jit_word_t);
# if __WORDSIZE == 32
# define subcr(r0, r1, r2) SUBcc(r1, r2, r0)
# else
# define subcr(r0, r1, r2) _subcr(_jit, r0, r1, r2)
-static void _subcr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _subcr(jit_state_t*, int32_t, int32_t, int32_t);
# endif
# define subci(r0, r1, i0) _subci(_jit, r0, r1, i0)
-static void _subci(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _subci(jit_state_t*, int32_t, int32_t, jit_word_t);
# if __WORDSIZE == 32
# define subxr(r0, r1, r2) SUBXcc(r1, r2, r0)
# else
# define subxr(r0, r1, r2) _subxr(_jit, r0, r1, r2)
-static void _subxr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _subxr(jit_state_t*, int32_t, int32_t, int32_t);
# endif
# define subxi(r0, r1, i0) _subxi(_jit, r0, r1, i0)
-static void _subxi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _subxi(jit_state_t*, int32_t, int32_t, jit_word_t);
# define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _rsbi(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define mulr(r0, r1, r2) UMUL(r1, r2, r0)
# else
# define mulr(r0, r1, r2) MULX(r1, r2, r0)
# endif
# define muli(r0, r1, i0) _muli(_jit, r0, r1, i0)
-static void _muli(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _muli(jit_state_t*, int32_t, int32_t, jit_word_t);
# if __WORDSIZE == 32
# define qmulr(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,1)
# define qmulr_u(r0,r1,r2,r3) iqmulr(r0,r1,r2,r3,0)
# define iqmulr(r0,r1,r2,r3,cc) _iqmulr(_jit,r0,r1,r2,r3,cc)
-static void _iqmulr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqmulr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
# define qmuli(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,1)
# define qmuli_u(r0,r1,r2,i0) iqmuli(r0,r1,r2,i0,0)
# define iqmuli(r0,r1,r2,i0,cc) _iqmuli(_jit,r0,r1,r2,i0,cc)
-static void _iqmuli(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqmuli(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
# else
# define qmulr(r0,r1,r2,r3) _qmulr(_jit,r0,r1,r2,r3)
-static void _qmulr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t);
+static void _qmulr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t);
# define qmuli(r0,r1,r2,i0) _qmuli(_jit,r0,r1,r2,i0)
-static void _qmuli(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t);
+static void _qmuli(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t);
# define qmulr_u(r0,r1,r2,r3) _qmulr_u(_jit,r0,r1,r2,r3)
-static void _qmulr_u(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t);
+static void _qmulr_u(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t);
# define qmuli_u(r0,r1,r2,i0) _qmuli_u(_jit,r0,r1,r2,i0)
-static void _qmuli_u(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t);
+static void _qmuli_u(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t);
# endif
# define divr(r0, r1, r2) _divr(_jit, r0, r1, r2)
-static void _divr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _divr(jit_state_t*, int32_t, int32_t, int32_t);
# define divi(r0, r1, i0) _divi(_jit, r0, r1, i0)
-static void _divi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _divi(jit_state_t*, int32_t, int32_t, jit_word_t);
# define divr_u(r0, r1, r2) _divr_u(_jit, r0, r1, r2)
-static void _divr_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _divr_u(jit_state_t*, int32_t, int32_t, int32_t);
# define divi_u(r0, r1, i0) _divi_u(_jit, r0, r1, i0)
-static void _divi_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _divi_u(jit_state_t*, int32_t, int32_t, jit_word_t);
# define qdivr(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,1)
# define qdivr_u(r0,r1,r2,r3) iqdivr(r0,r1,r2,r3,0)
# define iqdivr(r0,r1,r2,r3,cc) _iqdivr(_jit,r0,r1,r2,r3,cc)
-static void _iqdivr(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_int32_t,jit_bool_t);
+static void _iqdivr(jit_state_t*,int32_t,int32_t,
+ int32_t,int32_t,jit_bool_t);
# define qdivi(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,1)
# define qdivi_u(r0,r1,r2,i0) iqdivi(r0,r1,r2,i0,0)
# define iqdivi(r0,r1,r2,i0,cc) _iqdivi(_jit,r0,r1,r2,i0,cc)
-static void _iqdivi(jit_state_t*,jit_int32_t,jit_int32_t,
- jit_int32_t,jit_word_t,jit_bool_t);
+static void _iqdivi(jit_state_t*,int32_t,int32_t,
+ int32_t,jit_word_t,jit_bool_t);
# define remr(r0, r1, r2) _remr(_jit, r0, r1, r2)
-static void _remr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _remr(jit_state_t*, int32_t, int32_t, int32_t);
# define remi(r0, r1, i0) _remi(_jit, r0, r1, i0)
-static void _remi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _remi(jit_state_t*, int32_t, int32_t, jit_word_t);
# define remr_u(r0, r1, r2) _remr_u(_jit, r0, r1, r2)
-static void _remr_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _remr_u(jit_state_t*, int32_t, int32_t, int32_t);
# define remi_u(r0, r1, i0) _remi_u(_jit, r0, r1, i0)
-static void _remi_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _remi_u(jit_state_t*, int32_t, int32_t, jit_word_t);
# define andr(r0, r1, r2) AND(r1, r2, r0)
# define andi(r0, r1, i0) _andi(_jit, r0, r1, i0)
-static void _andi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _andi(jit_state_t*, int32_t, int32_t, jit_word_t);
# define orr(r0, r1, r2) OR(r1, r2, r0)
# define ori(r0, r1, i0) _ori(_jit, r0, r1, i0)
-static void _ori(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _ori(jit_state_t*, int32_t, int32_t, jit_word_t);
# define xorr(r0, r1, r2) XOR(r1, r2, r0)
# define xori(r0, r1, i0) _xori(_jit, r0, r1, i0)
-static void _xori(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _xori(jit_state_t*, int32_t, int32_t, jit_word_t);
# if __WORDSIZE == 32
# define lshr(r0, r1, r2) SLL(r1, r2, r0)
# define lshi(r0, r1, i0) SLLI(r1, i0, r0)
@@ -669,28 +669,28 @@ static void _xori(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
# define rshr_u(r0, r1, r2) SRLX(r1, r2, r0)
# define rshi_u(r0, r1, i0) SRLXI(r1, i0, r0)
# endif
-# define htonr_us(r0,r1) extr_us(r0,r1)
+# define bswapr_us(r0,r1) extr_us(r0,r1)
# define extr_c(r0,r1) _extr_c(_jit,r0,r1)
-static void _extr_c(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_c(jit_state_t*,int32_t,int32_t);
# define extr_uc(r0,r1) andi(r0, r1, 0xff)
# define extr_s(r0,r1) _extr_s(_jit,r0,r1)
-static void _extr_s(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_s(jit_state_t*,int32_t,int32_t);
# define extr_us(r0,r1) _extr_us(_jit,r0,r1)
-static void _extr_us(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_us(jit_state_t*,int32_t,int32_t);
# if __WORDSIZE == 32
-# define htonr_ui(r0,r1) movr(r0,r1)
+# define bswapr_ui(r0,r1) movr(r0,r1)
# else
-# define htonr_ui(r0,r1) extr_ui(r0,r1)
-# define htonr_ul(r0,r1) movr(r0,r1)
+# define bswapr_ui(r0,r1) extr_ui(r0,r1)
+# define bswapr_ul(r0,r1) movr(r0,r1)
# define extr_i(r0,r1) _extr_i(_jit,r0,r1)
-static void _extr_i(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_i(jit_state_t*,int32_t,int32_t);
# define extr_ui(r0,r1) _extr_ui(_jit,r0,r1)
-static void _extr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _extr_ui(jit_state_t*,int32_t,int32_t);
# endif
# define cr(cc, r0, r1, r2) _cr(_jit, cc, r0, r1, r2)
-static void _cr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
+static void _cr(jit_state_t*,int32_t,int32_t,int32_t,int32_t);
# define cw(cc, r0, r1, i0) _cw(_jit, cc, r0, r1, i0)
-static void _cw(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
+static void _cw(jit_state_t*,int32_t,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define ltr(r0, r1, r2) cr(SPARC_BL, r0, r1, r2)
# define lti(r0, r1, i0) cw(SPARC_BL, r0, r1, i0)
@@ -736,16 +736,16 @@ static void _cw(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
# endif
# define ldr_c(r0, r1) LDSB(r1, 0, r0)
# define ldi_c(r0, i0) _ldi_c(_jit, r0, i0)
-static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_c(jit_state_t*,int32_t,jit_word_t);
# define ldr_uc(r0, r1) LDUB(r1, 0, r0)
# define ldi_uc(r0, i0) _ldi_uc(_jit, r0, i0)
-static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_uc(jit_state_t*,int32_t,jit_word_t);
# define ldr_s(r0, r1) LDSH(r1, 0, r0)
# define ldi_s(r0, i0) _ldi_s(_jit, r0, i0)
-static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_s(jit_state_t*,int32_t,jit_word_t);
# define ldr_us(r0, r1) LDUH(r1, 0, r0)
# define ldi_us(r0, i0) _ldi_us(_jit, r0, i0)
-static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_us(jit_state_t*,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define ldr_i(r0, r1) LD(r1, 0, r0)
# define ldr(u, v) ldr_i(u, v)
@@ -758,25 +758,25 @@ static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
# define ldi(u, v) ldi_l(u, v)
# endif
# define ldi_i(r0, i0) _ldi_i(_jit, r0, i0)
-static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_i(jit_state_t*,int32_t,jit_word_t);
# if __WORDSIZE == 64
# define ldi_ui(r0, i0) _ldi_ui(_jit, r0, i0)
-static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_ui(jit_state_t*,int32_t,jit_word_t);
# define ldi_l(r0, i0) _ldi_l(_jit, r0, i0)
-static void _ldi_l(jit_state_t*,jit_int32_t,jit_word_t);
+static void _ldi_l(jit_state_t*,int32_t,jit_word_t);
# endif
# define ldxr_c(r0, r1, r2) LDSB(r1, r2, r0)
# define ldxi_c(r0, r1, i0) _ldxi_c(_jit, r0, r1, i0)
-static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_c(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_uc(r0, r1, r2) LDUB(r1, r2, r0)
# define ldxi_uc(r0, r1, i0) _ldxi_uc(_jit, r0, r1, i0)
-static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_uc(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_s(r0, r1, r2) LDSH(r1, r2, r0)
# define ldxi_s(r0, r1, i0) _ldxi_s(_jit, r0, r1, i0)
-static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_s(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxr_us(r0, r1, r2) LDUH(r1, r2, r0)
# define ldxi_us(r0, r1, i0) _ldxi_us(_jit, r0, r1, i0)
-static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_us(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define ldxr(u, v, w) ldxr_i(u, v, w)
# define ldxr_i(r0, r1, r2) LD(r1, r2, r0)
@@ -789,19 +789,19 @@ static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
# define ldxi(u, v, w) ldxi_l(u, v, w)
# endif
# define ldxi_i(r0, r1, i0) _ldxi_i(_jit, r0, r1, i0)
-static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_i(jit_state_t*,int32_t,int32_t,jit_word_t);
# if __WORDSIZE == 64
# define ldxi_ui(r0, r1, i0) _ldxi_ui(_jit, r0, r1, i0)
-static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_ui(jit_state_t*,int32_t,int32_t,jit_word_t);
# define ldxi_l(r0, r1, i0) _ldxi_l(_jit, r0, r1, i0)
-static void _ldxi_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+static void _ldxi_l(jit_state_t*,int32_t,int32_t,jit_word_t);
# endif
# define str_c(r0, r1) STB(r1, r0, 0)
# define sti_c(i0, r0) _sti_c(_jit, i0, r0)
-static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_c(jit_state_t*,jit_word_t,int32_t);
# define str_s(r0, r1) STH(r1, r0, 0)
# define sti_s(i0, r0) _sti_s(_jit, i0, r0)
-static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_s(jit_state_t*,jit_word_t,int32_t);
# if __WORDSIZE == 32
# define str(u, v) str_i(u, v)
# define str_i(r0, r1) STI(r1, r0, 0)
@@ -813,17 +813,17 @@ static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
# define sti(u, v) sti_l(u, v)
# endif
# define sti_i(i0, r0) _sti_i(_jit, i0, r0)
-static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_i(jit_state_t*,jit_word_t,int32_t);
# if __WORDSIZE == 64
# define sti_l(i0, r0) _sti_l(_jit, i0, r0)
-static void _sti_l(jit_state_t*,jit_word_t,jit_int32_t);
+static void _sti_l(jit_state_t*,jit_word_t,int32_t);
# endif
# define stxr_c(r0, r1, r2) STB(r2, r1, r0)
# define stxi_c(i0, r0, r1) _stxi_c(_jit, i0, r0, r1)
-static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_c(jit_state_t*,jit_word_t,int32_t,int32_t);
# define stxr_s(r0, r1, r2) STH(r2, r1, r0)
# define stxi_s(i0, r0, r1) _stxi_s(_jit, i0, r0, r1)
-static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_s(jit_state_t*,jit_word_t,int32_t,int32_t);
# if __WORDSIZE == 32
# define stxr(u, v, w) stxr_i(u, v, w)
# define stxr_i(r0, r1, r2) ST(r2, r1, r0)
@@ -835,17 +835,17 @@ static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
# define stxr_l(r0, r1, r2) STX(r2, r1, r0)
# endif
# define stxi_i(i0, r0, r1) _stxi_i(_jit, i0, r0, r1)
-static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_i(jit_state_t*,jit_word_t,int32_t,int32_t);
# if __WORDSIZE == 64
# define stxi_l(i0, r0, r1) _stxi_l(_jit, i0, r0, r1)
-static void _stxi_l(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _stxi_l(jit_state_t*,jit_word_t,int32_t,int32_t);
# endif
# define br(cc, i0, r0, r1) _br(_jit, cc, i0, r0, r1)
static jit_word_t
-_br(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t);
+_br(jit_state_t*,int32_t,jit_word_t,int32_t,int32_t);
# define bw(cc, i0, r0, i1) _bw(_jit, cc, i0, r0, i1)
static jit_word_t
-_bw(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
+_bw(jit_state_t*,int32_t,jit_word_t,int32_t,jit_word_t);
# if __WORDSIZE == 32
# define bltr(i0, r0, r1) br(SPARC_BL, i0, r0, r1)
# define blti(i0, r0, i1) bw(SPARC_BL, i0, r0, i1)
@@ -892,11 +892,11 @@ _bw(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
# define b_asr(jif,add,sgn,i0,r0,r1) _b_asr(_jit,jif,add,sgn,i0,r0,r1)
static jit_word_t
_b_asr(jit_state_t*,jit_bool_t,jit_bool_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_int32_t);
+ jit_word_t,int32_t,int32_t);
# define b_asw(jif,add,sgn,i0,r0,i1) _b_asw(_jit,jif,add,sgn,i0,r0,i1)
static jit_word_t
_b_asw(jit_state_t*,jit_bool_t,jit_bool_t,jit_bool_t,
- jit_word_t,jit_int32_t,jit_word_t);
+ jit_word_t,int32_t,jit_word_t);
# define boaddr(i0, r0, r1) b_asr(1, 1, 1, i0, r0, r1)
# define boaddi(i0, r0, i1) b_asw(1, 1, 1, i0, r0, i1)
# define boaddr_u(i0, r0, r1) b_asr(1, 1, 0, i0, r0, r1)
@@ -915,22 +915,22 @@ _b_asw(jit_state_t*,jit_bool_t,jit_bool_t,jit_bool_t,
# define bxsubi_u(i0, r0, i1) b_asw(0, 0, 0, i0, r0, i1)
# define bm_r(set, i0, r0, r1) _bm_r(_jit,set,i0,r0,r1)
static jit_word_t
-_bm_r(jit_state_t*,jit_bool_t,jit_word_t,jit_int32_t,jit_int32_t);
+_bm_r(jit_state_t*,jit_bool_t,jit_word_t,int32_t,int32_t);
# define bm_w(set,i0,r0,i1) _bm_w(_jit,set,i0,r0,i1)
static jit_word_t
-_bm_w(jit_state_t*,jit_bool_t,jit_word_t,jit_int32_t,jit_word_t);
+_bm_w(jit_state_t*,jit_bool_t,jit_word_t,int32_t,jit_word_t);
# define bmsr(i0, r0, r1) bm_r(1, i0, r0, r1)
# define bmsi(i0, r0, i1) bm_w(1, i0, r0, i1)
# define bmcr(i0, r0, r1) bm_r(0, i0, r0, r1)
# define bmci(i0, r0, i1) bm_w(0, i0, r0, i1)
# define jmpr(r0) _jmpr(_jit, r0)
-static void _jmpr(jit_state_t*,jit_int32_t);
+static void _jmpr(jit_state_t*,int32_t);
# define jmpi(i0) _jmpi(_jit, i0)
static void _jmpi(jit_state_t*,jit_word_t);
# define jmpi_p(i0) _jmpi_p(_jit, i0)
static jit_word_t _jmpi_p(jit_state_t*,jit_word_t);
# define callr(r0) _callr(_jit, r0)
-static void _callr(jit_state_t*,jit_int32_t);
+static void _callr(jit_state_t*,int32_t);
# define calli(i0) _calli(_jit, i0)
static void _calli(jit_state_t*,jit_word_t);
# define calli_p(i0) _calli_p(_jit, i0)
@@ -940,9 +940,9 @@ static void _prolog(jit_state_t*,jit_node_t*);
# define epilog(node) _epilog(_jit, node)
static void _epilog(jit_state_t*,jit_node_t*);
#define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
+static void _vastart(jit_state_t*, int32_t);
#define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _vaarg(jit_state_t*, int32_t, int32_t);
#define patch_at(jump, label) _patch_at(_jit, jump, label)
static void _patch_at(jit_state_t*,jit_word_t,jit_word_t);
#endif
@@ -950,7 +950,7 @@ static void _patch_at(jit_state_t*,jit_word_t,jit_word_t);
#if CODE
static void
_f2r(jit_state_t *_jit,
- jit_int32_t op, jit_int32_t rd, jit_int32_t op2, jit_int32_t imm22)
+ int32_t op, int32_t rd, int32_t op2, int32_t imm22)
{
jit_instr_t v;
assert(!(op & 0xfffffffc));
@@ -966,8 +966,8 @@ _f2r(jit_state_t *_jit,
static void
_f2b(jit_state_t *_jit,
- jit_int32_t op, jit_int32_t a, jit_int32_t cond, jit_int32_t op2,
- jit_int32_t disp22)
+ int32_t op, int32_t a, int32_t cond, int32_t op2,
+ int32_t disp22)
{
jit_instr_t v;
assert(!(op & 0xfffffffc));
@@ -986,8 +986,8 @@ _f2b(jit_state_t *_jit,
# if __WORDSIZE == 64
static void
_f2bp(jit_state_t *_jit,
- jit_int32_t op, jit_int32_t a, jit_int32_t cond, jit_int32_t op2,
- jit_int32_t cc1, jit_int32_t cc0, jit_int32_t p, jit_int32_t disp19)
+ int32_t op, int32_t a, int32_t cond, int32_t op2,
+ int32_t cc1, int32_t cc0, int32_t p, int32_t disp19)
{
jit_instr_t v;
assert(!(op & 0xfffffffc));
@@ -1008,8 +1008,8 @@ _f2bp(jit_state_t *_jit,
# endif
static void
-_f3r(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
- jit_int32_t op3, jit_int32_t rs1, jit_int32_t rs2)
+_f3r(jit_state_t *_jit, int32_t op, int32_t rd,
+ int32_t op3, int32_t rs1, int32_t rs2)
{
jit_instr_t v;
assert(!(op & 0xfffffffc));
@@ -1029,8 +1029,8 @@ _f3r(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
# if __WORDSIZE == 64
static void
-_f3rx(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
- jit_int32_t op3, jit_int32_t rs1, jit_int32_t rs2)
+_f3rx(jit_state_t *_jit, int32_t op, int32_t rd,
+ int32_t op3, int32_t rs1, int32_t rs2)
{
jit_instr_t v;
assert(!(op & 0xfffffffc));
@@ -1050,8 +1050,8 @@ _f3rx(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
}
static void
-_f3s(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
- jit_int32_t op3, jit_int32_t rs1, jit_int32_t shim)
+_f3s(jit_state_t *_jit, int32_t op, int32_t rd,
+ int32_t op3, int32_t rs1, int32_t shim)
{
jit_instr_t v;
assert(!(op & 0xfffffffc));
@@ -1072,8 +1072,8 @@ _f3s(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
# endif
static void
-_f3i(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
- jit_int32_t op3, jit_int32_t rs1, jit_int32_t simm13)
+_f3i(jit_state_t *_jit, int32_t op, int32_t rd,
+ int32_t op3, int32_t rs1, int32_t simm13)
{
jit_instr_t v;
assert(!(op & 0xfffffffc));
@@ -1091,8 +1091,8 @@ _f3i(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
}
static void
-_f3t(jit_state_t *_jit, jit_int32_t cond,
- jit_int32_t rs1, jit_int32_t i, jit_int32_t rs2_imm7)
+_f3t(jit_state_t *_jit, int32_t cond,
+ int32_t rs1, int32_t i, int32_t rs2_imm7)
{
jit_instr_t v;
assert(!(cond & 0xfffffff0));
@@ -1116,8 +1116,8 @@ _f3t(jit_state_t *_jit, jit_int32_t cond,
}
static void
-_f3a(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
- jit_int32_t op3, jit_int32_t rs1, jit_int32_t asi, jit_int32_t rs2)
+_f3a(jit_state_t *_jit, int32_t op, int32_t rd,
+ int32_t op3, int32_t rs1, int32_t asi, int32_t rs2)
{
jit_instr_t v;
assert(!(op & 0xfffffffc));
@@ -1137,7 +1137,7 @@ _f3a(jit_state_t *_jit, jit_int32_t op, jit_int32_t rd,
}
static void
-_f1(jit_state_t *_jit, jit_int32_t op, jit_int32_t disp30)
+_f1(jit_state_t *_jit, int32_t op, int32_t disp30)
{
jit_instr_t v;
assert(!(op & 0xfffffffc));
@@ -1148,7 +1148,7 @@ _f1(jit_state_t *_jit, jit_int32_t op, jit_int32_t disp30)
}
static void
-_nop(jit_state_t *_jit, jit_int32_t i0)
+_nop(jit_state_t *_jit, int32_t i0)
{
for (; i0 > 0; i0 -= 4)
NOP();
@@ -1156,21 +1156,21 @@ _nop(jit_state_t *_jit, jit_int32_t i0)
}
static void
-_movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_movr(jit_state_t *_jit, int32_t r0, int32_t r1)
{
if (r0 != r1)
ORI(r1, 0, r0);
}
static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
if (s13_p(i0))
ORI(0, i0, r0);
else {
# if __WORDSIZE == 64
if (i0 & 0xffffffff00000000) {
- jit_int32_t reg = jit_get_reg(jit_class_gpr);
+ int32_t reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), (i0 >> 32) & 0xffffffff);
movi(r0, i0 & 0xffffffff);
lshi(rn(reg), rn(reg), 32);
@@ -1189,11 +1189,11 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
jit_word_t w;
# if __WORDSIZE == 64
- jit_int32_t reg;
+ int32_t reg;
# endif
w = _jit->pc.w;
# if __WORDSIZE == 64
@@ -1214,9 +1214,9 @@ _movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
ADDI(r1, i0, r0);
else {
@@ -1229,9 +1229,9 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 64
static void
-_addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -1249,10 +1249,10 @@ _addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
# endif
static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
# if __WORDSIZE == 32
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
ADDIcc(r1, i0, r0);
else {
@@ -1262,7 +1262,7 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
jit_unget_reg(reg);
}
# else
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -1281,9 +1281,9 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 64
static void
-_addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_addxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -1294,10 +1294,10 @@ _addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
# endif
static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
# if __WORDSIZE == 32
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
ADDXIcc(r1, i0, r0);
else {
@@ -1307,7 +1307,7 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
jit_unget_reg(reg);
}
# else
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -1318,9 +1318,9 @@ _addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
SUBI(r1, i0, r0);
else {
@@ -1333,9 +1333,9 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 64
static void
-_subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -1353,10 +1353,10 @@ _subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
# endif
static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
# if __WORDSIZE == 32
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
SUBIcc(r1, i0, r0);
else {
@@ -1366,7 +1366,7 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
jit_unget_reg(reg);
}
# else
- jit_int32_t reg;
+ int32_t reg;
if (jit_carry == _NOREG)
jit_carry = jit_get_reg(jit_class_gpr);
if (r0 == r1) {
@@ -1385,9 +1385,9 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 64
static void
-_subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_subxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -1398,10 +1398,10 @@ _subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
#endif
static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
# if __WORDSIZE == 32
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
SUBXIcc(r1, i0, r0);
else {
@@ -1411,7 +1411,7 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
jit_unget_reg(reg);
}
# else
- jit_int32_t reg;
+ int32_t reg;
assert(jit_carry != _NOREG);
reg = jit_get_reg(jit_class_gpr);
movr(rn(reg), rn(jit_carry));
@@ -1422,16 +1422,16 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_rsbi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
subi(r0, r1, i0);
negr(r0, r0);
}
static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0)) {
# if __WORDSIZE == 32
UMULI(r1, i0, r0);
@@ -1449,8 +1449,8 @@ _muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 32
static void
-_iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqmulr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
if (sign)
SMUL(r2, r3, r0);
@@ -1460,10 +1460,10 @@ _iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqmuli(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0)) {
if (sign)
SMULI(r2, i0, r0);
@@ -1510,8 +1510,8 @@ static __int128_t __llmul(jit_word_t a, jit_word_t b)
} while (0)
static void
-_qmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3)
+_qmulr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3)
{
QMUL_PROLOG();
movr(_O0_REGNO, r3);
@@ -1523,8 +1523,8 @@ _qmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_qmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0)
+_qmuli(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0)
{
QMUL_PROLOG();
movi(_O0_REGNO, i0);
@@ -1541,8 +1541,8 @@ static __uint128_t __ullmul(jit_uword_t a, jit_uword_t b)
}
static void
-_qmulr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3)
+_qmulr_u(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3)
{
QMUL_PROLOG();
movr(_O0_REGNO, r3);
@@ -1554,8 +1554,8 @@ _qmulr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_qmuli_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0)
+_qmuli_u(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0)
{
QMUL_PROLOG();
movi(_O0_REGNO, i0);
@@ -1568,10 +1568,10 @@ _qmuli_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
# endif
static void
-_divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
# if __WORDSIZE == 32
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
rshi(rn(reg), r1, 31);
WRY(rn(reg), 0);
@@ -1583,9 +1583,9 @@ _divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
# if __WORDSIZE == 32
reg = jit_get_reg(jit_class_gpr);
# endif
@@ -1614,7 +1614,7 @@ _divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_divr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
# if __WORDSIZE == 32
WRYI(0, 0);
@@ -1625,9 +1625,9 @@ _divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0)) {
# if __WORDSIZE == 32
WRYI(0, 0);
@@ -1645,11 +1645,11 @@ _divi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
+_iqdivr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
{
- jit_int32_t sv0, rg0;
- jit_int32_t sv1, rg1;
+ int32_t sv0, rg0;
+ int32_t sv1, rg1;
if (r0 == r2 || r0 == r3) {
sv0 = jit_get_reg(jit_class_gpr);
@@ -1681,10 +1681,10 @@ _iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
+_iqdivi(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
iqdivr(r0, r1, r2, rn(reg), sign);
@@ -1692,9 +1692,9 @@ _iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
}
static void
-_remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r1 || r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
divr(rn(reg), r1, r2);
@@ -1710,9 +1710,9 @@ _remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr(r0, r1, rn(reg));
@@ -1720,9 +1720,9 @@ _remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
{
- jit_int32_t reg;
+ int32_t reg;
if (r0 == r1 || r0 == r2) {
reg = jit_get_reg(jit_class_gpr);
divr_u(rn(reg), r1, r2);
@@ -1738,9 +1738,9 @@ _remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
}
static void
-_remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
movi(rn(reg), i0);
remr_u(r0, r1, rn(reg));
@@ -1748,9 +1748,9 @@ _remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
ANDI(r1, i0, r0);
else {
@@ -1762,9 +1762,9 @@ _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
ORI(r1, i0, r0);
else {
@@ -1776,9 +1776,9 @@ _ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
XORI(r1, i0, r0);
else {
@@ -1790,21 +1790,21 @@ _xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_extr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, __WORDSIZE - 8);
rshi(r0, r0, __WORDSIZE - 8);
}
static void
-_extr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, __WORDSIZE - 16);
rshi(r0, r0, __WORDSIZE - 16);
}
static void
-_extr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, __WORDSIZE - 16);
rshi_u(r0, r0, __WORDSIZE - 16);
@@ -1812,14 +1812,14 @@ _extr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
#if __WORDSIZE == 64
static void
-_extr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_i(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, __WORDSIZE - 32);
rshi(r0, r0, __WORDSIZE - 32);
}
static void
-_extr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_extr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
{
lshi(r0, r1, __WORDSIZE - 32);
rshi_u(r0, r0, __WORDSIZE - 32);
@@ -1827,8 +1827,8 @@ _extr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
#endif
static void
-_cr(jit_state_t *_jit, jit_int32_t cc,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+_cr(jit_state_t *_jit, int32_t cc,
+ int32_t r0, int32_t r1, int32_t r2)
{
CMP(r1, r2);
# if __WORDSIZE == 32
@@ -1841,10 +1841,10 @@ _cr(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_cw(jit_state_t *_jit, jit_int32_t cc,
- jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_cw(jit_state_t *_jit, int32_t cc,
+ int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0)) {
CMPI(r1, i0);
# if __WORDSIZE == 32
@@ -1864,9 +1864,9 @@ _cw(jit_state_t *_jit, jit_int32_t cc,
}
static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_c(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDSBI(0, i0, r0);
else {
@@ -1878,9 +1878,9 @@ _ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_uc(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDUBI(0, i0, r0);
else {
@@ -1892,9 +1892,9 @@ _ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_s(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDSHI(0, i0, r0);
else {
@@ -1906,9 +1906,9 @@ _ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_us(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDUHI(0, i0, r0);
else {
@@ -1920,9 +1920,9 @@ _ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_i(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0)) {
# if __WORDSIZE == 32
LDI(0, i0, r0);
@@ -1940,9 +1940,9 @@ _ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
# if __WORDSIZE == 64
static void
-_ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_ui(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDUWI(0, i0, r0);
else {
@@ -1954,9 +1954,9 @@ _ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
}
static void
-_ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
+_ldi_l(jit_state_t *_jit, int32_t r0, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDXI(0, i0, r0);
else {
@@ -1969,9 +1969,9 @@ _ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
# endif
static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDSBI(r1, i0, r0);
else {
@@ -1983,9 +1983,9 @@ _ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDUBI(r1, i0, r0);
else {
@@ -1997,9 +1997,9 @@ _ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDSHI(r1, i0, r0);
else {
@@ -2011,9 +2011,9 @@ _ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDUHI(r1, i0, r0);
else {
@@ -2025,9 +2025,9 @@ _ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0)) {
# if __WORDSIZE == 32
LDI(r1, i0, r0);
@@ -2045,9 +2045,9 @@ _ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# if __WORDSIZE == 64
static void
-_ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDUWI(r1, i0, r0);
else {
@@ -2059,9 +2059,9 @@ _ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
static void
-_ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+_ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
LDXI(r1, i0, r0);
else {
@@ -2074,9 +2074,9 @@ _ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
# endif
static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_c(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
STBI(r0, 0, i0);
else {
@@ -2088,9 +2088,9 @@ _sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_s(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
STHI(r0, 0, i0);
else {
@@ -2102,9 +2102,9 @@ _sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
}
static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_i(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0)) {
# if __WORDSIZE == 32
STI(r0, 0, i0);
@@ -2122,9 +2122,9 @@ _sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
# if __WORDSIZE == 64
static void
-_sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
+_sti_l(jit_state_t *_jit, jit_word_t i0, int32_t r0)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
STXI(r0, 0, i0);
else {
@@ -2137,9 +2137,9 @@ _sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
# endif
static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
STBI(r1, r0, i0);
else {
@@ -2151,9 +2151,9 @@ _stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
STHI(r1, r0, i0);
else {
@@ -2165,9 +2165,9 @@ _stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0)) {
# if __WORDSIZE == 32
STI(r1, r0, i0);
@@ -2185,9 +2185,9 @@ _stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
# if __WORDSIZE == 64
static void
-_stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
{
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i0))
STXI(r1, r0, i0);
else {
@@ -2200,8 +2200,8 @@ _stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
# endif
static jit_word_t
-_br(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+_br(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
CMP(r0, r1);
@@ -2216,11 +2216,11 @@ _br(jit_state_t *_jit, jit_int32_t cc,
}
static jit_word_t
-_bw(jit_state_t *_jit, jit_int32_t cc,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+_bw(jit_state_t *_jit, int32_t cc,
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i1)) {
CMPI(r0, i1);
w = _jit->pc.w;
@@ -2242,7 +2242,7 @@ _bw(jit_state_t *_jit, jit_int32_t cc,
static jit_word_t
_b_asr(jit_state_t *_jit, jit_bool_t jif, jit_bool_t add, jit_bool_t sgn,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
if (add)
@@ -2267,10 +2267,10 @@ _b_asr(jit_state_t *_jit, jit_bool_t jif, jit_bool_t add, jit_bool_t sgn,
static jit_word_t
_b_asw(jit_state_t *_jit, jit_bool_t jif, jit_bool_t add, jit_bool_t sgn,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i1)) {
if (add)
ADDIcc(r0, i1, r0);
@@ -2301,7 +2301,7 @@ _b_asw(jit_state_t *_jit, jit_bool_t jif, jit_bool_t add, jit_bool_t sgn,
static jit_word_t
_bm_r(jit_state_t *_jit, jit_bool_t set,
- jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
+ jit_word_t i0, int32_t r0, int32_t r1)
{
jit_word_t w;
BTST(r0, r1);
@@ -2317,10 +2317,10 @@ _bm_r(jit_state_t *_jit, jit_bool_t set,
static jit_word_t
_bm_w(jit_state_t *_jit, jit_bool_t set,
- jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+ jit_word_t i0, int32_t r0, jit_word_t i1)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
if (s13_p(i1)) {
BTSTI(r0, i1);
w = _jit->pc.w;
@@ -2341,7 +2341,7 @@ _bm_w(jit_state_t *_jit, jit_bool_t set,
}
static void
-_jmpr(jit_state_t *_jit, jit_int32_t r0)
+_jmpr(jit_state_t *_jit, int32_t r0)
{
JMPL(0, r0, 0);
NOP();
@@ -2351,7 +2351,7 @@ static void
_jmpi(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
w = (i0 - _jit->pc.w) >> 2;
if (s22_p(w)) {
BA(w);
@@ -2369,7 +2369,7 @@ static jit_word_t
_jmpi_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
w = movi_p(rn(reg), i0);
jmpr(rn(reg));
@@ -2378,7 +2378,7 @@ _jmpi_p(jit_state_t *_jit, jit_word_t i0)
}
static void
-_callr(jit_state_t *_jit, jit_int32_t r0)
+_callr(jit_state_t *_jit, int32_t r0)
{
CALL(r0);
NOP();
@@ -2397,7 +2397,7 @@ static jit_word_t
_calli_p(jit_state_t *_jit, jit_word_t i0)
{
jit_word_t w;
- jit_int32_t reg;
+ int32_t reg;
reg = jit_get_reg(jit_class_gpr);
w = movi_p(rn(reg), i0);
callr(rn(reg));
@@ -2409,9 +2409,9 @@ _calli_p(jit_state_t *_jit, jit_word_t i0)
static void
_prolog(jit_state_t *_jit, jit_node_t *node)
{
- jit_int32_t reg;
+ int32_t reg;
if (_jitc->function->define_frame || _jitc->function->assume_frame) {
- jit_int32_t frame = -_jitc->function->frame;
+ int32_t frame = -_jitc->function->frame;
assert(_jitc->function->self.aoff >= frame);
if (_jitc->function->assume_frame)
return;
@@ -2488,7 +2488,7 @@ _epilog(jit_state_t *_jit, jit_node_t *node)
}
static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
+_vastart(jit_state_t *_jit, int32_t r0)
{
/* Initialize stack pointer to the first stack argument. */
if (jit_arg_reg_p(_jitc->function->vagp))
@@ -2500,7 +2500,7 @@ _vastart(jit_state_t *_jit, jit_int32_t r0)
}
static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
+_vaarg(jit_state_t *_jit, int32_t r0, int32_t r1)
{
assert(_jitc->function->self.call & jit_call_varargs);
@@ -2516,7 +2516,7 @@ _patch_at(jit_state_t *_jit, jit_word_t instr, jit_word_t label)
{
jit_instr_t i;
union {
- jit_int32_t *i;
+ int32_t *i;
jit_word_t w;
} u;
diff --git a/libguile/lightning/lib/jit_sparc-fpu.c b/libguile/lightning/jit/sparc-fpu.c
index c56b211e9..3305b4deb 100644
--- a/libguile/lightning/lib/jit_sparc-fpu.c
+++ b/libguile/lightning/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,int32_t,int32_t, int32_t,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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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,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,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,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,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, int32_t, 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,int32_t,int32_t,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,int32_t,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,int32_t,int32_t,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,int32_t,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,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,int32_t,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,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,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,int32_t,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,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,int32_t,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,int32_t,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,int32_t,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,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,int32_t,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,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, 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, int32_t rs1, int32_t opf, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, int32_t r1, 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, int32_t r1, 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, 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, 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, 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, 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, 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, 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, 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, int32_t r1, 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, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, 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, 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, int32_t r1, 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, 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, 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, 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, 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, int32_t r1, 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, int32_t r0, 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,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, 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, int32_t r1)
{
assert(_jitc->function->self.call & jit_call_varargs);
diff --git a/libguile/lightning/lib/jit_sparc.c b/libguile/lightning/jit/sparc.c
index 3ac80d489..10aac8528 100644
--- a/libguile/lightning/lib/jit_sparc.c
+++ b/libguile/lightning/jit/sparc.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013-2017 Free Software Foundation, Inc.
+ * Copyright (C) 2013-2018 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -38,14 +38,14 @@ typedef jit_pointer_t jit_va_list_t;
static void _patch(jit_state_t*,jit_word_t,jit_node_t*);
#define PROTO 1
-# include "jit_sparc-cpu.c"
-# include "jit_sparc-fpu.c"
+# include "sparc-cpu.c"
+# include "sparc-fpu.c"
#undef PROTO
/*
* Initialization
*/
-jit_register_t _rvs[] = {
+static const jit_register_t _rvs[] = {
{ 0x00, "%g0" },
{ 0x01, "%g1" },
{ rc(gpr) | 0x02, "%g2" },
@@ -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, 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;
@@ -1868,8 +1868,8 @@ _emit_code(jit_state_t *_jit)
}
#define CODE 1
-# include "jit_sparc-cpu.c"
-# include "jit_sparc-fpu.c"
+# include "sparc-cpu.c"
+# include ", 2018sparc-fpu.c"
#undef CODE
void
@@ -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)
diff --git a/libguile/lightning/include/lightning/jit_sparc.h b/libguile/lightning/jit/sparc.h
index f74f5ff30..f74f5ff30 100644
--- a/libguile/lightning/include/lightning/jit_sparc.h
+++ b/libguile/lightning/jit/sparc.h
diff --git a/libguile/lightning/jit/x86-cpu.c b/libguile/lightning/jit/x86-cpu.c
new file mode 100644
index 000000000..1c1da2b4f
--- /dev/null
+++ b/libguile/lightning/jit/x86-cpu.c
@@ -0,0 +1,2762 @@
+/*
+ * Copyright (C) 2012-2019 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU lightning.
+ *
+ * GNU lightning is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU lightning is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * Authors:
+ * Paulo Cesar Pereira de Andrade
+ */
+
+/* avoid using it due to partial stalls */
+#define USE_INC_DEC 0
+
+#if __X32 || __X64_32
+# define WIDE 0
+# define IF_WIDE(wide, narrow) narrow
+#else
+# define WIDE 1
+# define IF_WIDE(wide, narrow) wide
+#endif
+
+#define _RAX_REGNO 0
+#define _RCX_REGNO 1
+#define _RDX_REGNO 2
+#define _RBX_REGNO 3
+#define _RSP_REGNO 4
+#define _RBP_REGNO 5
+#define _RSI_REGNO 6
+#define _RDI_REGNO 7
+#define _R8_REGNO 8
+#define _R9_REGNO 9
+#define _R10_REGNO 10
+#define _R11_REGNO 11
+#define _R12_REGNO 12
+#define _R13_REGNO 13
+#define _R14_REGNO 14
+#define _R15_REGNO 15
+#define r7(reg) ((reg) & 7)
+#define r8(reg) ((reg) & 15)
+#if __X32 || __CYGWIN__ || __X64_32
+# define reg8_p(rn) ((rn) >= _RAX_REGNO && (rn) <= _RBX_REGNO)
+#else
+# define reg8_p(rn) 1
+#endif
+
+#define can_sign_extend_int_p(im) \
+ IF_WIDE((((im) >= 0 && (long long)(im) <= 0x7fffffffLL) || \
+ ((im) < 0 && (long long)(im) > -0x80000000LL)), \
+ 1)
+#define can_zero_extend_int_p(im) \
+ IF_WIDE(((im) >= 0 && (im) < 0x80000000LL), \
+ 1)
+#define fits_uint32_p(im) \
+ IF_WIDE((((im) & 0xffffffff00000000LL) == 0), \
+ 1)
+
+#define _SCL1 0x00
+#define _SCL2 0x01
+#define _SCL4 0x02
+#define _SCL8 0x03
+
+#define X86_ADD 0
+#define X86_OR 1 << 3
+#define X86_ADC 2 << 3
+#define X86_SBB 3 << 3
+#define X86_AND 4 << 3
+#define X86_SUB 5 << 3
+#define X86_XOR 6 << 3
+#define X86_CMP 7 << 3
+#define X86_ROL 0
+#define X86_ROR 1
+#define X86_RCL 2
+#define X86_RCR 3
+#define X86_SHL 4
+#define X86_SHR 5
+#define X86_SAR 7
+#define X86_NOT 2
+#define X86_NEG 3
+#define X86_MUL 4
+#define X86_IMUL 5
+#define X86_DIV 6
+#define X86_IDIV 7
+
+#define FOR_EACH_CC(M) \
+ M(o, O, 0x0) \
+ M(no, NO, 0x1) \
+ M(nae, NAE, 0x2) \
+ M(b, B, 0x2) \
+ M(c, C, 0x2) \
+ M(ae, AE, 0x3) \
+ M(nb, NB, 0x3) \
+ M(nc, NC, 0x3) \
+ M(e, E, 0x4) \
+ M(z, Z, 0x4) \
+ M(ne, NE, 0x5) \
+ M(nz, NZ, 0x5) \
+ M(be, BE, 0x6) \
+ M(na, NA, 0x6) \
+ M(a, A, 0x7) \
+ M(nbe, NBE, 0x7) \
+ M(s, S, 0x8) \
+ M(ns, NS, 0x9) \
+ M(p, P, 0xa) \
+ M(pe, PE, 0xa) \
+ M(np, NP, 0xb) \
+ M(po, PO, 0xb) \
+ M(l, L, 0xc) \
+ M(nge, NGE, 0xc) \
+ M(ge, GE, 0xd) \
+ M(nl_, NL, 0xd) \
+ M(le, LE, 0xe) \
+ M(ng, NG, 0xe) \
+ M(g, G, 0xf) \
+ M(nle, NLE, 0xf) \
+ /* EOL */
+
+enum x86_cc
+{
+#define DEFINE_ENUM(cc, CC, code) X86_CC_##CC = code,
+ FOR_EACH_CC(DEFINE_ENUM)
+#undef DEFINE_ENUM
+};
+
+static inline void
+mrm(jit_state_t *_jit, uint8_t md, uint8_t r, uint8_t m)
+{
+ emit_u8(_jit, (md<<6) | (r<<3) | m);
+}
+
+static inline void
+sib(jit_state_t *_jit, uint8_t sc, uint8_t i, uint8_t b)
+{
+ emit_u8(_jit, (sc<<6) | (i<<3) | b);
+}
+
+static inline void
+ic(jit_state_t *_jit, uint8_t c)
+{
+ emit_u8(_jit, c);
+}
+
+static inline void
+is(jit_state_t *_jit, uint16_t s)
+{
+ emit_u16(_jit, s);
+}
+
+static inline void
+ii(jit_state_t *_jit, uint32_t i)
+{
+ emit_u32(_jit, i);
+}
+
+static inline void
+il(jit_state_t *_jit, unsigned long l)
+{
+#if __X64 && !__X64_32
+ emit_u64(_jit, l);
+#else
+ ii(_jit, l);
+#endif
+}
+
+static void
+rex(jit_state_t *_jit, int32_t l, int32_t w,
+ int32_t r, int32_t x, int32_t b)
+{
+#if __X64
+ int32_t v = 0x40 | (w << 3);
+
+ if (r != _NOREG)
+ v |= (r & 8) >> 1;
+ if (x != _NOREG)
+ v |= (x & 8) >> 2;
+ if (b != _NOREG)
+ v |= (b & 8) >> 3;
+ if (l || v != 0x40)
+ ic(_jit, v);
+#endif
+}
+
+static void
+rx(jit_state_t *_jit, int32_t rd, int32_t md,
+ int32_t rb, int32_t ri, int32_t ms)
+{
+ if (ri == _NOREG) {
+ if (rb == _NOREG) {
+#if __X32
+ mrm(_jit, 0x00, r7(rd), 0x05);
+#else
+ mrm(_jit, 0x00, r7(rd), 0x04);
+ sib(_jit, _SCL1, 0x04, 0x05);
+#endif
+ ii(_jit, md);
+ } else if (r7(rb) == _RSP_REGNO) {
+ if (md == 0) {
+ mrm(_jit, 0x00, r7(rd), 0x04);
+ sib(_jit, ms, 0x04, 0x04);
+ }
+ else if ((int8_t)md == md) {
+ mrm(_jit, 0x01, r7(rd), 0x04);
+ sib(_jit, ms, 0x04, 0x04);
+ ic(_jit, md);
+ } else {
+ mrm(_jit, 0x02, r7(rd), 0x04);
+ sib(_jit, ms, 0x04, 0x04);
+ ii(_jit, md);
+ }
+ } else {
+ if (md == 0 && r7(rb) != _RBP_REGNO)
+ mrm(_jit, 0x00, r7(rd), r7(rb));
+ else if ((int8_t)md == md) {
+ mrm(_jit, 0x01, r7(rd), r7(rb));
+ ic(_jit, md);
+ } else {
+ mrm(_jit, 0x02, r7(rd), r7(rb));
+ ii(_jit, md);
+ }
+ }
+ }
+ else if (rb == _NOREG) {
+ mrm(_jit, 0x00, r7(rd), 0x04);
+ sib(_jit, ms, r7(ri), 0x05);
+ ii(_jit, md);
+ }
+ else if (r8(ri) != _RSP_REGNO) {
+ if (md == 0 && r7(rb) != _RBP_REGNO) {
+ mrm(_jit, 0x00, r7(rd), 0x04);
+ sib(_jit, ms, r7(ri), r7(rb));
+ } else if ((int8_t)md == md) {
+ mrm(_jit, 0x01, r7(rd), 0x04);
+ sib(_jit, ms, r7(ri), r7(rb));
+ ic(_jit, md);
+ } else {
+ mrm(_jit, 0x02, r7(rd), 0x04);
+ sib(_jit, ms, r7(ri), r7(rb));
+ ic(_jit, md);
+ }
+ } else {
+ fprintf(stderr, "illegal index register");
+ abort();
+ }
+}
+
+static void
+pushr(jit_state_t *_jit, int32_t r0)
+{
+ rex(_jit, 0, WIDE, 0, 0, r0);
+ ic(_jit, 0x50 | r7(r0));
+}
+
+static void
+popr(jit_state_t *_jit, int32_t r0)
+{
+ rex(_jit, 0, WIDE, 0, 0, r0);
+ ic(_jit, 0x58 | r7(r0));
+}
+
+static jit_gpr_t
+get_temp_gpr(jit_state_t *_jit)
+{
+ ASSERT(!_jit->temp_gpr_saved);
+ _jit->temp_gpr_saved = 1;
+#if __X32
+ pushr(_jit, _RBP_REGNO);
+ return JIT_GPR(_RBP);
+#else
+ return JIT_GPR(_R8);
+#endif
+}
+
+static void
+unget_temp_gpr(jit_state_t *_jit)
+{
+ ASSERT(_jit->temp_gpr_saved);
+ _jit->temp_gpr_saved = 0;
+#if __X32
+ popr(_jit, _RBP_REGNO);
+#endif
+}
+
+static void
+nop(jit_state_t *_jit, int32_t count)
+{
+ switch (count) {
+ case 0:
+ break;
+ case 1: /* NOP */
+ ic(_jit, 0x90);
+ break;
+ case 2: /* 66 NOP */
+ ic(_jit, 0x66); ic(_jit, 0x90);
+ break;
+ case 3: /* NOP DWORD ptr [EAX] */
+ ic(_jit, 0x0f); ic(_jit, 0x1f); ic(_jit, 0x00);
+ break;
+ case 4: /* NOP DWORD ptr [EAX + 00H] */
+ ic(_jit, 0x0f); ic(_jit, 0x1f); ic(_jit, 0x40); ic(_jit, 0x00);
+ break;
+ case 5: /* NOP DWORD ptr [EAX + EAX*1 + 00H] */
+ ic(_jit, 0x0f); ic(_jit, 0x1f); ic(_jit, 0x44); ic(_jit, 0x00);
+ ic(_jit, 0x00);
+ break;
+ case 6: /* 66 NOP DWORD ptr [EAX + EAX*1 + 00H] */
+ ic(_jit, 0x66); ic(_jit, 0x0f); ic(_jit, 0x1f); ic(_jit, 0x44);
+ ic(_jit, 0x00); ic(_jit, 0x00);
+ break;
+ case 7: /* NOP DWORD ptr [EAX + 00000000H] */
+ ic(_jit, 0x0f); ic(_jit, 0x1f); ic(_jit, 0x80); ii(_jit, 0x0000);
+ break;
+ case 8: /* NOP DWORD ptr [EAX + EAX*1 + 00000000H] */
+ ic(_jit, 0x0f); ic(_jit, 0x1f); ic(_jit, 0x84); ic(_jit, 0x00);
+ ii(_jit, 0x0000);
+ break;
+ case 9: /* 66 NOP DWORD ptr [EAX + EAX*1 + 00000000H] */
+ ic(_jit, 0x66); ic(_jit, 0x0f); ic(_jit, 0x1f); ic(_jit, 0x84);
+ ic(_jit, 0x00); ii(_jit, 0x0000);
+ break;
+ default:
+ abort();
+ }
+}
+
+static void
+movr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ if (r0 != r1) {
+ rex(_jit, 0, 1, r1, _NOREG, r0);
+ ic(_jit, 0x89);
+ ic(_jit, 0xc0 | (r1 << 3) | r7(r0));
+ }
+}
+
+static void
+movcr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbe);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+}
+
+static void
+movcr_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb6);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+}
+
+static void
+movsr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbf);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+}
+
+static void
+movsr_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb7);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+}
+
+#if __X64
+static void
+movir(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, 1, r0, _NOREG, r1);
+ ic(_jit, 0x63);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+}
+
+static void
+movir_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, 0, r1, _NOREG, r0);
+ ic(_jit, 0x89);
+ ic(_jit, 0xc0 | (r1 << 3) | r7(r0));
+}
+#endif
+
+static jit_reloc_t
+mov_addr(jit_state_t *_jit, int32_t r0)
+{
+ uint8_t *pc_start = _jit->pc.uc;
+ rex(_jit, 0, WIDE, _NOREG, _NOREG, r0);
+ ic(_jit, 0xb8 | r7(r0));
+ ptrdiff_t inst_start = _jit->pc.uc - pc_start;
+ return jit_reloc(_jit, JIT_RELOC_ABSOLUTE, inst_start, 0);
+}
+
+static void
+imovi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+#if __X64
+# if !__X64_32
+ if (fits_uint32_p(i0)) {
+# endif
+ rex(_jit, 0, 0, _NOREG, _NOREG, r0);
+ ic(_jit, 0xb8 | r7(r0));
+ ii(_jit, i0);
+# if !__X64_32
+ } else {
+ rex(_jit, 0, 1, _NOREG, _NOREG, r0);
+ ic(_jit, 0xb8 | r7(r0));
+ il(_jit, i0);
+ }
+# endif
+#else
+ ic(_jit, 0xb8 | r7(r0));
+ ii(_jit, i0);
+#endif
+}
+
+static void
+alur(jit_state_t *_jit, int32_t code, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r1, _NOREG, r0);
+ ic(_jit, code | 0x01);
+ mrm(_jit, 0x03, r7(r1), r7(r0));
+}
+
+static inline void
+icmpr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return alur(_jit, X86_CMP, r0, r1);
+}
+static inline void
+iaddr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return alur(_jit, X86_ADD, r0, r1);
+}
+static inline void
+iaddxr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return alur(_jit, X86_ADC, r0, r1);
+}
+static inline void
+isubr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return alur(_jit, X86_SUB, r0, r1);
+}
+static inline void
+isubxr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return alur(_jit, X86_SBB, r0, r1);
+}
+static inline void
+iandr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return alur(_jit, X86_AND, r0, r1);
+}
+static inline void
+iorr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return alur(_jit, X86_OR, r0, r1);
+}
+static inline void
+ixorr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return alur(_jit, X86_XOR, r0, r1);
+}
+
+static void
+movi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (i0)
+ imovi(_jit, r0, i0);
+ else
+ ixorr(_jit, r0, r0);
+}
+
+static void
+alui(jit_state_t *_jit, int32_t code, int32_t r0, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, _NOREG, _NOREG, r0);
+ if ((int8_t)i0 == i0) {
+ ic(_jit, 0x83);
+ ic(_jit, 0xc0 | code | r7(r0));
+ ic(_jit, i0);
+ } else {
+ if (r0 == _RAX_REGNO) {
+ ic(_jit, code | 0x05);
+ } else {
+ ic(_jit, 0x81);
+ ic(_jit, 0xc0 | code | r7(r0));
+ }
+ ii(_jit, i0);
+ }
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ alur(_jit, code, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static inline void
+icmpi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ return alui(_jit, X86_CMP, r0, i0);
+}
+static inline void
+iaddi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ return alui(_jit, X86_ADD, r0, i0);
+}
+static inline void
+iaddxi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ return alui(_jit, X86_ADC, r0, i0);
+}
+static inline void
+isubi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ return alui(_jit, X86_SUB, r0, i0);
+}
+static inline void
+isubxi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ return alui(_jit, X86_SBB, r0, i0);
+}
+static inline void
+iandi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ return alui(_jit, X86_AND, r0, i0);
+}
+static inline void
+iori(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ return alui(_jit, X86_OR, r0, i0);
+}
+static inline void
+ixori(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ return alui(_jit, X86_XOR, r0, i0);
+}
+
+static void
+unr(jit_state_t *_jit, int32_t code, int32_t r0)
+{
+ rex(_jit, 0, WIDE, _NOREG, _NOREG, r0);
+ ic(_jit, 0xf7);
+ mrm(_jit, 0x03, code, r7(r0));
+}
+
+static inline void
+umulr(jit_state_t *_jit, int32_t r0)
+{
+ return unr(_jit, X86_IMUL, r0);
+}
+static inline void
+umulr_u(jit_state_t *_jit, int32_t r0)
+{
+ return unr(_jit, X86_MUL, r0);
+}
+static inline void
+idivr(jit_state_t *_jit, int32_t r0)
+{
+ return unr(_jit, X86_IDIV, r0);
+}
+static inline void
+idivr_u(jit_state_t *_jit, int32_t r0)
+{
+ return unr(_jit, X86_DIV, r0);
+}
+static inline void
+inegr(jit_state_t *_jit, int32_t r0)
+{
+ return unr(_jit, X86_NEG, r0);
+}
+static inline void
+icomr(jit_state_t *_jit, int32_t r0)
+{
+ return unr(_jit, X86_NOT, r0);
+}
+
+#if USE_INC_DEC
+static void
+incr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ movr(_jit, r0, r1);
+# if __X64
+ rex(_jit, 0, WIDE, _NOREG, _NOREG, r0);
+ ic(_jit, 0xff);
+ ic(_jit, 0xc0 | r7(r0));
+# else
+ ic(_jit, 0x40 | r7(r0));
+# endif
+}
+
+static void
+decr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ movr(_jit, r0, r1);
+# if __X64
+ rex(_jit, 0, WIDE, _NOREG, _NOREG, r0);
+ ic(_jit, 0xff);
+ ic(_jit, 0xc8 | r7(r0));
+# else
+ ic(_jit, 0x48 | r7(r0));
+# endif
+}
+#endif
+
+static void
+lea(jit_state_t *_jit, int32_t md, int32_t rb,
+ int32_t ri, int32_t ms, int32_t rd)
+{
+ rex(_jit, 0, WIDE, rd, ri, rb);
+ ic(_jit, 0x8d);
+ rx(_jit, rd, md, rb, ri, ms);
+}
+
+static void
+xchgr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r1, _NOREG, r0);
+ ic(_jit, 0x87);
+ mrm(_jit, 0x03, r7(r1), r7(r0));
+}
+
+static void
+testr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r1, _NOREG, r0);
+ ic(_jit, 0x85);
+ mrm(_jit, 0x03, r7(r1), r7(r0));
+}
+
+static void
+testi(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ rex(_jit, 0, WIDE, _NOREG, _NOREG, r0);
+ if (r0 == _RAX_REGNO) {
+ ic(_jit, 0xa9);
+ } else {
+ ic(_jit, 0xf7);
+ mrm(_jit, 0x03, 0x00, r7(r0));
+ }
+ ii(_jit, i0);
+}
+
+static void
+cc(jit_state_t *_jit, int32_t code, int32_t r0)
+{
+ rex(_jit, 0, 0, _NOREG, _NOREG, r0);
+ ic(_jit, 0x0f);
+ ic(_jit, 0x90 | code);
+ mrm(_jit, 0x03, 0x00, r7(r0));
+}
+
+static void
+negr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ if (r0 == r1) {
+ inegr(_jit, r0);
+ } else {
+ ixorr(_jit, r0, r0);
+ isubr(_jit, r0, r1);
+ }
+}
+
+static void
+addr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ iaddr(_jit, r0, r2);
+ else if (r0 == r2)
+ iaddr(_jit, r0, r1);
+ else
+ lea(_jit, 0, r1, r2, _SCL1, r0);
+}
+
+static void
+addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (i0 == 0)
+ movr(_jit, r0, r1);
+#if USE_INC_DEC
+ else if (i0 == 1)
+ incr(_jit, r0, r1);
+ else if (i0 == -1)
+ decr(_jit, r0, r1);
+#endif
+ else if (can_sign_extend_int_p(i0)) {
+ if (r0 == r1)
+ iaddi(_jit, r0, i0);
+ else
+ lea(_jit, i0, r1, _NOREG, _SCL1, r0);
+ }
+ else if (r0 != r1) {
+ movi(_jit, r0, i0);
+ iaddr(_jit, r0, r1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ iaddr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+addcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r2) {
+ iaddr(_jit, r0, r1);
+ } else {
+ movr(_jit, r0, r1);
+ iaddr(_jit, r0, r2);
+ }
+}
+
+static void
+addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ movr(_jit, r0, r1);
+ iaddi(_jit, r0, i0);
+ }
+ else if (r0 == r1) {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ iaddr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ } else {
+ movi(_jit, r0, i0);
+ iaddr(_jit, r0, r1);
+ }
+}
+
+static void
+addxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r2) {
+ iaddxr(_jit, r0, r1);
+ } else {
+ movr(_jit, r0, r1);
+ iaddxr(_jit, r0, r2);
+ }
+}
+
+static void
+addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ movr(_jit, r0, r1);
+ iaddxi(_jit, r0, i0);
+ }
+ else if (r0 == r1) {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ iaddxr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ } else {
+ movi(_jit, r0, i0);
+ iaddxr(_jit, r0, r1);
+ }
+}
+
+static void
+subr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r1 == r2)
+ ixorr(_jit, r0, r0);
+ else if (r0 == r2) {
+ isubr(_jit, r0, r1);
+ inegr(_jit, r0);
+ } else {
+ movr(_jit, r0, r1);
+ isubr(_jit, r0, r2);
+ }
+}
+
+static void
+subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (i0 == 0)
+ movr(_jit, r0, r1);
+#if USE_INC_DEC
+ else if (i0 == 1)
+ decr(_jit, r0, r1);
+ else if (i0 == -1)
+ incr(_jit, r0, r1);
+#endif
+ else if (can_sign_extend_int_p(i0)) {
+ if (r0 == r1)
+ isubi(_jit, r0, i0);
+ else
+ lea(_jit, -i0, r1, _NOREG, _SCL1, r0);
+ }
+ else if (r0 != r1) {
+ movi(_jit, r0, -i0);
+ iaddr(_jit, r0, r1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ isubr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+subcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r2 && r0 != r1) {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movr(_jit, rn(reg), r0);
+ movr(_jit, r0, r1);
+ isubr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ } else {
+ movr(_jit, r0, r1);
+ isubr(_jit, r0, r2);
+ }
+}
+
+static void
+subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ movr(_jit, r0, r1);
+ if (can_sign_extend_int_p(i0)) {
+ isubi(_jit, r0, i0);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ isubr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+subxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r2 && r0 != r1) {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movr(_jit, rn(reg), r0);
+ movr(_jit, r0, r1);
+ isubxr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ } else {
+ movr(_jit, r0, r1);
+ isubxr(_jit, r0, r2);
+ }
+}
+
+static void
+subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ movr(_jit, r0, r1);
+ if (can_sign_extend_int_p(i0)) {
+ isubxi(_jit, r0, i0);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ imovi(_jit, rn(reg), i0);
+ isubxr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+irotshr(jit_state_t *_jit, int32_t code, int32_t r0)
+{
+ rex(_jit, 0, WIDE, _RCX_REGNO, _NOREG, r0);
+ ic(_jit, 0xd3);
+ mrm(_jit, 0x03, code, r7(r0));
+}
+
+static void
+rotshr(jit_state_t *_jit, int32_t code,
+ int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == _RCX_REGNO) {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movr(_jit, rn(reg), r1);
+ if (r2 != _RCX_REGNO)
+ movr(_jit, _RCX_REGNO, r2);
+ irotshr(_jit, code, rn(reg));
+ movr(_jit, _RCX_REGNO, rn(reg));
+ unget_temp_gpr(_jit);
+ } else if (r2 != _RCX_REGNO) {
+ /* Already know that R0 isn't RCX. */
+ pushr(_jit, _RCX_REGNO);
+ if (r1 == _RCX_REGNO) {
+ if (r0 == r2)
+ xchgr(_jit, r0, _RCX_REGNO);
+ else {
+ movr(_jit, r0, r1);
+ movr(_jit, _RCX_REGNO, r2);
+ }
+ } else {
+ movr(_jit, _RCX_REGNO, r2);
+ movr(_jit, r0, r1);
+ }
+ irotshr(_jit, code, r0);
+ popr(_jit, _RCX_REGNO);
+ } else {
+ movr(_jit, r0, r1);
+ irotshr(_jit, code, r0);
+ }
+}
+
+static void
+irotshi(jit_state_t *_jit, int32_t code, int32_t r0, jit_word_t i0)
+{
+ rex(_jit, 0, WIDE, _NOREG, _NOREG, r0);
+ if (i0 == 1) {
+ ic(_jit, 0xd1);
+ mrm(_jit, 0x03, code, r7(r0));
+ } else {
+ ic(_jit, 0xc1);
+ mrm(_jit, 0x03, code, r7(r0));
+ ic(_jit, i0);
+ }
+}
+
+static void
+rotshi(jit_state_t *_jit, int32_t code,
+ int32_t r0, int32_t r1, jit_word_t i0)
+{
+ movr(_jit, r0, r1);
+ if (i0)
+ irotshi(_jit, code, r0, i0);
+}
+
+static void
+lshi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (i0 == 0)
+ movr(_jit, r0, r1);
+ else if (i0 <= 3)
+ lea(_jit, 0, _NOREG, r1, i0 == 1 ? _SCL2 : i0 == 2 ? _SCL4 : _SCL8, r0);
+ else
+ rotshi(_jit, X86_SHL, r0, r1, i0);
+}
+
+static void
+lshr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ return rotshr(_jit, X86_SHL, r0, r1, r2);
+}
+
+static void
+rshr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ return rotshr(_jit, X86_SAR, r0, r1, r2);
+}
+
+static void
+rshi(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t i0)
+{
+ return rotshi(_jit, X86_SAR, r0, r1, i0);
+}
+
+static void
+rshr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ return rotshr(_jit, X86_SHR, r0, r1, r2);
+}
+
+static void
+rshi_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t i0)
+{
+ return rotshi(_jit, X86_SHR, r0, r1, i0);
+}
+
+static void
+imulr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xaf);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+}
+
+static void
+imuli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ if ((int8_t)i0 == i0) {
+ ic(_jit, 0x6b);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+ ic(_jit, i0);
+ } else {
+ ic(_jit, 0x69);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+ ii(_jit, i0);
+ }
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ imulr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+mulr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ imulr(_jit, r0, r2);
+ else if (r0 == r2) {
+ imulr(_jit, r0, r1);
+ } else {
+ movr(_jit, r0, r1);
+ imulr(_jit, r0, r2);
+ }
+}
+
+static int
+ffsw(jit_word_t i)
+{
+ if (sizeof(int) == sizeof(i))
+ return ffs(i);
+ int bit = ffs((int)i);
+ if (bit == 0) {
+ bit = ffs((int)((unsigned long)i >> 32));
+ if (bit)
+ bit += 32;
+ }
+ return bit;
+}
+
+static void
+muli(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ switch (i0) {
+ case 0:
+ ixorr(_jit, r0, r0);
+ break;
+ case 1:
+ movr(_jit, r0, r1);
+ break;
+ case -1:
+ negr(_jit, r0, r1);
+ break;
+ case 2:
+ lea(_jit, 0, _NOREG, r1, _SCL2, r0);
+ break;
+ case 4:
+ lea(_jit, 0, _NOREG, r1, _SCL4, r0);
+ break;
+ case 8:
+ lea(_jit, 0, _NOREG, r1, _SCL8, r0);
+ break;
+ default:
+ if (i0 > 0 && !(i0 & (i0 - 1)))
+ lshi(_jit, r0, r1, ffsw(i0) - 1);
+ else if (can_sign_extend_int_p(i0))
+ imuli(_jit, r0, r1, i0);
+ else if (r0 != r1) {
+ movi(_jit, r0, i0);
+ imulr(_jit, r0, r1);
+ }
+ else
+ imuli(_jit, r0, r0, i0);
+ break;
+ }
+}
+
+static void
+iqmulr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
+{
+ if (r0 != _RAX_REGNO && r1 != _RAX_REGNO)
+ pushr(_jit, _RAX_REGNO);
+ if (r0 != _RDX_REGNO && r1 != _RDX_REGNO)
+ pushr(_jit, _RDX_REGNO);
+
+ int32_t mul;
+ if (r3 == _RAX_REGNO) {
+ mul = r2;
+ } else {
+ mul = r3;
+ movr(_jit, _RAX_REGNO, r2);
+ }
+ if (sign)
+ umulr(_jit, mul);
+ else
+ umulr_u(_jit, mul);
+
+ if (r0 == _RDX_REGNO && r1 == _RAX_REGNO) {
+ xchgr(_jit, _RAX_REGNO, _RDX_REGNO);
+ } else {
+ if (r0 != _RDX_REGNO)
+ movr(_jit, r0, _RAX_REGNO);
+ movr(_jit, r1, _RDX_REGNO);
+ if (r0 == _RDX_REGNO)
+ movr(_jit, r0, _RAX_REGNO);
+ }
+
+ if (r0 != _RDX_REGNO && r1 != _RDX_REGNO)
+ popr(_jit, _RDX_REGNO);
+ if (r0 != _RAX_REGNO && r1 != _RAX_REGNO)
+ popr(_jit, _RAX_REGNO);
+}
+
+static void
+qmulr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2, int32_t r3)
+{
+ return iqmulr(_jit, r0, r1, r2, r3, 1);
+}
+
+static void
+qmulr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2, int32_t r3)
+{
+ return iqmulr(_jit, r0, r1, r2, r3, 0);
+}
+
+static void
+iqmuli(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
+{
+ if (i0 == 0) {
+ ixorr(_jit, r0, r0);
+ ixorr(_jit, r1, r1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ if (sign)
+ qmulr(_jit, r0, r1, r2, rn(reg));
+ else
+ qmulr_u(_jit, r0, r1, r2, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+qmuli(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
+{
+ return iqmuli(_jit, r0, r1, r2, i0, 1);
+}
+
+static void
+qmuli_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
+{
+ return iqmuli(_jit, r0, r1, r2, i0, 0);
+}
+
+static void
+sign_extend_rdx_rax(jit_state_t *_jit)
+{
+ rex(_jit, 0, WIDE, 0, 0, 0);
+ ic(_jit, 0x99);
+}
+
+static void
+divremr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2,
+ jit_bool_t sign, jit_bool_t divide)
+{
+ if (r0 != _RAX_REGNO)
+ pushr(_jit, _RAX_REGNO);
+ if (r0 != _RDX_REGNO)
+ pushr(_jit, _RDX_REGNO);
+
+ int tmp_divisor = 0;
+ if (r2 == _RAX_REGNO || r2 == _RDX_REGNO) {
+ jit_gpr_t tmp = get_temp_gpr(_jit);
+ movr(_jit, rn(tmp), r2);
+ r2 = rn(tmp);
+ tmp_divisor = 1;
+ }
+
+ movr(_jit, _RAX_REGNO, r1);
+
+ if (sign) {
+ sign_extend_rdx_rax(_jit);
+ idivr(_jit, r2);
+ } else {
+ ixorr(_jit, _RDX_REGNO, _RDX_REGNO);
+ idivr_u(_jit, r2);
+ }
+
+ if (divide)
+ movr(_jit, r0, _RAX_REGNO);
+ else
+ movr(_jit, r0, _RDX_REGNO);
+
+ if (tmp_divisor)
+ unget_temp_gpr(_jit);
+
+ if (r0 != _RDX_REGNO)
+ popr(_jit, _RDX_REGNO);
+ if (r0 != _RAX_REGNO)
+ popr(_jit, _RAX_REGNO);
+}
+
+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)
+{
+ jit_gpr_t tmp = get_temp_gpr(_jit);
+ movi(_jit, rn(tmp), i0);
+
+ divremr(_jit, r0, r1, rn(tmp), sign, divide);
+}
+
+static void
+divr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ return divremr(_jit, r0, r1, r2, 1, 1);
+}
+
+static void
+divi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ return divremi(_jit, r0, r1, i0, 1, 1);
+}
+
+static void
+divr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ return divremr(_jit, r0, r1, r2, 0, 1);
+}
+
+static void
+divi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ return divremi(_jit, r0, r1, i0, 0, 1);
+}
+
+
+static void
+remr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ return divremr(_jit, r0, r1, r2, 1, 0);
+}
+
+static void
+remi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ return divremi(_jit, r0, r1, i0, 1, 0);
+}
+
+static void
+remr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ return divremr(_jit, r0, r1, r2, 0, 0);
+}
+
+static void
+remi_u(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ return divremi(_jit, r0, r1, i0, 0, 0);
+}
+
+static void
+iqdivr(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, int32_t r3, jit_bool_t sign)
+{
+ if (r0 != _RAX_REGNO && r1 != _RAX_REGNO)
+ pushr(_jit, _RAX_REGNO);
+ if (r0 != _RDX_REGNO && r1 != _RDX_REGNO)
+ pushr(_jit, _RDX_REGNO);
+
+ int tmp_divisor = 0;
+ if (r3 == _RAX_REGNO || r3 == _RDX_REGNO) {
+ jit_gpr_t tmp = get_temp_gpr(_jit);
+ movr(_jit, rn(tmp), r3);
+ r3 = rn(tmp);
+ tmp_divisor = 1;
+ }
+
+ movr(_jit, _RAX_REGNO, r2);
+
+ if (sign) {
+ sign_extend_rdx_rax(_jit);
+ idivr(_jit, r3);
+ } else {
+ ixorr(_jit, _RDX_REGNO, _RDX_REGNO);
+ idivr_u(_jit, r3);
+ }
+
+ if (r0 == _RDX_REGNO && r1 == _RAX_REGNO) {
+ xchgr(_jit, _RAX_REGNO, _RDX_REGNO);
+ } else {
+ if (r0 != _RDX_REGNO)
+ movr(_jit, r0, _RAX_REGNO);
+ movr(_jit, r1, _RDX_REGNO);
+ if (r0 == _RDX_REGNO)
+ movr(_jit, r0, _RAX_REGNO);
+ }
+
+ if (tmp_divisor)
+ unget_temp_gpr(_jit);
+
+ if (r0 != _RDX_REGNO && r1 != _RDX_REGNO)
+ popr(_jit, _RDX_REGNO);
+ if (r0 != _RAX_REGNO && r1 != _RAX_REGNO)
+ popr(_jit, _RAX_REGNO);
+}
+
+static void
+qdivr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2, int32_t r3)
+{
+ return iqdivr(_jit, r0, r1, r2, r3, 1);
+}
+
+static void
+qdivr_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2, int32_t r3)
+{
+ return iqdivr(_jit, r0, r1, r2, r3, 0);
+}
+
+static void
+iqdivi(jit_state_t *_jit, int32_t r0, int32_t r1,
+ int32_t r2, jit_word_t i0, jit_bool_t sign)
+{
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ if (sign)
+ qdivr(_jit, r0, r1, r2, rn(reg));
+ else
+ qdivr_u(_jit, r0, r1, r2, rn(reg));
+ unget_temp_gpr(_jit);
+}
+
+static void
+qdivi(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
+{
+ return iqdivi(_jit, r0, r1, r2, i0, 1);
+}
+
+static void
+qdivi_u(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2, jit_word_t i0)
+{
+ return iqdivi(_jit, r0, r1, r2, i0, 0);
+}
+
+static void
+comr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ movr(_jit, r0, r1);
+ icomr(_jit, r0);
+}
+
+static void
+andr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r1 == r2)
+ movr(_jit, r0, r1);
+ else if (r0 == r1)
+ iandr(_jit, r0, r2);
+ else if (r0 == r2) {
+ iandr(_jit, r0, r1);
+ } else {
+ movr(_jit, r0, r1);
+ iandr(_jit, r0, r2);
+ }
+}
+
+static void
+andi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+
+ if (i0 == 0)
+ ixorr(_jit, r0, r0);
+ else if (i0 == -1)
+ movr(_jit, r0, r1);
+ else if (r0 == r1) {
+ if (can_sign_extend_int_p(i0)) {
+ iandi(_jit, r0, i0);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ iandr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+ } else {
+ movi(_jit, r0, i0);
+ iandr(_jit, r0, r1);
+ }
+}
+
+static void
+orr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r1 == r2)
+ movr(_jit, r0, r1);
+ else if (r0 == r1)
+ iorr(_jit, r0, r2);
+ else if (r0 == r2) {
+ iorr(_jit, r0, r1);
+ } else {
+ movr(_jit, r0, r1);
+ iorr(_jit, r0, r2);
+ }
+}
+
+static void
+ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (i0 == 0)
+ movr(_jit, r0, r1);
+ else if (i0 == -1)
+ movi(_jit, r0, -1);
+ else if (can_sign_extend_int_p(i0)) {
+ movr(_jit, r0, r1);
+ iori(_jit, r0, i0);
+ }
+ else if (r0 != r1) {
+ movi(_jit, r0, i0);
+ iorr(_jit, r0, r1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ iorr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+xorr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r1 == r2)
+ ixorr(_jit, r0, r0);
+ else if (r0 == r1)
+ ixorr(_jit, r0, r2);
+ else if (r0 == r2) {
+ ixorr(_jit, r0, r1);
+ } else {
+ movr(_jit, r0, r1);
+ ixorr(_jit, r0, r2);
+ }
+}
+
+static void
+xori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (i0 == 0)
+ movr(_jit, r0, r1);
+ else if (i0 == -1)
+ comr(_jit, r0, r1);
+ else if (can_sign_extend_int_p(i0)) {
+ movr(_jit, r0, r1);
+ ixori(_jit, r0, i0);
+ }
+ else if (r0 != r1) {
+ movi(_jit, r0, i0);
+ ixorr(_jit, r0, r1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ixorr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+cr(jit_state_t *_jit, int32_t code, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (reg8_p(r0)) {
+ jit_bool_t same = r0 == r1 || r0 == r2;
+ if (!same)
+ ixorr(_jit, r0, r0);
+ icmpr(_jit, r1, r2);
+ if (same)
+ imovi(_jit, r0, 0);
+ cc(_jit, code, r0);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ ixorr(_jit, rn(reg), rn(reg));
+ icmpr(_jit, r1, r2);
+ cc(_jit, code, rn(reg));
+ movr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ci(jit_state_t *_jit, int32_t code, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (reg8_p(r0)) {
+ jit_bool_t same = r0 == r1;
+ if (!same)
+ ixorr(_jit, r0, r0);
+ icmpi(_jit, r1, i0);
+ if (same)
+ imovi(_jit, r0, 0);
+ cc(_jit, code, r0);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ ixorr(_jit, rn(reg), rn(reg));
+ icmpi(_jit, r1, i0);
+ cc(_jit, code, rn(reg));
+ movr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ci0(jit_state_t *_jit, int32_t code, int32_t r0, int32_t r1)
+{
+ if (reg8_p(r0)) {
+ jit_bool_t same = r0 == r1;
+ if (!same)
+ ixorr(_jit, r0, r0);
+ testr(_jit, r1, r1);
+ if (same)
+ imovi(_jit, r0, 0);
+ cc(_jit, code, r0);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ ixorr(_jit, rn(reg), rn(reg));
+ testr(_jit, r1, r1);
+ cc(_jit, code, rn(reg));
+ movr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+extr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ if (reg8_p(r1)) {
+ movcr(_jit, r0, r1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movr(_jit, rn(reg), r1);
+ movcr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+extr_uc(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ if (reg8_p(r1)) {
+ movcr_u(_jit, r0, r1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movr(_jit, rn(reg), r1);
+ movcr_u(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+extr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return movsr(_jit, r0, r1);
+}
+
+static void
+extr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return movsr_u(_jit, r0, r1);
+}
+
+#if __X64 && !__X64_32
+static void
+extr_i(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return movir(_jit, r0, r1);
+}
+static void
+extr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return movir_u(_jit, r0, r1);
+}
+#endif
+
+static void
+bswapr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ extr_us(_jit, r0, r1);
+ ic(_jit, 0x66);
+ rex(_jit, 0, 0, _NOREG, _NOREG, r0);
+ ic(_jit, 0xc1);
+ mrm(_jit, 0x03, X86_ROR, r7(r0));
+ ic(_jit, 8);
+}
+
+static void
+bswapr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ movr(_jit, r0, r1);
+ rex(_jit, 0, 0, _NOREG, _NOREG, r0);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xc8 | r7(r0));
+}
+
+#if __X64 && !__X64_32
+static void
+bswapr_ul(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ movr(_jit, r0, r1);
+ rex(_jit, 0, 1, _NOREG, _NOREG, r0);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xc8 | r7(r0));
+}
+#endif
+
+static void
+ldr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbe);
+ rx(_jit, r0, 0, r1, _NOREG, _SCL1);
+}
+
+static void
+ldi_c(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, r0, _NOREG, _NOREG);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbe);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldr_c(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ldr_uc(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb6);
+ rx(_jit, r0, 0, r1, _NOREG, _SCL1);
+}
+
+static void
+ldi_uc(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, r0, _NOREG, _NOREG);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb6);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldr_uc(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ldr_s(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbf);
+ rx(_jit, r0, 0, r1, _NOREG, _SCL1);
+}
+
+static void
+ldi_s(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, r0, _NOREG, _NOREG);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbf);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldr_s(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ldr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb7);
+ rx(_jit, r0, 0, r1, _NOREG, _SCL1);
+}
+
+static void
+ldi_us(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, r0, _NOREG, _NOREG);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb7);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldr_us(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+#if __X32 || !__X64_32
+static void
+ldr_i(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+#if __X64
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x63);
+#else
+ ic(_jit, 0x8b);
+#endif
+ rx(_jit, r0, 0, r1, _NOREG, _SCL1);
+}
+
+static void
+ldi_i(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+#if __X64
+ rex(_jit, 0, WIDE, r0, _NOREG, _NOREG);
+ ic(_jit, 0x63);
+#else
+ ic(_jit, 0x8b);
+#endif
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldr_i(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+#endif
+
+#if __X64
+static void
+ldr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, 0, r0, _NOREG, r1);
+ ic(_jit, 0x63);
+ rx(_jit, r0, 0, r1, _NOREG, _SCL1);
+}
+
+static void
+ldi_ui(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, 0, r0, _NOREG, _NOREG);
+ ic(_jit, 0x63);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldr_ui(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+# if !__X64_32
+static void
+ldr_l(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, 1, r0, _NOREG, r1);
+ ic(_jit, 0x8b);
+ rx(_jit, r0, 0, r1, _NOREG, _SCL1);
+}
+
+static void
+ldi_l(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, 1, r0, _NOREG, _NOREG);
+ ic(_jit, 0x8b);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldr_l(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+# endif
+#endif
+
+static void
+ldxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ addr(_jit, r0, r1, r2);
+ ldr_c(r0, r0);
+#else
+ rex(_jit, 0, WIDE, r0, r1, r2);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbe);
+ rx(_jit, r0, 0, r2, r1, _SCL1);
+#endif
+}
+
+static void
+ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbe);
+ rx(_jit, r0, i0, r1, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldxr_c(_jit, r0, r1, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ldxr_uc(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ addr(_jit, r0, r1, r2);
+ ldr_uc(_jit, r0, r0);
+#else
+ rex(_jit, 0, WIDE, r0, r1, r2);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb6);
+ rx(_jit, r0, 0, r2, r1, _SCL1);
+#endif
+}
+
+static void
+ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb6);
+ rx(_jit, r0, i0, r1, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldxr_uc(_jit, r0, r1, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ldxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ addr(_jit, r0, r1, r2);
+ ldr_s(_jit, r0, r0);
+#else
+ rex(_jit, 0, WIDE, r0, r1, r2);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbf);
+ rx(_jit, r0, 0, r2, r1, _SCL1);
+#endif
+}
+
+static void
+ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xbf);
+ rx(_jit, r0, i0, r1, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldxr_s(_jit, r0, r1, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ldxr_us(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ addr(_jit, r0, r1, r2);
+ ldr_us(_jit, r0, r0);
+#else
+ rex(_jit, 0, WIDE, r0, r1, r2);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb7);
+ rx(_jit, r0, 0, r2, r1, _SCL1);
+#endif
+}
+
+static void
+ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, 0xb7);
+ rx(_jit, r0, i0, r1, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldxr_us(_jit, r0, r1, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+#if __X64 || !__X64_32
+static void
+ldxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64
+ rex(_jit, 0, WIDE, r0, r1, r2);
+ ic(_jit, 0x63);
+#else
+ ic(_jit, 0x8b);
+#endif
+ rx(_jit, r0, 0, r2, r1, _SCL1);
+}
+
+static void
+ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+#if __X64
+ rex(_jit, 0, WIDE, r0, _NOREG, r1);
+ ic(_jit, 0x63);
+#else
+ ic(_jit, 0x8b);
+#endif
+ rx(_jit, r0, i0, r1, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldxr_i(_jit, r0, r1, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+#endif
+
+#if __X64
+static void
+ldxr_ui(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ addr(_jit, r0, r1, r2);
+ /* to avoid confusion with macro renames */
+ _ldr_ui(_jit, r0, r0);
+#else
+ rex(_jit, 0, 0, r0, r1, r2);
+ ic(_jit, 0x8b);
+ rx(_jit, r0, 0, r2, r1, _SCL1);
+#endif
+}
+
+static void
+ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, 0, r0, _NOREG, r1);
+ ic(_jit, 0x8b);
+ rx(_jit, r0, i0, r1, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldxr_ui(_jit, r0, r1, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+# if !__X64_32
+static void
+ldxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ rex(_jit, 0, 1, r0, r1, r2);
+ ic(_jit, 0x8b);
+ rx(_jit, r0, 0, r2, r1, _SCL1);
+}
+
+static void
+ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, 1, r0, _NOREG, r1);
+ ic(_jit, 0x8b);
+ rx(_jit, r0, i0, r1, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldxr_l(_jit, r0, r1, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+# endif
+#endif
+
+static void
+str_c(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ if (reg8_p(r1)) {
+ rex(_jit, 0, 0, r1, _NOREG, r0);
+ ic(_jit, 0x88);
+ rx(_jit, r1, 0, r0, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movr(_jit, rn(reg), r1);
+ rex(_jit, 0, 0, rn(reg), _NOREG, r0);
+ ic(_jit, 0x88);
+ rx(_jit, rn(reg), 0, r0, _NOREG, _SCL1);
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+sti_c(jit_state_t *_jit, jit_word_t i0, int32_t r0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ if (reg8_p(r0)) {
+ rex(_jit, 0, 0, r0, _NOREG, _NOREG);
+ ic(_jit, 0x88);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movr(_jit, rn(reg), r0);
+ rex(_jit, 0, 0, rn(reg), _NOREG, _NOREG);
+ ic(_jit, 0x88);
+ rx(_jit, rn(reg), i0, _NOREG, _NOREG, _SCL1);
+ unget_temp_gpr(_jit);
+ }
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ str_c(_jit, rn(reg), r0);
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+str_s(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ic(_jit, 0x66);
+ rex(_jit, 0, 0, r1, _NOREG, r0);
+ ic(_jit, 0x89);
+ rx(_jit, r1, 0, r0, _NOREG, _SCL1);
+}
+
+static void
+sti_s(jit_state_t *_jit, jit_word_t i0, int32_t r0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ ic(_jit, 0x66);
+ rex(_jit, 0, 0, r0, _NOREG, _NOREG);
+ ic(_jit, 0x89);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ str_s(_jit, rn(reg), r0);
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+str_i(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, 0, r1, _NOREG, r0);
+ ic(_jit, 0x89);
+ rx(_jit, r1, 0, r0, _NOREG, _SCL1);
+}
+
+static void
+sti_i(jit_state_t *_jit, jit_word_t i0, int32_t r0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, 0, r0, _NOREG, _NOREG);
+ ic(_jit, 0x89);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ str_i(_jit, rn(reg), r0);
+ unget_temp_gpr(_jit);
+ }
+}
+
+#if __X64 && !__X64_32
+static void
+str_l(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, 1, r1, _NOREG, r0);
+ ic(_jit, 0x89);
+ rx(_jit, r1, 0, r0, _NOREG, _SCL1);
+}
+
+static void
+sti_l(jit_state_t *_jit, jit_word_t i0, int32_t r0)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, 1, r0, _NOREG, _NOREG);
+ ic(_jit, 0x89);
+ rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ str_l(_jit, rn(reg), r0);
+ unget_temp_gpr(_jit);
+ }
+}
+#endif
+
+static void
+stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ addr(_jit, rn(reg), r0, r1);
+ str_c(_jit, rn(reg), r2);
+ unget_temp_gpr(_jit);
+#else
+ if (reg8_p(r2)) {
+ rex(_jit, 0, 0, r2, r1, r0);
+ ic(_jit, 0x88);
+ rx(_jit, r2, 0, r0, r1, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movr(_jit, rn(reg), r2);
+ rex(_jit, 0, 0, rn(reg), r1, r0);
+ ic(_jit, 0x88);
+ rx(_jit, rn(reg), 0, r0, r1, _SCL1);
+ unget_temp_gpr(_jit);
+ }
+#endif
+}
+
+static void
+stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
+{
+ if (can_sign_extend_int_p(i0)) {
+ if (reg8_p(r1)) {
+ rex(_jit, 0, 0, r1, _NOREG, r0);
+ ic(_jit, 0x88);
+ rx(_jit, r1, i0, r0, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movr(_jit, rn(reg), r1);
+ rex(_jit, 0, 0, rn(reg), _NOREG, r0);
+ ic(_jit, 0x88);
+ rx(_jit, rn(reg), i0, r0, _NOREG, _SCL1);
+ unget_temp_gpr(_jit);
+ }
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ stxr_c(_jit, rn(reg), r0, r1);
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ addr(_jit, rn(reg), r0, r1);
+ str_s(_jit, rn(reg), r2);
+ unget_temp_gpr(_jit);
+#else
+ ic(_jit, 0x66);
+ rex(_jit, 0, 0, r2, r1, r0);
+ ic(_jit, 0x89);
+ rx(_jit, r2, 0, r0, r1, _SCL1);
+#endif
+}
+
+static void
+stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
+{
+ if (can_sign_extend_int_p(i0)) {
+ ic(_jit, 0x66);
+ rex(_jit, 0, 0, r1, _NOREG, r0);
+ ic(_jit, 0x89);
+ rx(_jit, r1, i0, r0, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ stxr_s(_jit, rn(reg), r0, r1);
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ addr(_jit, rn(reg), r0, r1);
+ str_i(rn(reg), r2);
+ unget_temp_gpr(_jit);
+#else
+ rex(_jit, 0, 0, r2, r1, r0);
+ ic(_jit, 0x89);
+ rx(_jit, r2, 0, r0, r1, _SCL1);
+#endif
+}
+
+static void
+stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, 0, r1, _NOREG, r0);
+ ic(_jit, 0x89);
+ rx(_jit, r1, i0, r0, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ stxr_i(_jit, rn(reg), r0, r1);
+ unget_temp_gpr(_jit);
+ }
+}
+
+#if __X64 && !__X64_32
+static void
+stxr_l(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ rex(_jit, 0, 1, r2, r1, r0);
+ ic(_jit, 0x89);
+ rx(_jit, r2, 0, r0, r1, _SCL1);
+}
+
+static void
+stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
+{
+ if (can_sign_extend_int_p(i0)) {
+ rex(_jit, 0, 1, r1, _NOREG, r0);
+ ic(_jit, 0x89);
+ rx(_jit, r1, i0, r0, _NOREG, _SCL1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ stxr_l(_jit, rn(reg), r0, r1);
+ unget_temp_gpr(_jit);
+ }
+}
+#endif
+
+static jit_reloc_t
+jccs(jit_state_t *_jit, int32_t code)
+{
+ ic(_jit, 0x70 | code);
+ return jit_reloc(_jit, JIT_RELOC_REL8, 1, 0);
+}
+
+static jit_reloc_t
+jcc(jit_state_t *_jit, int32_t code)
+{
+ ic(_jit, 0x0f);
+ ic(_jit, 0x80 | code);
+ return jit_reloc(_jit, JIT_RELOC_REL32, 2, 0);
+}
+
+#define DEFINE_JUMPS(cc, CC, code) \
+ static inline jit_reloc_t j##cc(jit_state_t *_jit) \
+ { \
+ return jcc(_jit, X86_CC_##CC); \
+ } \
+ static inline jit_reloc_t j##cc##s(jit_state_t *_jit) \
+ { \
+ return jccs(_jit, X86_CC_##CC); \
+ }
+FOR_EACH_CC(DEFINE_JUMPS)
+#undef DEFINE_JUMPS
+
+static jit_reloc_t
+jcr(jit_state_t *_jit, int32_t code, int32_t r0, int32_t r1)
+{
+ alur(_jit, X86_CMP, r0, r1);
+ return jcc(_jit, code);
+}
+
+static jit_reloc_t
+jci(jit_state_t *_jit, int32_t code, int32_t r0, jit_word_t i0)
+{
+ alui(_jit, X86_CMP, r0, i0);
+ return jcc(_jit, code);
+}
+
+static jit_reloc_t
+jci0(jit_state_t *_jit, int32_t code, int32_t r0)
+{
+ testr(_jit, r0, r0);
+ return jcc(_jit, code);
+}
+
+static jit_reloc_t
+bltr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr(_jit, X86_CC_L, r0, r1);
+}
+
+static jit_reloc_t
+blti(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (i1) return jci (_jit, X86_CC_L, r0, i1);
+ else return jci0(_jit, X86_CC_S, r0);
+}
+
+static jit_reloc_t
+bltr_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr(_jit, X86_CC_B, r0, r1);
+}
+
+static jit_reloc_t
+blti_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (i1) return jci (_jit, X86_CC_B, r0, i1);
+ else return jci0(_jit, X86_CC_B, r0);
+}
+
+static jit_reloc_t
+bler(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr (_jit, X86_CC_LE, r0, r1);
+}
+
+static jit_reloc_t
+blei(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (i1) return jci (_jit, X86_CC_LE, r0, i1);
+ else return jci0(_jit, X86_CC_LE, r0);
+}
+
+static jit_reloc_t
+bler_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr (_jit, X86_CC_BE, r0, r1);
+}
+
+static jit_reloc_t
+blei_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (i1) return jci (_jit, X86_CC_BE, r0, i1);
+ else return jci0(_jit, X86_CC_BE, r0);
+}
+
+static jit_reloc_t
+beqr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr (_jit, X86_CC_E, r0, r1);
+}
+
+static jit_reloc_t
+beqi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (i1) return jci (_jit, X86_CC_E, r0, i1);
+ else return jci0(_jit, X86_CC_E, r0);
+}
+
+static jit_reloc_t
+bger(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr (_jit, X86_CC_GE, r0, r1);
+}
+
+static jit_reloc_t
+bgei(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (i1) return jci (_jit, X86_CC_GE, r0, i1);
+ else return jci0(_jit, X86_CC_NS, r0);
+}
+
+static jit_reloc_t
+bger_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr (_jit, X86_CC_AE, r0, r1);
+}
+
+static jit_reloc_t
+bgei_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ return jci (_jit, X86_CC_AE, r0, i1);
+}
+
+static jit_reloc_t
+bgtr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr(_jit, X86_CC_G, r0, r1);
+}
+
+static jit_reloc_t
+bgti(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ return jci(_jit, X86_CC_G, r0, i1);
+}
+
+static jit_reloc_t
+bgtr_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr(_jit, X86_CC_A, r0, r1);
+}
+
+static jit_reloc_t
+bgti_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (i1) return jci (_jit, X86_CC_A, r0, i1);
+ else return jci0(_jit, X86_CC_NE, r0);
+}
+
+static jit_reloc_t
+bner(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ return jcr(_jit, X86_CC_NE, r0, r1);
+}
+
+static jit_reloc_t
+bnei(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (i1) return jci (_jit, X86_CC_NE, r0, i1);
+ else return jci0(_jit, X86_CC_NE, r0);
+}
+
+static jit_reloc_t
+bmsr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ testr(_jit, r0, r1);
+ return jnz(_jit);
+}
+
+static jit_reloc_t
+bmsi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_zero_extend_int_p(i1)) {
+ testi(_jit, r0, i1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i1);
+ testr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+ return jnz(_jit);
+}
+
+static jit_reloc_t
+bmcr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ testr(_jit, r0, r1);
+ return jz(_jit);
+}
+
+static jit_reloc_t
+bmci(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_zero_extend_int_p(i1)) {
+ testi(_jit, r0, i1);
+ } else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i1);
+ testr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+ return jz(_jit);
+}
+
+static jit_reloc_t
+boaddr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ iaddr(_jit, r0, r1);
+ return jo(_jit);
+}
+
+static jit_reloc_t
+boaddi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_sign_extend_int_p(i1)) {
+ iaddi(_jit, r0, i1);
+ return jo(_jit);
+ }
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i1);
+ unget_temp_gpr(_jit);
+ return boaddr(_jit, r0, rn(reg));
+}
+
+static jit_reloc_t
+boaddr_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ iaddr(_jit, r0, r1);
+ return jc(_jit);
+}
+
+static jit_reloc_t
+boaddi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_sign_extend_int_p(i1)) {
+ iaddi(_jit, r0, i1);
+ return jc(_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));
+}
+
+static jit_reloc_t
+bxaddr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ iaddr(_jit, r0, r1);
+ return jno(_jit);
+}
+
+static jit_reloc_t
+bxaddi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_sign_extend_int_p(i1)) {
+ iaddi(_jit, r0, i1);
+ return jno(_jit);
+ }
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i1);
+ unget_temp_gpr(_jit);
+ return bxaddr(_jit, r0, rn(reg));
+}
+
+static jit_reloc_t
+bxaddr_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ iaddr(_jit, r0, r1);
+ return jnc(_jit);
+}
+
+static jit_reloc_t
+bxaddi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_sign_extend_int_p(i1)) {
+ iaddi(_jit, r0, i1);
+ return jnc(_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));
+}
+
+static jit_reloc_t
+bosubr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ isubr(_jit, r0, r1);
+ return jo(_jit);
+}
+
+static jit_reloc_t
+bosubi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_sign_extend_int_p(i1)) {
+ isubi(_jit, r0, i1);
+ return jo(_jit);
+ }
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i1);
+ unget_temp_gpr(_jit);
+ return bosubr(_jit, r0, rn(reg));
+}
+
+static jit_reloc_t
+bosubr_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ isubr(_jit, r0, r1);
+ return jc(_jit);
+}
+
+static jit_reloc_t
+bosubi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_sign_extend_int_p(i1)) {
+ isubi(_jit, r0, i1);
+ return jc(_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));
+}
+
+static jit_reloc_t
+bxsubr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ isubr(_jit, r0, r1);
+ return jno(_jit);
+}
+
+static jit_reloc_t
+bxsubi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_sign_extend_int_p(i1)) {
+ isubi(_jit, r0, i1);
+ return jno(_jit);
+ }
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i1);
+ unget_temp_gpr(_jit);
+ return bxsubr(_jit, r0, rn(reg));
+}
+
+static jit_reloc_t
+bxsubr_u(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ isubr(_jit, r0, r1);
+ return jnc(_jit);
+}
+
+static jit_reloc_t
+bxsubi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
+{
+ if (can_sign_extend_int_p(i1)) {
+ isubi(_jit, r0, i1);
+ return jnc(_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));
+}
+
+static void
+callr(jit_state_t *_jit, int32_t r0)
+{
+ rex(_jit, 0, 0, _NOREG, _NOREG, r0);
+ ic(_jit, 0xff);
+ mrm(_jit, 0x03, 0x02, r7(r0));
+}
+
+static void
+calli(jit_state_t *_jit, jit_word_t i0)
+{
+ ptrdiff_t rel32 = i0 - (_jit->pc.w + 4);
+ if (INT32_MIN <= rel32 && rel32 <= INT32_MAX)
+ {
+ ic(_jit, 0xe8);
+ ii(_jit, rel32);
+ }
+ else
+ {
+ 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);
+ }
+}
+
+static void
+jmpr(jit_state_t *_jit, int32_t r0)
+{
+ rex(_jit, 0, WIDE, _NOREG, _NOREG, r0);
+ ic(_jit, 0xff);
+ mrm(_jit, 0x03, 0x04, r7(r0));
+}
+
+static void
+jmpi(jit_state_t *_jit, jit_word_t i0)
+{
+ ptrdiff_t rel32 = i0 - (_jit->pc.w + 4);
+ if (INT32_MIN <= rel32 && rel32 <= INT32_MAX)
+ {
+ ic(_jit, 0xe9);
+ ii(_jit, rel32);
+ }
+ else
+ {
+ 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);
+ }
+}
+
+static jit_reloc_t
+jmp(jit_state_t *_jit)
+{
+ ic(_jit, 0xe9);
+ return jit_reloc(_jit, JIT_RELOC_REL32, 1, 0);
+}
+
+static jit_reloc_t
+jmpsi(jit_state_t *_jit)
+{
+ ic(_jit, 0xeb);
+ return jit_reloc(_jit, JIT_RELOC_REL8, 1, 0);
+}
+
+static void
+ret(jit_state_t *_jit)
+{
+ ic(_jit, 0xc3);
+}
+
+static void
+retr(jit_state_t *_jit, int32_t r0)
+{
+ movr(_jit, _RAX_REGNO, r0);
+ ret(_jit);
+}
+
+static void
+reti(jit_state_t *_jit, jit_word_t i0)
+{
+ movi(_jit, _RAX_REGNO, i0);
+ ret(_jit);
+}
+
+static void
+retval_c(jit_state_t *_jit, int32_t r0)
+{
+ extr_c(_jit, r0, rn(JIT_RET));
+}
+
+static void
+retval_uc(jit_state_t *_jit, int32_t r0)
+{
+ extr_uc(_jit, r0, rn(JIT_RET));
+}
+
+static void
+retval_s(jit_state_t *_jit, int32_t r0)
+{
+ extr_s(_jit, r0, rn(JIT_RET));
+}
+
+static void
+retval_us(jit_state_t *_jit, int32_t r0)
+{
+ extr_us(_jit, r0, rn(JIT_RET));
+}
+
+static void
+retval_i(jit_state_t *_jit, int32_t r0)
+{
+#if __X32 || __X64_32
+ movr(_jit, r0, rn(JIT_RET));
+#else
+ extr_i(_jit, r0, rn(JIT_RET));
+#endif
+}
+
+#if __X64 && !__X64_32
+static void
+retval_ui(jit_state_t *_jit, int32_t r0)
+{
+ extr_ui(_jit, r0, rn(JIT_RET));
+}
+
+static void
+retval_l(jit_state_t *_jit, int32_t r0)
+{
+ movr(_jit, r0, rn(JIT_RET));
+}
+#endif
diff --git a/libguile/lightning/jit/x86-sse.c b/libguile/lightning/jit/x86-sse.c
new file mode 100644
index 000000000..44d990545
--- /dev/null
+++ b/libguile/lightning/jit/x86-sse.c
@@ -0,0 +1,1036 @@
+/*
+ * Copyright (C) 2012-2017, 2019 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU lightning.
+ *
+ * GNU lightning is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU lightning is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * Authors:
+ * Paulo Cesar Pereira de Andrade
+ */
+
+#define _XMM0_REGNO 0
+#define _XMM1_REGNO 1
+#define _XMM2_REGNO 2
+#define _XMM3_REGNO 3
+#define _XMM4_REGNO 4
+#define _XMM5_REGNO 5
+#define _XMM6_REGNO 6
+#define _XMM7_REGNO 7
+#define _XMM8_REGNO 8
+#define _XMM9_REGNO 9
+#define _XMM10_REGNO 10
+#define _XMM11_REGNO 11
+#define _XMM12_REGNO 12
+#define _XMM13_REGNO 13
+#define _XMM14_REGNO 14
+#define _XMM15_REGNO 15
+#define X86_SSE_MOV 0x10
+#define X86_SSE_MOV1 0x11
+#define X86_SSE_MOVLP 0x12
+#define X86_SSE_MOVHP 0x16
+#define X86_SSE_MOVA 0x28
+#define X86_SSE_CVTIS 0x2a
+#define X86_SSE_CVTTSI 0x2c
+#define X86_SSE_CVTSI 0x2d
+#define X86_SSE_UCOMI 0x2e
+#define X86_SSE_COMI 0x2f
+#define X86_SSE_ROUND 0x3a
+#define X86_SSE_SQRT 0x51
+#define X86_SSE_RSQRT 0x52
+#define X86_SSE_RCP 0x53
+#define X86_SSE_AND 0x54
+#define X86_SSE_ANDN 0x55
+#define X86_SSE_OR 0x56
+#define X86_SSE_XOR 0x57
+#define X86_SSE_ADD 0x58
+#define X86_SSE_MUL 0x59
+#define X86_SSE_CVTSD 0x5a
+#define X86_SSE_CVTDT 0x5b
+#define X86_SSE_SUB 0x5c
+#define X86_SSE_MIN 0x5d
+#define X86_SSE_DIV 0x5e
+#define X86_SSE_MAX 0x5f
+#define X86_SSE_X2G 0x6e
+#define X86_SSE_EQB 0x74
+#define X86_SSE_EQW 0x75
+#define X86_SSE_EQD 0x76
+#define X86_SSE_G2X 0x7e
+#define X86_SSE_MOV2 0xd6
+
+static void
+sser(jit_state_t *_jit, int32_t c, int32_t r0, int32_t r1)
+{
+ rex(_jit, 0, 0, r0, 0, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, c);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+}
+
+static void
+ssexr(jit_state_t *_jit, int32_t p, int32_t c,
+ int32_t r0, int32_t r1)
+{
+ ic(_jit, p);
+ rex(_jit, 0, 0, r0, 0, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, c);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+}
+
+static void
+ssexi(jit_state_t *_jit, int32_t c, int32_t r0,
+ int32_t m, int32_t i)
+{
+ ic(_jit, 0x66);
+ rex(_jit, 0, 0, 0, 0, r0);
+ ic(_jit, 0x0f);
+ ic(_jit, c);
+ mrm(_jit, 0x03, r7(m), r7(r0));
+ ic(_jit, i);
+}
+
+static void
+sselxr(jit_state_t *_jit, int32_t p, int32_t c, int32_t r0, int32_t r1)
+{
+ if (__X64 && !__X64_32) {
+ ic(_jit, p);
+ rex(_jit, 0, 1, r0, 0, r1);
+ ic(_jit, 0x0f);
+ ic(_jit, c);
+ mrm(_jit, 0x03, r7(r0), r7(r1));
+ } else {
+ ssexr(_jit, p, c, r0, r1);
+ }
+}
+
+static void
+ssexrx(jit_state_t *_jit, int32_t px, int32_t code, int32_t md,
+ int32_t rb, int32_t ri, int32_t ms, int32_t rd)
+{
+ ic(_jit, px);
+ rex(_jit, 0, 0, rd, ri, rb);
+ ic(_jit, 0x0f);
+ ic(_jit, code);
+ rx(_jit, rd, md, rb, ri, ms);
+}
+
+static void
+movdlxr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0x66, X86_SSE_X2G, r0, r1);
+}
+static void
+movdqxr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ sselxr(_jit, 0x66, X86_SSE_X2G, r0, r1);
+}
+
+static void
+movssmr(jit_state_t *_jit, int32_t md, int32_t rb, int32_t ri, int32_t ms, int32_t rd)
+{
+ ssexrx(_jit, 0xf3, X86_SSE_MOV, md, rb, ri, ms, rd);
+}
+static void
+movsdmr(jit_state_t *_jit, int32_t md, int32_t rb, int32_t ri, int32_t ms, int32_t rd)
+{
+ ssexrx(_jit, 0xf2, X86_SSE_MOV, md, rb, ri, ms, rd);
+}
+static void
+movssrm(jit_state_t *_jit, int32_t rs, int32_t md, int32_t mb, int32_t mi, int32_t ms)
+{
+ ssexrx(_jit, 0xf3, X86_SSE_MOV1, md, mb, mi, ms, rs);
+}
+static void
+movsdrm(jit_state_t *_jit, int32_t rs, int32_t md, int32_t mb, int32_t mi, int32_t ms)
+{
+ ssexrx(_jit, 0xf2, X86_SSE_MOV1, md, mb, mi, ms, rs);
+}
+
+static void
+movr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ if (r0 != r1)
+ ssexr(_jit, 0xf3, X86_SSE_MOV, r0, r1);
+}
+
+static void
+movr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ if (r0 != r1)
+ ssexr(_jit, 0xf2, X86_SSE_MOV, r0, r1);
+}
+
+static void
+pushr_d(jit_state_t *_jit, int32_t r0)
+{
+ jit_gpr_t tmp = get_temp_gpr(_jit);
+ movdqxr(_jit, rn(tmp), r0);
+ pushr(_jit, rn(tmp));
+ unget_temp_gpr(_jit);
+}
+
+static void
+popr_d(jit_state_t *_jit, int32_t r0)
+{
+ jit_gpr_t tmp = get_temp_gpr(_jit);
+ popr(_jit, rn(tmp));
+ ssexr(_jit, 0x66, X86_SSE_G2X, r0, rn(tmp));
+ unget_temp_gpr(_jit);
+}
+
+static jit_fpr_t
+get_temp_xpr(jit_state_t *_jit)
+{
+ /* Reserve XMM7 for the JIT. */
+ ASSERT(!_jit->temp_fpr_saved);
+ _jit->temp_fpr_saved = 1;
+ return JIT_FPR(_XMM7);
+}
+
+static void
+unget_temp_xpr(jit_state_t *_jit)
+{
+ ASSERT(_jit->temp_fpr_saved);
+ _jit->temp_fpr_saved = 0;
+}
+
+static void
+addssr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf3, X86_SSE_ADD, r0, r1);
+}
+static void
+addsdr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf2, X86_SSE_ADD, r0, r1);
+}
+static void
+subssr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf3, X86_SSE_SUB, r0, r1);
+}
+static void
+subsdr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf2, X86_SSE_SUB, r0, r1);
+}
+static void
+mulssr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf3, X86_SSE_MUL, r0, r1);
+}
+static void
+mulsdr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf2, X86_SSE_MUL, r0, r1);
+}
+static void
+divssr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf3, X86_SSE_DIV, r0, r1);
+}
+static void
+divsdr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf2, X86_SSE_DIV, r0, r1);
+}
+static void
+andpsr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ sser(_jit, X86_SSE_AND, r0, r1);
+}
+static void
+andpdr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0x66, X86_SSE_AND, r0, r1);
+}
+static void
+truncr_f_i(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf3, X86_SSE_CVTTSI, r0, r1);
+}
+static void
+truncr_d_i(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf2, X86_SSE_CVTTSI, r0, r1);
+}
+#if __X64
+static void
+truncr_f_l(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ sselxr(_jit, 0xf3, X86_SSE_CVTTSI, r0, r1);
+}
+static void
+truncr_d_l(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ sselxr(_jit, 0xf2, X86_SSE_CVTTSI, r0, r1);
+}
+#endif
+static void
+extr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ sselxr(_jit, 0xf3, X86_SSE_CVTIS, r0, r1);
+}
+static void
+extr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ sselxr(_jit, 0xf2, X86_SSE_CVTIS, r0, r1);
+}
+
+static void
+extr_f_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf3, X86_SSE_CVTSD, r0, r1);
+}
+static void
+extr_d_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf2, X86_SSE_CVTSD, r0, r1);
+}
+static void
+ucomissr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ sser(_jit, X86_SSE_UCOMI, r0, r1);
+}
+static void
+ucomisdr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0x66, X86_SSE_UCOMI, r0, r1);
+}
+static void
+xorpsr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ sser(_jit, X86_SSE_XOR, r0, r1);
+}
+static void
+xorpdr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0x66, X86_SSE_XOR, r0, r1);
+}
+static void
+pcmpeqlr(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0x66, X86_SSE_EQD, r0, r1);
+}
+static void
+psrl(jit_state_t *_jit, int32_t r0, int32_t i0)
+{
+ ssexi(_jit, 0x72, r0, 0x02, i0);
+}
+static void
+psrq(jit_state_t *_jit, int32_t r0, int32_t i0)
+{
+ ssexi(_jit, 0x73, r0, 0x02, i0);
+}
+static void
+pslq(jit_state_t *_jit, int32_t r0, int32_t i0)
+{
+ ssexi(_jit, 0x73, r0, 0x06, i0);
+}
+static void
+sqrtr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf3, X86_SSE_SQRT, r0, r1);
+}
+static void
+sqrtr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ssexr(_jit, 0xf2, X86_SSE_SQRT, r0, r1);
+}
+static void
+ldr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ movssmr(_jit, 0, r1, _NOREG, _SCL1, r0);
+}
+static void
+str_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ movssrm(_jit, r1, 0, r0, _NOREG, _SCL1);
+}
+static void
+ldr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ movsdmr(_jit, 0, r1, _NOREG, _SCL1, r0);
+}
+static void
+str_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ movsdrm(_jit, r1, 0, r0, _NOREG, _SCL1);
+}
+
+static void
+movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t i0)
+{
+ union {
+ int32_t i;
+ jit_float32_t f;
+ } data;
+
+ data.f = i0;
+ if (data.f == 0.0 && !(data.i & 0x80000000))
+ xorpsr(_jit, r0, r0);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), data.i);
+ movdlxr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t i0)
+{
+ union {
+ int32_t ii[2];
+ jit_word_t w;
+ jit_float64_t d;
+ } data;
+
+ data.d = i0;
+ if (data.d == 0.0 && !(data.ii[1] & 0x80000000))
+ xorpdr(_jit, r0, r0);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+#if __X64 && !__X64_32
+ movi(_jit, rn(reg), data.w);
+ movdqxr(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+#else
+ movi(_jit, rn(reg), data.ii[0]);
+ stxi_i(CVT_OFFSET, _RBP_REGNO, rn(reg));
+ movi(_jit, rn(reg), data.ii[1]);
+ stxi_i(CVT_OFFSET + 4, _RBP_REGNO, rn(reg));
+ unget_temp_gpr(_jit);
+ ldxi_d(_jit, r0, _RBP_REGNO, CVT_OFFSET);
+#endif
+ }
+}
+
+static void
+retval_f(jit_state_t *_jit, int32_t r0)
+{
+#if __X64
+ movr_f(_jit, r0, rn(JIT_FRET));
+#endif
+}
+
+static void
+retval_d(jit_state_t *_jit, int32_t r0)
+{
+#if __X64
+ movr_d(_jit, r0, rn(JIT_FRET));
+#endif
+}
+
+static void
+retr_f(jit_state_t *_jit, int32_t u)
+{
+ movr_f(_jit, rn(JIT_FRET), u);
+ ret(_jit);
+}
+
+static void
+retr_d(jit_state_t *_jit, int32_t u)
+{
+ movr_d(_jit, rn(JIT_FRET), u);
+ ret(_jit);
+}
+
+static void
+addr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ addssr(_jit, r0, r2);
+ else if (r0 == r2)
+ addssr(_jit, r0, r1);
+ else {
+ movr_f(_jit, r0, r1);
+ addssr(_jit, r0, r2);
+ }
+}
+
+static void
+addr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ addsdr(_jit, r0, r2);
+ else if (r0 == r2)
+ addsdr(_jit, r0, r1);
+ else {
+ movr_d(_jit, r0, r1);
+ addsdr(_jit, r0, r2);
+ }
+}
+
+static void
+subr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ subssr(_jit, r0, r2);
+ else if (r0 == r2) {
+ jit_fpr_t reg = get_temp_xpr(_jit);
+ movr_f(_jit, rn(reg), r0);
+ movr_f(_jit, r0, r1);
+ subssr(_jit, r0, rn(reg));
+ unget_temp_xpr(_jit);
+ }
+ else {
+ movr_f(_jit, r0, r1);
+ subssr(_jit, r0, r2);
+ }
+}
+
+static void
+subr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ subsdr(_jit, r0, r2);
+ else if (r0 == r2) {
+ jit_fpr_t reg = get_temp_xpr(_jit);
+ movr_d(_jit, rn(reg), r0);
+ movr_d(_jit, r0, r1);
+ subsdr(_jit, r0, rn(reg));
+ unget_temp_xpr(_jit);
+ }
+ else {
+ movr_d(_jit, r0, r1);
+ subsdr(_jit, r0, r2);
+ }
+}
+
+static void
+mulr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ mulssr(_jit, r0, r2);
+ else if (r0 == r2)
+ mulssr(_jit, r0, r1);
+ else {
+ movr_f(_jit, r0, r1);
+ mulssr(_jit, r0, r2);
+ }
+}
+
+static void
+mulr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ mulsdr(_jit, r0, r2);
+ else if (r0 == r2)
+ mulsdr(_jit, r0, r1);
+ else {
+ movr_d(_jit, r0, r1);
+ mulsdr(_jit, r0, r2);
+ }
+}
+
+static void
+divr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ divssr(_jit, r0, r2);
+ else if (r0 == r2) {
+ jit_fpr_t reg = get_temp_xpr(_jit);
+ movr_f(_jit, rn(reg), r0);
+ movr_f(_jit, r0, r1);
+ divssr(_jit, r0, rn(reg));
+ unget_temp_xpr(_jit);
+ }
+ else {
+ movr_f(_jit, r0, r1);
+ divssr(_jit, r0, r2);
+ }
+}
+
+static void
+divr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+ if (r0 == r1)
+ divsdr(_jit, r0, r2);
+ else if (r0 == r2) {
+ jit_fpr_t reg = get_temp_xpr(_jit);
+ movr_d(_jit, rn(reg), r0);
+ movr_d(_jit, r0, r1);
+ divsdr(_jit, r0, rn(reg));
+ unget_temp_xpr(_jit);
+ }
+ else {
+ movr_d(_jit, r0, r1);
+ divsdr(_jit, r0, r2);
+ }
+}
+
+static void
+absr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ if (r0 == r1) {
+ jit_fpr_t reg = get_temp_xpr(_jit);
+ pcmpeqlr(_jit, rn(reg), rn(reg));
+ psrl(_jit, rn(reg), 1);
+ andpsr(_jit, r0, rn(reg));
+ unget_temp_xpr(_jit);
+ }
+ else {
+ pcmpeqlr(_jit, r0, r0);
+ psrl(_jit, r0, 1);
+ andpsr(_jit, r0, r1);
+ }
+}
+
+static void
+absr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ if (r0 == r1) {
+ jit_fpr_t reg = get_temp_xpr(_jit);
+ pcmpeqlr(_jit, rn(reg), rn(reg));
+ psrq(_jit, rn(reg), 1);
+ andpdr(_jit, r0, rn(reg));
+ unget_temp_xpr(_jit);
+ }
+ else {
+ pcmpeqlr(_jit, r0, r0);
+ psrq(_jit, r0, 1);
+ andpdr(_jit, r0, r1);
+ }
+}
+
+static void
+negr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ jit_gpr_t ireg = get_temp_gpr(_jit);
+ imovi(_jit, rn(ireg), 0x80000000);
+ if (r0 == r1) {
+ jit_fpr_t freg = get_temp_xpr(_jit);
+ movdlxr(_jit, rn(freg), rn(ireg));
+ xorpsr(_jit, r0, rn(freg));
+ unget_temp_xpr(_jit);
+ } else {
+ movdlxr(_jit, r0, rn(ireg));
+ xorpsr(_jit, r0, r1);
+ }
+ unget_temp_gpr(_jit);
+}
+
+static void
+negr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ jit_gpr_t ireg = get_temp_gpr(_jit);
+ imovi(_jit, rn(ireg), 0x80000000);
+ if (r0 == r1) {
+ jit_fpr_t freg = get_temp_xpr(_jit);
+ movdlxr(_jit, rn(freg), rn(ireg));
+ pslq(_jit, rn(freg), 32);
+ xorpdr(_jit, r0, rn(freg));
+ unget_temp_xpr(_jit);
+ } else {
+ movdlxr(_jit, r0, rn(ireg));
+ pslq(_jit, r0, 32);
+ xorpdr(_jit, r0, r1);
+ }
+ unget_temp_gpr(_jit);
+}
+
+#if __X32
+# define sse_address_p(i0) 1
+#elif __X64_32
+# define sse_address_p(i0) ((jit_word_t)(i0) >= 0)
+# else
+# define sse_address_p(i0) can_sign_extend_int_p(i0)
+#endif
+
+static void
+ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (sse_address_p(i0))
+ movssmr(_jit, i0, _NOREG, _NOREG, _SCL1, r0);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldr_f(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ldxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ addr(_jit, rn(reg), r1, r2);
+ ldr_f(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+#else
+ movssmr(_jit, 0, r1, r2, _SCL1, r0);
+#endif
+}
+
+static void
+ldxi_f(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0))
+ movssmr(_jit, i0, r1, _NOREG, _SCL1, r0);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+#if __X64_32
+ addi(rn(reg), r1, i0);
+ ldr_f(_jit, r0, rn(reg));
+#else
+ movi(_jit, rn(reg), i0);
+ ldxr_f(_jit, r0, r1, rn(reg));
+#endif
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
+{
+ if (sse_address_p(i0))
+ movssrm(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ str_f(_jit, rn(reg), r0);
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+stxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ addr(_jit, rn(reg), r0, r1);
+ str_f(_jit, rn(reg), r2);
+ unget_temp_gpr(_jit);
+#else
+ movssrm(_jit, r2, 0, r0, r1, _SCL1);
+#endif
+}
+
+static void
+stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
+{
+ if (can_sign_extend_int_p(i0))
+ movssrm(_jit, r1, i0, r0, _NOREG, _SCL1);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+#if __X64_32
+ addi(rn(reg), r0, i0);
+ str_f(_jit, rn(reg), r1);
+#else
+ movi(_jit, rn(reg), i0);
+ stxr_f(_jit, rn(reg), r0, r1);
+#endif
+ unget_temp_gpr(_jit);
+ }
+}
+
+static jit_reloc_t
+bltr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r1, r0);
+ return ja(_jit);
+}
+
+static jit_reloc_t
+bler_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r1, r0);
+ return jae(_jit);
+}
+
+static jit_reloc_t
+beqr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ jit_reloc_t pos = jps(_jit);
+ jit_reloc_t ret = je(_jit);
+ jit_patch_here(_jit, pos);
+ return ret;
+}
+
+static jit_reloc_t
+bger_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ return jae(_jit);
+}
+
+static jit_reloc_t
+bgtr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ return ja(_jit);
+}
+
+static jit_reloc_t
+bner_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ jit_reloc_t pos = jps(_jit);
+ jit_reloc_t zero = jzs(_jit);
+ jit_patch_here(_jit, pos);
+ jit_reloc_t ret = jmp(_jit);
+ jit_patch_here(_jit, zero);
+ return ret;
+}
+
+static jit_reloc_t
+bunltr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ return jnae(_jit);
+}
+
+static jit_reloc_t
+bunler_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ return jna(_jit);
+}
+
+static jit_reloc_t
+buneqr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ return je(_jit);
+}
+
+static jit_reloc_t
+bunger_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r1, r0);
+ return jna(_jit);
+}
+
+static jit_reloc_t
+bungtr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r1, r0);
+ return jnae(_jit);
+}
+
+static jit_reloc_t
+bltgtr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ return jne(_jit);
+}
+
+static jit_reloc_t
+bordr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ return jnp(_jit);
+}
+
+static jit_reloc_t
+bunordr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomissr(_jit, r0, r1);
+ return jp(_jit);
+}
+
+static void
+ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
+{
+ if (sse_address_p(i0))
+ movsdmr(_jit, i0, _NOREG, _NOREG, _SCL1, r0);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ ldr_d(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+ldxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ addr(_jit, rn(reg), r1, r2);
+ ldr_d(_jit, r0, rn(reg));
+ unget_temp_gpr(_jit);
+#else
+ movsdmr(_jit, 0, r1, r2, _SCL1, r0);
+#endif
+}
+
+static void
+ldxi_d(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t i0)
+{
+ if (can_sign_extend_int_p(i0))
+ movsdmr(_jit, i0, r1, _NOREG, _SCL1, r0);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+#if __X64_32
+ addi(rn(reg), r1, i0);
+ ldr_d(_jit, r0, rn(reg));
+#else
+ movi(_jit, rn(reg), i0);
+ ldxr_d(_jit, r0, r1, rn(reg));
+#endif
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
+{
+ if (sse_address_p(i0))
+ movsdrm(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ movi(_jit, rn(reg), i0);
+ str_d(_jit, rn(reg), r0);
+ unget_temp_gpr(_jit);
+ }
+}
+
+static void
+stxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
+{
+#if __X64_32
+ jit_gpr_t reg = get_temp_gpr(_jit);
+ addr(_jit, rn(reg), r0, r1);
+ str_d(_jit, rn(reg), r2);
+ unget_temp_gpr(_jit);
+#else
+ movsdrm(_jit, r2, 0, r0, r1, _SCL1);
+#endif
+}
+
+static void
+stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, int32_t r1)
+{
+ if (can_sign_extend_int_p(i0))
+ movsdrm(_jit, r1, i0, r0, _NOREG, _SCL1);
+ else {
+ jit_gpr_t reg = get_temp_gpr(_jit);
+#if __X64_32
+ addi(rn(reg), r0, i0);
+ str_d(_jit, rn(reg), r1);
+#else
+ movi(_jit, rn(reg), i0);
+ stxr_d(_jit, rn(reg), r0, r1);
+#endif
+ unget_temp_gpr(_jit);
+ }
+}
+
+static jit_reloc_t
+bltr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r1, r0);
+ return ja(_jit);
+}
+
+static jit_reloc_t
+bler_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r1, r0);
+ return jae(_jit);
+}
+
+static jit_reloc_t
+beqr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ jit_reloc_t pos = jps(_jit);
+ jit_reloc_t ret = je(_jit);
+ jit_patch_here(_jit, pos);
+ return ret;
+}
+
+static jit_reloc_t
+bger_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ return jae(_jit);
+}
+
+static jit_reloc_t
+bgtr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ return ja(_jit);
+}
+
+static jit_reloc_t
+bner_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ jit_reloc_t pos = jps(_jit);
+ jit_reloc_t zero = jzs(_jit);
+ jit_patch_here(_jit, pos);
+ jit_reloc_t ret = jmp(_jit);
+ jit_patch_here(_jit, zero);
+ return ret;
+}
+
+static jit_reloc_t
+bunltr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ return jnae(_jit);
+}
+
+static jit_reloc_t
+bunler_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ return jna(_jit);
+}
+
+static jit_reloc_t
+buneqr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ return je(_jit);
+}
+
+static jit_reloc_t
+bunger_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r1, r0);
+ return jna(_jit);
+}
+
+static jit_reloc_t
+bungtr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r1, r0);
+ return jnae(_jit);
+}
+
+static jit_reloc_t
+bltgtr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ return jne(_jit);
+}
+
+static jit_reloc_t
+bordr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ return jnp(_jit);
+}
+
+static jit_reloc_t
+bunordr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
+{
+ ucomisdr(_jit, r0, r1);
+ return jp(_jit);
+}
diff --git a/libguile/lightning/lib/jit_x86-x87.c b/libguile/lightning/jit/x86-x87.c
index f6fc8831c..e6f8be5f4 100644
--- a/libguile/lightning/lib/jit_x86-x87.c
+++ b/libguile/lightning/jit/x86-x87.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012-2018 Free Software Foundation, Inc.
+ * Copyright (C) 2012-2017 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
@@ -37,10 +37,8 @@
# define x87rx(code, md, rb, ri, ms) _x87rx(_jit, code, md, rb, ri, ms)
# define fldcwm(md, rb, ri, ms) x87rx(015, md, rb, ri, ms)
# define fstcwm(md, rb, ri, ms) _fstcwm(_jit, md, rb, ri, ms)
-#if defined(sun)
static void
-_fstcwm(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
-#endif
+_fstcwm(jit_state_t*, int32_t, int32_t, int32_t, int32_t);
# define fldsm(md, rb, ri, ms) x87rx(010, md, rb, ri, ms)
# define fstsm(md, rb, ri, ms) x87rx(012, md, rb, ri, ms)
# define fldlm(md, rb, ri, ms) x87rx(050, md, rb, ri, ms)
@@ -51,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, int32_t,
+ int32_t, int32_t, int32_t);
# define x87ri(cc,r0) _x87ri(_jit,cc,r0)
# define fchs_() x87ri(014, 0)
# define fabs_() x87ri(014, 1)
@@ -70,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, 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)
@@ -78,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, int32_t, int32_t);
# define x87_addr_f(r0, r1, r2) _x87_addr_d(_jit, r0, r1, r2)
# define x87_addi_f(r0, r1, i0) _x87_addi_f(_jit, r0, r1, i0)
-static void _x87_addi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_addi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_addr_d(r0, r1, r2) _x87_addr_d(_jit, r0, r1, r2)
-static void _x87_addr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _x87_addr_d(jit_state_t*, int32_t, int32_t, int32_t);
# define x87_addi_d(r0, r1, i0) _x87_addi_d(_jit, r0, r1, i0)
-static void _x87_addi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_addi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_subr_f(r0, r1, r2) _x87_subr_d(_jit, r0, r1, r2)
# define x87_subi_f(r0, r1, i0) _x87_subi_f(_jit, r0, r1, i0)
-static void _x87_subi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_subi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_subr_d(r0, r1, r2) _x87_subr_d(_jit, r0, r1, r2)
-static void _x87_subr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _x87_subr_d(jit_state_t*, int32_t, int32_t, int32_t);
# define x87_subi_d(r0, r1, i0) _x87_subi_d(_jit, r0, r1, i0)
-static void _x87_subi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_subi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_rsbr_f(r0, r1, r2) x87_subr_f(r0, r2, r1)
# define x87_rsbi_f(r0, r1, i0) _x87_rsbi_f(_jit, r0, r1, i0)
-static void _x87_rsbi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_rsbi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_rsbr_d(r0, r1, r2) x87_subr_d(r0, r2, r1)
# define x87_rsbi_d(r0, r1, i0) _x87_rsbi_d(_jit, r0, r1, i0)
-static void _x87_rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_rsbi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_mulr_f(r0, r1, r2) _x87_mulr_d(_jit, r0, r1, r2)
# define x87_muli_f(r0, r1, i0) _x87_muli_f(_jit, r0, r1, i0)
-static void _x87_muli_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_muli_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_mulr_d(r0, r1, r2) _x87_mulr_d(_jit, r0, r1, r2)
-static void _x87_mulr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _x87_mulr_d(jit_state_t*, int32_t, int32_t, int32_t);
# define x87_muli_d(r0, r1, i0) _x87_muli_d(_jit, r0, r1, i0)
-static void _x87_muli_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_muli_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_divr_f(r0, r1, r2) _x87_divr_d(_jit, r0, r1, r2)
# define x87_divi_f(r0, r1, i0) _x87_divi_f(_jit, r0, r1, i0)
-static void _x87_divi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_divi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_divr_d(r0, r1, r2) _x87_divr_d(_jit, r0, r1, r2)
-static void _x87_divr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _x87_divr_d(jit_state_t*, int32_t, int32_t, int32_t);
# define x87_divi_d(r0, r1, i0) _x87_divi_d(_jit, r0, r1, i0)
-static void _x87_divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_divi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_absr_f(r0, r1) _x87_absr_d(_jit, r0, r1)
# define x87_absr_d(r0, r1) _x87_absr_d(_jit, r0, r1)
-static void _x87_absr_d(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _x87_absr_d(jit_state_t*, int32_t, int32_t);
# define x87_negr_f(r0, r1) _x87_negr_d(_jit, r0, r1)
# define x87_negr_d(r0, r1) _x87_negr_d(_jit, r0, r1)
-static void _x87_negr_d(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _x87_negr_d(jit_state_t*, int32_t, int32_t);
# define x87_sqrtr_f(r0, r1) _x87_sqrtr_d(_jit, r0, r1)
# define x87_sqrtr_d(r0, r1) _x87_sqrtr_d(_jit, r0, r1)
-static void _x87_sqrtr_d(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _x87_sqrtr_d(jit_state_t*, int32_t, int32_t);
# define x87_truncr_f_i(r0, r1) _x87_truncr_d_i(_jit, r0, r1)
# define x87_truncr_d_i(r0, r1) _x87_truncr_d_i(_jit, r0, r1)
-static void _x87_truncr_d_i(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _x87_truncr_d_i(jit_state_t*, int32_t, int32_t);
# if __X64
# define x87_truncr_f_l(r0, r1) _x87_truncr_d_l(_jit, r0, r1)
# define x87_truncr_d_l(r0, r1) _x87_truncr_d_l(_jit, r0, r1)
-static void _x87_truncr_d_l(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _x87_truncr_d_l(jit_state_t*, int32_t, int32_t);
# endif
# define x87_extr_f(r0, r1) _x87_extr_d(_jit, r0, r1)
# define x87_extr_d(r0, r1) _x87_extr_d(_jit, r0, r1)
# define x87_extr_f_d(r0, r1) x87_movr_d(r0, r1)
# define x87_extr_d_f(r0, r1) x87_movr_d(r0, r1)
-static void _x87_extr_d(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _x87_extr_d(jit_state_t*, int32_t, int32_t);
# define x87cmp(code, r0, r1, r2) _x87cmp(_jit, code, r0, r1, r2)
static void
-_x87cmp(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
+_x87cmp(jit_state_t*, int32_t, int32_t, int32_t, int32_t);
# define x87cmp2(code, r0, r1, r2) _x87cmp2(_jit, code, r0, r1, r2)
static void
-_x87cmp2(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
+_x87cmp2(jit_state_t*, int32_t, int32_t, int32_t, int32_t);
# define x87jcc(code, i0, r0, r1) _x87jcc(_jit, code, i0, r0, r1)
static jit_word_t
-_x87jcc(jit_state_t*, jit_int32_t, jit_word_t, jit_int32_t, jit_int32_t);
+_x87jcc(jit_state_t*, int32_t, jit_word_t, int32_t, int32_t);
# define x87jcc2(code, i0, r0, r1) _x87jcc2(_jit, code, i0, r0, r1)
static jit_word_t
-_x87jcc2(jit_state_t*, jit_int32_t, jit_word_t, jit_int32_t, jit_int32_t);
+_x87jcc2(jit_state_t*, int32_t, jit_word_t, int32_t, int32_t);
#define x87_movi_f(r0,i0) _x87_movi_f(_jit,r0,i0)
-static void _x87_movi_f(jit_state_t*, 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, 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, int32_t, int32_t);
# define x87_ldxi_f(r0, r1, i0) _x87_ldxi_f(_jit, r0, r1, i0)
-static void _x87_ldxi_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _x87_ldxi_f(jit_state_t*, int32_t, int32_t, jit_word_t);
# define x87_str_f(r0, r1) _x87_str_f(_jit, r0, r1)
-static void _x87_str_f(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _x87_str_f(jit_state_t*,int32_t,int32_t);
# define x87_sti_f(i0, r0) _x87_sti_f(_jit, i0, r0)
-static void _x87_sti_f(jit_state_t*,jit_word_t, 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,int32_t,int32_t);
# define x87_stxi_f(i0, r0, r1) _x87_stxi_f(_jit, i0, r0, r1)
-static void _x87_stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _x87_stxi_f(jit_state_t*,jit_word_t,int32_t,int32_t);
# define x87_ltr_f(r0, r1, r2) x87cmp(X86_CC_A, r0, r2, r1)
# define x87_lti_f(r0, r1, i0) _x87_lti_f(_jit, r0, r1, i0)
-static void _x87_lti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_lti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_ler_f(r0, r1, r2) x87cmp(X86_CC_AE, r0, r2, r1)
# define x87_lei_f(r0, r1, i0) _x87_lei_f(_jit, r0, r1, i0)
-static void _x87_lei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_lei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_eqr_f(r0, r1, r2) x87_eqr_d(r0, r2, r1)
# define x87_eqi_f(r0, r1, i0) _x87_eqi_f(_jit, r0, r1, i0)
-static void _x87_eqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_eqi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_ger_f(r0, r1, r2) x87cmp(X86_CC_AE, r0, r1, r2)
# define x87_gei_f(r0, r1, i0) _x87_gei_f(_jit, r0, r1, i0)
-static void _x87_gei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_gei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_gtr_f(r0, r1, r2) x87cmp(X86_CC_A, r0, r1, r2)
# define x87_gti_f(r0, r1, i0) _x87_gti_f(_jit, r0, r1, i0)
-static void _x87_gti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_gti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_ner_f(r0, r1, r2) x87_ner_d(r0, r2, r1)
# define x87_nei_f(r0, r1, i0) _x87_nei_f(_jit, r0, r1, i0)
-static void _x87_nei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_nei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_unltr_f(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r1, r2)
# define x87_unlti_f(r0, r1, i0) _x87_unlti_f(_jit, r0, r1, i0)
-static void _x87_unlti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_unlti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_unler_f(r0, r1, r2) x87cmp(X86_CC_NA, r0, r1, r2)
# define x87_unlei_f(r0, r1, i0) _x87_unlei_f(_jit, r0, r1, i0)
-static void _x87_unlei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_unlei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_uneqr_f(r0, r1, r2) x87cmp2(X86_CC_E, r0, r1, r2)
# define x87_uneqi_f(r0, r1, i0) _x87_uneqi_f(_jit, r0, r1, i0)
-static void _x87_uneqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_uneqi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_unger_f(r0, r1, r2) x87cmp(X86_CC_NA, r0, r2, r1)
# define x87_ungei_f(r0, r1, i0) _x87_ungei_f(_jit, r0, r1, i0)
-static void _x87_ungei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_ungei_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_ungtr_f(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r2, r1)
# define x87_ungti_f(r0, r1, i0) _x87_ungti_f(_jit, r0, r1, i0)
-static void _x87_ungti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_ungti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_ltgtr_f(r0, r1, r2) x87_ltgtr_d(r0, r1, r2)
# define x87_ltgti_f(r0, r1, i0) _x87_ltgti_f(_jit, r0, r1, i0)
-static void _x87_ltgti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_ltgti_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_ordr_f(r0, r1, r2) x87cmp2(X86_CC_NP, r0, r2, r1)
# define x87_ordi_f(r0, r1, i0) _x87_ordi_f(_jit, r0, r1, i0)
-static void _x87_ordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_ordi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_unordr_f(r0, r1, r2) x87cmp2(X86_CC_P, r0, r2, r1)
# define x87_unordi_f(r0, r1, i0) _x87_unordi_f(_jit, r0, r1, i0)
-static void _x87_unordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
+static void _x87_unordi_f(jit_state_t*,int32_t,int32_t,jit_float32_t*);
# define x87_ltr_d(r0, r1, r2) x87cmp(X86_CC_A, r0, r2, r1)
# define x87_lti_d(r0, r1, i0) _x87_lti_d(_jit, r0, r1, i0)
-static void _x87_lti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_lti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_ler_d(r0, r1, r2) x87cmp(X86_CC_AE, r0, r2, r1)
# define x87_lei_d(r0, r1, i0) _x87_lei_d(_jit, r0, r1, i0)
-static void _x87_lei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_lei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_eqr_d(r0, r1, r2) _x87_eqr_d(_jit, r0, r2, r1)
-static void _x87_eqr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _x87_eqr_d(jit_state_t*, int32_t, int32_t, int32_t);
# define x87_eqi_d(r0, r1, i0) _x87_eqi_d(_jit, r0, r1, i0)
-static void _x87_eqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_eqi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_ger_d(r0, r1, r2) x87cmp(X86_CC_AE, r0, r1, r2)
# define x87_gei_d(r0, r1, i0) _x87_gei_d(_jit, r0, r1, i0)
-static void _x87_gei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_gei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_gtr_d(r0, r1, r2) x87cmp(X86_CC_A, r0, r1, r2)
# define x87_gti_d(r0, r1, i0) _x87_gti_d(_jit, r0, r1, i0)
-static void _x87_gti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_gti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_ner_d(r0, r1, r2) _x87_ner_d(_jit, r0, r2, r1)
-static void _x87_ner_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _x87_ner_d(jit_state_t*, int32_t, int32_t, int32_t);
# define x87_nei_d(r0, r1, i0) _x87_nei_d(_jit, r0, r1, i0)
-static void _x87_nei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_nei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_unltr_d(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r1, r2)
# define x87_unlti_d(r0, r1, i0) _x87_unlti_d(_jit, r0, r1, i0)
-static void _x87_unlti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_unlti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_unler_d(r0, r1, r2) x87cmp(X86_CC_NA, r0, r1, r2)
# define x87_unlei_d(r0, r1, i0) _x87_unlei_d(_jit, r0, r1, i0)
-static void _x87_unlei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_unlei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_uneqr_d(r0, r1, r2) x87cmp2(X86_CC_E, r0, r1, r2)
# define x87_uneqi_d(r0, r1, i0) _x87_uneqi_d(_jit, r0, r1, i0)
-static void _x87_uneqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_uneqi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_unger_d(r0, r1, r2) x87cmp(X86_CC_NA, r0, r2, r1)
# define x87_ungei_d(r0, r1, i0) _x87_ungei_d(_jit, r0, r1, i0)
-static void _x87_ungei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_ungei_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_ungtr_d(r0, r1, r2) x87cmp(X86_CC_NAE, r0, r2, r1)
# define x87_ungti_d(r0, r1, i0) _x87_ungti_d(_jit, r0, r1, i0)
-static void _x87_ungti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_ungti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_ltgtr_d(r0, r1, r2) _x87_ltgtr_d(_jit, r0, r1, r2)
-static void _x87_ltgtr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
+static void _x87_ltgtr_d(jit_state_t*, int32_t, int32_t, int32_t);
# define x87_ltgti_d(r0, r1, i0) _x87_ltgti_d(_jit, r0, r1, i0)
-static void _x87_ltgti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_ltgti_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_ordr_d(r0, r1, r2) x87cmp2(X86_CC_NP, r0, r2, r1)
# define x87_ordi_d(r0, r1, i0) _x87_ordi_d(_jit, r0, r1, i0)
-static void _x87_ordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_ordi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
# define x87_unordr_d(r0, r1, r2) x87cmp2(X86_CC_P, r0, r2, r1)
# define x87_unordi_d(r0, r1, i0) _x87_unordi_d(_jit, r0, r1, i0)
-static void _x87_unordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
+static void _x87_unordi_d(jit_state_t*,int32_t,int32_t,jit_float64_t*);
#define x87_movr_f(r0,r1) _x87_movr_d(_jit,r0,r1)
#define x87_movr_d(r0,r1) _x87_movr_d(_jit,r0,r1)
-static void _x87_movr_d(jit_state_t*, jit_int32_t, jit_int32_t);
+static void _x87_movr_d(jit_state_t*, int32_t, int32_t);
#define x87_movi_d(r0,i0) _x87_movi_d(_jit,r0,i0)
-static void _x87_movi_d(jit_state_t*, 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, 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, int32_t, int32_t);
# define x87_ldxi_d(r0, r1, i0) _x87_ldxi_d(_jit, r0, r1, i0)
-static void _x87_ldxi_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+static void _x87_ldxi_d(jit_state_t*, int32_t, int32_t, jit_word_t);
# define x87_str_d(r0, r1) _x87_str_d(_jit, r0, r1)
-static void _x87_str_d(jit_state_t*,jit_int32_t,jit_int32_t);
+static void _x87_str_d(jit_state_t*,int32_t,int32_t);
# define x87_sti_d(i0, r0) _x87_sti_d(_jit, i0, r0)
-static void _x87_sti_d(jit_state_t*,jit_word_t,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,int32_t,int32_t);
# define x87_stxi_d(i0, r0, r1) _x87_stxi_d(_jit, i0, r0, r1)
-static void _x87_stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
+static void _x87_stxi_d(jit_state_t*,jit_word_t,int32_t,int32_t);
# define x87_bltr_f(i0, r0, r1) x87jcc(X86_CC_A, i0, r1, r0)
# define x87_blti_f(i0, r0, i1) _x87_blti_f(_jit, i0, r0, i1)
static jit_word_t
-_x87_blti_f(jit_state_t*, jit_word_t, 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, 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, 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, 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)); \
@@ -407,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); \
@@ -424,20 +422,18 @@ _x87_b##name##i_##type(jit_state_t *_jit, \
# define dopi(name) fpr_opi(name, d, 64)
# define dbopi(name) fpr_bopi(name, d, 64)
-#if defined(sun)
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, int32_t ri, int32_t ms)
{
ic(0x9b);
rex(0, 1, rb, ri, _NOREG);
x87rx(017, md, rb, ri, ms);
}
-#endif
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, int32_t md,
+ int32_t rb, int32_t ri, int32_t ms)
{
rex(0, 1, rb, ri, _NOREG);
ic(0xd8 | (code >> 3));
@@ -445,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, 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, int32_t r0, int32_t r1)
{
if (r1 == _ST0_REGNO)
x87ri(code | 040, r0);
@@ -469,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, int32_t r1, int32_t r2)
{
if (r0 == r1) {
if (r2 == _ST0_REGNO)
@@ -503,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, int32_t r1, int32_t r2)
{
if (r0 == r1) {
if (r2 == _ST0_REGNO)
@@ -539,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, int32_t r1, int32_t r2)
{
if (r0 == r1) {
if (r2 == _ST0_REGNO)
@@ -573,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, int32_t r1, int32_t r2)
{
if (r0 == r1) {
if (r2 == _ST0_REGNO)
@@ -607,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, int32_t r1)
{
if (r0 == r1) {
if (r1 == _ST0_REGNO)
@@ -626,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, int32_t r1)
{
if (r0 == r1) {
if (r1 == _ST0_REGNO)
@@ -645,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, int32_t r1)
{
if (r0 == r1) {
if (r1 == _ST0_REGNO)
@@ -664,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, int32_t r1)
{
#if defined(sun)
/* for the sake of passing test cases in x87 mode, otherwise only sse
@@ -694,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, int32_t r1)
{
fldr(r1);
fisttpqm(CVT_OFFSET, _RBP_REGNO, _NOREG, _SCL1);
@@ -703,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, int32_t r1)
{
stxi(CVT_OFFSET, _RBP_REGNO, r1);
# if __X32
@@ -715,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, int32_t r1, int32_t r2)
{
jit_bool_t rc;
- jit_int32_t reg;
+ int32_t reg;
if ((rc = reg8_p(r0)))
reg = r0;
else {
@@ -739,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, int32_t r1, 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)))
@@ -766,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, int32_t r1)
{
if (r0 == _ST0_REGNO)
fucomir(r1);
@@ -780,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, 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)
@@ -826,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))
@@ -865,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, 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);
@@ -888,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, int32_t r1, 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));
@@ -903,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, 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);
@@ -924,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, int32_t r1)
{
if (r1 == _ST0_REGNO)
fstsm(0, r0, _NOREG, _SCL1);
@@ -936,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);
@@ -955,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, int32_t r1, 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);
@@ -975,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, 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
@@ -999,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, int32_t r1)
{
if (r0 != r1) {
if (r1 == _ST0)
@@ -1016,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))
@@ -1066,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, int32_t r1, 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)))
@@ -1099,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, int32_t r1, 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)))
@@ -1135,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, int32_t r1, int32_t r2)
{
if (r1 == r2)
movi(r0, 1);
@@ -1148,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, 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);
@@ -1171,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, int32_t r1, 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));
@@ -1186,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, 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);
@@ -1207,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, int32_t r1)
{
if (r1 == _ST0_REGNO)
fstlm(0, r0, _NOREG, _SCL1);
@@ -1219,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);
@@ -1238,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, int32_t r1, 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);
@@ -1258,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, 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
@@ -1285,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, 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;
@@ -1308,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, 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;
diff --git a/libguile/lightning/jit/x86.c b/libguile/lightning/jit/x86.c
new file mode 100644
index 000000000..16bb5187a
--- /dev/null
+++ b/libguile/lightning/jit/x86.c
@@ -0,0 +1,832 @@
+/*
+ * Copyright (C) 2012-2019 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU lightning.
+ *
+ * GNU lightning is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU lightning is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * Authors:
+ * Paulo Cesar Pereira de Andrade
+ */
+
+#if __X32
+# define jit_arg_reg_p(i) 0
+# define jit_arg_f_reg_p(i) 0
+# define stack_framesize 20
+# define stack_adjust 12
+# define CVT_OFFSET -12
+# define REAL_WORDSIZE 4
+# define va_gp_increment 4
+# define va_fp_increment 8
+#else
+# if __CYGWIN__
+# define jit_arg_reg_p(i) ((i) >= 0 && (i) < 4)
+# define jit_arg_f_reg_p(i) jit_arg_reg_p(i)
+# define stack_framesize 152
+# define va_fp_increment 8
+# else
+# define jit_arg_reg_p(i) ((i) >= 0 && (i) < 6)
+# define jit_arg_f_reg_p(i) ((i) >= 0 && (i) < 8)
+# define stack_framesize 56
+# define first_gp_argument rdi
+# define first_gp_offset offsetof(jit_va_list_t, rdi)
+# define first_gp_from_offset(gp) ((gp) / 8)
+# define last_gp_argument r9
+# define va_gp_max_offset \
+ (offsetof(jit_va_list_t, r9) - offsetof(jit_va_list_t, rdi) + 8)
+# define first_fp_argument xmm0
+# define first_fp_offset offsetof(jit_va_list_t, xmm0)
+# define last_fp_argument xmm7
+# define va_fp_max_offset \
+ (offsetof(jit_va_list_t, xmm7) - offsetof(jit_va_list_t, rdi) + 16)
+# define va_fp_increment 16
+# define first_fp_from_offset(fp) (((fp) - va_gp_max_offset) / 16)
+# endif
+# define va_gp_increment 8
+# define stack_adjust 8
+# define CVT_OFFSET -8
+# define REAL_WORDSIZE 8
+#endif
+
+/*
+ * Types
+ */
+#if __X32 || __CYGWIN__
+typedef jit_pointer_t jit_va_list_t;
+#else
+typedef struct jit_va_list {
+ int32_t gpoff;
+ int32_t fpoff;
+ jit_pointer_t over;
+ jit_pointer_t save;
+ /* Declared explicitly as int64 for the x32 abi */
+ int64_t rdi;
+ int64_t rsi;
+ int64_t rdx;
+ int64_t rcx;
+ int64_t r8;
+ int64_t r9;
+ jit_float64_t xmm0;
+ jit_float64_t _up0;
+ jit_float64_t xmm1;
+ jit_float64_t _up1;
+ jit_float64_t xmm2;
+ jit_float64_t _up2;
+ jit_float64_t xmm3;
+ jit_float64_t _up3;
+ jit_float64_t xmm4;
+ jit_float64_t _up4;
+ jit_float64_t xmm5;
+ jit_float64_t _up5;
+ jit_float64_t xmm6;
+ jit_float64_t _up6;
+ jit_float64_t xmm7;
+ jit_float64_t _up7;
+} jit_va_list_t;
+#endif
+
+jit_cpu_t jit_cpu;
+static const jit_register_t _rvs[] = {
+#if __X32
+ { rc(gpr) | rc(rg8) | 0, "%eax" },
+ { rc(gpr) | rc(rg8) | 1, "%ecx" },
+ { rc(gpr) | rc(rg8) | 2, "%edx" },
+ { rc(sav) | rc(rg8) | rc(gpr) | 3, "%ebx" },
+ { rc(sav) | rc(gpr) | 6, "%esi" },
+ { rc(sav) | rc(gpr) | 7, "%edi" },
+ { rc(sav) | 4, "%esp" },
+ { rc(sav) | 5, "%ebp" },
+ { rc(xpr) | rc(fpr) | 0, "%xmm0" },
+ { rc(xpr) | rc(fpr) | 1, "%xmm1" },
+ { rc(xpr) | rc(fpr) | 2, "%xmm2" },
+ { rc(xpr) | rc(fpr) | 3, "%xmm3" },
+ { rc(xpr) | rc(fpr) | 4, "%xmm4" },
+ { rc(xpr) | rc(fpr) | 5, "%xmm5" },
+ { rc(xpr) | rc(fpr) | 6, "%xmm6" },
+ { rc(xpr) | rc(fpr) | 7, "%xmm7" },
+#elif __CYGWIN__
+ { rc(gpr) | rc(rg8) | 0, "%rax" },
+ { rc(gpr) | rc(rg8) | rc(rg8) | 10, "%r10" },
+ { rc(gpr) | rc(rg8) | rc(rg8) | 11, "%r11" },
+ { rc(sav) | rc(rg8) | rc(gpr) | 3, "%rbx" },
+ { rc(sav) | rc(gpr) | 7, "%rdi" },
+ { rc(sav) | rc(gpr) | 6, "%rsi" },
+ { rc(sav) | rc(gpr) | 12, "%r12" },
+ { rc(sav) | rc(gpr) | 13, "%r13" },
+ { rc(sav) | rc(gpr) | 14, "%r14" },
+ { rc(sav) | rc(gpr) | 15, "%r15" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 9, "%r9" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 8, "%r8" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 2, "%rdx" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 1, "%rcx" },
+ { rc(sav) | 4, "%rsp" },
+ { rc(sav) | 5, "%rbp" },
+ { rc(xpr) | rc(fpr) | 4, "%xmm4" },
+ { rc(xpr) | rc(fpr) | 5, "%xmm5" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 6, "%xmm6" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 7, "%xmm7" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 8, "%xmm8" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 9, "%xmm9" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 10, "%xmm10" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 11, "%xmm11" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 12, "%xmm12" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 13, "%xmm13" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 14, "%xmm14" },
+ { rc(sav) | rc(xpr) | rc(fpr) | 15, "%xmm15" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 3, "%xmm3" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 2, "%xmm2" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 1, "%xmm1" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 0, "%xmm0" },
+#else
+ /* %rax is a pseudo flag argument for varargs functions */
+ { rc(arg) | rc(gpr) | rc(rg8) | 0, "%rax" },
+ { rc(gpr) | rc(rg8) | 10, "%r10" },
+ { rc(gpr) | rc(rg8) | 11, "%r11" },
+ { rc(gpr) | rc(rg8) | 12, "%r12" },
+ { rc(sav) | rc(rg8) | rc(gpr) | 3, "%rbx" },
+ { rc(sav) | rc(rg8) | rc(gpr) | 13, "%r13" },
+ { rc(sav) | rc(rg8) | rc(gpr) | 14, "%r14" },
+ { rc(sav) | rc(rg8) | rc(gpr) | 15, "%r15" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 9, "%r9" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 8, "%r8" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 1, "%rcx" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 2, "%rdx" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 6, "%rsi" },
+ { rc(arg) | rc(rg8) | rc(gpr) | 7, "%rdi" },
+ { rc(sav) | 4, "%rsp" },
+ { rc(sav) | 5, "%rbp" },
+ { rc(xpr) | rc(fpr) | 8, "%xmm8" },
+ { rc(xpr) | rc(fpr) | 9, "%xmm9" },
+ { rc(xpr) | rc(fpr) | 10, "%xmm10" },
+ { rc(xpr) | rc(fpr) | 11, "%xmm11" },
+ { rc(xpr) | rc(fpr) | 12, "%xmm12" },
+ { rc(xpr) | rc(fpr) | 13, "%xmm13" },
+ { rc(xpr) | rc(fpr) | 14, "%xmm14" },
+ { rc(xpr) | rc(fpr) | 15, "%xmm15" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 7, "%xmm7" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 6, "%xmm6" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 5, "%xmm5" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 4, "%xmm4" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 3, "%xmm3" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 2, "%xmm2" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 1, "%xmm1" },
+ { rc(xpr) | rc(arg) | rc(fpr) | 0, "%xmm0" },
+#endif
+ { _NOREG, "<none>" },
+};
+
+#include "x86-cpu.c"
+#include "x86-sse.c"
+
+jit_bool_t
+jit_get_cpu(void)
+{
+ union {
+ struct {
+ 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 {
+ 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;
+#if __X32
+ int ac, flags;
+#endif
+ jit_uword_t eax, ebx;
+
+#if __X32
+ /* adapted from glibc __sysconf */
+ __asm__ volatile ("pushfl;\n\t"
+ "popl %0;\n\t"
+ "movl $0x240000, %1;\n\t"
+ "xorl %0, %1;\n\t"
+ "pushl %1;\n\t"
+ "popfl;\n\t"
+ "pushfl;\n\t"
+ "popl %1;\n\t"
+ "xorl %0, %1;\n\t"
+ "pushl %0;\n\t"
+ "popfl"
+ : "=r" (flags), "=r" (ac));
+
+ /* i386 or i486 without cpuid */
+ if ((ac & (1 << 21)) == 0)
+ /* probably without x87 as well */
+ return false;
+#endif
+
+ /* query %eax = 1 function */
+ __asm__ volatile (
+#if __X32 || __X64_32
+ "xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1"
+#else
+ "xchgq %%rbx, %1; cpuid; xchgq %%rbx, %1"
+#endif
+ : "=a" (eax), "=r" (ebx),
+ "=c" (ecx.cpuid), "=d" (edx.cpuid)
+ : "0" (1));
+
+ jit_cpu.fpu = edx.bits.fpu;
+ jit_cpu.cmpxchg8b = edx.bits.cmpxchg8b;
+ jit_cpu.cmov = edx.bits.cmov;
+ jit_cpu.mmx = edx.bits.mmx;
+ jit_cpu.sse = edx.bits.sse;
+ jit_cpu.sse2 = edx.bits.sse2;
+ jit_cpu.sse3 = ecx.bits.sse3;
+ jit_cpu.pclmulqdq = ecx.bits.pclmulqdq;
+ jit_cpu.ssse3 = ecx.bits.ssse3;
+ jit_cpu.fma = ecx.bits.fma;
+ jit_cpu.cmpxchg16b = ecx.bits.cmpxchg16b;
+ jit_cpu.sse4_1 = ecx.bits.sse4_1;
+ jit_cpu.sse4_2 = ecx.bits.sse4_2;
+ jit_cpu.movbe = ecx.bits.movbe;
+ jit_cpu.popcnt = ecx.bits.popcnt;
+ jit_cpu.aes = ecx.bits.aes;
+ jit_cpu.avx = ecx.bits.avx;
+
+ /* query %eax = 0x80000001 function */
+ __asm__ volatile (
+#if __X64
+# if __X64_32
+ "xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1"
+# else
+ "xchgq %%rbx, %1; cpuid; xchgq %%rbx, %1"
+# endif
+ : "=a" (eax), "=r" (ebx),
+ "=c" (ecx.cpuid), "=d" (edx.cpuid)
+ : "0" (0x80000001));
+ jit_cpu.lahf = ecx.cpuid & 1;
+#endif
+
+ return jit_cpu.sse2;
+}
+
+jit_bool_t
+jit_init(jit_state_t *_jit)
+{
+ return jit_cpu.sse2;
+}
+
+void
+jit_epilog(jit_state_t *_jit)
+{
+ /* TODO: Restore registers. */
+}
+
+static jit_bool_t
+is_fpr_arg(jit_arg_abi_t arg)
+{
+ switch (arg)
+ {
+ case JIT_ARG_ABI_UINT8:
+ case JIT_ARG_ABI_INT8:
+ case JIT_ARG_ABI_UINT16:
+ case JIT_ARG_ABI_INT16:
+ case JIT_ARG_ABI_UINT32:
+ case JIT_ARG_ABI_INT32:
+ case JIT_ARG_ABI_UINT64:
+ case JIT_ARG_ABI_INT64:
+ case JIT_ARG_ABI_POINTER:
+ return 0;
+ case JIT_ARG_ABI_FLOAT:
+ case JIT_ARG_ABI_DOUBLE:
+ return 1;
+ default:
+ abort();
+ }
+}
+
+static jit_bool_t
+is_gpr_arg(jit_arg_abi_t arg)
+{
+ return !is_fpr_arg(arg);
+}
+
+static const jit_gpr_t abi_gpr_args[] = {
+#if __X32
+ /* No GPRs in args. */
+#elif __CYGWIN__
+ JIT_GPR(_RCX), JIT_GPR(_RDX), JIT_GPR(_R8), JIT_GPR(_R9)
+#else
+ JIT_GPR(_RDI), JIT_GPR(_RSI), JIT_GPR(_RDX), JIT_GPR(_RCX), JIT_GPR(_R8), JIT_GPR(_R9)
+#endif
+};
+
+static const jit_fpr_t abi_fpr_args[] = {
+#if __X32
+ /* No FPRs in args. */
+#elif __CYGWIN__
+ JIT_FPR(_XMM0), JIT_FPR(_XMM1), JIT_FPR(_XMM2), JIT_FPR(_XMM3)
+#else
+ JIT_FPR(_XMM0), JIT_FPR(_XMM1), JIT_FPR(_XMM2), JIT_FPR(_XMM3), JIT_FPR(_XMM4), JIT_FPR(_XMM5), JIT_FPR(_XMM6), JIT_FPR(_XMM7)
+#endif
+};
+
+static const int abi_gpr_arg_count = sizeof(abi_gpr_args) / sizeof(abi_gpr_args[0]);
+static const int abi_fpr_arg_count = sizeof(abi_fpr_args) / sizeof(abi_fpr_args[0]);
+
+struct abi_arg_iterator
+{
+ const jit_arg_abi_t *abi;
+ size_t argc;
+
+ size_t arg_idx;
+ size_t gpr_idx;
+ size_t fpr_idx;
+ size_t stack_size;
+};
+
+static void
+next_abi_arg(struct abi_arg_iterator *iter, jit_arg_t *arg)
+{
+ ASSERT(iter->arg_idx < iter->argc);
+ jit_arg_abi_t abi = iter->abi[iter->arg_idx];
+ if (is_gpr_arg(abi)) {
+ if (iter->gpr_idx < abi_gpr_arg_count) {
+ arg->kind = JIT_ARG_LOC_GPR;
+ arg->loc.gpr = abi_gpr_args[iter->gpr_idx++];
+#ifdef __CYGWIN__
+ iter->fpr_idx++;
+#endif
+ } else {
+ abort();
+ }
+ } else {
+ ASSERT(is_fpr_arg(abi));
+ if (iter->fpr_idx < abi_fpr_arg_count) {
+ arg->kind = JIT_ARG_LOC_FPR;
+ arg->loc.fpr = abi_fpr_args[iter->fpr_idx++];
+#ifdef __CYGWIN__
+ iter->gpr_idx++;
+#endif
+ } else {
+ abort();
+ }
+ }
+ iter->arg_idx++;
+}
+
+static void
+abi_gpr_to_mem(jit_state_t *_jit, jit_arg_abi_t abi,
+ jit_gpr_t src, jit_gpr_t base, ptrdiff_t offset)
+{
+ switch (abi) {
+ case JIT_ARG_ABI_UINT8:
+ case JIT_ARG_ABI_INT8:
+ jit_stxi_c(_jit, offset, base, src);
+ break;
+ case JIT_ARG_ABI_UINT16:
+ case JIT_ARG_ABI_INT16:
+ jit_stxi_s(_jit, offset, base, src);
+ break;
+ case JIT_ARG_ABI_UINT32:
+ case JIT_ARG_ABI_INT32:
+#if __WORDSIZE == 32
+ case JIT_ARG_ABI_POINTER:
+#endif
+ jit_stxi_i(_jit, offset, base, src);
+ break;
+#if __WORDSIZE == 64
+ case JIT_ARG_ABI_UINT64:
+ case JIT_ARG_ABI_INT64:
+ case JIT_ARG_ABI_POINTER:
+ jit_stxi_l(_jit, offset, base, src);
+ break;
+#endif
+ default:
+ abort();
+ }
+}
+
+static void
+abi_fpr_to_mem(jit_state_t *_jit, jit_arg_abi_t abi,
+ jit_fpr_t src, jit_gpr_t base, ptrdiff_t offset)
+{
+ switch (abi) {
+ case JIT_ARG_ABI_FLOAT:
+ jit_stxi_f(_jit, offset, base, src);
+ break;
+ case JIT_ARG_ABI_DOUBLE:
+ jit_stxi_d(_jit, offset, base, src);
+ break;
+ default:
+ abort();
+ }
+}
+
+static void
+abi_mem_to_gpr(jit_state_t *_jit, jit_arg_abi_t abi,
+ jit_gpr_t dst, jit_gpr_t base, ptrdiff_t offset)
+{
+ switch (abi) {
+ case JIT_ARG_ABI_UINT8:
+ jit_ldxi_uc(_jit, dst, base, offset);
+ break;
+ case JIT_ARG_ABI_INT8:
+ jit_ldxi_c(_jit, dst, base, offset);
+ break;
+ case JIT_ARG_ABI_UINT16:
+ jit_ldxi_us(_jit, dst, base, offset);
+ break;
+ case JIT_ARG_ABI_INT16:
+ jit_ldxi_s(_jit, dst, base, offset);
+ break;
+ case JIT_ARG_ABI_UINT32:
+ jit_ldxi_ui(_jit, dst, base, offset);
+ break;
+ case JIT_ARG_ABI_INT32:
+ jit_ldxi_i(_jit, dst, base, offset);
+ break;
+ case JIT_ARG_ABI_UINT64:
+ jit_ldxi_l(_jit, dst, base, offset);
+ break;
+ case JIT_ARG_ABI_INT64:
+ jit_ldxi_l(_jit, dst, base, offset);
+ break;
+ case JIT_ARG_ABI_POINTER:
+ jit_ldxi_l(_jit, dst, base, offset);
+ break;
+ default:
+ abort();
+ }
+}
+
+static void
+abi_mem_to_fpr(jit_state_t *_jit, jit_arg_abi_t abi,
+ jit_fpr_t dst, jit_gpr_t base, ptrdiff_t offset)
+{
+ switch (abi) {
+ case JIT_ARG_ABI_FLOAT:
+ jit_ldxi_f(_jit, dst, base, offset);
+ break;
+ case JIT_ARG_ABI_DOUBLE:
+ jit_ldxi_d(_jit, dst, base, offset);
+ break;
+ default:
+ abort();
+ }
+}
+
+static void
+store_mem_abi_arg(jit_state_t *_jit, jit_arg_abi_t abi,
+ jit_arg_t *arg, jit_gpr_t base, ptrdiff_t offset)
+{
+ switch (arg->kind) {
+ case JIT_ARG_LOC_GPR:
+ abi_gpr_to_mem(_jit, abi, arg->loc.gpr, base, offset);
+ break;
+
+ case JIT_ARG_LOC_FPR:
+ abi_fpr_to_mem(_jit, abi, arg->loc.fpr, base, offset);
+ break;
+
+ case JIT_ARG_LOC_MEM:
+ if (is_gpr_arg(abi)) {
+ jit_gpr_t tmp = get_temp_gpr(_jit);
+ abi_mem_to_gpr(_jit, abi, tmp, arg->loc.mem.base, arg->loc.mem.offset);
+ abi_gpr_to_mem(_jit, abi, tmp, base, offset);
+ unget_temp_gpr(_jit);
+ } else {
+ jit_fpr_t tmp = get_temp_xpr(_jit);
+ abi_mem_to_fpr(_jit, abi, tmp, arg->loc.mem.base, arg->loc.mem.offset);
+ abi_fpr_to_mem(_jit, abi, tmp, base, offset);
+ unget_temp_xpr(_jit);
+ }
+ break;
+
+ default:
+ abort();
+ }
+
+ arg->kind = JIT_ARG_LOC_MEM;
+ arg->loc.mem.base = base;
+ arg->loc.mem.offset = offset;
+}
+
+static void
+shuffle_gpr_arg(jit_state_t *_jit, jit_gpr_t dst, size_t argc,
+ jit_arg_t *args, size_t idx)
+{
+ ASSERT(args[idx].kind == JIT_ARG_LOC_GPR);
+
+ if (rn(args[idx].loc.gpr) == rn(dst))
+ return;
+
+ /* Arg in a reg but it's not the right one. See if this reg
+ holds some other arg, and swap if so. */
+ for (size_t j=idx+1; j<argc; j++)
+ if (args[j].kind == JIT_ARG_LOC_GPR && rn(args[j].loc.gpr) == rn(dst))
+ {
+ xchgr(_jit, rn(args[idx].loc.gpr), rn(dst));
+ args[j].loc.gpr = args[idx].loc.gpr;
+ args[idx].loc.gpr = dst;
+ /* Could be this register holds a value for more than one argument;
+ update subsequent args if any. */
+ for (size_t k=j+1; k<argc; k++)
+ if (args[k].kind == JIT_ARG_LOC_GPR && rn(args[k].loc.gpr) == rn(dst))
+ args[k].loc.gpr = args[j].loc.gpr;
+ return;
+ }
+
+ /* Arg in reg, but it's not the right one, and the desired reg
+ is free. */
+ jit_movr(_jit, dst, args[idx].loc.gpr);
+ args[idx].loc.gpr = dst;
+}
+
+static void
+shuffle_fpr_arg(jit_state_t *_jit, jit_fpr_t dst, size_t argc,
+ jit_arg_t *args, size_t idx)
+{
+ ASSERT(args[idx].kind == JIT_ARG_LOC_FPR);
+
+ if (rn(args[idx].loc.fpr) == rn(dst))
+ return;
+
+ /* Arg in a reg but it's not the right one. See if this reg
+ holds some other arg, and swap if so. */
+ for (size_t j=idx+1; j<argc; j++)
+ if (args[j].kind == JIT_ARG_LOC_FPR && rn(args[j].loc.fpr) == rn(dst))
+ {
+ jit_fpr_t tmp = get_temp_xpr(_jit);
+ jit_movr_d (_jit, tmp, args[idx].loc.fpr);
+ jit_movr_d (_jit, args[idx].loc.fpr, dst);
+ jit_movr_d (_jit, dst, tmp);
+ unget_temp_xpr(_jit);
+ args[j].loc.fpr = args[idx].loc.fpr;
+ args[idx].loc.fpr = dst;
+ /* Could be this register holds a value for more than one argument;
+ update subsequent args if any. */
+ for (size_t k=j+1; k<argc; k++)
+ if (args[k].kind == JIT_ARG_LOC_FPR && rn(args[k].loc.fpr) == rn(dst))
+ args[k].loc.fpr = args[j].loc.fpr;
+ return;
+ }
+
+ /* Arg in reg, but it's not the right one, and the desired reg
+ is free. */
+ jit_movr_d(_jit, dst, args[idx].loc.fpr);
+ args[idx].loc.fpr = dst;
+}
+
+static void
+reset_abi_arg_iterator(struct abi_arg_iterator *iter, size_t argc,
+ const jit_arg_abi_t *abi)
+{
+ memset(iter, 0, sizeof *iter);
+ iter->argc = argc;
+ iter->abi = abi;
+}
+
+static void
+prepare_args(jit_state_t *_jit, size_t argc, const jit_arg_abi_t abi[],
+ jit_arg_t args[])
+{
+ jit_arg_t scratch;
+ struct abi_arg_iterator iter;
+
+ // Compute stack arg size.
+ reset_abi_arg_iterator(&iter, argc, abi);
+ for (size_t i = 0; i < argc; i++)
+ next_abi_arg(&iter, &scratch);
+
+ // Put all ABI memory arguments in place. We do this first because it might
+ // free up some registers.
+ if (iter.stack_size)
+ {
+ size_t stack_size = iter.stack_size;
+ subi(_jit, _RSP_REGNO, _RSP_REGNO, stack_size);
+ reset_abi_arg_iterator(&iter, argc, abi);
+ for (size_t i = 0; i < argc; i++) {
+ next_abi_arg(&iter, &scratch);
+ if (scratch.kind == JIT_ARG_LOC_MEM)
+ store_mem_abi_arg(_jit, abi[i], &args[i],
+ scratch.loc.mem.base, scratch.loc.mem.offset);
+ }
+ }
+
+ // We move on now to the ABI register arguments. All args whose values are in
+ // registers are ABI register arguments, but they might not be the right
+ // register for the correponding ABI argument. Note that there may be ABI
+ // register arguments whose values are still in memory; we will load them
+ // later.
+ reset_abi_arg_iterator(&iter, argc, abi);
+ for (size_t i = 0; i < argc; i++)
+ {
+ next_abi_arg(&iter, &scratch);
+ switch (scratch.kind) {
+ case JIT_ARG_LOC_GPR:
+ if (args[i].kind == JIT_ARG_LOC_GPR)
+ shuffle_gpr_arg(_jit, scratch.loc.gpr, argc, args, i);
+ break;
+
+ case JIT_ARG_LOC_FPR:
+ if (args[i].kind == JIT_ARG_LOC_FPR)
+ shuffle_fpr_arg(_jit, scratch.loc.fpr, argc, args, i);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ // The only thing that's left is ABI register arguments whose values are still
+ // in memory; load them now.
+ reset_abi_arg_iterator(&iter, argc, abi);
+ for (size_t i = 0; i < argc; i++)
+ {
+ next_abi_arg(&iter, &scratch);
+ switch (scratch.kind) {
+ case JIT_ARG_LOC_GPR:
+ if (args[i].kind == JIT_ARG_LOC_MEM) {
+ abi_mem_to_gpr(_jit, abi[i], scratch.loc.gpr, args[i].loc.mem.base,
+ args[i].loc.mem.offset);
+ args[i].kind = JIT_ARG_LOC_GPR;
+ args[i].loc.gpr = scratch.loc.gpr;
+ }
+ break;
+
+ case JIT_ARG_LOC_FPR:
+ if (args[i].kind == JIT_ARG_LOC_MEM) {
+ abi_mem_to_fpr(_jit, abi[i], scratch.loc.fpr, args[i].loc.mem.base,
+ args[i].loc.mem.offset);
+ args[i].kind = JIT_ARG_LOC_FPR;
+ args[i].loc.fpr = scratch.loc.fpr;
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+}
+
+static void
+cleanup_stack_after_call(jit_state_t *_jit, size_t argc,
+ const jit_arg_abi_t abi[])
+{
+ jit_arg_t scratch;
+ struct abi_arg_iterator iter;
+
+ // Compute stack arg size.
+ reset_abi_arg_iterator(&iter, argc, abi);
+ for (size_t i = 0; i < argc; i++)
+ next_abi_arg(&iter, &scratch);
+
+ if (iter.stack_size)
+ jit_addi(_jit, JIT_SP, JIT_SP, iter.stack_size);
+}
+
+void
+jit_calli(jit_state_t *_jit, jit_pointer_t f,
+ size_t argc, const jit_arg_abi_t abi[], jit_arg_t args[])
+{
+ prepare_args(_jit, argc, abi, args);
+
+ calli(_jit, (jit_word_t)f);
+
+ cleanup_stack_after_call(_jit, argc, abi);
+}
+
+void
+jit_callr(jit_state_t *_jit, jit_gpr_t f,
+ size_t argc, const jit_arg_abi_t abi[], jit_arg_t args[])
+{
+ prepare_args(_jit, argc, abi, args);
+
+ callr(_jit, rn(f));
+
+ cleanup_stack_after_call(_jit, argc, abi);
+}
+
+void
+jit_receive(jit_state_t *_jit,
+ size_t argc, const jit_arg_abi_t abi[], jit_arg_t args[])
+{
+ struct abi_arg_iterator iter;
+
+ reset_abi_arg_iterator(&iter, argc, abi);
+ for (size_t i = 0; i < argc; i++)
+ next_abi_arg(&iter, &args[i]);
+}
+
+void
+jit_load_args(jit_state_t *_jit, size_t argc,
+ const jit_arg_abi_t abi[], jit_arg_t args[],
+ const jit_anyreg_t regs[])
+{
+ /* First shuffle any arguments that are already in registers into
+ position. */
+ for (size_t i = 0; i < argc; i++) {
+ switch (args[i].kind) {
+ case JIT_ARG_LOC_IMM:
+ abort();
+ case JIT_ARG_LOC_GPR:
+ shuffle_gpr_arg(_jit, regs[i].gpr, argc, args, i);
+ break;
+ case JIT_ARG_LOC_FPR:
+ shuffle_fpr_arg(_jit, regs[i].fpr, argc, args, i);
+ break;
+ case JIT_ARG_LOC_MEM:
+ break;
+ default:
+ abort();
+ }
+ }
+
+ /* Now load spilled arguments from memory into registers. */
+ for (size_t i = 0; i < argc; i++) {
+ if (args[i].kind == JIT_ARG_LOC_MEM) {
+ if (is_gpr_arg(abi[i]))
+ abi_mem_to_gpr(_jit, abi[i], regs[i].gpr, args[i].loc.mem.base,
+ args[i].loc.mem.offset);
+ else
+ abi_mem_to_fpr(_jit, abi[i], regs[i].fpr, args[i].loc.mem.base,
+ args[i].loc.mem.offset);
+ }
+ }
+}
+
+void
+jit_flush(void *fptr, void *tptr)
+{
+}
+
+static void
+jit_try_shorten(jit_state_t *_jit, jit_reloc_t reloc)
+{
+}
diff --git a/libguile/lightning/jit/x86.h b/libguile/lightning/jit/x86.h
new file mode 100644
index 000000000..b275e5e8b
--- /dev/null
+++ b/libguile/lightning/jit/x86.h
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2012-2019 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU lightning.
+ *
+ * GNU lightning is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU lightning is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * Authors:
+ * Paulo Cesar Pereira de Andrade
+ */
+
+#ifndef _jit_x86_h
+#define _jit_x86_h
+
+#define JIT_HASH_CONSTS 1
+#define JIT_NUM_OPERANDS 2
+
+/*
+ * Types
+ */
+#define jit_sse2_p() jit_cpu.sse2
+#define jit_x87_reg_p(reg) ((reg) >= _ST0 && (reg) <= _ST6)
+#if __WORDSIZE == 32
+# if defined(__x86_64__)
+# define __X64 1
+# define __X64_32 1
+# define __X32 0
+# else
+# define __X64 0
+# define __X64_32 0
+# define __X32 1
+# endif
+#else
+# define __X64 1
+# define __X64_32 0
+# define __X32 0
+#endif
+
+#define JIT_FP JIT_GPR(_RBP)
+typedef enum {
+#if __X32
+# define jit_r(i) (_RAX + (i))
+# define jit_r_num() 3
+# define jit_v(i) (_RBX + (i))
+# define jit_v_num() 3
+# define jit_f(i) (jit_cpu.sse2 ? _XMM0 + (i) : _ST0 + (i))
+# define jit_f_num() (jit_cpu.sse2 ? 8 : 6)
+# define JIT_R0 JIT_GPR(_RAX)
+# define JIT_R1 JIT_GPR(_RCX)
+# define JIT_R2 JIT_GPR(_RDX)
+ _RAX, _RCX, _RDX,
+# define JIT_V0 JIT_GPR(_RBX)
+# define JIT_V1 JIT_GPR(_RSI)
+# define JIT_V2 JIT_GPR(_RDI)
+ _RBX, _RSI, _RDI,
+ _RSP, _RBP,
+# define JIT_F0 JIT_FPR(_XMM0)
+# define JIT_F1 JIT_FPR(_XMM1)
+# define JIT_F2 JIT_FPR(_XMM2)
+# define JIT_F3 JIT_FPR(_XMM3)
+# define JIT_F4 JIT_FPR(_XMM4)
+# define JIT_F5 JIT_FPR(_XMM5)
+# define JIT_F6 JIT_FPR(_XMM6)
+ _XMM0, _XMM1, _XMM2, _XMM3, _XMM4, _XMM5, _XMM6, _XMM7,
+# define jit_sse_reg_p(reg) ((reg) >= _XMM0 && (reg) <= _XMM7)
+#else
+# if __CYGWIN__
+# define jit_r(i) (_RAX + (i))
+# define jit_r_num() 3
+# define jit_v(i) (_RBX + (i))
+# define jit_v_num() 7
+# define jit_f(index) (_XMM4 + (index))
+# define jit_f_num() 12
+# define JIT_R0 JIT_GPR(_RAX)
+# define JIT_R1 JIT_GPR(_R10)
+# define JIT_R2 JIT_GPR(_R11)
+# define JIT_V0 JIT_GPR(_RBX)
+# define JIT_V1 JIT_GPR(_RDI)
+# define JIT_V2 JIT_GPR(_RSI)
+# define JIT_V3 JIT_GPR(_R12)
+# define JIT_V4 JIT_GPR(_R13)
+# define JIT_V5 JIT_GPR(_R14)
+# define JIT_V6 JIT_GPR(_R15)
+ /* Volatile - Return value register */
+ _RAX,
+ /* Volatile */
+ _R10, _R11,
+ /* Nonvolatile */
+ _RBX, _RDI, _RSI,
+ _R12, _R13, _R14, _R15,
+ /* Volatile - Integer arguments (4 to 1) */
+ _R9, _R8, _RDX, _RCX,
+ /* Nonvolatile */
+ _RSP, _RBP,
+# define JIT_F0 JIT_FPR(_XMM0)
+# define JIT_F1 JIT_FPR(_XMM1)
+# define JIT_F2 JIT_FPR(_XMM2)
+# define JIT_F3 JIT_FPR(_XMM3)
+# define JIT_F4 JIT_FPR(_XMM4)
+# define JIT_F5 JIT_FPR(_XMM5)
+# define JIT_F6 JIT_FPR(_XMM6)
+# define JIT_F7 JIT_FPR(_XMM7)
+# define JIT_F8 JIT_FPR(_XMM8)
+# define JIT_F9 JIT_FPR(_XMM9)
+# define JIT_F10 JIT_FPR(_XMM10)
+# define JIT_F11 JIT_FPR(_XMM11)
+# define JIT_F12 JIT_FPR(_XMM12)
+# define JIT_F13 JIT_FPR(_XMM13)
+# define JIT_F14 JIT_FPR(_XMM14)
+# define JIT_F15 JIT_FPR(_XMM15)
+ /* Volatile */
+ _XMM4, _XMM5,
+ /* Nonvolatile */
+ _XMM6, _XMM7, _XMM8, _XMM9, _XMM10,
+ _XMM11, _XMM12, _XMM13, _XMM14, _XMM15,
+ /* Volatile - FP arguments (4 to 1) */
+ _XMM3, _XMM2, _XMM1, _XMM0,
+# define jit_sse_reg_p(reg) ((reg) >= _XMM4 && (reg) <= _XMM0)
+# else
+# define jit_r(i) (_RAX + (i))
+# define jit_r_num() 4
+# define jit_v(i) (_RBX + (i))
+# define jit_v_num() 4
+# define jit_f(index) (_XMM8 + (index))
+# define jit_f_num() 8
+# define JIT_R0 JIT_GPR(_RAX)
+# define JIT_R1 JIT_GPR(_R10)
+# define JIT_R2 JIT_GPR(_R11)
+# define JIT_R3 JIT_GPR(_R12)
+ _RAX, _R10, _R11, _R12,
+# define JIT_V0 JIT_GPR(_RBX)
+# define JIT_V1 JIT_GPR(_R13)
+# define JIT_V2 JIT_GPR(_R14)
+# define JIT_V3 JIT_GPR(_R15)
+ _RBX, _R13, _R14, _R15,
+ _R9, _R8, _RCX, _RDX, _RSI, _RDI,
+ _RSP, _RBP,
+# define JIT_F0 JIT_FPR(_XMM0)
+# define JIT_F1 JIT_FPR(_XMM1)
+# define JIT_F2 JIT_FPR(_XMM2)
+# define JIT_F3 JIT_FPR(_XMM3)
+# define JIT_F4 JIT_FPR(_XMM4)
+# define JIT_F5 JIT_FPR(_XMM5)
+# define JIT_F6 JIT_FPR(_XMM6)
+# define JIT_F7 JIT_FPR(_XMM7)
+# define JIT_F8 JIT_FPR(_XMM8)
+# define JIT_F9 JIT_FPR(_XMM9)
+# define JIT_F10 JIT_FPR(_XMM10)
+# define JIT_F11 JIT_FPR(_XMM11)
+# define JIT_F12 JIT_FPR(_XMM12)
+# define JIT_F13 JIT_FPR(_XMM13)
+# define JIT_F14 JIT_FPR(_XMM14)
+# define JIT_F15 JIT_FPR(_XMM15)
+ _XMM8, _XMM9, _XMM10, _XMM11, _XMM12, _XMM13, _XMM14, _XMM15,
+ _XMM7, _XMM6, _XMM5, _XMM4, _XMM3, _XMM2, _XMM1, _XMM0,
+# define jit_sse_reg_p(reg) ((reg) >= _XMM8 && (reg) <= _XMM0)
+# endif
+#endif
+# define JIT_NOREG _NOREG
+ _NOREG,
+} jit_reg_t;
+
+typedef struct {
+ /* x87 present */
+ uint32_t fpu : 1;
+ /* cmpxchg8b instruction */
+ uint32_t cmpxchg8b : 1;
+ /* cmov and fcmov branchless conditional mov */
+ uint32_t cmov : 1;
+ /* mmx registers/instructions available */
+ uint32_t mmx : 1;
+ /* sse registers/instructions available */
+ uint32_t sse : 1;
+ /* sse2 registers/instructions available */
+ uint32_t sse2 : 1;
+ /* sse3 instructions available */
+ uint32_t sse3 : 1;
+ /* pcmulqdq instruction */
+ uint32_t pclmulqdq : 1;
+ /* ssse3 suplemental sse3 instructions available */
+ uint32_t ssse3 : 1;
+ /* fused multiply/add using ymm state */
+ uint32_t fma : 1;
+ /* cmpxchg16b instruction */
+ uint32_t cmpxchg16b : 1;
+ /* sse4.1 instructions available */
+ uint32_t sse4_1 : 1;
+ /* sse4.2 instructions available */
+ uint32_t sse4_2 : 1;
+ /* movbe instruction available */
+ uint32_t movbe : 1;
+ /* popcnt instruction available */
+ uint32_t popcnt : 1;
+ /* aes instructions available */
+ uint32_t aes : 1;
+ /* avx instructions available */
+ uint32_t avx : 1;
+ /* lahf/sahf available in 64 bits mode */
+ uint32_t lahf : 1;
+} jit_cpu_t;
+
+/*
+ * Initialization
+ */
+JIT_API jit_cpu_t jit_cpu;
+
+#endif /* _jit_x86_h */
diff --git a/libguile/lightning/lib/jit_aarch64-sz.c b/libguile/lightning/lib/jit_aarch64-sz.c
deleted file mode 100644
index 7e22e0e7b..000000000
--- a/libguile/lightning/lib/jit_aarch64-sz.c
+++ /dev/null
@@ -1,402 +0,0 @@
-
-#if __WORDSIZE == 64
-#define JIT_INSTR_MAX 120
- 0, /* data */
- 0, /* live */
- 4, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 120, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 44, /* va_start */
- 64, /* va_arg */
- 72, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 20, /* addi */
- 4, /* addcr */
- 12, /* addci */
- 4, /* addxr */
- 8, /* addxi */
- 4, /* subr */
- 20, /* subi */
- 4, /* subcr */
- 12, /* subci */
- 4, /* subxr */
- 8, /* subxi */
- 24, /* rsbi */
- 4, /* mulr */
- 20, /* muli */
- 12, /* qmulr */
- 20, /* qmuli */
- 12, /* qmulr_u */
- 20, /* qmuli_u */
- 4, /* divr */
- 20, /* divi */
- 4, /* divr_u */
- 12, /* divi_u */
- 20, /* qdivr */
- 16, /* qdivi */
- 20, /* qdivr_u */
- 16, /* qdivi_u */
- 12, /* remr */
- 28, /* remi */
- 12, /* remr_u */
- 20, /* remi_u */
- 4, /* andr */
- 20, /* andi */
- 4, /* orr */
- 20, /* ori */
- 4, /* xorr */
- 20, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 8, /* ltr */
- 8, /* lti */
- 8, /* ltr_u */
- 8, /* lti_u */
- 8, /* ler */
- 8, /* lei */
- 8, /* ler_u */
- 8, /* lei_u */
- 8, /* eqr */
- 8, /* eqi */
- 8, /* ger */
- 8, /* gei */
- 8, /* ger_u */
- 8, /* gei_u */
- 8, /* gtr */
- 8, /* gti */
- 8, /* gtr_u */
- 8, /* gti_u */
- 8, /* ner */
- 8, /* nei */
- 4, /* movr */
- 16, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 4, /* extr_i */
- 4, /* extr_ui */
- 8, /* htonr_us */
- 8, /* htonr_ui */
- 4, /* htonr_ul */
- 4, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 12, /* ldi_uc */
- 4, /* ldr_s */
- 12, /* ldi_s */
- 4, /* ldr_us */
- 12, /* ldi_us */
- 4, /* ldr_i */
- 12, /* ldi_i */
- 4, /* ldr_ui */
- 12, /* ldi_ui */
- 4, /* ldr_l */
- 12, /* ldi_l */
- 8, /* ldxr_c */
- 20, /* ldxi_c */
- 4, /* ldxr_uc */
- 20, /* ldxi_uc */
- 4, /* ldxr_s */
- 16, /* ldxi_s */
- 4, /* ldxr_us */
- 16, /* ldxi_us */
- 4, /* ldxr_i */
- 20, /* ldxi_i */
- 4, /* ldxr_ui */
- 16, /* ldxi_ui */
- 4, /* ldxr_l */
- 20, /* ldxi_l */
- 4, /* str_c */
- 12, /* sti_c */
- 4, /* str_s */
- 12, /* sti_s */
- 4, /* str_i */
- 12, /* sti_i */
- 4, /* str_l */
- 12, /* sti_l */
- 4, /* stxr_c */
- 20, /* stxi_c */
- 4, /* stxr_s */
- 20, /* stxi_s */
- 4, /* stxr_i */
- 20, /* stxi_i */
- 4, /* stxr_l */
- 20, /* stxi_l */
- 8, /* bltr */
- 8, /* blti */
- 8, /* bltr_u */
- 8, /* blti_u */
- 8, /* bler */
- 8, /* blei */
- 8, /* bler_u */
- 8, /* blei_u */
- 8, /* beqr */
- 24, /* beqi */
- 8, /* bger */
- 8, /* bgei */
- 8, /* bger_u */
- 8, /* bgei_u */
- 8, /* bgtr */
- 8, /* bgti */
- 8, /* bgtr_u */
- 8, /* bgti_u */
- 8, /* bner */
- 24, /* bnei */
- 8, /* bmsr */
- 8, /* bmsi */
- 8, /* bmcr */
- 8, /* bmci */
- 8, /* boaddr */
- 8, /* boaddi */
- 8, /* boaddr_u */
- 8, /* boaddi_u */
- 8, /* bxaddr */
- 8, /* bxaddi */
- 8, /* bxaddr_u */
- 8, /* bxaddi_u */
- 8, /* bosubr */
- 8, /* bosubi */
- 8, /* bosubr_u */
- 8, /* bosubi_u */
- 8, /* bxsubr */
- 8, /* bxsubi */
- 8, /* bxsubr_u */
- 8, /* bxsubi_u */
- 4, /* jmpr */
- 20, /* jmpi */
- 4, /* callr */
- 20, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 96, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 12, /* addi_f */
- 4, /* subr_f */
- 12, /* subi_f */
- 12, /* rsbi_f */
- 4, /* mulr_f */
- 12, /* muli_f */
- 4, /* divr_f */
- 12, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 8, /* ltr_f */
- 16, /* lti_f */
- 8, /* ler_f */
- 16, /* lei_f */
- 8, /* eqr_f */
- 16, /* eqi_f */
- 8, /* ger_f */
- 16, /* gei_f */
- 8, /* gtr_f */
- 16, /* gti_f */
- 8, /* ner_f */
- 16, /* nei_f */
- 8, /* unltr_f */
- 16, /* unlti_f */
- 8, /* unler_f */
- 16, /* unlei_f */
- 16, /* uneqr_f */
- 24, /* uneqi_f */
- 8, /* unger_f */
- 16, /* ungei_f */
- 8, /* ungtr_f */
- 16, /* ungti_f */
- 16, /* ltgtr_f */
- 24, /* ltgti_f */
- 8, /* ordr_f */
- 16, /* ordi_f */
- 8, /* unordr_f */
- 16, /* unordi_f */
- 8, /* truncr_f_i */
- 4, /* truncr_f_l */
- 4, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 8, /* movi_f */
- 8, /* ldr_f */
- 16, /* ldi_f */
- 8, /* ldxr_f */
- 24, /* ldxi_f */
- 8, /* str_f */
- 16, /* sti_f */
- 8, /* stxr_f */
- 24, /* stxi_f */
- 8, /* bltr_f */
- 16, /* blti_f */
- 8, /* bler_f */
- 16, /* blei_f */
- 8, /* beqr_f */
- 16, /* beqi_f */
- 8, /* bger_f */
- 16, /* bgei_f */
- 8, /* bgtr_f */
- 16, /* bgti_f */
- 8, /* bner_f */
- 16, /* bnei_f */
- 8, /* bunltr_f */
- 16, /* bunlti_f */
- 8, /* bunler_f */
- 16, /* bunlei_f */
- 16, /* buneqr_f */
- 24, /* buneqi_f */
- 8, /* bunger_f */
- 16, /* bungei_f */
- 8, /* bungtr_f */
- 16, /* bungti_f */
- 16, /* bltgtr_f */
- 24, /* bltgti_f */
- 8, /* bordr_f */
- 16, /* bordi_f */
- 8, /* bunordr_f */
- 16, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 12, /* addi_d */
- 4, /* subr_d */
- 12, /* subi_d */
- 12, /* rsbi_d */
- 4, /* mulr_d */
- 12, /* muli_d */
- 4, /* divr_d */
- 12, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 8, /* ltr_d */
- 16, /* lti_d */
- 8, /* ler_d */
- 16, /* lei_d */
- 8, /* eqr_d */
- 16, /* eqi_d */
- 8, /* ger_d */
- 16, /* gei_d */
- 8, /* gtr_d */
- 16, /* gti_d */
- 8, /* ner_d */
- 16, /* nei_d */
- 8, /* unltr_d */
- 16, /* unlti_d */
- 8, /* unler_d */
- 16, /* unlei_d */
- 16, /* uneqr_d */
- 24, /* uneqi_d */
- 8, /* unger_d */
- 16, /* ungei_d */
- 8, /* ungtr_d */
- 16, /* ungti_d */
- 16, /* ltgtr_d */
- 24, /* ltgti_d */
- 8, /* ordr_d */
- 16, /* ordi_d */
- 8, /* unordr_d */
- 16, /* unordi_d */
- 8, /* truncr_d_i */
- 4, /* truncr_d_l */
- 4, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 12, /* movi_d */
- 8, /* ldr_d */
- 16, /* ldi_d */
- 8, /* ldxr_d */
- 24, /* ldxi_d */
- 8, /* str_d */
- 16, /* sti_d */
- 8, /* stxr_d */
- 24, /* stxi_d */
- 8, /* bltr_d */
- 16, /* blti_d */
- 8, /* bler_d */
- 16, /* blei_d */
- 8, /* beqr_d */
- 20, /* beqi_d */
- 8, /* bger_d */
- 16, /* bgei_d */
- 8, /* bgtr_d */
- 16, /* bgti_d */
- 8, /* bner_d */
- 16, /* bnei_d */
- 8, /* bunltr_d */
- 16, /* bunlti_d */
- 8, /* bunler_d */
- 16, /* bunlei_d */
- 16, /* buneqr_d */
- 24, /* buneqi_d */
- 8, /* bunger_d */
- 16, /* bungei_d */
- 8, /* bungtr_d */
- 16, /* bungti_d */
- 16, /* bltgtr_d */
- 24, /* bltgti_d */
- 8, /* bordr_d */
- 16, /* bordi_d */
- 8, /* bunordr_d */
- 16, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __WORDSIZE */
diff --git a/libguile/lightning/lib/jit_alpha-sz.c b/libguile/lightning/lib/jit_alpha-sz.c
deleted file mode 100644
index e1a572aab..000000000
--- a/libguile/lightning/lib/jit_alpha-sz.c
+++ /dev/null
@@ -1,402 +0,0 @@
-
-#if __WORDSIZE == 64
-#define JIT_INSTR_MAX 76
- 0, /* data */
- 0, /* live */
- 4, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 76, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 0, /* va_start */
- 0, /* va_arg */
- 0, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 32, /* addi */
- 12, /* addcr */
- 40, /* addci */
- 28, /* addxr */
- 28, /* addxi */
- 4, /* subr */
- 32, /* subi */
- 12, /* subcr */
- 40, /* subci */
- 28, /* subxr */
- 28, /* subxi */
- 36, /* rsbi */
- 4, /* mulr */
- 32, /* muli */
- 44, /* qmulr */
- 56, /* qmuli */
- 12, /* qmulr_u */
- 32, /* qmuli_u */
- 48, /* divr */
- 72, /* divi */
- 48, /* divr_u */
- 72, /* divi_u */
- 56, /* qdivr */
- 56, /* qdivi */
- 56, /* qdivr_u */
- 56, /* qdivi_u */
- 48, /* remr */
- 72, /* remi */
- 48, /* remr_u */
- 72, /* remi_u */
- 4, /* andr */
- 32, /* andi */
- 4, /* orr */
- 32, /* ori */
- 4, /* xorr */
- 32, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 4, /* ltr */
- 4, /* lti */
- 4, /* ltr_u */
- 8, /* lti_u */
- 4, /* ler */
- 8, /* lei */
- 4, /* ler_u */
- 4, /* lei_u */
- 4, /* eqr */
- 4, /* eqi */
- 4, /* ger */
- 8, /* gei */
- 4, /* ger_u */
- 8, /* gei_u */
- 4, /* gtr */
- 8, /* gti */
- 4, /* gtr_u */
- 8, /* gti_u */
- 8, /* ner */
- 12, /* nei */
- 4, /* movr */
- 32, /* movi */
- 8, /* extr_c */
- 8, /* extr_uc */
- 8, /* extr_s */
- 8, /* extr_us */
- 8, /* extr_i */
- 8, /* extr_ui */
- 16, /* htonr_us */
- 36, /* htonr_ui */
- 36, /* htonr_ul */
- 12, /* ldr_c */
- 40, /* ldi_c */
- 4, /* ldr_uc */
- 32, /* ldi_uc */
- 12, /* ldr_s */
- 40, /* ldi_s */
- 4, /* ldr_us */
- 32, /* ldi_us */
- 4, /* ldr_i */
- 32, /* ldi_i */
- 12, /* ldr_ui */
- 40, /* ldi_ui */
- 4, /* ldr_l */
- 32, /* ldi_l */
- 16, /* ldxr_c */
- 12, /* ldxi_c */
- 8, /* ldxr_uc */
- 4, /* ldxi_uc */
- 16, /* ldxr_s */
- 12, /* ldxi_s */
- 8, /* ldxr_us */
- 4, /* ldxi_us */
- 8, /* ldxr_i */
- 4, /* ldxi_i */
- 16, /* ldxr_ui */
- 12, /* ldxi_ui */
- 8, /* ldxr_l */
- 4, /* ldxi_l */
- 4, /* str_c */
- 32, /* sti_c */
- 4, /* str_s */
- 32, /* sti_s */
- 4, /* str_i */
- 32, /* sti_i */
- 4, /* str_l */
- 32, /* sti_l */
- 8, /* stxr_c */
- 4, /* stxi_c */
- 8, /* stxr_s */
- 4, /* stxi_s */
- 8, /* stxr_i */
- 4, /* stxi_i */
- 8, /* stxr_l */
- 4, /* stxi_l */
- 8, /* bltr */
- 8, /* blti */
- 8, /* bltr_u */
- 12, /* blti_u */
- 8, /* bler */
- 12, /* blei */
- 8, /* bler_u */
- 12, /* blei_u */
- 8, /* beqr */
- 40, /* beqi */
- 8, /* bger */
- 12, /* bgei */
- 8, /* bger_u */
- 12, /* bgei_u */
- 8, /* bgtr */
- 12, /* bgti */
- 8, /* bgtr_u */
- 12, /* bgti_u */
- 8, /* bner */
- 36, /* bnei */
- 8, /* bmsr */
- 8, /* bmsi */
- 8, /* bmcr */
- 8, /* bmci */
- 28, /* boaddr */
- 32, /* boaddi */
- 16, /* boaddr_u */
- 16, /* boaddi_u */
- 28, /* bxaddr */
- 32, /* bxaddi */
- 16, /* bxaddr_u */
- 16, /* bxaddi_u */
- 28, /* bosubr */
- 32, /* bosubi */
- 16, /* bosubr_u */
- 16, /* bosubi_u */
- 28, /* bxsubr */
- 32, /* bxsubi */
- 16, /* bxsubr_u */
- 16, /* bxsubi_u */
- 0, /* jmpr */
- 36, /* jmpi */
- 8, /* callr */
- 36, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 68, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 8, /* addr_f */
- 32, /* addi_f */
- 8, /* subr_f */
- 32, /* subi_f */
- 32, /* rsbi_f */
- 8, /* mulr_f */
- 32, /* muli_f */
- 8, /* divr_f */
- 32, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 8, /* sqrtr_f */
- 32, /* ltr_f */
- 56, /* lti_f */
- 32, /* ler_f */
- 56, /* lei_f */
- 32, /* eqr_f */
- 56, /* eqi_f */
- 32, /* ger_f */
- 56, /* gei_f */
- 32, /* gtr_f */
- 56, /* gti_f */
- 32, /* ner_f */
- 56, /* nei_f */
- 32, /* unltr_f */
- 56, /* unlti_f */
- 32, /* unler_f */
- 56, /* unlei_f */
- 32, /* uneqr_f */
- 56, /* uneqi_f */
- 32, /* unger_f */
- 56, /* ungei_f */
- 32, /* ungtr_f */
- 56, /* ungti_f */
- 32, /* ltgtr_f */
- 56, /* ltgti_f */
- 20, /* ordr_f */
- 44, /* ordi_f */
- 20, /* unordr_f */
- 44, /* unordi_f */
- 16, /* truncr_f_i */
- 16, /* truncr_f_l */
- 12, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 24, /* movi_f */
- 4, /* ldr_f */
- 32, /* ldi_f */
- 8, /* ldxr_f */
- 4, /* ldxi_f */
- 4, /* str_f */
- 32, /* sti_f */
- 8, /* stxr_f */
- 4, /* stxi_f */
- 24, /* bltr_f */
- 48, /* blti_f */
- 24, /* bler_f */
- 48, /* blei_f */
- 24, /* beqr_f */
- 48, /* beqi_f */
- 24, /* bger_f */
- 48, /* bgei_f */
- 24, /* bgtr_f */
- 48, /* bgti_f */
- 28, /* bner_f */
- 52, /* bnei_f */
- 28, /* bunltr_f */
- 52, /* bunlti_f */
- 28, /* bunler_f */
- 52, /* bunlei_f */
- 28, /* buneqr_f */
- 52, /* buneqi_f */
- 28, /* bunger_f */
- 52, /* bungei_f */
- 28, /* bungtr_f */
- 52, /* bungti_f */
- 28, /* bltgtr_f */
- 52, /* bltgti_f */
- 12, /* bordr_f */
- 36, /* bordi_f */
- 12, /* bunordr_f */
- 36, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 8, /* addr_d */
- 28, /* addi_d */
- 8, /* subr_d */
- 28, /* subi_d */
- 28, /* rsbi_d */
- 8, /* mulr_d */
- 28, /* muli_d */
- 8, /* divr_d */
- 28, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 8, /* sqrtr_d */
- 32, /* ltr_d */
- 52, /* lti_d */
- 32, /* ler_d */
- 52, /* lei_d */
- 32, /* eqr_d */
- 52, /* eqi_d */
- 32, /* ger_d */
- 52, /* gei_d */
- 32, /* gtr_d */
- 52, /* gti_d */
- 32, /* ner_d */
- 52, /* nei_d */
- 32, /* unltr_d */
- 52, /* unlti_d */
- 32, /* unler_d */
- 52, /* unlei_d */
- 32, /* uneqr_d */
- 52, /* uneqi_d */
- 32, /* unger_d */
- 52, /* ungei_d */
- 32, /* ungtr_d */
- 52, /* ungti_d */
- 32, /* ltgtr_d */
- 52, /* ltgti_d */
- 20, /* ordr_d */
- 40, /* ordi_d */
- 20, /* unordr_d */
- 40, /* unordi_d */
- 16, /* truncr_d_i */
- 16, /* truncr_d_l */
- 12, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 20, /* movi_d */
- 4, /* ldr_d */
- 32, /* ldi_d */
- 8, /* ldxr_d */
- 4, /* ldxi_d */
- 4, /* str_d */
- 32, /* sti_d */
- 8, /* stxr_d */
- 4, /* stxi_d */
- 24, /* bltr_d */
- 44, /* blti_d */
- 24, /* bler_d */
- 44, /* blei_d */
- 24, /* beqr_d */
- 44, /* beqi_d */
- 24, /* bger_d */
- 44, /* bgei_d */
- 24, /* bgtr_d */
- 44, /* bgti_d */
- 28, /* bner_d */
- 48, /* bnei_d */
- 28, /* bunltr_d */
- 48, /* bunlti_d */
- 28, /* bunler_d */
- 48, /* bunlei_d */
- 28, /* buneqr_d */
- 48, /* buneqi_d */
- 28, /* bunger_d */
- 48, /* bungei_d */
- 28, /* bungtr_d */
- 48, /* bungti_d */
- 28, /* bltgtr_d */
- 48, /* bltgti_d */
- 12, /* bordr_d */
- 32, /* bordi_d */
- 12, /* bunordr_d */
- 32, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __WORDSIZE */
diff --git a/libguile/lightning/lib/jit_arm-sz.c b/libguile/lightning/lib/jit_arm-sz.c
deleted file mode 100644
index 9f0d01282..000000000
--- a/libguile/lightning/lib/jit_arm-sz.c
+++ /dev/null
@@ -1,808 +0,0 @@
-
-#if __WORDSIZE == 32
-#if defined(__ARM_PCS_VFP)
-#define JIT_INSTR_MAX 48
- 0, /* data */
- 0, /* live */
- 2, /* align */
- 0, /* save */
- 0, /* load */
- 2, /* #name */
- 0, /* #note */
- 0, /* label */
- 34, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 4, /* va_start */
- 8, /* va_arg */
- 16, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 12, /* addi */
- 4, /* addcr */
- 8, /* addci */
- 4, /* addxr */
- 4, /* addxi */
- 4, /* subr */
- 12, /* subi */
- 4, /* subcr */
- 8, /* subci */
- 4, /* subxr */
- 4, /* subxi */
- 16, /* rsbi */
- 4, /* mulr */
- 12, /* muli */
- 4, /* qmulr */
- 12, /* qmuli */
- 4, /* qmulr_u */
- 8, /* qmuli_u */
- 40, /* divr */
- 48, /* divi */
- 40, /* divr_u */
- 44, /* divi_u */
- 34, /* qdivr */
- 38, /* qdivi */
- 34, /* qdivr_u */
- 38, /* qdivi_u */
- 40, /* remr */
- 48, /* remi */
- 40, /* remr_u */
- 44, /* remi_u */
- 4, /* andr */
- 12, /* andi */
- 4, /* orr */
- 12, /* ori */
- 4, /* xorr */
- 12, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 14, /* ltr */
- 14, /* lti */
- 14, /* ltr_u */
- 14, /* lti_u */
- 14, /* ler */
- 14, /* lei */
- 14, /* ler_u */
- 14, /* lei_u */
- 14, /* eqr */
- 14, /* eqi */
- 14, /* ger */
- 14, /* gei */
- 14, /* ger_u */
- 14, /* gei_u */
- 14, /* gtr */
- 14, /* gti */
- 14, /* gtr_u */
- 14, /* gti_u */
- 14, /* ner */
- 14, /* nei */
- 4, /* movr */
- 8, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 8, /* htonr_us */
- 4, /* htonr_ui */
- 0, /* htonr_ul */
- 4, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 12, /* ldi_uc */
- 4, /* ldr_s */
- 12, /* ldi_s */
- 4, /* ldr_us */
- 12, /* ldi_us */
- 4, /* ldr_i */
- 12, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 4, /* ldxr_c */
- 12, /* ldxi_c */
- 4, /* ldxr_uc */
- 12, /* ldxi_uc */
- 4, /* ldxr_s */
- 12, /* ldxi_s */
- 4, /* ldxr_us */
- 12, /* ldxi_us */
- 4, /* ldxr_i */
- 12, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 4, /* str_c */
- 12, /* sti_c */
- 4, /* str_s */
- 12, /* sti_s */
- 4, /* str_i */
- 12, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 4, /* stxr_c */
- 12, /* stxi_c */
- 4, /* stxr_s */
- 12, /* stxi_s */
- 4, /* stxr_i */
- 12, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 8, /* bltr */
- 8, /* blti */
- 8, /* bltr_u */
- 8, /* blti_u */
- 8, /* bler */
- 8, /* blei */
- 8, /* bler_u */
- 8, /* blei_u */
- 8, /* beqr */
- 16, /* beqi */
- 8, /* bger */
- 8, /* bgei */
- 8, /* bger_u */
- 8, /* bgei_u */
- 8, /* bgtr */
- 8, /* bgti */
- 8, /* bgtr_u */
- 8, /* bgti_u */
- 8, /* bner */
- 16, /* bnei */
- 8, /* bmsr */
- 8, /* bmsi */
- 8, /* bmcr */
- 8, /* bmci */
- 8, /* boaddr */
- 8, /* boaddi */
- 8, /* boaddr_u */
- 8, /* boaddi_u */
- 8, /* bxaddr */
- 8, /* bxaddi */
- 8, /* bxaddr_u */
- 8, /* bxaddi_u */
- 8, /* bosubr */
- 8, /* bosubi */
- 8, /* bosubr_u */
- 8, /* bosubi_u */
- 8, /* bxsubr */
- 8, /* bxsubi */
- 8, /* bxsubr_u */
- 8, /* bxsubi_u */
- 4, /* jmpr */
- 8, /* jmpi */
- 4, /* callr */
- 20, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 24, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 8, /* addi_f */
- 4, /* subr_f */
- 8, /* subi_f */
- 8, /* rsbi_f */
- 4, /* mulr_f */
- 8, /* muli_f */
- 4, /* divr_f */
- 8, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 18, /* ltr_f */
- 30, /* lti_f */
- 20, /* ler_f */
- 32, /* lei_f */
- 18, /* eqr_f */
- 30, /* eqi_f */
- 18, /* ger_f */
- 30, /* gei_f */
- 18, /* gtr_f */
- 30, /* gti_f */
- 18, /* ner_f */
- 30, /* nei_f */
- 18, /* unltr_f */
- 30, /* unlti_f */
- 18, /* unler_f */
- 30, /* unlei_f */
- 24, /* uneqr_f */
- 36, /* uneqi_f */
- 18, /* unger_f */
- 30, /* ungei_f */
- 18, /* ungtr_f */
- 30, /* ungti_f */
- 24, /* ltgtr_f */
- 36, /* ltgti_f */
- 18, /* ordr_f */
- 30, /* ordi_f */
- 18, /* unordr_f */
- 30, /* unordi_f */
- 8, /* truncr_f_i */
- 0, /* truncr_f_l */
- 8, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 12, /* movi_f */
- 4, /* ldr_f */
- 12, /* ldi_f */
- 8, /* ldxr_f */
- 16, /* ldxi_f */
- 4, /* str_f */
- 12, /* sti_f */
- 8, /* stxr_f */
- 16, /* stxi_f */
- 12, /* bltr_f */
- 24, /* blti_f */
- 12, /* bler_f */
- 24, /* blei_f */
- 12, /* beqr_f */
- 24, /* beqi_f */
- 12, /* bger_f */
- 24, /* bgei_f */
- 12, /* bgtr_f */
- 24, /* bgti_f */
- 12, /* bner_f */
- 24, /* bnei_f */
- 16, /* bunltr_f */
- 28, /* bunlti_f */
- 16, /* bunler_f */
- 28, /* bunlei_f */
- 20, /* buneqr_f */
- 32, /* buneqi_f */
- 16, /* bunger_f */
- 28, /* bungei_f */
- 12, /* bungtr_f */
- 24, /* bungti_f */
- 20, /* bltgtr_f */
- 32, /* bltgti_f */
- 12, /* bordr_f */
- 24, /* bordi_f */
- 12, /* bunordr_f */
- 24, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 20, /* addi_d */
- 4, /* subr_d */
- 20, /* subi_d */
- 20, /* rsbi_d */
- 4, /* mulr_d */
- 20, /* muli_d */
- 4, /* divr_d */
- 20, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 18, /* ltr_d */
- 34, /* lti_d */
- 20, /* ler_d */
- 36, /* lei_d */
- 18, /* eqr_d */
- 34, /* eqi_d */
- 18, /* ger_d */
- 34, /* gei_d */
- 18, /* gtr_d */
- 34, /* gti_d */
- 18, /* ner_d */
- 34, /* nei_d */
- 18, /* unltr_d */
- 34, /* unlti_d */
- 18, /* unler_d */
- 34, /* unlei_d */
- 24, /* uneqr_d */
- 40, /* uneqi_d */
- 18, /* unger_d */
- 34, /* ungei_d */
- 18, /* ungtr_d */
- 34, /* ungti_d */
- 24, /* ltgtr_d */
- 40, /* ltgti_d */
- 18, /* ordr_d */
- 34, /* ordi_d */
- 18, /* unordr_d */
- 34, /* unordi_d */
- 8, /* truncr_d_i */
- 0, /* truncr_d_l */
- 8, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 16, /* movi_d */
- 4, /* ldr_d */
- 12, /* ldi_d */
- 8, /* ldxr_d */
- 16, /* ldxi_d */
- 4, /* str_d */
- 12, /* sti_d */
- 8, /* stxr_d */
- 16, /* stxi_d */
- 12, /* bltr_d */
- 28, /* blti_d */
- 12, /* bler_d */
- 28, /* blei_d */
- 12, /* beqr_d */
- 28, /* beqi_d */
- 12, /* bger_d */
- 28, /* bgei_d */
- 12, /* bgtr_d */
- 28, /* bgti_d */
- 12, /* bner_d */
- 28, /* bnei_d */
- 16, /* bunltr_d */
- 32, /* bunlti_d */
- 16, /* bunler_d */
- 32, /* bunlei_d */
- 20, /* buneqr_d */
- 36, /* buneqi_d */
- 16, /* bunger_d */
- 32, /* bungei_d */
- 12, /* bungtr_d */
- 28, /* bungti_d */
- 20, /* bltgtr_d */
- 36, /* bltgti_d */
- 12, /* bordr_d */
- 28, /* bordi_d */
- 12, /* bunordr_d */
- 28, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 4, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 4, /* movr_d_ww */
- 12, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __ARM_PCS_VFP */
-#endif /* __WORDSIZE */
-
-#if __WORDSIZE == 32
-#if !defined(__ARM_PCS_VFP)
-#define JIT_INSTR_MAX 160
- 0, /* data */
- 0, /* live */
- 2, /* align */
- 0, /* save */
- 0, /* load */
- 2, /* #name */
- 0, /* #note */
- 0, /* label */
- 30, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 4, /* va_start */
- 8, /* va_arg */
- 28, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 12, /* addi */
- 4, /* addcr */
- 8, /* addci */
- 4, /* addxr */
- 4, /* addxi */
- 4, /* subr */
- 12, /* subi */
- 4, /* subcr */
- 8, /* subci */
- 4, /* subxr */
- 4, /* subxi */
- 16, /* rsbi */
- 8, /* mulr */
- 12, /* muli */
- 4, /* qmulr */
- 12, /* qmuli */
- 4, /* qmulr_u */
- 8, /* qmuli_u */
- 40, /* divr */
- 48, /* divi */
- 40, /* divr_u */
- 44, /* divi_u */
- 34, /* qdivr */
- 38, /* qdivi */
- 34, /* qdivr_u */
- 38, /* qdivi_u */
- 40, /* remr */
- 48, /* remi */
- 40, /* remr_u */
- 44, /* remi_u */
- 4, /* andr */
- 12, /* andi */
- 4, /* orr */
- 12, /* ori */
- 4, /* xorr */
- 12, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 14, /* ltr */
- 14, /* lti */
- 14, /* ltr_u */
- 14, /* lti_u */
- 14, /* ler */
- 14, /* lei */
- 14, /* ler_u */
- 14, /* lei_u */
- 14, /* eqr */
- 14, /* eqi */
- 14, /* ger */
- 14, /* gei */
- 14, /* ger_u */
- 14, /* gei_u */
- 14, /* gtr */
- 14, /* gti */
- 14, /* gtr_u */
- 14, /* gti_u */
- 14, /* ner */
- 14, /* nei */
- 4, /* movr */
- 8, /* movi */
- 8, /* extr_c */
- 4, /* extr_uc */
- 8, /* extr_s */
- 8, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 20, /* htonr_us */
- 16, /* htonr_ui */
- 0, /* htonr_ul */
- 4, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 12, /* ldi_uc */
- 4, /* ldr_s */
- 12, /* ldi_s */
- 4, /* ldr_us */
- 12, /* ldi_us */
- 4, /* ldr_i */
- 12, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 4, /* ldxr_c */
- 12, /* ldxi_c */
- 4, /* ldxr_uc */
- 12, /* ldxi_uc */
- 4, /* ldxr_s */
- 12, /* ldxi_s */
- 4, /* ldxr_us */
- 12, /* ldxi_us */
- 4, /* ldxr_i */
- 12, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 4, /* str_c */
- 12, /* sti_c */
- 4, /* str_s */
- 12, /* sti_s */
- 4, /* str_i */
- 12, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 4, /* stxr_c */
- 12, /* stxi_c */
- 4, /* stxr_s */
- 12, /* stxi_s */
- 4, /* stxr_i */
- 12, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 8, /* bltr */
- 8, /* blti */
- 8, /* bltr_u */
- 8, /* blti_u */
- 8, /* bler */
- 8, /* blei */
- 8, /* bler_u */
- 8, /* blei_u */
- 8, /* beqr */
- 16, /* beqi */
- 8, /* bger */
- 8, /* bgei */
- 8, /* bger_u */
- 8, /* bgei_u */
- 8, /* bgtr */
- 8, /* bgti */
- 8, /* bgtr_u */
- 8, /* bgti_u */
- 8, /* bner */
- 16, /* bnei */
- 8, /* bmsr */
- 8, /* bmsi */
- 8, /* bmcr */
- 8, /* bmci */
- 8, /* boaddr */
- 8, /* boaddi */
- 8, /* boaddr_u */
- 8, /* boaddi_u */
- 8, /* bxaddr */
- 8, /* bxaddi */
- 8, /* bxaddr_u */
- 8, /* bxaddi_u */
- 8, /* bosubr */
- 8, /* bosubi */
- 8, /* bosubr_u */
- 8, /* bosubi_u */
- 8, /* bxsubr */
- 8, /* bxsubi */
- 8, /* bxsubr_u */
- 8, /* bxsubi_u */
- 12, /* jmpr */
- 72, /* jmpi */
- 4, /* callr */
- 20, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 160, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 40, /* addr_f */
- 40, /* addi_f */
- 40, /* subr_f */
- 40, /* subi_f */
- 40, /* rsbi_f */
- 40, /* mulr_f */
- 40, /* muli_f */
- 40, /* divr_f */
- 40, /* divi_f */
- 12, /* negr_f */
- 12, /* absr_f */
- 36, /* sqrtr_f */
- 40, /* ltr_f */
- 44, /* lti_f */
- 40, /* ler_f */
- 44, /* lei_f */
- 40, /* eqr_f */
- 44, /* eqi_f */
- 40, /* ger_f */
- 44, /* gei_f */
- 40, /* gtr_f */
- 44, /* gti_f */
- 44, /* ner_f */
- 48, /* nei_f */
- 72, /* unltr_f */
- 80, /* unlti_f */
- 72, /* unler_f */
- 80, /* unlei_f */
- 72, /* uneqr_f */
- 80, /* uneqi_f */
- 72, /* unger_f */
- 80, /* ungei_f */
- 72, /* ungtr_f */
- 80, /* ungti_f */
- 76, /* ltgtr_f */
- 84, /* ltgti_f */
- 44, /* ordr_f */
- 48, /* ordi_f */
- 72, /* unordr_f */
- 80, /* unordi_f */
- 36, /* truncr_f_i */
- 0, /* truncr_f_l */
- 36, /* extr_f */
- 38, /* extr_d_f */
- 8, /* movr_f */
- 12, /* movi_f */
- 8, /* ldr_f */
- 16, /* ldi_f */
- 8, /* ldxr_f */
- 16, /* ldxi_f */
- 8, /* str_f */
- 16, /* sti_f */
- 8, /* stxr_f */
- 16, /* stxi_f */
- 44, /* bltr_f */
- 48, /* blti_f */
- 44, /* bler_f */
- 48, /* blei_f */
- 44, /* beqr_f */
- 52, /* beqi_f */
- 44, /* bger_f */
- 48, /* bgei_f */
- 44, /* bgtr_f */
- 48, /* bgti_f */
- 44, /* bner_f */
- 48, /* bnei_f */
- 44, /* bunltr_f */
- 48, /* bunlti_f */
- 44, /* bunler_f */
- 48, /* bunlei_f */
- 76, /* buneqr_f */
- 84, /* buneqi_f */
- 44, /* bunger_f */
- 48, /* bungei_f */
- 44, /* bungtr_f */
- 48, /* bungti_f */
- 76, /* bltgtr_f */
- 84, /* bltgti_f */
- 44, /* bordr_f */
- 48, /* bordi_f */
- 44, /* bunordr_f */
- 48, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 50, /* addr_d */
- 52, /* addi_d */
- 50, /* subr_d */
- 52, /* subi_d */
- 52, /* rsbi_d */
- 50, /* mulr_d */
- 52, /* muli_d */
- 50, /* divr_d */
- 52, /* divi_d */
- 20, /* negr_d */
- 20, /* absr_d */
- 42, /* sqrtr_d */
- 44, /* ltr_d */
- 48, /* lti_d */
- 44, /* ler_d */
- 48, /* lei_d */
- 44, /* eqr_d */
- 48, /* eqi_d */
- 44, /* ger_d */
- 48, /* gei_d */
- 44, /* gtr_d */
- 48, /* gti_d */
- 48, /* ner_d */
- 52, /* nei_d */
- 82, /* unltr_d */
- 88, /* unlti_d */
- 82, /* unler_d */
- 88, /* unlei_d */
- 82, /* uneqr_d */
- 88, /* uneqi_d */
- 82, /* unger_d */
- 88, /* ungei_d */
- 82, /* ungtr_d */
- 88, /* ungti_d */
- 86, /* ltgtr_d */
- 92, /* ltgti_d */
- 48, /* ordr_d */
- 52, /* ordi_d */
- 82, /* unordr_d */
- 88, /* unordi_d */
- 36, /* truncr_d_i */
- 0, /* truncr_d_l */
- 36, /* extr_d */
- 38, /* extr_f_d */
- 16, /* movr_d */
- 20, /* movi_d */
- 16, /* ldr_d */
- 24, /* ldi_d */
- 20, /* ldxr_d */
- 28, /* ldxi_d */
- 16, /* str_d */
- 24, /* sti_d */
- 20, /* stxr_d */
- 28, /* stxi_d */
- 48, /* bltr_d */
- 52, /* blti_d */
- 48, /* bler_d */
- 52, /* blei_d */
- 48, /* beqr_d */
- 60, /* beqi_d */
- 48, /* bger_d */
- 52, /* bgei_d */
- 48, /* bgtr_d */
- 52, /* bgti_d */
- 48, /* bner_d */
- 52, /* bnei_d */
- 48, /* bunltr_d */
- 52, /* bunlti_d */
- 48, /* bunler_d */
- 52, /* bunlei_d */
- 84, /* buneqr_d */
- 92, /* buneqi_d */
- 48, /* bunger_d */
- 52, /* bungei_d */
- 48, /* bungtr_d */
- 52, /* bungti_d */
- 84, /* bltgtr_d */
- 92, /* bltgti_d */
- 48, /* bordr_d */
- 52, /* bordi_d */
- 48, /* bunordr_d */
- 52, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 4, /* movr_w_f */
- 8, /* movr_ww_d */
- 0, /* movr_w_d */
- 8, /* movr_f_w */
- 8, /* movi_f_w */
- 16, /* movr_d_ww */
- 12, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __ARM_PCS_VFP */
-#endif /* __WORDSIZE */
diff --git a/libguile/lightning/lib/jit_hppa-sz.c b/libguile/lightning/lib/jit_hppa-sz.c
deleted file mode 100644
index 3c04f6372..000000000
--- a/libguile/lightning/lib/jit_hppa-sz.c
+++ /dev/null
@@ -1,402 +0,0 @@
-
-#if __WORDSIZE == 32
-#define JIT_INSTR_MAX 64
- 0, /* data */
- 0, /* live */
- 0, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 64, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 0, /* va_start */
- 0, /* va_arg */
- 0, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 12, /* addi */
- 4, /* addcr */
- 12, /* addci */
- 4, /* addxr */
- 8, /* addxi */
- 4, /* subr */
- 12, /* subi */
- 4, /* subcr */
- 12, /* subci */
- 4, /* subxr */
- 8, /* subxi */
- 16, /* rsbi */
- 28, /* mulr */
- 36, /* muli */
- 40, /* qmulr */
- 44, /* qmuli */
- 32, /* qmulr_u */
- 40, /* qmuli_u */
- 36, /* divr */
- 40, /* divi */
- 36, /* divr_u */
- 40, /* divi_u */
- 40, /* qdivr */
- 40, /* qdivi */
- 40, /* qdivr_u */
- 40, /* qdivi_u */
- 36, /* remr */
- 40, /* remi */
- 36, /* remr_u */
- 40, /* remi_u */
- 4, /* andr */
- 12, /* andi */
- 4, /* orr */
- 12, /* ori */
- 4, /* xorr */
- 12, /* xori */
- 12, /* lshr */
- 4, /* lshi */
- 12, /* rshr */
- 4, /* rshi */
- 12, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 8, /* ltr */
- 8, /* lti */
- 8, /* ltr_u */
- 8, /* lti_u */
- 8, /* ler */
- 8, /* lei */
- 8, /* ler_u */
- 8, /* lei_u */
- 8, /* eqr */
- 12, /* eqi */
- 8, /* ger */
- 8, /* gei */
- 8, /* ger_u */
- 8, /* gei_u */
- 8, /* gtr */
- 8, /* gti */
- 8, /* gtr_u */
- 8, /* gti_u */
- 8, /* ner */
- 8, /* nei */
- 4, /* movr */
- 8, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 4, /* htonr_us */
- 4, /* htonr_ui */
- 0, /* htonr_l */
- 8, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 8, /* ldi_uc */
- 8, /* ldr_s */
- 12, /* ldi_s */
- 4, /* ldr_us */
- 8, /* ldi_us */
- 4, /* ldr_i */
- 8, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 8, /* ldxr_c */
- 8, /* ldxi_c */
- 4, /* ldxr_uc */
- 4, /* ldxi_uc */
- 8, /* ldxr_s */
- 8, /* ldxi_s */
- 4, /* ldxr_us */
- 4, /* ldxi_us */
- 4, /* ldxr_i */
- 4, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 4, /* str_c */
- 8, /* sti_c */
- 4, /* str_s */
- 8, /* sti_s */
- 4, /* str_i */
- 8, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 8, /* stxr_c */
- 4, /* stxi_c */
- 8, /* stxr_s */
- 4, /* stxi_s */
- 8, /* stxr_i */
- 4, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 8, /* bltr */
- 8, /* blti */
- 8, /* bltr_u */
- 8, /* blti_u */
- 8, /* bler */
- 12, /* blei */
- 8, /* bler_u */
- 8, /* blei_u */
- 8, /* beqr */
- 16, /* beqi */
- 8, /* bger */
- 8, /* bgei */
- 8, /* bger_u */
- 8, /* bgei_u */
- 8, /* bgtr */
- 8, /* bgti */
- 8, /* bgtr_u */
- 8, /* bgti_u */
- 8, /* bner */
- 16, /* bnei */
- 12, /* bmsr */
- 16, /* bmsi */
- 12, /* bmcr */
- 16, /* bmci */
- 8, /* boaddr */
- 8, /* boaddi */
- 8, /* boaddr_u */
- 8, /* boaddi_u */
- 8, /* bxaddr */
- 8, /* bxaddi */
- 8, /* bxaddr_u */
- 8, /* bxaddi_u */
- 12, /* bosubr */
- 16, /* bosubi */
- 16, /* bosubr_u */
- 20, /* bosubi_u */
- 12, /* bxsubr */
- 16, /* bxsubi */
- 16, /* bxsubr_u */
- 20, /* bxsubi_u */
- 0, /* jmpr */
- 12, /* jmpi */
- 40, /* callr */
- 44, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 64, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 16, /* addi_f */
- 4, /* subr_f */
- 16, /* subi_f */
- 16, /* rsbi_f */
- 4, /* mulr_f */
- 16, /* muli_f */
- 4, /* divr_f */
- 16, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 16, /* ltr_f */
- 28, /* lti_f */
- 16, /* ler_f */
- 28, /* lei_f */
- 16, /* eqr_f */
- 28, /* eqi_f */
- 16, /* ger_f */
- 28, /* gei_f */
- 16, /* gtr_f */
- 28, /* gti_f */
- 16, /* ner_f */
- 28, /* nei_f */
- 16, /* unltr_f */
- 28, /* unlti_f */
- 16, /* unler_f */
- 28, /* unlei_f */
- 16, /* uneqr_f */
- 28, /* uneqi_f */
- 16, /* unger_f */
- 28, /* ungei_f */
- 16, /* ungtr_f */
- 28, /* ungti_f */
- 16, /* ltgtr_f */
- 28, /* ltgti_f */
- 16, /* ordr_f */
- 28, /* ordi_f */
- 16, /* unordr_f */
- 28, /* unordi_f */
- 12, /* truncr_f_i */
- 0, /* truncr_f_l */
- 12, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 12, /* movi_f */
- 4, /* ldr_f */
- 12, /* ldi_f */
- 4, /* ldxr_f */
- 4, /* ldxi_f */
- 4, /* str_f */
- 12, /* sti_f */
- 8, /* stxr_f */
- 4, /* stxi_f */
- 16, /* bltr_f */
- 28, /* blti_f */
- 16, /* bler_f */
- 28, /* blei_f */
- 16, /* beqr_f */
- 28, /* beqi_f */
- 16, /* bger_f */
- 28, /* bgei_f */
- 16, /* bgtr_f */
- 28, /* bgti_f */
- 16, /* bner_f */
- 28, /* bnei_f */
- 16, /* bunltr_f */
- 28, /* bunlti_f */
- 16, /* bunler_f */
- 28, /* bunlei_f */
- 16, /* buneqr_f */
- 28, /* buneqi_f */
- 16, /* bunger_f */
- 28, /* bungei_f */
- 16, /* bungtr_f */
- 28, /* bungti_f */
- 16, /* bltgtr_f */
- 28, /* bltgti_f */
- 16, /* bordr_f */
- 28, /* bordi_f */
- 16, /* bunordr_f */
- 28, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 24, /* addi_d */
- 4, /* subr_d */
- 24, /* subi_d */
- 24, /* rsbi_d */
- 4, /* mulr_d */
- 24, /* muli_d */
- 4, /* divr_d */
- 24, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 16, /* ltr_d */
- 36, /* lti_d */
- 16, /* ler_d */
- 36, /* lei_d */
- 16, /* eqr_d */
- 36, /* eqi_d */
- 16, /* ger_d */
- 36, /* gei_d */
- 16, /* gtr_d */
- 36, /* gti_d */
- 16, /* ner_d */
- 36, /* nei_d */
- 16, /* unltr_d */
- 36, /* unlti_d */
- 16, /* unler_d */
- 36, /* unlei_d */
- 16, /* uneqr_d */
- 36, /* uneqi_d */
- 16, /* unger_d */
- 36, /* ungei_d */
- 16, /* ungtr_d */
- 36, /* ungti_d */
- 16, /* ltgtr_d */
- 36, /* ltgti_d */
- 16, /* ordr_d */
- 36, /* ordi_d */
- 16, /* unordr_d */
- 36, /* unordi_d */
- 12, /* truncr_d_i */
- 0, /* truncr_d_l */
- 12, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 20, /* movi_d */
- 4, /* ldr_d */
- 12, /* ldi_d */
- 4, /* ldxr_d */
- 4, /* ldxi_d */
- 4, /* str_d */
- 12, /* sti_d */
- 8, /* stxr_d */
- 4, /* stxi_d */
- 16, /* bltr_d */
- 36, /* blti_d */
- 16, /* bler_d */
- 36, /* blei_d */
- 16, /* beqr_d */
- 36, /* beqi_d */
- 16, /* bger_d */
- 36, /* bgei_d */
- 16, /* bgtr_d */
- 36, /* bgti_d */
- 16, /* bner_d */
- 36, /* bnei_d */
- 16, /* bunltr_d */
- 36, /* bunlti_d */
- 16, /* bunler_d */
- 36, /* bunlei_d */
- 16, /* buneqr_d */
- 36, /* buneqi_d */
- 16, /* bunger_d */
- 36, /* bungei_d */
- 16, /* bungtr_d */
- 36, /* bungti_d */
- 16, /* bltgtr_d */
- 36, /* bltgti_d */
- 16, /* bordr_d */
- 36, /* bordi_d */
- 16, /* bunordr_d */
- 36, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __WORDSIZE */
diff --git a/libguile/lightning/lib/jit_ia64-sz.c b/libguile/lightning/lib/jit_ia64-sz.c
deleted file mode 100644
index 59826d99d..000000000
--- a/libguile/lightning/lib/jit_ia64-sz.c
+++ /dev/null
@@ -1,402 +0,0 @@
-
-#if __WORDSIZE == 64
-#define JIT_INSTR_MAX 224
- 0, /* data */
- 0, /* live */
- 0, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 224, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 16, /* va_start */
- 32, /* va_arg */
- 32, /* va_arg_d */
- 0, /* va_end */
- 16, /* addr */
- 32, /* addi */
- 32, /* addcr */
- 48, /* addci */
- 64, /* addxr */
- 64, /* addxi */
- 16, /* subr */
- 32, /* subi */
- 32, /* subcr */
- 48, /* subci */
- 64, /* subxr */
- 64, /* subxi */
- 32, /* rsbi */
- 48, /* mulr */
- 64, /* muli */
- 112, /* qmulr */
- 112, /* qmuli */
- 112, /* qmulr_u */
- 112, /* qmuli_u */
- 80, /* divr */
- 96, /* divi */
- 80, /* divr_u */
- 96, /* divi_u */
- 144, /* qdivr */
- 144, /* qdivi */
- 144, /* qdivr_u */
- 144, /* qdivi_u */
- 80, /* remr */
- 96, /* remi */
- 80, /* remr_u */
- 96, /* remi_u */
- 16, /* andr */
- 32, /* andi */
- 16, /* orr */
- 32, /* ori */
- 16, /* xorr */
- 32, /* xori */
- 16, /* lshr */
- 16, /* lshi */
- 16, /* rshr */
- 16, /* rshi */
- 16, /* rshr_u */
- 16, /* rshi_u */
- 16, /* negr */
- 16, /* comr */
- 32, /* ltr */
- 32, /* lti */
- 32, /* ltr_u */
- 32, /* lti_u */
- 32, /* ler */
- 32, /* lei */
- 32, /* ler_u */
- 32, /* lei_u */
- 32, /* eqr */
- 32, /* eqi */
- 32, /* ger */
- 32, /* gei */
- 32, /* ger_u */
- 32, /* gei_u */
- 32, /* gtr */
- 32, /* gti */
- 32, /* gtr_u */
- 32, /* gti_u */
- 32, /* ner */
- 32, /* nei */
- 16, /* movr */
- 16, /* movi */
- 16, /* extr_c */
- 16, /* extr_uc */
- 16, /* extr_s */
- 16, /* extr_us */
- 16, /* extr_i */
- 16, /* extr_ui */
- 64, /* htonr_us */
- 160, /* htonr_ui */
- 16, /* htonr_ul */
- 16, /* ldr_c */
- 32, /* ldi_c */
- 16, /* ldr_uc */
- 32, /* ldi_uc */
- 16, /* ldr_s */
- 32, /* ldi_s */
- 16, /* ldr_us */
- 32, /* ldi_us */
- 16, /* ldr_i */
- 32, /* ldi_i */
- 16, /* ldr_ui */
- 32, /* ldi_ui */
- 16, /* ldr_l */
- 32, /* ldi_l */
- 32, /* ldxr_c */
- 48, /* ldxi_c */
- 16, /* ldxr_uc */
- 32, /* ldxi_uc */
- 32, /* ldxr_s */
- 48, /* ldxi_s */
- 16, /* ldxr_us */
- 32, /* ldxi_us */
- 32, /* ldxr_i */
- 48, /* ldxi_i */
- 16, /* ldxr_ui */
- 32, /* ldxi_ui */
- 16, /* ldxr_l */
- 32, /* ldxi_l */
- 16, /* str_c */
- 32, /* sti_c */
- 16, /* str_s */
- 32, /* sti_s */
- 16, /* str_i */
- 32, /* sti_i */
- 16, /* str_l */
- 32, /* sti_l */
- 16, /* stxr_c */
- 32, /* stxi_c */
- 16, /* stxr_s */
- 32, /* stxi_s */
- 16, /* stxr_i */
- 32, /* stxi_i */
- 16, /* stxr_l */
- 32, /* stxi_l */
- 32, /* bltr */
- 32, /* blti */
- 32, /* bltr_u */
- 32, /* blti_u */
- 32, /* bler */
- 32, /* blei */
- 32, /* bler_u */
- 32, /* blei_u */
- 32, /* beqr */
- 48, /* beqi */
- 32, /* bger */
- 32, /* bgei */
- 32, /* bger_u */
- 32, /* bgei_u */
- 32, /* bgtr */
- 32, /* bgti */
- 32, /* bgtr_u */
- 32, /* bgti_u */
- 32, /* bner */
- 48, /* bnei */
- 32, /* bmsr */
- 48, /* bmsi */
- 32, /* bmcr */
- 48, /* bmci */
- 96, /* boaddr */
- 112, /* boaddi */
- 64, /* boaddr_u */
- 64, /* boaddi_u */
- 96, /* bxaddr */
- 112, /* bxaddi */
- 64, /* bxaddr_u */
- 64, /* bxaddi_u */
- 112, /* bosubr */
- 112, /* bosubi */
- 64, /* bosubr_u */
- 64, /* bosubi_u */
- 112, /* bxsubr */
- 112, /* bxsubi */
- 64, /* bxsubr_u */
- 64, /* bxsubi_u */
- 16, /* jmpr */
- 16, /* jmpi */
- 32, /* callr */
- 48, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 128, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 16, /* addr_f */
- 48, /* addi_f */
- 16, /* subr_f */
- 48, /* subi_f */
- 48, /* rsbi_f */
- 16, /* mulr_f */
- 48, /* muli_f */
- 160, /* divr_f */
- 192, /* divi_f */
- 16, /* negr_f */
- 16, /* absr_f */
- 80, /* sqrtr_f */
- 32, /* ltr_f */
- 64, /* lti_f */
- 32, /* ler_f */
- 64, /* lei_f */
- 32, /* eqr_f */
- 64, /* eqi_f */
- 32, /* ger_f */
- 64, /* gei_f */
- 32, /* gtr_f */
- 64, /* gti_f */
- 32, /* ner_f */
- 64, /* nei_f */
- 32, /* unltr_f */
- 64, /* unlti_f */
- 32, /* unler_f */
- 64, /* unlei_f */
- 48, /* uneqr_f */
- 96, /* uneqi_f */
- 32, /* unger_f */
- 64, /* ungei_f */
- 32, /* ungtr_f */
- 64, /* ungti_f */
- 48, /* ltgtr_f */
- 96, /* ltgti_f */
- 32, /* ordr_f */
- 64, /* ordi_f */
- 32, /* unordr_f */
- 64, /* unordi_f */
- 32, /* truncr_f_i */
- 32, /* truncr_f_l */
- 48, /* extr_f */
- 16, /* extr_d_f */
- 16, /* movr_f */
- 32, /* movi_f */
- 16, /* ldr_f */
- 32, /* ldi_f */
- 16, /* ldxr_f */
- 32, /* ldxi_f */
- 16, /* str_f */
- 32, /* sti_f */
- 16, /* stxr_f */
- 32, /* stxi_f */
- 32, /* bltr_f */
- 64, /* blti_f */
- 32, /* bler_f */
- 64, /* blei_f */
- 32, /* beqr_f */
- 64, /* beqi_f */
- 32, /* bger_f */
- 64, /* bgei_f */
- 32, /* bgtr_f */
- 64, /* bgti_f */
- 32, /* bner_f */
- 64, /* bnei_f */
- 32, /* bunltr_f */
- 64, /* bunlti_f */
- 32, /* bunler_f */
- 64, /* bunlei_f */
- 80, /* buneqr_f */
- 112, /* buneqi_f */
- 32, /* bunger_f */
- 64, /* bungei_f */
- 32, /* bungtr_f */
- 64, /* bungti_f */
- 80, /* bltgtr_f */
- 112, /* bltgti_f */
- 32, /* bordr_f */
- 64, /* bordi_f */
- 32, /* bunordr_f */
- 64, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 16, /* addr_d */
- 48, /* addi_d */
- 16, /* subr_d */
- 48, /* subi_d */
- 48, /* rsbi_d */
- 16, /* mulr_d */
- 48, /* muli_d */
- 160, /* divr_d */
- 192, /* divi_d */
- 16, /* negr_d */
- 16, /* absr_d */
- 80, /* sqrtr_d */
- 32, /* ltr_d */
- 64, /* lti_d */
- 32, /* ler_d */
- 64, /* lei_d */
- 32, /* eqr_d */
- 64, /* eqi_d */
- 32, /* ger_d */
- 64, /* gei_d */
- 32, /* gtr_d */
- 64, /* gti_d */
- 32, /* ner_d */
- 64, /* nei_d */
- 32, /* unltr_d */
- 64, /* unlti_d */
- 32, /* unler_d */
- 64, /* unlei_d */
- 48, /* uneqr_d */
- 96, /* uneqi_d */
- 32, /* unger_d */
- 64, /* ungei_d */
- 32, /* ungtr_d */
- 64, /* ungti_d */
- 48, /* ltgtr_d */
- 96, /* ltgti_d */
- 32, /* ordr_d */
- 64, /* ordi_d */
- 32, /* unordr_d */
- 64, /* unordi_d */
- 32, /* truncr_d_i */
- 32, /* truncr_d_l */
- 48, /* extr_d */
- 16, /* extr_f_d */
- 16, /* movr_d */
- 32, /* movi_d */
- 16, /* ldr_d */
- 32, /* ldi_d */
- 16, /* ldxr_d */
- 32, /* ldxi_d */
- 16, /* str_d */
- 32, /* sti_d */
- 16, /* stxr_d */
- 32, /* stxi_d */
- 32, /* bltr_d */
- 64, /* blti_d */
- 32, /* bler_d */
- 64, /* blei_d */
- 32, /* beqr_d */
- 64, /* beqi_d */
- 32, /* bger_d */
- 64, /* bgei_d */
- 32, /* bgtr_d */
- 64, /* bgti_d */
- 32, /* bner_d */
- 64, /* bnei_d */
- 32, /* bunltr_d */
- 64, /* bunlti_d */
- 32, /* bunler_d */
- 64, /* bunlei_d */
- 80, /* buneqr_d */
- 112, /* buneqi_d */
- 32, /* bunger_d */
- 64, /* bungei_d */
- 32, /* bungtr_d */
- 64, /* bungti_d */
- 80, /* bltgtr_d */
- 112, /* bltgti_d */
- 32, /* bordr_d */
- 64, /* bordi_d */
- 32, /* bunordr_d */
- 64, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 16, /* movr_d_w */
- 32, /* movi_d_w */
-#endif /* __WORDSIZE */
diff --git a/libguile/lightning/lib/jit_memory.c b/libguile/lightning/lib/jit_memory.c
deleted file mode 100644
index 10e0925bb..000000000
--- a/libguile/lightning/lib/jit_memory.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2013-2018 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#define DEBUG 1
-#define DISASSEMBLER 0
-
-#include <lightning.h>
-#include <lightning/jit_private.h>
-#include <sys/mman.h>
-
-/*
- * Prototypes
- */
-static void *jit_default_alloc_func(size_t);
-static void *jit_default_realloc_func(void*, size_t);
-static void jit_default_free_func(void *);
-
-/*
- * Initialization
- */
-static jit_alloc_func_ptr jit_alloc_ptr = jit_default_alloc_func;
-static jit_realloc_func_ptr jit_realloc_ptr = jit_default_realloc_func;
-static jit_free_func_ptr jit_free_ptr = jit_default_free_func;
-
-/*
- * Implementation
- */
-jit_pointer_t
-jit_memcpy(jit_pointer_t dst, const void * src, jit_word_t size)
-{
- if (size)
- return (memcpy(dst, src, size));
- return (dst);
-}
-
-jit_pointer_t
-jit_memmove(jit_pointer_t dst, const void *src , jit_word_t size)
-{
- if (size)
- return (memmove(dst, src, size));
- return (dst);
-}
-
-void
-jit_set_memory_functions(jit_alloc_func_ptr alloc_ptr,
- jit_realloc_func_ptr realloc_ptr,
- jit_free_func_ptr free_ptr)
-{
- if (alloc_ptr == NULL)
- alloc_ptr = jit_default_alloc_func;
- if (realloc_ptr == NULL)
- realloc_ptr = jit_default_realloc_func;
- if (free_ptr == NULL)
- free_ptr = jit_default_free_func;
- jit_alloc_ptr = alloc_ptr;
- jit_realloc_ptr = realloc_ptr;
- jit_free_ptr = free_ptr;
-}
-
-void
-jit_get_memory_functions(jit_alloc_func_ptr *alloc_ptr,
- jit_realloc_func_ptr *realloc_ptr,
- jit_free_func_ptr *free_ptr)
-{
- *alloc_ptr = jit_alloc_ptr;
- *realloc_ptr = jit_realloc_ptr;
- *free_ptr = jit_free_ptr;
-}
-
-void
-jit_alloc(jit_pointer_t *ptr, jit_word_t size)
-{
- *ptr = (*jit_alloc_ptr)(size);
- memset(*ptr, 0, size);
-}
-
-void
-jit_realloc(jit_pointer_t *ptr, jit_word_t old_size, jit_word_t new_size)
-{
- *ptr = (*jit_realloc_ptr)(*ptr, new_size);
- if (old_size < new_size)
- memset((jit_int8_t*)*ptr + old_size, 0, new_size - old_size);
-}
-
-void
-jit_free(jit_pointer_t *ptr)
-{
- if (*ptr) {
- (*jit_free_ptr)(*ptr);
- *ptr = NULL;
- }
-}
-
-static void *
-jit_default_alloc_func(size_t size)
-{
- return (malloc(size));
-}
-
-static void *
-jit_default_realloc_func(void *ptr, size_t size)
-{
- return (realloc(ptr, size));
-}
-
-static void
-jit_default_free_func(void *ptr)
-{
- free(ptr);
-}
diff --git a/libguile/lightning/lib/jit_mips-sz.c b/libguile/lightning/lib/jit_mips-sz.c
deleted file mode 100644
index 613aa0090..000000000
--- a/libguile/lightning/lib/jit_mips-sz.c
+++ /dev/null
@@ -1,1210 +0,0 @@
-
-#if __WORDSIZE == 32
-#if NEW_ABI
-#define JIT_INSTR_MAX 44
- 0, /* data */
- 0, /* live */
- 0, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 44, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 0, /* va_start */
- 0, /* va_arg */
- 0, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 12, /* addi */
- 12, /* addcr */
- 20, /* addci */
- 28, /* addxr */
- 28, /* addxi */
- 4, /* subr */
- 12, /* subi */
- 12, /* subcr */
- 20, /* subci */
- 28, /* subxr */
- 28, /* subxi */
- 16, /* rsbi */
- 8, /* mulr */
- 16, /* muli */
- 12, /* qmulr */
- 20, /* qmuli */
- 12, /* qmulr_u */
- 20, /* qmuli_u */
- 8, /* divr */
- 16, /* divi */
- 8, /* divr_u */
- 16, /* divi_u */
- 12, /* qdivr */
- 16, /* qdivi */
- 12, /* qdivr_u */
- 16, /* qdivi_u */
- 8, /* remr */
- 16, /* remi */
- 8, /* remr_u */
- 16, /* remi_u */
- 4, /* andr */
- 12, /* andi */
- 4, /* orr */
- 12, /* ori */
- 4, /* xorr */
- 12, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 8, /* comr */
- 4, /* ltr */
- 4, /* lti */
- 4, /* ltr_u */
- 4, /* lti_u */
- 8, /* ler */
- 12, /* lei */
- 8, /* ler_u */
- 12, /* lei_u */
- 12, /* eqr */
- 12, /* eqi */
- 8, /* ger */
- 12, /* gei */
- 8, /* ger_u */
- 12, /* gei_u */
- 4, /* gtr */
- 8, /* gti */
- 4, /* gtr_u */
- 8, /* gti_u */
- 8, /* ner */
- 8, /* nei */
- 4, /* movr */
- 8, /* movi */
- 8, /* extr_c */
- 4, /* extr_uc */
- 8, /* extr_s */
- 4, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 4, /* htonr_us */
- 4, /* htonr_ui */
- 0, /* htonr_ul */
- 4, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 12, /* ldi_uc */
- 4, /* ldr_s */
- 12, /* ldi_s */
- 4, /* ldr_us */
- 12, /* ldi_us */
- 4, /* ldr_i */
- 12, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 8, /* ldxr_c */
- 4, /* ldxi_c */
- 8, /* ldxr_uc */
- 4, /* ldxi_uc */
- 8, /* ldxr_s */
- 4, /* ldxi_s */
- 8, /* ldxr_us */
- 4, /* ldxi_us */
- 8, /* ldxr_i */
- 4, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 4, /* str_c */
- 12, /* sti_c */
- 4, /* str_s */
- 12, /* sti_s */
- 4, /* str_i */
- 12, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 8, /* stxr_c */
- 4, /* stxi_c */
- 8, /* stxr_s */
- 4, /* stxi_s */
- 8, /* stxr_i */
- 4, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 12, /* bltr */
- 12, /* blti */
- 12, /* bltr_u */
- 12, /* blti_u */
- 12, /* bler */
- 16, /* blei */
- 12, /* bler_u */
- 16, /* blei_u */
- 8, /* beqr */
- 16, /* beqi */
- 12, /* bger */
- 12, /* bgei */
- 12, /* bger_u */
- 12, /* bgei_u */
- 12, /* bgtr */
- 16, /* bgti */
- 12, /* bgtr_u */
- 16, /* bgti_u */
- 8, /* bner */
- 16, /* bnei */
- 12, /* bmsr */
- 12, /* bmsi */
- 12, /* bmcr */
- 12, /* bmci */
- 28, /* boaddr */
- 28, /* boaddi */
- 16, /* boaddr_u */
- 20, /* boaddi_u */
- 28, /* bxaddr */
- 28, /* bxaddi */
- 16, /* bxaddr_u */
- 20, /* bxaddi_u */
- 28, /* bosubr */
- 28, /* bosubi */
- 16, /* bosubr_u */
- 20, /* bosubi_u */
- 28, /* bxsubr */
- 28, /* bxsubi */
- 16, /* bxsubr_u */
- 20, /* bxsubi_u */
- 0, /* jmpr */
- 8, /* jmpi */
- 12, /* callr */
- 16, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 44, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 16, /* addi_f */
- 4, /* subr_f */
- 16, /* subi_f */
- 16, /* rsbi_f */
- 4, /* mulr_f */
- 16, /* muli_f */
- 4, /* divr_f */
- 16, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 16, /* ltr_f */
- 28, /* lti_f */
- 16, /* ler_f */
- 28, /* lei_f */
- 16, /* eqr_f */
- 28, /* eqi_f */
- 16, /* ger_f */
- 28, /* gei_f */
- 16, /* gtr_f */
- 28, /* gti_f */
- 16, /* ner_f */
- 28, /* nei_f */
- 16, /* unltr_f */
- 28, /* unlti_f */
- 16, /* unler_f */
- 28, /* unlei_f */
- 16, /* uneqr_f */
- 28, /* uneqi_f */
- 16, /* unger_f */
- 28, /* ungei_f */
- 16, /* ungtr_f */
- 28, /* ungti_f */
- 16, /* ltgtr_f */
- 28, /* ltgti_f */
- 16, /* ordr_f */
- 28, /* ordi_f */
- 16, /* unordr_f */
- 28, /* unordi_f */
- 8, /* truncr_f_i */
- 0, /* truncr_f_l */
- 8, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 12, /* movi_f */
- 4, /* ldr_f */
- 12, /* ldi_f */
- 8, /* ldxr_f */
- 4, /* ldxi_f */
- 4, /* str_f */
- 12, /* sti_f */
- 8, /* stxr_f */
- 4, /* stxi_f */
- 12, /* bltr_f */
- 24, /* blti_f */
- 12, /* bler_f */
- 24, /* blei_f */
- 12, /* beqr_f */
- 24, /* beqi_f */
- 12, /* bger_f */
- 24, /* bgei_f */
- 12, /* bgtr_f */
- 24, /* bgti_f */
- 12, /* bner_f */
- 24, /* bnei_f */
- 12, /* bunltr_f */
- 24, /* bunlti_f */
- 12, /* bunler_f */
- 24, /* bunlei_f */
- 12, /* buneqr_f */
- 24, /* buneqi_f */
- 12, /* bunger_f */
- 24, /* bungei_f */
- 12, /* bungtr_f */
- 24, /* bungti_f */
- 12, /* bltgtr_f */
- 24, /* bltgti_f */
- 12, /* bordr_f */
- 24, /* bordi_f */
- 12, /* bunordr_f */
- 24, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 16, /* addi_d */
- 4, /* subr_d */
- 16, /* subi_d */
- 16, /* rsbi_d */
- 4, /* mulr_d */
- 16, /* muli_d */
- 4, /* divr_d */
- 16, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 16, /* ltr_d */
- 28, /* lti_d */
- 16, /* ler_d */
- 28, /* lei_d */
- 16, /* eqr_d */
- 28, /* eqi_d */
- 16, /* ger_d */
- 28, /* gei_d */
- 16, /* gtr_d */
- 28, /* gti_d */
- 16, /* ner_d */
- 28, /* nei_d */
- 16, /* unltr_d */
- 28, /* unlti_d */
- 16, /* unler_d */
- 28, /* unlei_d */
- 16, /* uneqr_d */
- 28, /* uneqi_d */
- 16, /* unger_d */
- 28, /* ungei_d */
- 16, /* ungtr_d */
- 28, /* ungti_d */
- 16, /* ltgtr_d */
- 28, /* ltgti_d */
- 16, /* ordr_d */
- 28, /* ordi_d */
- 16, /* unordr_d */
- 28, /* unordi_d */
- 8, /* truncr_d_i */
- 0, /* truncr_d_l */
- 8, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 12, /* movi_d */
- 4, /* ldr_d */
- 12, /* ldi_d */
- 8, /* ldxr_d */
- 4, /* ldxi_d */
- 4, /* str_d */
- 12, /* sti_d */
- 8, /* stxr_d */
- 4, /* stxi_d */
- 12, /* bltr_d */
- 24, /* blti_d */
- 12, /* bler_d */
- 24, /* blei_d */
- 12, /* beqr_d */
- 24, /* beqi_d */
- 12, /* bger_d */
- 24, /* bgei_d */
- 12, /* bgtr_d */
- 24, /* bgti_d */
- 12, /* bner_d */
- 24, /* bnei_d */
- 12, /* bunltr_d */
- 24, /* bunlti_d */
- 12, /* bunler_d */
- 24, /* bunlei_d */
- 12, /* buneqr_d */
- 24, /* buneqi_d */
- 12, /* bunger_d */
- 24, /* bungei_d */
- 12, /* bungtr_d */
- 24, /* bungti_d */
- 12, /* bltgtr_d */
- 24, /* bltgti_d */
- 12, /* bordr_d */
- 24, /* bordi_d */
- 12, /* bunordr_d */
- 24, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 4, /* movr_d_w */
- 12, /* movi_d_w */
-#endif /* NEW_ABI */
-#endif /* __WORDSIZE */
-
-#if __WORDSIZE == 32
-#if !NEW_ABI
-#define JIT_INSTR_MAX 116
- 0, /* data */
- 0, /* live */
- 0, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 116, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 4, /* va_start */
- 8, /* va_arg */
- 20, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 12, /* addi */
- 12, /* addcr */
- 20, /* addci */
- 28, /* addxr */
- 28, /* addxi */
- 4, /* subr */
- 12, /* subi */
- 12, /* subcr */
- 20, /* subci */
- 28, /* subxr */
- 28, /* subxi */
- 16, /* rsbi */
- 8, /* mulr */
- 16, /* muli */
- 12, /* qmulr */
- 20, /* qmuli */
- 12, /* qmulr_u */
- 20, /* qmuli_u */
- 8, /* divr */
- 16, /* divi */
- 8, /* divr_u */
- 16, /* divi_u */
- 12, /* qdivr */
- 16, /* qdivi */
- 12, /* qdivr_u */
- 16, /* qdivi_u */
- 8, /* remr */
- 16, /* remi */
- 8, /* remr_u */
- 16, /* remi_u */
- 4, /* andr */
- 12, /* andi */
- 4, /* orr */
- 12, /* ori */
- 4, /* xorr */
- 12, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 8, /* comr */
- 4, /* ltr */
- 4, /* lti */
- 4, /* ltr_u */
- 4, /* lti_u */
- 8, /* ler */
- 12, /* lei */
- 8, /* ler_u */
- 12, /* lei_u */
- 12, /* eqr */
- 12, /* eqi */
- 8, /* ger */
- 12, /* gei */
- 8, /* ger_u */
- 12, /* gei_u */
- 4, /* gtr */
- 8, /* gti */
- 4, /* gtr_u */
- 8, /* gti_u */
- 8, /* ner */
- 8, /* nei */
- 4, /* movr */
- 8, /* movi */
- 8, /* extr_c */
- 4, /* extr_uc */
- 8, /* extr_s */
- 4, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 20, /* htonr_us */
- 52, /* htonr_ui */
- 0, /* htonr_ul */
- 4, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 12, /* ldi_uc */
- 4, /* ldr_s */
- 12, /* ldi_s */
- 4, /* ldr_us */
- 12, /* ldi_us */
- 4, /* ldr_i */
- 12, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 8, /* ldxr_c */
- 16, /* ldxi_c */
- 8, /* ldxr_uc */
- 16, /* ldxi_uc */
- 8, /* ldxr_s */
- 16, /* ldxi_s */
- 8, /* ldxr_us */
- 16, /* ldxi_us */
- 8, /* ldxr_i */
- 16, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 4, /* str_c */
- 12, /* sti_c */
- 4, /* str_s */
- 12, /* sti_s */
- 4, /* str_i */
- 12, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 8, /* stxr_c */
- 16, /* stxi_c */
- 8, /* stxr_s */
- 16, /* stxi_s */
- 8, /* stxr_i */
- 16, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 12, /* bltr */
- 12, /* blti */
- 12, /* bltr_u */
- 12, /* blti_u */
- 12, /* bler */
- 16, /* blei */
- 12, /* bler_u */
- 16, /* blei_u */
- 8, /* beqr */
- 16, /* beqi */
- 12, /* bger */
- 12, /* bgei */
- 12, /* bger_u */
- 12, /* bgei_u */
- 12, /* bgtr */
- 16, /* bgti */
- 12, /* bgtr_u */
- 16, /* bgti_u */
- 8, /* bner */
- 16, /* bnei */
- 12, /* bmsr */
- 12, /* bmsi */
- 12, /* bmcr */
- 12, /* bmci */
- 28, /* boaddr */
- 28, /* boaddi */
- 16, /* boaddr_u */
- 20, /* boaddi_u */
- 28, /* bxaddr */
- 28, /* bxaddi */
- 16, /* bxaddr_u */
- 20, /* bxaddi_u */
- 28, /* bosubr */
- 28, /* bosubi */
- 16, /* bosubr_u */
- 20, /* bosubi_u */
- 28, /* bxsubr */
- 28, /* bxsubi */
- 16, /* bxsubr_u */
- 20, /* bxsubi_u */
- 8, /* jmpr */
- 8, /* jmpi */
- 12, /* callr */
- 16, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 116, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 16, /* addi_f */
- 4, /* subr_f */
- 16, /* subi_f */
- 16, /* rsbi_f */
- 4, /* mulr_f */
- 16, /* muli_f */
- 4, /* divr_f */
- 16, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 16, /* ltr_f */
- 28, /* lti_f */
- 16, /* ler_f */
- 28, /* lei_f */
- 16, /* eqr_f */
- 28, /* eqi_f */
- 16, /* ger_f */
- 28, /* gei_f */
- 16, /* gtr_f */
- 28, /* gti_f */
- 16, /* ner_f */
- 28, /* nei_f */
- 16, /* unltr_f */
- 28, /* unlti_f */
- 16, /* unler_f */
- 28, /* unlei_f */
- 16, /* uneqr_f */
- 28, /* uneqi_f */
- 16, /* unger_f */
- 28, /* ungei_f */
- 16, /* ungtr_f */
- 28, /* ungti_f */
- 16, /* ltgtr_f */
- 28, /* ltgti_f */
- 16, /* ordr_f */
- 28, /* ordi_f */
- 16, /* unordr_f */
- 28, /* unordi_f */
- 8, /* truncr_f_i */
- 0, /* truncr_f_l */
- 8, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 12, /* movi_f */
- 4, /* ldr_f */
- 12, /* ldi_f */
- 8, /* ldxr_f */
- 16, /* ldxi_f */
- 4, /* str_f */
- 12, /* sti_f */
- 8, /* stxr_f */
- 16, /* stxi_f */
- 12, /* bltr_f */
- 24, /* blti_f */
- 12, /* bler_f */
- 24, /* blei_f */
- 12, /* beqr_f */
- 24, /* beqi_f */
- 12, /* bger_f */
- 24, /* bgei_f */
- 12, /* bgtr_f */
- 24, /* bgti_f */
- 12, /* bner_f */
- 24, /* bnei_f */
- 12, /* bunltr_f */
- 24, /* bunlti_f */
- 12, /* bunler_f */
- 24, /* bunlei_f */
- 12, /* buneqr_f */
- 24, /* buneqi_f */
- 12, /* bunger_f */
- 24, /* bungei_f */
- 12, /* bungtr_f */
- 24, /* bungti_f */
- 12, /* bltgtr_f */
- 24, /* bltgti_f */
- 12, /* bordr_f */
- 24, /* bordi_f */
- 12, /* bunordr_f */
- 24, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 20, /* addi_d */
- 4, /* subr_d */
- 20, /* subi_d */
- 20, /* rsbi_d */
- 4, /* mulr_d */
- 20, /* muli_d */
- 4, /* divr_d */
- 20, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 16, /* ltr_d */
- 40, /* lti_d */
- 16, /* ler_d */
- 40, /* lei_d */
- 16, /* eqr_d */
- 40, /* eqi_d */
- 16, /* ger_d */
- 40, /* gei_d */
- 16, /* gtr_d */
- 40, /* gti_d */
- 16, /* ner_d */
- 40, /* nei_d */
- 16, /* unltr_d */
- 40, /* unlti_d */
- 16, /* unler_d */
- 40, /* unlei_d */
- 16, /* uneqr_d */
- 40, /* uneqi_d */
- 16, /* unger_d */
- 40, /* ungei_d */
- 16, /* ungtr_d */
- 40, /* ungti_d */
- 16, /* ltgtr_d */
- 40, /* ltgti_d */
- 16, /* ordr_d */
- 40, /* ordi_d */
- 16, /* unordr_d */
- 40, /* unordi_d */
- 8, /* truncr_d_i */
- 0, /* truncr_d_l */
- 8, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 24, /* movi_d */
- 8, /* ldr_d */
- 16, /* ldi_d */
- 12, /* ldxr_d */
- 20, /* ldxi_d */
- 8, /* str_d */
- 16, /* sti_d */
- 12, /* stxr_d */
- 20, /* stxi_d */
- 12, /* bltr_d */
- 28, /* blti_d */
- 12, /* bler_d */
- 28, /* blei_d */
- 12, /* beqr_d */
- 28, /* beqi_d */
- 12, /* bger_d */
- 28, /* bgei_d */
- 12, /* bgtr_d */
- 28, /* bgti_d */
- 12, /* bner_d */
- 36, /* bnei_d */
- 12, /* bunltr_d */
- 36, /* bunlti_d */
- 12, /* bunler_d */
- 36, /* bunlei_d */
- 12, /* buneqr_d */
- 36, /* buneqi_d */
- 12, /* bunger_d */
- 36, /* bungei_d */
- 12, /* bungtr_d */
- 36, /* bungti_d */
- 12, /* bltgtr_d */
- 28, /* bltgti_d */
- 12, /* bordr_d */
- 28, /* bordi_d */
- 12, /* bunordr_d */
- 36, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 4, /* movr_w_f */
- 8, /* movr_ww_d */
- 0, /* movr_w_d */
- 4, /* movr_f_w */
- 4, /* movi_f_w */
- 8, /* movr_d_ww */
- 8, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* NEW_ABI */
-#endif /* __WORDSIZE */
-
-#if __WORDSIZE == 64
-#define JIT_INSTR_MAX 44
- 0, /* data */
- 0, /* live */
- 4, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 44, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 0, /* va_start */
- 0, /* va_arg */
- 0, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 28, /* addi */
- 12, /* addcr */
- 36, /* addci */
- 28, /* addxr */
- 28, /* addxi */
- 4, /* subr */
- 28, /* subi */
- 12, /* subcr */
- 36, /* subci */
- 28, /* subxr */
- 28, /* subxi */
- 32, /* rsbi */
- 8, /* mulr */
- 32, /* muli */
- 12, /* qmulr */
- 32, /* qmuli */
- 12, /* qmulr_u */
- 32, /* qmuli_u */
- 8, /* divr */
- 32, /* divi */
- 8, /* divr_u */
- 32, /* divi_u */
- 12, /* qdivr */
- 16, /* qdivi */
- 12, /* qdivr_u */
- 16, /* qdivi_u */
- 8, /* remr */
- 32, /* remi */
- 8, /* remr_u */
- 32, /* remi_u */
- 4, /* andr */
- 28, /* andi */
- 4, /* orr */
- 28, /* ori */
- 4, /* xorr */
- 28, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 8, /* comr */
- 4, /* ltr */
- 4, /* lti */
- 4, /* ltr_u */
- 4, /* lti_u */
- 8, /* ler */
- 12, /* lei */
- 8, /* ler_u */
- 12, /* lei_u */
- 12, /* eqr */
- 12, /* eqi */
- 8, /* ger */
- 12, /* gei */
- 8, /* ger_u */
- 12, /* gei_u */
- 4, /* gtr */
- 8, /* gti */
- 4, /* gtr_u */
- 8, /* gti_u */
- 8, /* ner */
- 8, /* nei */
- 4, /* movr */
- 28, /* movi */
- 8, /* extr_c */
- 4, /* extr_uc */
- 8, /* extr_s */
- 4, /* extr_us */
- 4, /* extr_i */
- 8, /* extr_ui */
- 4, /* htonr_us */
- 4, /* htonr_ui */
- 4, /* htonr_ul */
- 4, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 12, /* ldi_uc */
- 4, /* ldr_s */
- 12, /* ldi_s */
- 4, /* ldr_us */
- 12, /* ldi_us */
- 4, /* ldr_i */
- 12, /* ldi_i */
- 4, /* ldr_ui */
- 12, /* ldi_ui */
- 4, /* ldr_l */
- 12, /* ldi_l */
- 8, /* ldxr_c */
- 4, /* ldxi_c */
- 8, /* ldxr_uc */
- 4, /* ldxi_uc */
- 8, /* ldxr_s */
- 4, /* ldxi_s */
- 8, /* ldxr_us */
- 4, /* ldxi_us */
- 8, /* ldxr_i */
- 4, /* ldxi_i */
- 8, /* ldxr_ui */
- 4, /* ldxi_ui */
- 8, /* ldxr_l */
- 4, /* ldxi_l */
- 4, /* str_c */
- 12, /* sti_c */
- 4, /* str_s */
- 12, /* sti_s */
- 4, /* str_i */
- 12, /* sti_i */
- 4, /* str_l */
- 12, /* sti_l */
- 8, /* stxr_c */
- 4, /* stxi_c */
- 8, /* stxr_s */
- 4, /* stxi_s */
- 8, /* stxr_i */
- 4, /* stxi_i */
- 8, /* stxr_l */
- 4, /* stxi_l */
- 12, /* bltr */
- 12, /* blti */
- 12, /* bltr_u */
- 12, /* blti_u */
- 12, /* bler */
- 16, /* blei */
- 12, /* bler_u */
- 16, /* blei_u */
- 8, /* beqr */
- 36, /* beqi */
- 12, /* bger */
- 12, /* bgei */
- 12, /* bger_u */
- 12, /* bgei_u */
- 12, /* bgtr */
- 16, /* bgti */
- 12, /* bgtr_u */
- 16, /* bgti_u */
- 8, /* bner */
- 32, /* bnei */
- 12, /* bmsr */
- 12, /* bmsi */
- 12, /* bmcr */
- 12, /* bmci */
- 28, /* boaddr */
- 28, /* boaddi */
- 16, /* boaddr_u */
- 20, /* boaddi_u */
- 28, /* bxaddr */
- 28, /* bxaddi */
- 16, /* bxaddr_u */
- 20, /* bxaddi_u */
- 28, /* bosubr */
- 28, /* bosubi */
- 16, /* bosubr_u */
- 20, /* bosubi_u */
- 28, /* bxsubr */
- 28, /* bxsubi */
- 16, /* bxsubr_u */
- 20, /* bxsubi_u */
- 0, /* jmpr */
- 8, /* jmpi */
- 12, /* callr */
- 32, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 44, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 16, /* addi_f */
- 4, /* subr_f */
- 16, /* subi_f */
- 16, /* rsbi_f */
- 4, /* mulr_f */
- 16, /* muli_f */
- 4, /* divr_f */
- 16, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 16, /* ltr_f */
- 28, /* lti_f */
- 16, /* ler_f */
- 28, /* lei_f */
- 16, /* eqr_f */
- 28, /* eqi_f */
- 16, /* ger_f */
- 28, /* gei_f */
- 16, /* gtr_f */
- 28, /* gti_f */
- 16, /* ner_f */
- 28, /* nei_f */
- 16, /* unltr_f */
- 28, /* unlti_f */
- 16, /* unler_f */
- 28, /* unlei_f */
- 16, /* uneqr_f */
- 28, /* uneqi_f */
- 16, /* unger_f */
- 28, /* ungei_f */
- 16, /* ungtr_f */
- 28, /* ungti_f */
- 16, /* ltgtr_f */
- 28, /* ltgti_f */
- 16, /* ordr_f */
- 28, /* ordi_f */
- 16, /* unordr_f */
- 28, /* unordi_f */
- 8, /* truncr_f_i */
- 8, /* truncr_f_l */
- 8, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 12, /* movi_f */
- 4, /* ldr_f */
- 12, /* ldi_f */
- 8, /* ldxr_f */
- 4, /* ldxi_f */
- 4, /* str_f */
- 12, /* sti_f */
- 8, /* stxr_f */
- 4, /* stxi_f */
- 12, /* bltr_f */
- 24, /* blti_f */
- 12, /* bler_f */
- 24, /* blei_f */
- 12, /* beqr_f */
- 24, /* beqi_f */
- 12, /* bger_f */
- 24, /* bgei_f */
- 12, /* bgtr_f */
- 24, /* bgti_f */
- 12, /* bner_f */
- 24, /* bnei_f */
- 12, /* bunltr_f */
- 24, /* bunlti_f */
- 12, /* bunler_f */
- 24, /* bunlei_f */
- 12, /* buneqr_f */
- 24, /* buneqi_f */
- 12, /* bunger_f */
- 24, /* bungei_f */
- 12, /* bungtr_f */
- 24, /* bungti_f */
- 12, /* bltgtr_f */
- 24, /* bltgti_f */
- 12, /* bordr_f */
- 24, /* bordi_f */
- 12, /* bunordr_f */
- 24, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 16, /* addi_d */
- 4, /* subr_d */
- 16, /* subi_d */
- 16, /* rsbi_d */
- 4, /* mulr_d */
- 16, /* muli_d */
- 4, /* divr_d */
- 16, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 16, /* ltr_d */
- 28, /* lti_d */
- 16, /* ler_d */
- 28, /* lei_d */
- 16, /* eqr_d */
- 28, /* eqi_d */
- 16, /* ger_d */
- 28, /* gei_d */
- 16, /* gtr_d */
- 28, /* gti_d */
- 16, /* ner_d */
- 28, /* nei_d */
- 16, /* unltr_d */
- 28, /* unlti_d */
- 16, /* unler_d */
- 28, /* unlei_d */
- 16, /* uneqr_d */
- 28, /* uneqi_d */
- 16, /* unger_d */
- 28, /* ungei_d */
- 16, /* ungtr_d */
- 28, /* ungti_d */
- 16, /* ltgtr_d */
- 28, /* ltgti_d */
- 16, /* ordr_d */
- 28, /* ordi_d */
- 16, /* unordr_d */
- 28, /* unordi_d */
- 8, /* truncr_d_i */
- 8, /* truncr_d_l */
- 8, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 12, /* movi_d */
- 4, /* ldr_d */
- 12, /* ldi_d */
- 8, /* ldxr_d */
- 4, /* ldxi_d */
- 4, /* str_d */
- 12, /* sti_d */
- 8, /* stxr_d */
- 4, /* stxi_d */
- 12, /* bltr_d */
- 24, /* blti_d */
- 12, /* bler_d */
- 24, /* blei_d */
- 12, /* beqr_d */
- 24, /* beqi_d */
- 12, /* bger_d */
- 24, /* bgei_d */
- 12, /* bgtr_d */
- 24, /* bgti_d */
- 12, /* bner_d */
- 24, /* bnei_d */
- 12, /* bunltr_d */
- 24, /* bunlti_d */
- 12, /* bunler_d */
- 24, /* bunlei_d */
- 12, /* buneqr_d */
- 24, /* buneqi_d */
- 12, /* bunger_d */
- 24, /* bungei_d */
- 12, /* bungtr_d */
- 24, /* bungti_d */
- 12, /* bltgtr_d */
- 24, /* bltgti_d */
- 12, /* bordr_d */
- 24, /* bordi_d */
- 12, /* bunordr_d */
- 24, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 4, /* movr_d_w */
- 12, /* movi_d_w */
-#endif /* __WORDSIZE */
diff --git a/libguile/lightning/lib/jit_names.c b/libguile/lightning/lib/jit_names.c
deleted file mode 100644
index ba09a6a47..000000000
--- a/libguile/lightning/lib/jit_names.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (C) 2014-2017 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-static char *code_name[] = {
- "data",
- "live", "align",
- "save", "load",
- "#name", "#note",
- "label",
- "prolog",
- "ellipsis", "va_push",
- "allocai", "allocar",
- "arg",
- "getarg_c", "getarg_uc",
- "getarg_s", "getarg_us",
- "getarg_i", "getarg_ui",
- "getarg_l",
- "putargr", "putargi",
- "va_start",
- "va_arg", "va_arg_d",
- "va_end",
- "addr", "addi",
- "addcr", "addci",
- "addxr", "addxi",
- "subr", "subi",
- "subcr", "subci",
- "subxr", "subxi",
- "rsbi",
- "mulr", "muli",
- "qmulr", "qmuli",
- "qmulr_u", "qmuli_u",
- "divr", "divi",
- "divr_u", "divi_u",
- "qdivr", "qdivi",
- "qdivr_u", "qdivi_u",
- "remr", "remi",
- "remr_u", "remi_u",
- "andr", "andi",
- "orr", "ori",
- "xorr", "xori",
- "lshr", "lshi",
- "rshr", "rshi",
- "rshr_u", "rshi_u",
- "negr", "comr",
- "ltr", "lti",
- "ltr_u", "lti_u",
- "ler", "lei",
- "ler_u", "lei_u",
- "eqr", "eqi",
- "ger", "gei",
- "ger_u", "gei_u",
- "gtr", "gti",
- "gtr_u", "gti_u",
- "ner", "nei",
- "movr", "movi",
- "extr_c", "extr_uc",
- "extr_s", "extr_us",
- "extr_i", "extr_ui",
- "htonr_us",
- "htonr_ui", "htonr_ul",
- "ldr_c", "ldi_c",
- "ldr_uc", "ldi_uc",
- "ldr_s", "ldi_s",
- "ldr_us", "ldi_us",
- "ldr_i", "ldi_i",
- "ldr_ui", "ldi_ui",
- "ldr_l", "ldi_l",
- "ldxr_c", "ldxi_c",
- "ldxr_uc", "ldxi_uc",
- "ldxr_s", "ldxi_s",
- "ldxr_us", "ldxi_us",
- "ldxr_i", "ldxi_i",
- "ldxr_ui", "ldxi_ui",
- "ldxr_l", "ldxi_l",
- "str_c", "sti_c",
- "str_s", "sti_s",
- "str_i", "sti_i",
- "str_l", "sti_l",
- "stxr_c", "stxi_c",
- "stxr_s", "stxi_s",
- "stxr_i", "stxi_i",
- "stxr_l", "stxi_l",
- "bltr", "blti",
- "bltr_u", "blti_u",
- "bler", "blei",
- "bler_u", "blei_u",
- "beqr", "beqi",
- "bger", "bgei",
- "bger_u", "bgei_u",
- "bgtr", "bgti",
- "bgtr_u", "bgti_u",
- "bner", "bnei",
- "bmsr", "bmsi",
- "bmcr", "bmci",
- "boaddr", "boaddi",
- "boaddr_u", "boaddi_u",
- "bxaddr", "bxaddi",
- "bxaddr_u", "bxaddi_u",
- "bosubr", "bosubi",
- "bosubr_u", "bosubi_u",
- "bxsubr", "bxsubi",
- "bxsubr_u", "bxsubi_u",
- "jmpr", "jmpi",
- "callr", "calli",
- "prepare",
- "pushargr", "pushargi",
- "finishr", "finishi",
- "ret",
- "retr", "reti",
- "retval_c", "retval_uc",
- "retval_s", "retval_us",
- "retval_i", "retval_ui",
- "retval_l",
- "epilog",
- "arg_f", "getarg_f",
- "putargr_f", "putargi_f",
- "addr_f", "addi_f",
- "subr_f", "subi_f",
- "rsbi_f",
- "mulr_f", "muli_f",
- "divr_f", "divi_f",
- "negr_f", "absr_f",
- "sqrtr_f",
- "ltr_f", "lti_f",
- "ler_f", "lei_f",
- "eqr_f", "eqi_f",
- "ger_f", "gei_f",
- "gtr_f", "gti_f",
- "ner_f", "nei_f",
- "unltr_f", "unlti_f",
- "unler_f", "unlei_f",
- "uneqr_f", "uneqi_f",
- "unger_f", "ungei_f",
- "ungtr_f", "ungti_f",
- "ltgtr_f", "ltgti_f",
- "ordr_f", "ordi_f",
- "unordr_f", "unordi_f",
- "truncr_f_i", "truncr_f_l",
- "extr_f", "extr_d_f",
- "movr_f", "movi_f",
- "ldr_f", "ldi_f",
- "ldxr_f", "ldxi_f",
- "str_f", "sti_f",
- "stxr_f", "stxi_f",
- "bltr_f", "blti_f",
- "bler_f", "blei_f",
- "beqr_f", "beqi_f",
- "bger_f", "bgei_f",
- "bgtr_f", "bgti_f",
- "bner_f", "bnei_f",
- "bunltr_f", "bunlti_f",
- "bunler_f", "bunlei_f",
- "buneqr_f", "buneqi_f",
- "bunger_f", "bungei_f",
- "bungtr_f", "bungti_f",
- "bltgtr_f", "bltgti_f",
- "bordr_f", "bordi_f",
- "bunordr_f", "bunordi_f",
- "pushargr_f", "pushargi_f",
- "retr_f", "reti_f",
- "retval_f",
- "arg_d", "getarg_d",
- "putargr_d", "putargi_d",
- "addr_d", "addi_d",
- "subr_d", "subi_d",
- "rsbi_d",
- "mulr_d", "muli_d",
- "divr_d", "divi_d",
- "negr_d", "absr_d",
- "sqrtr_d",
- "ltr_d", "lti_d",
- "ler_d", "lei_d",
- "eqr_d", "eqi_d",
- "ger_d", "gei_d",
- "gtr_d", "gti_d",
- "ner_d", "nei_d",
- "unltr_d", "unlti_d",
- "unler_d", "unlei_d",
- "uneqr_d", "uneqi_d",
- "unger_d", "ungei_d",
- "ungtr_d", "ungti_d",
- "ltgtr_d", "ltgti_d",
- "ordr_d", "ordi_d",
- "unordr_d", "unordi_d",
- "truncr_d_i", "truncr_d_l",
- "extr_d", "extr_f_d",
- "movr_d", "movi_d",
- "ldr_d", "ldi_d",
- "ldxr_d", "ldxi_d",
- "str_d", "sti_d",
- "stxr_d", "stxi_d",
- "bltr_d", "blti_d",
- "bler_d", "blei_d",
- "beqr_d", "beqi_d",
- "bger_d", "bgei_d",
- "bgtr_d", "bgti_d",
- "bner_d", "bnei_d",
- "bunltr_d", "bunlti_d",
- "bunler_d", "bunlei_d",
- "buneqr_d", "buneqi_d",
- "bunger_d", "bungei_d",
- "bungtr_d", "bungti_d",
- "bltgtr_d", "bltgti_d",
- "bordr_d", "bordi_d",
- "bunordr_d", "bunordi_d",
- "pushargr_d", "pushargi_d",
- "retr_d", "reti_d",
- "retval_d",
- "movr_w_f", "movr_ww_d",
- "movr_w_d",
- "movr_f_w", "movi_f_w",
- "movr_d_ww", "movi_d_ww",
- "movr_d_w", "movi_d_w",
-};
diff --git a/libguile/lightning/lib/jit_note.c b/libguile/lightning/lib/jit_note.c
deleted file mode 100644
index b4e75b812..000000000
--- a/libguile/lightning/lib/jit_note.c
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright (C) 2013-2018 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#define DEBUG 1
-#define DISASSEMBLER 0
-
-#include <lightning.h>
-#include <lightning/jit_private.h>
-
-/*
- * Prototypes
- */
-#define new_note(u, v) _new_note(_jit, u, v)
-static jit_note_t *_new_note(jit_state_t *, jit_uint8_t*, char*);
-static void new_line(jit_int32_t,jit_note_t*,char*,jit_int32_t,jit_int32_t);
-#define note_search_index(u) _note_search_index(_jit, u)
-static jit_int32_t _note_search_index(jit_state_t*, jit_uint8_t*);
-static jit_int32_t line_insert_index(jit_note_t*,jit_int32_t);
-static jit_int32_t line_search_index(jit_note_t*,jit_int32_t);
-static jit_int32_t offset_insert_index(jit_line_t*,jit_int32_t);
-static jit_int32_t offset_search_index(jit_line_t*,jit_int32_t);
-
-/*
- * Implementation
- */
-void
-jit_init_note(void)
-{
-}
-
-void
-jit_finish_note(void)
-{
-}
-
-jit_node_t *
-_jit_name(jit_state_t *_jit, const char *name)
-{
- jit_node_t *node;
-
- node = jit_new_node(jit_code_name);
- if (name)
- node->v.n = jit_data(name, strlen(name) + 1, 1);
- else
- node->v.p = NULL;
- if (_jitc->note.head == NULL)
- _jitc->note.head = _jitc->note.tail = node;
- else {
- _jitc->note.tail->link = node;
- _jitc->note.tail = node;
- }
- ++_jit->note.length;
- _jitc->note.size += sizeof(jit_note_t);
- /* remember previous note is invalid due to name change */
- _jitc->note.note = NULL;
- return (_jitc->note.name = node);
-}
-
-jit_node_t *
-_jit_note(jit_state_t *_jit, const char *name, int line)
-{
- jit_node_t *node;
-
- node = jit_new_node(jit_code_note);
- if (name)
- node->v.n = jit_data(name, strlen(name) + 1, 1);
- else
- node->v.p = NULL;
- node->w.w = line;
- if (_jitc->note.head == NULL)
- _jitc->note.head = _jitc->note.tail = node;
- else {
- _jitc->note.tail->link = node;
- _jitc->note.tail = node;
- }
- if (_jitc->note.note == NULL ||
- (name == NULL && _jitc->note.note != NULL) ||
- (name != NULL && _jitc->note.note == NULL) ||
- (name != NULL && _jitc->note.note != NULL &&
- strcmp(name, (char *)_jitc->data.ptr + _jitc->note.note->v.n->u.w)))
- _jitc->note.size += sizeof(jit_line_t);
- _jitc->note.size += sizeof(jit_int32_t) * 2;
- return (_jitc->note.note = node);
-}
-
-void
-_jit_annotate(jit_state_t *_jit)
-{
- jit_node_t *node;
- jit_note_t *note;
- jit_line_t *line;
- jit_word_t length;
- jit_word_t note_offset;
- jit_word_t line_offset;
-
- /* initialize pointers in mmaped data area */
- _jit->note.ptr = (jit_note_t *)_jitc->note.base;
- _jit->note.length = 0;
-
- note = NULL;
- for (node = _jitc->note.head; node; node = node->link) {
- if (node->code == jit_code_name)
- note = new_note(node->u.p, node->v.p ? node->v.n->u.p : NULL);
- else if (node->v.p) {
- if (note == NULL)
- note = new_note(node->u.p, NULL);
- jit_set_note(note, node->v.n->u.p, node->w.w,
- (jit_uint8_t *)node->u.p - note->code);
- }
- }
- /* last note */
- if (note)
- note->size = _jit->pc.uc - note->code;
-
- /* annotations may be very complex with conditions to extend
- * or ignore redundant notes, as well as add entries to earlier
- * notes, so, relocate the information to the data buffer,
- * with likely over allocated reserved space */
-
- /* relocate jit_line_t objects */
- for (note_offset = 0; note_offset < _jit->note.length; note_offset++) {
- note = _jit->note.ptr + note_offset;
- if ((length = sizeof(jit_line_t) * note->length) == 0)
- continue;
- assert(_jitc->note.base + length < _jit->data.ptr + _jit->data.length);
- jit_memcpy(_jitc->note.base, note->lines, length);
- jit_free((jit_pointer_t *)&note->lines);
- note->lines = (jit_line_t *)_jitc->note.base;
- _jitc->note.base += length;
- }
-
- /* relocate offset and line number information */
- for (note_offset = 0; note_offset < _jit->note.length; note_offset++) {
- note = _jit->note.ptr + note_offset;
- for (line_offset = 0; line_offset < note->length; line_offset++) {
- line = note->lines + line_offset;
- length = sizeof(jit_int32_t) * line->length;
- assert(_jitc->note.base + length <
- _jit->data.ptr + _jit->data.length);
- jit_memcpy(_jitc->note.base, line->linenos, length);
- jit_free((jit_pointer_t *)&line->linenos);
- line->linenos = (jit_int32_t *)_jitc->note.base;
- _jitc->note.base += length;
- assert(_jitc->note.base + length <
- _jit->data.ptr + _jit->data.length);
- jit_memcpy(_jitc->note.base, line->offsets, length);
- jit_free((jit_pointer_t *)&line->offsets);
- line->offsets = (jit_int32_t *)_jitc->note.base;
- _jitc->note.base += length;
- }
- }
-}
-
-void
-_jit_set_note(jit_state_t *_jit, jit_note_t *note,
- char *file, int lineno, jit_int32_t offset)
-{
- jit_line_t *line;
- jit_int32_t index;
-
- index = line_insert_index(note, offset);
- if (note->length && index == note->length &&
- note->lines[index - 1].file == file)
- --index;
- if (index >= note->length || note->lines[index].file != file)
- new_line(index, note, file, lineno, offset);
- else {
- line = note->lines + index;
- index = offset_insert_index(line, offset);
- if (index < line->length && line->offsets[index] == offset) {
- /* common case if no code was generated for several source lines */
- if (line->linenos[index] < lineno)
- line->linenos[index] = lineno;
- }
- else if (index < line->length && line->linenos[index] == lineno) {
- /* common case of extending entry */
- if (line->offsets[index] > offset)
- line->offsets[index] = offset;
- }
- else {
- /* line or offset changed */
- if ((line->length & 15) == 0) {
- jit_realloc((jit_pointer_t *)&line->linenos,
- line->length * sizeof(jit_int32_t),
- (line->length + 17) * sizeof(jit_int32_t));
- jit_realloc((jit_pointer_t *)&line->offsets,
- line->length * sizeof(jit_int32_t),
- (line->length + 17) * sizeof(jit_int32_t));
- }
- if (index < note->length) {
- jit_memmove(line->linenos + index + 1, line->linenos + index,
- sizeof(jit_int32_t) * (line->length - index));
- jit_memmove(line->offsets + index + 1, line->offsets + index,
- sizeof(jit_int32_t) * (line->length - index));
- }
- line->linenos[index] = lineno;
- line->offsets[index] = offset;
- ++line->length;
- }
- }
-}
-
-jit_bool_t
-_jit_get_note(jit_state_t *_jit, jit_pointer_t code,
- char **name, char **file, jit_int32_t *lineno)
-{
- jit_note_t *note;
- jit_line_t *line;
- jit_int32_t index;
- jit_int32_t offset;
-
- if ((index = note_search_index((jit_uint8_t *)code)) >= _jit->note.length)
- return (0);
- note = _jit->note.ptr + index;
- if ((jit_uint8_t *)code < note->code ||
- (jit_uint8_t *)code >= note->code + note->size)
- return (0);
- offset = (jit_uint8_t *)code - note->code;
- if ((index = line_search_index(note, offset)) >= note->length)
- return (0);
- if (index == 0 && offset < note->lines[0].offsets[0])
- return (0);
- line = note->lines + index;
- if ((index = offset_search_index(line, offset)) >= line->length)
- return (0);
-
- if (name)
- *name = note->name;
- if (file)
- *file = line->file;
- if (lineno)
- *lineno = line->linenos[index];
-
- return (1);
-}
-
-static jit_note_t *
-_new_note(jit_state_t *_jit, jit_uint8_t *code, char *name)
-{
- jit_note_t *note;
- jit_note_t *prev;
-
- if (_jit->note.length) {
- prev = _jit->note.ptr + _jit->note.length - 1;
- assert(code >= prev->code);
- prev->size = code - prev->code;
- }
- note = (jit_note_t *)_jitc->note.base;
- _jitc->note.base += sizeof(jit_note_t);
- ++_jit->note.length;
- note->code = code;
- note->name = name;
-
- return (note);
-}
-
-static void
-new_line(jit_int32_t index, jit_note_t *note,
- char *file, jit_int32_t lineno, jit_int32_t offset)
-{
- jit_line_t *line;
-
- if (note->lines == NULL)
- jit_alloc((jit_pointer_t *)&note->lines, 16 * sizeof(jit_line_t));
- else if ((note->length & 15) == 15)
- jit_realloc((jit_pointer_t *)&note->lines,
- note->length * sizeof(jit_line_t),
- (note->length + 17) * sizeof(jit_line_t));
-
- if (index < note->length)
- jit_memmove(note->lines + index + 1, note->lines + index,
- sizeof(jit_line_t) * (note->length - index));
- line = note->lines + index;
- ++note->length;
-
- line->file = file;
- line->length = 1;
- jit_alloc((jit_pointer_t *)&line->linenos, 16 * sizeof(jit_int32_t));
- line->linenos[0] = lineno;
- jit_alloc((jit_pointer_t *)&line->offsets, 16 * sizeof(jit_int32_t));
- line->offsets[0] = offset;
-}
-
-static jit_int32_t
-_note_search_index(jit_state_t *_jit, jit_uint8_t *code)
-{
- jit_int32_t bot;
- jit_int32_t top;
- jit_int32_t index;
- jit_note_t *notes;
-
- bot = 0;
- top = _jit->note.length;
- notes = _jit->note.ptr;
- for (index = (bot + top) >> 1; bot < top; index = (bot + top) >> 1) {
- if (code < notes[index].code)
- top = index;
- else if (code >= notes[index].code &&
- code - notes[index].code < notes[index].size)
- break;
- else
- bot = index + 1;
- }
-
- return (index);
-}
-
-static jit_int32_t
-line_insert_index(jit_note_t *note, jit_int32_t offset)
-{
- jit_int32_t bot;
- jit_int32_t top;
- jit_int32_t index;
- jit_line_t *lines;
-
- bot = 0;
- top = note->length;
- if ((lines = note->lines) == NULL)
- return (0);
- for (index = (bot + top) >> 1; bot < top; index = (bot + top) >> 1) {
- if (offset < *lines[index].offsets)
- top = index;
- else
- bot = index + 1;
- }
-
- return ((bot + top) >> 1);
-}
-
-static jit_int32_t
-line_search_index(jit_note_t *note, jit_int32_t offset)
-{
- jit_int32_t bot;
- jit_int32_t top;
- jit_int32_t index;
- jit_line_t *lines;
-
- bot = 0;
- top = note->length;
- if ((lines = note->lines) == NULL)
- return (0);
- for (index = (bot + top) >> 1; bot < top; index = (bot + top) >> 1) {
- if (offset < *lines[index].offsets)
- top = index;
- /* offset should be already verified to be in range */
- else if (index == note->length - 1 ||
- (offset >= *lines[index].offsets &&
- offset < *lines[index + 1].offsets))
- break;
- else
- bot = index + 1;
- }
-
- return (index);
-}
-
-static jit_int32_t
-offset_insert_index(jit_line_t *line, jit_int32_t offset)
-{
- jit_int32_t bot;
- jit_int32_t top;
- jit_int32_t index;
- jit_int32_t *offsets;
-
- bot = 0;
- top = line->length;
- offsets = line->offsets;
- for (index = (bot + top) >> 1; bot < top; index = (bot + top) >> 1) {
- if (offset < offsets[index])
- top = index;
- else
- bot = index + 1;
- }
-
- return ((bot + top) >> 1);
-}
-
-static jit_int32_t
-offset_search_index(jit_line_t *line, jit_int32_t offset)
-{
- jit_int32_t bot;
- jit_int32_t top;
- jit_int32_t index;
- jit_int32_t *offsets;
-
- bot = 0;
- top = line->length;
- offsets = line->offsets;
- for (index = (bot + top) >> 1; bot < top; index = (bot + top) >> 1) {
- if (offset < offsets[index])
- top = index;
- /* offset should be already verified to be in range */
- else if (index == line->length - 1 ||
- (offset >= offsets[index] && offset < offsets[index + 1]))
- break;
- else
- bot = index + 1;
- }
-
- return (index);
-}
diff --git a/libguile/lightning/lib/jit_ppc-sz.c b/libguile/lightning/lib/jit_ppc-sz.c
deleted file mode 100644
index 22a6e2543..000000000
--- a/libguile/lightning/lib/jit_ppc-sz.c
+++ /dev/null
@@ -1,1622 +0,0 @@
-
-#if __WORDSIZE == 32
-#if defined(__ppc__)
-#define JIT_INSTR_MAX 44
- 0, /* data */
- 0, /* live */
- 0, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 44, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 0, /* va_start */
- 0, /* va_arg */
- 0, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 12, /* addi */
- 4, /* addcr */
- 12, /* addci */
- 4, /* addxr */
- 8, /* addxi */
- 4, /* subr */
- 12, /* subi */
- 4, /* subcr */
- 12, /* subci */
- 4, /* subxr */
- 8, /* subxi */
- 16, /* rsbi */
- 4, /* mulr */
- 12, /* muli */
- 12, /* qmulr */
- 16, /* qmuli */
- 12, /* qmulr_u */
- 16, /* qmuli_u */
- 4, /* divr */
- 12, /* divi */
- 4, /* divr_u */
- 12, /* divi_u */
- 20, /* qdivr */
- 16, /* qdivi */
- 20, /* qdivr_u */
- 16, /* qdivi_u */
- 12, /* remr */
- 20, /* remi */
- 12, /* remr_u */
- 20, /* remi_u */
- 4, /* andr */
- 12, /* andi */
- 4, /* orr */
- 12, /* ori */
- 4, /* xorr */
- 12, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 12, /* ltr */
- 12, /* lti */
- 12, /* ltr_u */
- 16, /* lti_u */
- 16, /* ler */
- 16, /* lei */
- 16, /* ler_u */
- 16, /* lei_u */
- 12, /* eqr */
- 12, /* eqi */
- 16, /* ger */
- 16, /* gei */
- 16, /* ger_u */
- 16, /* gei_u */
- 12, /* gtr */
- 12, /* gti */
- 12, /* gtr_u */
- 12, /* gti_u */
- 16, /* ner */
- 16, /* nei */
- 4, /* movr */
- 8, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 4, /* htonr_us */
- 4, /* htonr_ui */
- 0, /* htonr_ul */
- 8, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 8, /* ldi_uc */
- 4, /* ldr_s */
- 8, /* ldi_s */
- 4, /* ldr_us */
- 8, /* ldi_us */
- 4, /* ldr_i */
- 8, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 8, /* ldxr_c */
- 8, /* ldxi_c */
- 4, /* ldxr_uc */
- 4, /* ldxi_uc */
- 4, /* ldxr_s */
- 4, /* ldxi_s */
- 4, /* ldxr_us */
- 4, /* ldxi_us */
- 4, /* ldxr_i */
- 4, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 4, /* str_c */
- 8, /* sti_c */
- 4, /* str_s */
- 8, /* sti_s */
- 4, /* str_i */
- 8, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 4, /* stxr_c */
- 4, /* stxi_c */
- 4, /* stxr_s */
- 4, /* stxi_s */
- 4, /* stxr_i */
- 4, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 8, /* bltr */
- 8, /* blti */
- 8, /* bltr_u */
- 12, /* blti_u */
- 8, /* bler */
- 8, /* blei */
- 8, /* bler_u */
- 12, /* blei_u */
- 8, /* beqr */
- 16, /* beqi */
- 8, /* bger */
- 8, /* bgei */
- 8, /* bger_u */
- 8, /* bgei_u */
- 8, /* bgtr */
- 8, /* bgti */
- 8, /* bgtr_u */
- 8, /* bgti_u */
- 8, /* bner */
- 16, /* bnei */
- 12, /* bmsr */
- 12, /* bmsi */
- 12, /* bmcr */
- 12, /* bmci */
- 12, /* boaddr */
- 16, /* boaddi */
- 12, /* boaddr_u */
- 12, /* boaddi_u */
- 12, /* bxaddr */
- 16, /* bxaddi */
- 12, /* bxaddr_u */
- 12, /* bxaddi_u */
- 12, /* bosubr */
- 16, /* bosubi */
- 12, /* bosubr_u */
- 16, /* bosubi_u */
- 12, /* bxsubr */
- 16, /* bxsubi */
- 12, /* bxsubr_u */
- 16, /* bxsubi_u */
- 0, /* jmpr */
- 4, /* jmpi */
- 8, /* callr */
- 16, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 44, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 12, /* addi_f */
- 4, /* subr_f */
- 12, /* subi_f */
- 12, /* rsbi_f */
- 4, /* mulr_f */
- 12, /* muli_f */
- 4, /* divr_f */
- 12, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 12, /* ltr_f */
- 20, /* lti_f */
- 16, /* ler_f */
- 24, /* lei_f */
- 12, /* eqr_f */
- 20, /* eqi_f */
- 16, /* ger_f */
- 24, /* gei_f */
- 12, /* gtr_f */
- 20, /* gti_f */
- 16, /* ner_f */
- 24, /* nei_f */
- 16, /* unltr_f */
- 24, /* unlti_f */
- 16, /* unler_f */
- 24, /* unlei_f */
- 16, /* uneqr_f */
- 24, /* uneqi_f */
- 16, /* unger_f */
- 24, /* ungei_f */
- 16, /* ungtr_f */
- 24, /* ungti_f */
- 16, /* ltgtr_f */
- 24, /* ltgti_f */
- 16, /* ordr_f */
- 24, /* ordi_f */
- 12, /* unordr_f */
- 20, /* unordi_f */
- 12, /* truncr_f_i */
- 0, /* truncr_f_l */
- 20, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 8, /* movi_f */
- 4, /* ldr_f */
- 8, /* ldi_f */
- 4, /* ldxr_f */
- 4, /* ldxi_f */
- 4, /* str_f */
- 8, /* sti_f */
- 4, /* stxr_f */
- 4, /* stxi_f */
- 8, /* bltr_f */
- 16, /* blti_f */
- 12, /* bler_f */
- 20, /* blei_f */
- 8, /* beqr_f */
- 16, /* beqi_f */
- 12, /* bger_f */
- 20, /* bgei_f */
- 8, /* bgtr_f */
- 16, /* bgti_f */
- 8, /* bner_f */
- 16, /* bnei_f */
- 12, /* bunltr_f */
- 20, /* bunlti_f */
- 8, /* bunler_f */
- 16, /* bunlei_f */
- 12, /* buneqr_f */
- 20, /* buneqi_f */
- 8, /* bunger_f */
- 16, /* bungei_f */
- 12, /* bungtr_f */
- 20, /* bungti_f */
- 12, /* bltgtr_f */
- 20, /* bltgti_f */
- 8, /* bordr_f */
- 16, /* bordi_f */
- 8, /* bunordr_f */
- 16, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 12, /* addi_d */
- 4, /* subr_d */
- 12, /* subi_d */
- 12, /* rsbi_d */
- 4, /* mulr_d */
- 12, /* muli_d */
- 4, /* divr_d */
- 12, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 12, /* ltr_d */
- 20, /* lti_d */
- 16, /* ler_d */
- 24, /* lei_d */
- 12, /* eqr_d */
- 20, /* eqi_d */
- 16, /* ger_d */
- 24, /* gei_d */
- 12, /* gtr_d */
- 20, /* gti_d */
- 16, /* ner_d */
- 24, /* nei_d */
- 16, /* unltr_d */
- 24, /* unlti_d */
- 16, /* unler_d */
- 24, /* unlei_d */
- 16, /* uneqr_d */
- 24, /* uneqi_d */
- 16, /* unger_d */
- 24, /* ungei_d */
- 16, /* ungtr_d */
- 24, /* ungti_d */
- 16, /* ltgtr_d */
- 24, /* ltgti_d */
- 16, /* ordr_d */
- 24, /* ordi_d */
- 12, /* unordr_d */
- 20, /* unordi_d */
- 12, /* truncr_d_i */
- 0, /* truncr_d_l */
- 20, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 8, /* movi_d */
- 4, /* ldr_d */
- 8, /* ldi_d */
- 4, /* ldxr_d */
- 4, /* ldxi_d */
- 4, /* str_d */
- 8, /* sti_d */
- 4, /* stxr_d */
- 4, /* stxi_d */
- 8, /* bltr_d */
- 16, /* blti_d */
- 12, /* bler_d */
- 20, /* blei_d */
- 8, /* beqr_d */
- 16, /* beqi_d */
- 12, /* bger_d */
- 20, /* bgei_d */
- 8, /* bgtr_d */
- 16, /* bgti_d */
- 8, /* bner_d */
- 16, /* bnei_d */
- 12, /* bunltr_d */
- 20, /* bunlti_d */
- 8, /* bunler_d */
- 16, /* bunlei_d */
- 12, /* buneqr_d */
- 20, /* buneqi_d */
- 8, /* bunger_d */
- 16, /* bungei_d */
- 12, /* bungtr_d */
- 20, /* bungti_d */
- 12, /* bltgtr_d */
- 20, /* bltgti_d */
- 8, /* bordr_d */
- 16, /* bordi_d */
- 8, /* bunordr_d */
- 16, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __ppc__ */
-#endif /* __WORDSIZE */
-
-#if __WORDSIZE == 32
-#if defined(__powerpc__)
-#if __BYTE_ORDER == __BIG_ENDIAN
-#define JIT_INSTR_MAX 136
- 0, /* data */
- 0, /* live */
- 0, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 136, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 4, /* va_start */
- 8, /* va_arg */
- 8, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 12, /* addi */
- 4, /* addcr */
- 12, /* addci */
- 4, /* addxr */
- 8, /* addxi */
- 4, /* subr */
- 12, /* subi */
- 4, /* subcr */
- 12, /* subci */
- 4, /* subxr */
- 8, /* subxi */
- 16, /* rsbi */
- 4, /* mulr */
- 12, /* muli */
- 12, /* qmulr */
- 16, /* qmuli */
- 12, /* qmulr_u */
- 16, /* qmuli_u */
- 4, /* divr */
- 12, /* divi */
- 4, /* divr_u */
- 12, /* divi_u */
- 20, /* qdivr */
- 16, /* qdivi */
- 20, /* qdivr_u */
- 16, /* qdivi_u */
- 12, /* remr */
- 20, /* remi */
- 12, /* remr_u */
- 20, /* remi_u */
- 4, /* andr */
- 12, /* andi */
- 4, /* orr */
- 12, /* ori */
- 4, /* xorr */
- 12, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 12, /* ltr */
- 12, /* lti */
- 12, /* ltr_u */
- 16, /* lti_u */
- 16, /* ler */
- 16, /* lei */
- 16, /* ler_u */
- 16, /* lei_u */
- 12, /* eqr */
- 12, /* eqi */
- 16, /* ger */
- 16, /* gei */
- 16, /* ger_u */
- 16, /* gei_u */
- 12, /* gtr */
- 12, /* gti */
- 12, /* gtr_u */
- 12, /* gti_u */
- 16, /* ner */
- 16, /* nei */
- 4, /* movr */
- 8, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 4, /* htonr_us */
- 4, /* htonr_ui */
- 0, /* htonr_ul */
- 8, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 8, /* ldi_uc */
- 4, /* ldr_s */
- 8, /* ldi_s */
- 4, /* ldr_us */
- 8, /* ldi_us */
- 4, /* ldr_i */
- 8, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 8, /* ldxr_c */
- 16, /* ldxi_c */
- 4, /* ldxr_uc */
- 12, /* ldxi_uc */
- 4, /* ldxr_s */
- 12, /* ldxi_s */
- 4, /* ldxr_us */
- 12, /* ldxi_us */
- 4, /* ldxr_i */
- 12, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 4, /* str_c */
- 8, /* sti_c */
- 4, /* str_s */
- 8, /* sti_s */
- 4, /* str_i */
- 8, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 4, /* stxr_c */
- 12, /* stxi_c */
- 4, /* stxr_s */
- 12, /* stxi_s */
- 4, /* stxr_i */
- 12, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 8, /* bltr */
- 8, /* blti */
- 8, /* bltr_u */
- 12, /* blti_u */
- 8, /* bler */
- 8, /* blei */
- 8, /* bler_u */
- 12, /* blei_u */
- 8, /* beqr */
- 16, /* beqi */
- 8, /* bger */
- 8, /* bgei */
- 8, /* bger_u */
- 8, /* bgei_u */
- 8, /* bgtr */
- 8, /* bgti */
- 8, /* bgtr_u */
- 8, /* bgti_u */
- 8, /* bner */
- 16, /* bnei */
- 12, /* bmsr */
- 12, /* bmsi */
- 12, /* bmcr */
- 12, /* bmci */
- 12, /* boaddr */
- 16, /* boaddi */
- 12, /* boaddr_u */
- 12, /* boaddi_u */
- 12, /* bxaddr */
- 16, /* bxaddi */
- 12, /* bxaddr_u */
- 12, /* bxaddi_u */
- 12, /* bosubr */
- 16, /* bosubi */
- 12, /* bosubr_u */
- 16, /* bosubi_u */
- 12, /* bxsubr */
- 16, /* bxsubi */
- 12, /* bxsubr_u */
- 16, /* bxsubi_u */
- 8, /* jmpr */
- 4, /* jmpi */
- 28, /* callr */
- 40, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 124, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 16, /* addi_f */
- 4, /* subr_f */
- 16, /* subi_f */
- 16, /* rsbi_f */
- 4, /* mulr_f */
- 16, /* muli_f */
- 4, /* divr_f */
- 16, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 12, /* ltr_f */
- 24, /* lti_f */
- 16, /* ler_f */
- 28, /* lei_f */
- 12, /* eqr_f */
- 24, /* eqi_f */
- 16, /* ger_f */
- 28, /* gei_f */
- 12, /* gtr_f */
- 24, /* gti_f */
- 16, /* ner_f */
- 28, /* nei_f */
- 16, /* unltr_f */
- 28, /* unlti_f */
- 16, /* unler_f */
- 28, /* unlei_f */
- 16, /* uneqr_f */
- 28, /* uneqi_f */
- 16, /* unger_f */
- 28, /* ungei_f */
- 16, /* ungtr_f */
- 28, /* ungti_f */
- 16, /* ltgtr_f */
- 28, /* ltgti_f */
- 16, /* ordr_f */
- 28, /* ordi_f */
- 12, /* unordr_f */
- 24, /* unordi_f */
- 12, /* truncr_f_i */
- 0, /* truncr_f_l */
- 20, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 12, /* movi_f */
- 4, /* ldr_f */
- 8, /* ldi_f */
- 4, /* ldxr_f */
- 12, /* ldxi_f */
- 4, /* str_f */
- 8, /* sti_f */
- 4, /* stxr_f */
- 12, /* stxi_f */
- 8, /* bltr_f */
- 20, /* blti_f */
- 12, /* bler_f */
- 24, /* blei_f */
- 8, /* beqr_f */
- 20, /* beqi_f */
- 12, /* bger_f */
- 24, /* bgei_f */
- 8, /* bgtr_f */
- 20, /* bgti_f */
- 8, /* bner_f */
- 20, /* bnei_f */
- 12, /* bunltr_f */
- 24, /* bunlti_f */
- 8, /* bunler_f */
- 20, /* bunlei_f */
- 12, /* buneqr_f */
- 24, /* buneqi_f */
- 8, /* bunger_f */
- 20, /* bungei_f */
- 12, /* bungtr_f */
- 24, /* bungti_f */
- 12, /* bltgtr_f */
- 24, /* bltgti_f */
- 8, /* bordr_f */
- 20, /* bordi_f */
- 8, /* bunordr_f */
- 20, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 24, /* addi_d */
- 4, /* subr_d */
- 24, /* subi_d */
- 24, /* rsbi_d */
- 4, /* mulr_d */
- 24, /* muli_d */
- 4, /* divr_d */
- 24, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 12, /* ltr_d */
- 32, /* lti_d */
- 16, /* ler_d */
- 36, /* lei_d */
- 12, /* eqr_d */
- 32, /* eqi_d */
- 16, /* ger_d */
- 36, /* gei_d */
- 12, /* gtr_d */
- 32, /* gti_d */
- 16, /* ner_d */
- 36, /* nei_d */
- 16, /* unltr_d */
- 36, /* unlti_d */
- 16, /* unler_d */
- 36, /* unlei_d */
- 16, /* uneqr_d */
- 36, /* uneqi_d */
- 16, /* unger_d */
- 36, /* ungei_d */
- 16, /* ungtr_d */
- 36, /* ungti_d */
- 16, /* ltgtr_d */
- 36, /* ltgti_d */
- 16, /* ordr_d */
- 36, /* ordi_d */
- 12, /* unordr_d */
- 32, /* unordi_d */
- 12, /* truncr_d_i */
- 0, /* truncr_d_l */
- 20, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 24, /* movi_d */
- 4, /* ldr_d */
- 8, /* ldi_d */
- 4, /* ldxr_d */
- 12, /* ldxi_d */
- 4, /* str_d */
- 8, /* sti_d */
- 4, /* stxr_d */
- 12, /* stxi_d */
- 8, /* bltr_d */
- 28, /* blti_d */
- 12, /* bler_d */
- 32, /* blei_d */
- 8, /* beqr_d */
- 32, /* beqi_d */
- 12, /* bger_d */
- 32, /* bgei_d */
- 8, /* bgtr_d */
- 28, /* bgti_d */
- 8, /* bner_d */
- 28, /* bnei_d */
- 12, /* bunltr_d */
- 32, /* bunlti_d */
- 8, /* bunler_d */
- 28, /* bunlei_d */
- 12, /* buneqr_d */
- 32, /* buneqi_d */
- 8, /* bunger_d */
- 28, /* bungei_d */
- 12, /* bungtr_d */
- 32, /* bungti_d */
- 12, /* bltgtr_d */
- 32, /* bltgti_d */
- 8, /* bordr_d */
- 28, /* bordi_d */
- 8, /* bunordr_d */
- 28, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __BYTEORDER */
-#endif /* __powerpc__ */
-#endif /* __WORDSIZE */
-
-#if __WORDSIZE == 64
-#if defined(__powerpc__)
-#if __BYTE_ORDER == __BIG_ENDIAN
-#define JIT_INSTR_MAX 148
- 0, /* data */
- 0, /* live */
- 4, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 148, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 4, /* va_start */
- 8, /* va_arg */
- 8, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 28, /* addi */
- 4, /* addcr */
- 28, /* addci */
- 4, /* addxr */
- 8, /* addxi */
- 4, /* subr */
- 28, /* subi */
- 4, /* subcr */
- 28, /* subci */
- 4, /* subxr */
- 8, /* subxi */
- 44, /* rsbi */
- 4, /* mulr */
- 28, /* muli */
- 12, /* qmulr */
- 28, /* qmuli */
- 12, /* qmulr_u */
- 28, /* qmuli_u */
- 4, /* divr */
- 28, /* divi */
- 4, /* divr_u */
- 28, /* divi_u */
- 20, /* qdivr */
- 16, /* qdivi */
- 20, /* qdivr_u */
- 16, /* qdivi_u */
- 12, /* remr */
- 36, /* remi */
- 12, /* remr_u */
- 36, /* remi_u */
- 4, /* andr */
- 28, /* andi */
- 4, /* orr */
- 28, /* ori */
- 4, /* xorr */
- 28, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 12, /* ltr */
- 12, /* lti */
- 12, /* ltr_u */
- 16, /* lti_u */
- 16, /* ler */
- 16, /* lei */
- 16, /* ler_u */
- 16, /* lei_u */
- 12, /* eqr */
- 12, /* eqi */
- 16, /* ger */
- 16, /* gei */
- 16, /* ger_u */
- 16, /* gei_u */
- 12, /* gtr */
- 12, /* gti */
- 12, /* gtr_u */
- 12, /* gti_u */
- 16, /* ner */
- 16, /* nei */
- 4, /* movr */
- 36, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 4, /* extr_i */
- 4, /* extr_ui */
- 4, /* htonr_us */
- 4, /* htonr_ui */
- 4, /* htonr_ul */
- 8, /* ldr_c */
- 28, /* ldi_c */
- 4, /* ldr_uc */
- 24, /* ldi_uc */
- 4, /* ldr_s */
- 24, /* ldi_s */
- 4, /* ldr_us */
- 24, /* ldi_us */
- 4, /* ldr_i */
- 24, /* ldi_i */
- 4, /* ldr_ui */
- 24, /* ldi_ui */
- 4, /* ldr_l */
- 24, /* ldi_l */
- 8, /* ldxr_c */
- 16, /* ldxi_c */
- 4, /* ldxr_uc */
- 12, /* ldxi_uc */
- 4, /* ldxr_s */
- 12, /* ldxi_s */
- 4, /* ldxr_us */
- 12, /* ldxi_us */
- 4, /* ldxr_i */
- 12, /* ldxi_i */
- 4, /* ldxr_ui */
- 12, /* ldxi_ui */
- 4, /* ldxr_l */
- 12, /* ldxi_l */
- 4, /* str_c */
- 24, /* sti_c */
- 4, /* str_s */
- 24, /* sti_s */
- 4, /* str_i */
- 24, /* sti_i */
- 4, /* str_l */
- 24, /* sti_l */
- 4, /* stxr_c */
- 12, /* stxi_c */
- 4, /* stxr_s */
- 12, /* stxi_s */
- 4, /* stxr_i */
- 12, /* stxi_i */
- 4, /* stxr_l */
- 12, /* stxi_l */
- 8, /* bltr */
- 8, /* blti */
- 8, /* bltr_u */
- 12, /* blti_u */
- 8, /* bler */
- 8, /* blei */
- 8, /* bler_u */
- 12, /* blei_u */
- 8, /* beqr */
- 44, /* beqi */
- 8, /* bger */
- 8, /* bgei */
- 8, /* bger_u */
- 8, /* bgei_u */
- 8, /* bgtr */
- 8, /* bgti */
- 8, /* bgtr_u */
- 8, /* bgti_u */
- 8, /* bner */
- 36, /* bnei */
- 12, /* bmsr */
- 12, /* bmsi */
- 12, /* bmcr */
- 12, /* bmci */
- 12, /* boaddr */
- 16, /* boaddi */
- 12, /* boaddr_u */
- 12, /* boaddi_u */
- 12, /* bxaddr */
- 16, /* bxaddi */
- 12, /* bxaddr_u */
- 12, /* bxaddi_u */
- 12, /* bosubr */
- 16, /* bosubi */
- 12, /* bosubr_u */
- 16, /* bosubi_u */
- 12, /* bxsubr */
- 16, /* bxsubi */
- 12, /* bxsubr_u */
- 16, /* bxsubi_u */
- 8, /* jmpr */
- 4, /* jmpi */
- 28, /* callr */
- 56, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 124, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 28, /* addi_f */
- 4, /* subr_f */
- 28, /* subi_f */
- 28, /* rsbi_f */
- 4, /* mulr_f */
- 28, /* muli_f */
- 4, /* divr_f */
- 28, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 12, /* ltr_f */
- 36, /* lti_f */
- 16, /* ler_f */
- 40, /* lei_f */
- 12, /* eqr_f */
- 36, /* eqi_f */
- 16, /* ger_f */
- 40, /* gei_f */
- 12, /* gtr_f */
- 36, /* gti_f */
- 16, /* ner_f */
- 40, /* nei_f */
- 16, /* unltr_f */
- 40, /* unlti_f */
- 16, /* unler_f */
- 40, /* unlei_f */
- 16, /* uneqr_f */
- 40, /* uneqi_f */
- 16, /* unger_f */
- 40, /* ungei_f */
- 16, /* ungtr_f */
- 40, /* ungti_f */
- 16, /* ltgtr_f */
- 40, /* ltgti_f */
- 16, /* ordr_f */
- 40, /* ordi_f */
- 12, /* unordr_f */
- 36, /* unordi_f */
- 12, /* truncr_f_i */
- 12, /* truncr_f_l */
- 12, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 24, /* movi_f */
- 4, /* ldr_f */
- 24, /* ldi_f */
- 4, /* ldxr_f */
- 12, /* ldxi_f */
- 4, /* str_f */
- 24, /* sti_f */
- 4, /* stxr_f */
- 12, /* stxi_f */
- 8, /* bltr_f */
- 32, /* blti_f */
- 12, /* bler_f */
- 36, /* blei_f */
- 8, /* beqr_f */
- 32, /* beqi_f */
- 12, /* bger_f */
- 36, /* bgei_f */
- 8, /* bgtr_f */
- 32, /* bgti_f */
- 8, /* bner_f */
- 32, /* bnei_f */
- 12, /* bunltr_f */
- 36, /* bunlti_f */
- 8, /* bunler_f */
- 32, /* bunlei_f */
- 12, /* buneqr_f */
- 36, /* buneqi_f */
- 8, /* bunger_f */
- 32, /* bungei_f */
- 12, /* bungtr_f */
- 36, /* bungti_f */
- 12, /* bltgtr_f */
- 36, /* bltgti_f */
- 8, /* bordr_f */
- 32, /* bordi_f */
- 8, /* bunordr_f */
- 32, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 28, /* addi_d */
- 4, /* subr_d */
- 28, /* subi_d */
- 32, /* rsbi_d */
- 4, /* mulr_d */
- 28, /* muli_d */
- 4, /* divr_d */
- 28, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 12, /* ltr_d */
- 40, /* lti_d */
- 16, /* ler_d */
- 44, /* lei_d */
- 12, /* eqr_d */
- 40, /* eqi_d */
- 16, /* ger_d */
- 44, /* gei_d */
- 12, /* gtr_d */
- 40, /* gti_d */
- 16, /* ner_d */
- 44, /* nei_d */
- 16, /* unltr_d */
- 44, /* unlti_d */
- 16, /* unler_d */
- 44, /* unlei_d */
- 16, /* uneqr_d */
- 44, /* uneqi_d */
- 16, /* unger_d */
- 44, /* ungei_d */
- 16, /* ungtr_d */
- 44, /* ungti_d */
- 16, /* ltgtr_d */
- 44, /* ltgti_d */
- 16, /* ordr_d */
- 44, /* ordi_d */
- 12, /* unordr_d */
- 40, /* unordi_d */
- 12, /* truncr_d_i */
- 12, /* truncr_d_l */
- 12, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 32, /* movi_d */
- 4, /* ldr_d */
- 24, /* ldi_d */
- 4, /* ldxr_d */
- 12, /* ldxi_d */
- 4, /* str_d */
- 24, /* sti_d */
- 4, /* stxr_d */
- 12, /* stxi_d */
- 8, /* bltr_d */
- 32, /* blti_d */
- 12, /* bler_d */
- 36, /* blei_d */
- 8, /* beqr_d */
- 40, /* beqi_d */
- 12, /* bger_d */
- 40, /* bgei_d */
- 8, /* bgtr_d */
- 36, /* bgti_d */
- 8, /* bner_d */
- 36, /* bnei_d */
- 12, /* bunltr_d */
- 36, /* bunlti_d */
- 8, /* bunler_d */
- 32, /* bunlei_d */
- 12, /* buneqr_d */
- 36, /* buneqi_d */
- 8, /* bunger_d */
- 36, /* bungei_d */
- 12, /* bungtr_d */
- 40, /* bungti_d */
- 12, /* bltgtr_d */
- 40, /* bltgti_d */
- 8, /* bordr_d */
- 36, /* bordi_d */
- 8, /* bunordr_d */
- 32, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __BYTEORDER */
-#endif /* __powerpc__ */
-#endif /* __WORDSIZE */
-
-#if __WORDSIZE == 64
-#if defined(__powerpc__)
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define JIT_INSTR_MAX 124
- 0, /* data */
- 0, /* live */
- 4, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 124, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 4, /* va_start */
- 8, /* va_arg */
- 8, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 28, /* addi */
- 4, /* addcr */
- 28, /* addci */
- 4, /* addxr */
- 8, /* addxi */
- 4, /* subr */
- 28, /* subi */
- 4, /* subcr */
- 28, /* subci */
- 4, /* subxr */
- 8, /* subxi */
- 44, /* rsbi */
- 4, /* mulr */
- 28, /* muli */
- 12, /* qmulr */
- 28, /* qmuli */
- 12, /* qmulr_u */
- 28, /* qmuli_u */
- 4, /* divr */
- 28, /* divi */
- 4, /* divr_u */
- 28, /* divi_u */
- 20, /* qdivr */
- 16, /* qdivi */
- 20, /* qdivr_u */
- 16, /* qdivi_u */
- 12, /* remr */
- 36, /* remi */
- 12, /* remr_u */
- 36, /* remi_u */
- 4, /* andr */
- 28, /* andi */
- 4, /* orr */
- 28, /* ori */
- 4, /* xorr */
- 28, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 12, /* ltr */
- 12, /* lti */
- 12, /* ltr_u */
- 16, /* lti_u */
- 16, /* ler */
- 16, /* lei */
- 16, /* ler_u */
- 16, /* lei_u */
- 12, /* eqr */
- 12, /* eqi */
- 16, /* ger */
- 16, /* gei */
- 16, /* ger_u */
- 16, /* gei_u */
- 12, /* gtr */
- 12, /* gti */
- 12, /* gtr_u */
- 12, /* gti_u */
- 16, /* ner */
- 16, /* nei */
- 4, /* movr */
- 36, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 4, /* extr_i */
- 4, /* extr_ui */
- 20, /* htonr_us */
- 16, /* htonr_ui */
- 44, /* htonr_ul */
- 8, /* ldr_c */
- 28, /* ldi_c */
- 4, /* ldr_uc */
- 24, /* ldi_uc */
- 4, /* ldr_s */
- 24, /* ldi_s */
- 4, /* ldr_us */
- 24, /* ldi_us */
- 4, /* ldr_i */
- 24, /* ldi_i */
- 4, /* ldr_ui */
- 24, /* ldi_ui */
- 4, /* ldr_l */
- 24, /* ldi_l */
- 8, /* ldxr_c */
- 16, /* ldxi_c */
- 4, /* ldxr_uc */
- 12, /* ldxi_uc */
- 4, /* ldxr_s */
- 12, /* ldxi_s */
- 4, /* ldxr_us */
- 12, /* ldxi_us */
- 4, /* ldxr_i */
- 12, /* ldxi_i */
- 4, /* ldxr_ui */
- 12, /* ldxi_ui */
- 4, /* ldxr_l */
- 12, /* ldxi_l */
- 4, /* str_c */
- 24, /* sti_c */
- 4, /* str_s */
- 24, /* sti_s */
- 4, /* str_i */
- 24, /* sti_i */
- 4, /* str_l */
- 24, /* sti_l */
- 4, /* stxr_c */
- 12, /* stxi_c */
- 4, /* stxr_s */
- 12, /* stxi_s */
- 4, /* stxr_i */
- 12, /* stxi_i */
- 4, /* stxr_l */
- 12, /* stxi_l */
- 8, /* bltr */
- 8, /* blti */
- 8, /* bltr_u */
- 12, /* blti_u */
- 8, /* bler */
- 8, /* blei */
- 8, /* bler_u */
- 12, /* blei_u */
- 8, /* beqr */
- 44, /* beqi */
- 8, /* bger */
- 8, /* bgei */
- 8, /* bger_u */
- 8, /* bgei_u */
- 8, /* bgtr */
- 8, /* bgti */
- 8, /* bgtr_u */
- 8, /* bgti_u */
- 8, /* bner */
- 36, /* bnei */
- 12, /* bmsr */
- 12, /* bmsi */
- 12, /* bmcr */
- 12, /* bmci */
- 12, /* boaddr */
- 16, /* boaddi */
- 12, /* boaddr_u */
- 12, /* boaddi_u */
- 12, /* bxaddr */
- 16, /* bxaddi */
- 12, /* bxaddr_u */
- 12, /* bxaddi_u */
- 12, /* bosubr */
- 16, /* bosubi */
- 12, /* bosubr_u */
- 16, /* bosubi_u */
- 12, /* bxsubr */
- 16, /* bxsubi */
- 12, /* bxsubr_u */
- 16, /* bxsubi_u */
- 8, /* jmpr */
- 4, /* jmpi */
- 12, /* callr */
- 36, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 124, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 28, /* addi_f */
- 4, /* subr_f */
- 28, /* subi_f */
- 28, /* rsbi_f */
- 4, /* mulr_f */
- 28, /* muli_f */
- 4, /* divr_f */
- 28, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 12, /* ltr_f */
- 36, /* lti_f */
- 16, /* ler_f */
- 40, /* lei_f */
- 12, /* eqr_f */
- 36, /* eqi_f */
- 16, /* ger_f */
- 40, /* gei_f */
- 12, /* gtr_f */
- 36, /* gti_f */
- 16, /* ner_f */
- 40, /* nei_f */
- 16, /* unltr_f */
- 40, /* unlti_f */
- 16, /* unler_f */
- 40, /* unlei_f */
- 16, /* uneqr_f */
- 40, /* uneqi_f */
- 16, /* unger_f */
- 40, /* ungei_f */
- 16, /* ungtr_f */
- 40, /* ungti_f */
- 16, /* ltgtr_f */
- 40, /* ltgti_f */
- 16, /* ordr_f */
- 40, /* ordi_f */
- 12, /* unordr_f */
- 36, /* unordi_f */
- 12, /* truncr_f_i */
- 12, /* truncr_f_l */
- 12, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 24, /* movi_f */
- 4, /* ldr_f */
- 24, /* ldi_f */
- 4, /* ldxr_f */
- 12, /* ldxi_f */
- 4, /* str_f */
- 24, /* sti_f */
- 4, /* stxr_f */
- 12, /* stxi_f */
- 8, /* bltr_f */
- 32, /* blti_f */
- 12, /* bler_f */
- 36, /* blei_f */
- 8, /* beqr_f */
- 32, /* beqi_f */
- 12, /* bger_f */
- 36, /* bgei_f */
- 8, /* bgtr_f */
- 32, /* bgti_f */
- 8, /* bner_f */
- 32, /* bnei_f */
- 12, /* bunltr_f */
- 36, /* bunlti_f */
- 8, /* bunler_f */
- 32, /* bunlei_f */
- 12, /* buneqr_f */
- 36, /* buneqi_f */
- 8, /* bunger_f */
- 32, /* bungei_f */
- 12, /* bungtr_f */
- 36, /* bungti_f */
- 12, /* bltgtr_f */
- 36, /* bltgti_f */
- 8, /* bordr_f */
- 32, /* bordi_f */
- 8, /* bunordr_f */
- 32, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 28, /* addi_d */
- 4, /* subr_d */
- 28, /* subi_d */
- 32, /* rsbi_d */
- 4, /* mulr_d */
- 28, /* muli_d */
- 4, /* divr_d */
- 28, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 12, /* ltr_d */
- 40, /* lti_d */
- 16, /* ler_d */
- 44, /* lei_d */
- 12, /* eqr_d */
- 40, /* eqi_d */
- 16, /* ger_d */
- 44, /* gei_d */
- 12, /* gtr_d */
- 40, /* gti_d */
- 16, /* ner_d */
- 44, /* nei_d */
- 16, /* unltr_d */
- 44, /* unlti_d */
- 16, /* unler_d */
- 44, /* unlei_d */
- 16, /* uneqr_d */
- 44, /* uneqi_d */
- 16, /* unger_d */
- 44, /* ungei_d */
- 16, /* ungtr_d */
- 44, /* ungti_d */
- 16, /* ltgtr_d */
- 44, /* ltgti_d */
- 16, /* ordr_d */
- 44, /* ordi_d */
- 12, /* unordr_d */
- 40, /* unordi_d */
- 12, /* truncr_d_i */
- 12, /* truncr_d_l */
- 12, /* extr_d */
- 4, /* extr_f_d */
- 4, /* movr_d */
- 32, /* movi_d */
- 4, /* ldr_d */
- 24, /* ldi_d */
- 4, /* ldxr_d */
- 12, /* ldxi_d */
- 4, /* str_d */
- 24, /* sti_d */
- 4, /* stxr_d */
- 12, /* stxi_d */
- 8, /* bltr_d */
- 32, /* blti_d */
- 12, /* bler_d */
- 36, /* blei_d */
- 8, /* beqr_d */
- 40, /* beqi_d */
- 12, /* bger_d */
- 40, /* bgei_d */
- 8, /* bgtr_d */
- 36, /* bgti_d */
- 8, /* bner_d */
- 36, /* bnei_d */
- 12, /* bunltr_d */
- 36, /* bunlti_d */
- 8, /* bunler_d */
- 32, /* bunlei_d */
- 12, /* buneqr_d */
- 36, /* buneqi_d */
- 8, /* bunger_d */
- 36, /* bungei_d */
- 12, /* bungtr_d */
- 40, /* bungti_d */
- 12, /* bltgtr_d */
- 40, /* bltgti_d */
- 8, /* bordr_d */
- 36, /* bordi_d */
- 8, /* bunordr_d */
- 32, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __BYTE_ORDER */
-#endif /* __powerpc__ */
-#endif /* __WORDSIZE */
diff --git a/libguile/lightning/lib/jit_print.c b/libguile/lightning/lib/jit_print.c
deleted file mode 100644
index a633af365..000000000
--- a/libguile/lightning/lib/jit_print.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Copyright (C) 2012-2018 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#define DEBUG 1
-#define DISASSEMBLER 0
-
-#include <lightning.h>
-#include <lightning/jit_private.h>
-
-#define print_chr(value) fputc(value, stdout)
-#define print_hex(value) fprintf(stdout, "0x%lx", value)
-#define print_dec(value) fprintf(stdout, "%ld", value)
-#define print_flt(value) fprintf(stdout, "%g", value)
-#define print_str(value) fprintf(stdout, "%s", value)
-#define print_ptr(value) fprintf(stdout, "%p", value)
-#define print_reg(value) \
- do { \
- if ((value) & jit_regno_patch) \
- print_chr('?'); \
- print_str(_rvs[jit_regno(value)].name); \
- } while (0)
-#define print_arg(value) \
- do { \
- print_chr('#'); \
- if (value) \
- print_dec((value)->v.w); \
- else \
- print_chr('?'); \
- } while (0)
-
-/*
- * Initialization
- */
-#include "jit_names.c"
-
-/*
- * Implementation
- */
-void
-_jit_print(jit_state_t *_jit)
-{
- jit_node_t *node;
-
- if ((node = _jitc->head)) {
- jit_print_node(node);
- for (node = node->next; node; node = node->next) {
- print_chr('\n');
- jit_print_node(node);
- }
- print_chr('\n');
- }
-}
-
-void
-_jit_print_node(jit_state_t *_jit, jit_node_t *node)
-{
- jit_block_t *block;
- jit_int32_t value;
- jit_int32_t offset;
-
- if (node->code == jit_code_label ||
- node->code == jit_code_prolog || node->code == jit_code_epilog) {
- print_chr('L');
- print_dec(node->v.w);
- print_chr(':');
- block = _jitc->blocks.ptr + node->v.w;
- for (offset = 0; offset < _jitc->reglen; offset++) {
- if (jit_regset_tstbit(&block->reglive, offset)) {
- print_chr(' ');
- print_reg(offset);
- }
- }
- if (node->code == jit_code_prolog ||
- node->code == jit_code_epilog) {
- print_str(" /* ");
- print_str(code_name[node->code]);
- print_str(" */");
- }
- return;
- }
- value = jit_classify(node->code) &
- (jit_cc_a0_int|jit_cc_a0_flt|jit_cc_a0_dbl|jit_cc_a0_jmp|
- jit_cc_a0_reg|jit_cc_a0_rlh|jit_cc_a0_arg|
- jit_cc_a1_reg|jit_cc_a1_int|jit_cc_a1_flt|jit_cc_a1_dbl|jit_cc_a1_arg|
- jit_cc_a2_reg|jit_cc_a2_int|jit_cc_a2_flt|jit_cc_a2_dbl);
- if (!(node->flag & jit_flag_synth) && ((value & jit_cc_a0_jmp) ||
- node->code == jit_code_finishr ||
- node->code == jit_code_finishi))
- print_str(" ");
- else
- print_chr('\t');
- if (node->flag & jit_flag_synth)
- print_str(" \\__ ");
- print_str(code_name[node->code]);
- switch (node->code) {
- r:
- print_chr(' '); print_reg(node->u.w); return;
- w:
- print_chr(' '); print_hex(node->u.w); return;
- f:
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float32_t *)node->u.n->u.w);
- else
- print_flt(node->u.f);
- return;
- d:
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float64_t *)node->u.n->u.w);
- else
- print_flt(node->u.d);
- return;
- n:
- print_chr(' ');
- if (!(node->flag & jit_flag_node))
- print_ptr(node->u.p);
- else {
- print_chr('L');
- print_dec(node->u.n->v.w);
- }
- return;
- a:
- print_chr(' '); print_arg(node); return;
- r_r:
- print_chr(' '); print_reg(node->u.w);
- print_chr(' '); print_reg(node->v.w); return;
- r_w:
- print_chr(' '); print_reg(node->u.w);
- print_chr(' '); print_hex(node->v.w); return;
- r_f:
- print_chr(' '); print_reg(node->u.w);
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float32_t *)node->v.n->u.w);
- else
- print_flt(node->v.f);
- return;
- r_d:
- print_chr(' '); print_reg(node->u.w);
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float64_t *)node->v.n->u.w);
- else
- print_flt(node->v.d);
- return;
- r_a:
- print_chr(' '); print_reg(node->u.w);
- print_chr(' '); print_arg(node->v.n);
- return;
- w_r:
- print_chr(' '); print_hex(node->u.w);
- print_chr(' '); print_reg(node->v.w); return;
- w_w:
- print_chr(' '); print_hex(node->u.w);
- print_chr(' '); print_hex(node->v.w); return;
- w_a:
- print_chr(' '); print_hex(node->u.w);
- print_chr(' '); print_arg(node->v.n);
- return;
- f_a:
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float32_t *)node->u.n->u.w);
- else
- print_flt(node->u.f);
- print_chr(' '); print_arg(node->v.n);
- return;
- d_a:
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float64_t *)node->u.n->u.w);
- else
- print_flt(node->u.d);
- print_chr(' '); print_arg(node->v.n);
- return;
- r_r_r:
- print_chr(' '); print_reg(node->u.w);
- print_chr(' '); print_reg(node->v.w);
- print_chr(' '); print_reg(node->w.w); return;
- r_r_w:
- print_chr(' '); print_reg(node->u.w);
- print_chr(' '); print_reg(node->v.w);
- print_chr(' '); print_hex(node->w.w); return;
- q_r_r:
- print_str(" ("); print_reg(node->u.q.l);
- print_chr(' '); print_reg(node->u.q.h);
- print_str(") "); print_reg(node->v.w);
- print_chr(' '); print_reg(node->w.w); return;
- q_r_w:
- print_str(" ("); print_reg(node->u.q.l);
- print_chr(' '); print_reg(node->u.q.h);
- print_str(") "); print_reg(node->v.w);
- print_chr(' '); print_hex(node->w.w); return;
- r_r_f:
- print_chr(' '); print_reg(node->u.w);
- print_chr(' '); print_reg(node->v.w);
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float32_t *)node->w.n->u.w);
- else
- print_flt(node->w.f);
- return;
- r_r_d:
- print_chr(' '); print_reg(node->u.w);
- print_chr(' '); print_reg(node->v.w);
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float64_t *)node->w.n->u.w);
- else
- print_flt(node->w.d);
- return;
- w_r_r:
- print_chr(' '); print_hex(node->u.w);
- print_chr(' '); print_reg(node->v.w);
- print_chr(' '); print_reg(node->w.w); return;
- n_r_r:
- print_chr(' ');
- if (!(node->flag & jit_flag_node))
- print_ptr(node->u.p);
- else {
- print_chr('L');
- print_dec(node->u.n->v.w);
- }
- print_chr(' '); print_reg(node->v.w);
- print_chr(' '); print_reg(node->w.w); return;
- n_r_w:
- print_chr(' ');
- if (!(node->flag & jit_flag_node))
- print_ptr(node->u.p);
- else {
- print_chr('L');
- print_dec(node->u.n->v.w);
- }
- print_chr(' '); print_reg(node->v.w);
- print_chr(' '); print_hex(node->w.w); return;
- n_r_f:
- print_chr(' ');
- if (!(node->flag & jit_flag_node))
- print_ptr(node->u.p);
- else{
- print_chr('L');
- print_dec(node->u.n->v.w);
- }
- print_chr(' '); print_reg(node->v.w);
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float32_t *)node->w.n->u.w);
- else
- print_flt(node->w.f);
- return;
- n_r_d:
- print_chr(' ');
- if (!(node->flag & jit_flag_node))
- print_ptr(node->u.p);
- else {
- print_chr('L');
- print_dec(node->u.n->v.w);
- }
- print_chr(' '); print_reg(node->v.w);
- print_chr(' ');
- if (node->flag & jit_flag_data)
- print_flt(*(jit_float64_t *)node->w.n->u.w);
- else
- print_flt(node->w.d);
- return;
- case jit_code_name:
- print_chr(' ');
- if (node->v.p && _jitc->emit)
- print_str((char *)node->v.n->u.p);
- break;
- case jit_code_note:
- print_chr(' ');
- if (node->v.p && _jitc->emit)
- print_str((char *)node->v.n->u.p);
- if (node->v.p && _jitc->emit && node->w.w)
- print_chr(':');
- if (node->w.w)
- print_dec(node->w.w);
- break;
- case jit_code_data:
- case jit_code_label:
- case jit_code_ellipsis:
- case jit_code_prolog: case jit_code_epilog:
- case jit_code_ret: case jit_code_prepare:
- break;
- case jit_code_save: case jit_code_load:
- goto r;
- default:
- switch (value) {
- case jit_cc_a0_reg:
- case jit_cc_a0_reg|jit_cc_a0_chg:
- case jit_cc_a0_reg|jit_cc_a0_jmp:
- goto r;
- case jit_cc_a0_int:
- goto w;
- case jit_cc_a0_flt:
- goto f;
- case jit_cc_a0_dbl:
- goto d;
- case jit_cc_a0_jmp:
- goto n;
- case jit_cc_a0_int|jit_cc_a0_arg:
- goto a;
- case jit_cc_a0_reg|jit_cc_a1_reg:
- goto r_r;
- case jit_cc_a0_reg|jit_cc_a1_int:
- goto r_w;
- case jit_cc_a0_reg|jit_cc_a1_flt:
- goto r_f;
- case jit_cc_a0_reg|jit_cc_a1_dbl:
- goto r_d;
- case jit_cc_a0_reg|jit_cc_a1_arg:
- goto r_a;
- case jit_cc_a0_int|jit_cc_a1_reg:
- goto w_r;
- case jit_cc_a0_int|jit_cc_a1_int:
- goto w_w;
- case jit_cc_a0_int|jit_cc_a1_arg:
- goto w_a;
- case jit_cc_a0_flt|jit_cc_a1_arg:
- goto f_a;
- case jit_cc_a0_dbl|jit_cc_a1_arg:
- goto d_a;
- case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a2_reg:
- goto r_r_r;
- case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a2_int:
- goto r_r_w;
- case jit_cc_a0_reg|jit_cc_a0_rlh|
- jit_cc_a1_reg|jit_cc_a2_reg:
- goto q_r_r;
- case jit_cc_a0_reg|jit_cc_a0_rlh|
- jit_cc_a1_reg|jit_cc_a2_int:
- goto q_r_w;
- case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a2_flt:
- goto r_r_f;
- case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a2_dbl:
- goto r_r_d;
- case jit_cc_a0_int|jit_cc_a1_reg|jit_cc_a2_reg:
- goto w_r_r;
- case jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a2_reg:
- goto n_r_r;
- case jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a2_int:
- goto n_r_w;
- case jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a2_flt:
- goto n_r_f;
- case jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a2_dbl:
- goto n_r_d;
- default:
- abort();
- }
- break;
- }
-}
diff --git a/libguile/lightning/lib/jit_rewind.c b/libguile/lightning/lib/jit_rewind.c
deleted file mode 100644
index ea7aa838e..000000000
--- a/libguile/lightning/lib/jit_rewind.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2015-2018 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#define DEBUG 1
-#define DISASSEMBLER 0
-
-#include <lightning.h>
-#include <lightning/jit_private.h>
-
-#if PROTO
-# define free_synth_list(node) _free_synth_list(_jit,node)
-static jit_node_t *_free_synth_list(jit_state_t*,jit_node_t*);
-#define rewind_prolog() _rewind_prolog(_jit)
-static void _rewind_prolog(jit_state_t*);
-#define rewind_prepare() _rewind_prepare(_jit)
-static void _rewind_prepare(jit_state_t*);
-#endif
-
-#if CODE
-/*
- * Implementation
- */
-static jit_node_t *
-_free_synth_list(jit_state_t *_jit, jit_node_t *node)
-{
- jit_node_t *next;
- next = node->next;
- free_node(node);
- for (node = next; node && (node->flag & jit_flag_synth); node = next) {
- next = node->next;
- free_node(node);
- }
- return (next);
-}
-
-static void
-_rewind_prolog(jit_state_t *_jit)
-{
- jit_node_t *node;
- jit_node_t *next;
- _jitc->function->self.size = stack_framesize;
-#if __arm__
- assert(jit_cpu.abi);
- _jitc->function->self.size += 64;
-#endif
-#if __mips__ && NEW_ABI
- /* Only add extra stack space if there are varargs
- * arguments in registers. */
- assert(jit_arg_reg_p(_jitc->function->self.argi));
- _jitc->function->self.size += 64;
-#endif
- _jitc->function->self.argi =
- _jitc->function->self.argf = _jitc->function->self.argn = 0;
- _jitc->tail = _jitc->function->prolog;
- node = _jitc->tail->next;
- _jitc->tail->next = (jit_node_t *)0;
- _jitc->tail->link = (jit_node_t *)0;
- for (; node; node = next) {
- next = node->next;
- switch (node->code) {
- case jit_code_arg:
- node->next = (jit_node_t *)0;
- jit_make_arg(node);
- break;
- case jit_code_arg_f:
- node->next = (jit_node_t *)0;
- jit_make_arg_f(node);
- break;
- case jit_code_arg_d:
- node->next = (jit_node_t *)0;
- jit_make_arg_d(node);
- break;
- case jit_code_getarg_c:
- jit_getarg_c(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_getarg_uc:
- jit_getarg_uc(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_getarg_s:
- jit_getarg_s(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_getarg_us:
- jit_getarg_us(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_getarg_i:
- jit_getarg_i(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_getarg_f:
- jit_getarg_f(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_getarg_d:
- jit_getarg_d(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_putargr:
- jit_putargr(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_putargi:
- jit_putargi(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_putargr_f:
- jit_putargr_f(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_putargi_f:
- jit_putargi_f(node->u.f, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_putargr_d:
- jit_putargr_d(node->u.w, node->v.n);
- next = free_synth_list(node);
- break;
- case jit_code_putargi_d:
- jit_putargi_d(node->u.d, node->v.n);
- next = free_synth_list(node);
- break;
- default:
- node->next = (jit_node_t *)0;
- link_node(node);
- break;
- }
- }
-}
-
-static void
-_rewind_prepare(jit_state_t *_jit)
-{
- jit_node_t *node;
- jit_node_t *next;
- _jitc->function->call.argi =
- _jitc->function->call.argf =
- _jitc->function->call.size = 0;
- _jitc->tail = _jitc->prepare;
- node = _jitc->tail->next;
- _jitc->tail->next = (jit_node_t *)0;
- _jitc->tail->link = (jit_node_t *)0;
- for (; node; node = next) {
- next = node->next;
- switch (node->code) {
- case jit_code_pushargr:
- jit_pushargr(node->u.w);
- next = free_synth_list(node);
- break;
- case jit_code_pushargi:
- jit_pushargi(node->u.w);
- next = free_synth_list(node);
- break;
- case jit_code_pushargr_f:
- jit_pushargr_f(node->u.w);
- next = free_synth_list(node);
- break;
- case jit_code_pushargi_f:
- jit_pushargi_f(node->u.f);
- next = free_synth_list(node);
- break;
- case jit_code_pushargr_d:
- jit_pushargr_d(node->u.w);
- next = free_synth_list(node);
- break;
- case jit_code_pushargi_d:
- jit_pushargi_d(node->u.d);
- next = free_synth_list(node);
- break;
- default:
- node->next = (jit_node_t *)0;
- link_node(node);
- break;
- }
- }
-}
-#endif
diff --git a/libguile/lightning/lib/jit_s390-sz.c b/libguile/lightning/lib/jit_s390-sz.c
deleted file mode 100644
index bb8b2dc97..000000000
--- a/libguile/lightning/lib/jit_s390-sz.c
+++ /dev/null
@@ -1,804 +0,0 @@
-
-#if __WORDSIZE == 32
-#define JIT_INSTR_MAX 104
- 0, /* data */
- 0, /* live */
- 6, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 2, /* label */
- 42, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 44, /* va_start */
- 104, /* va_arg */
- 100, /* va_arg_d */
- 0, /* va_end */
- 8, /* addr */
- 24, /* addi */
- 8, /* addcr */
- 20, /* addci */
- 8, /* addxr */
- 12, /* addxi */
- 12, /* subr */
- 24, /* subi */
- 12, /* subcr */
- 20, /* subci */
- 12, /* subxr */
- 12, /* subxi */
- 28, /* rsbi */
- 8, /* mulr */
- 24, /* muli */
- 60, /* qmulr */
- 68, /* qmuli */
- 16, /* qmulr_u */
- 32, /* qmuli_u */
- 12, /* divr */
- 28, /* divi */
- 16, /* divr_u */
- 32, /* divi_u */
- 16, /* qdivr */
- 20, /* qdivi */
- 20, /* qdivr_u */
- 24, /* qdivi_u */
- 12, /* remr */
- 28, /* remi */
- 16, /* remr_u */
- 32, /* remi_u */
- 8, /* andr */
- 20, /* andi */
- 8, /* orr */
- 20, /* ori */
- 8, /* xorr */
- 24, /* xori */
- 6, /* lshr */
- 10, /* lshi */
- 6, /* rshr */
- 10, /* rshi */
- 6, /* rshr_u */
- 10, /* rshi_u */
- 4, /* negr */
- 12, /* comr */
- 20, /* ltr */
- 24, /* lti */
- 20, /* ltr_u */
- 24, /* lti_u */
- 20, /* ler */
- 24, /* lei */
- 20, /* ler_u */
- 24, /* lei_u */
- 20, /* eqr */
- 24, /* eqi */
- 20, /* ger */
- 24, /* gei */
- 20, /* ger_u */
- 24, /* gei_u */
- 20, /* gtr */
- 24, /* gti */
- 20, /* gtr_u */
- 24, /* gti_u */
- 20, /* ner */
- 24, /* nei */
- 4, /* movr */
- 16, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 4, /* extr_i */
- 4, /* extr_ui */
- 4, /* htonr_us */
- 4, /* htonr_ui */
- 4, /* htonr_ul */
- 6, /* ldr_c */
- 18, /* ldi_c */
- 6, /* ldr_uc */
- 18, /* ldi_uc */
- 6, /* ldr_s */
- 18, /* ldi_s */
- 6, /* ldr_us */
- 18, /* ldi_us */
- 6, /* ldr_i */
- 18, /* ldi_i */
- 6, /* ldr_ui */
- 18, /* ldi_ui */
- 6, /* ldr_l */
- 18, /* ldi_l */
- 14, /* ldxr_c */
- 26, /* ldxi_c */
- 14, /* ldxr_uc */
- 26, /* ldxi_uc */
- 14, /* ldxr_s */
- 26, /* ldxi_s */
- 14, /* ldxr_us */
- 26, /* ldxi_us */
- 14, /* ldxr_i */
- 26, /* ldxi_i */
- 14, /* ldxr_ui */
- 26, /* ldxi_ui */
- 14, /* ldxr_l */
- 26, /* ldxi_l */
- 4, /* str_c */
- 16, /* sti_c */
- 4, /* str_s */
- 16, /* sti_s */
- 4, /* str_i */
- 16, /* sti_i */
- 6, /* str_l */
- 18, /* sti_l */
- 12, /* stxr_c */
- 28, /* stxi_c */
- 12, /* stxr_s */
- 28, /* stxi_s */
- 12, /* stxr_i */
- 28, /* stxi_i */
- 14, /* stxr_l */
- 30, /* stxi_l */
- 10, /* bltr */
- 14, /* blti */
- 10, /* bltr_u */
- 14, /* blti_u */
- 10, /* bler */
- 14, /* blei */
- 10, /* bler_u */
- 14, /* blei_u */
- 10, /* beqr */
- 26, /* beqi */
- 10, /* bger */
- 14, /* bgei */
- 10, /* bger_u */
- 14, /* bgei_u */
- 10, /* bgtr */
- 14, /* bgti */
- 10, /* bgtr_u */
- 14, /* bgti_u */
- 10, /* bner */
- 26, /* bnei */
- 18, /* bmsr */
- 18, /* bmsi */
- 18, /* bmcr */
- 18, /* bmci */
- 10, /* boaddr */
- 14, /* boaddi */
- 10, /* boaddr_u */
- 14, /* boaddi_u */
- 10, /* bxaddr */
- 14, /* bxaddi */
- 10, /* bxaddr_u */
- 14, /* bxaddi_u */
- 10, /* bosubr */
- 14, /* bosubi */
- 10, /* bosubr_u */
- 14, /* bosubi_u */
- 10, /* bxsubr */
- 14, /* bxsubi */
- 10, /* bxsubr_u */
- 14, /* bxsubi_u */
- 2, /* jmpr */
- 18, /* jmpi */
- 2, /* callr */
- 18, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 40, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 6, /* addr_f */
- 26, /* addi_f */
- 8, /* subr_f */
- 26, /* subi_f */
- 28, /* rsbi_f */
- 6, /* mulr_f */
- 26, /* muli_f */
- 8, /* divr_f */
- 26, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 16, /* ltr_f */
- 36, /* lti_f */
- 16, /* ler_f */
- 36, /* lei_f */
- 16, /* eqr_f */
- 36, /* eqi_f */
- 16, /* ger_f */
- 36, /* gei_f */
- 16, /* gtr_f */
- 36, /* gti_f */
- 16, /* ner_f */
- 36, /* nei_f */
- 16, /* unltr_f */
- 36, /* unlti_f */
- 16, /* unler_f */
- 36, /* unlei_f */
- 20, /* uneqr_f */
- 40, /* uneqi_f */
- 16, /* unger_f */
- 36, /* ungei_f */
- 16, /* ungtr_f */
- 36, /* ungti_f */
- 20, /* ltgtr_f */
- 40, /* ltgti_f */
- 16, /* ordr_f */
- 36, /* ordi_f */
- 16, /* unordr_f */
- 36, /* unordi_f */
- 4, /* truncr_f_i */
- 4, /* truncr_f_l */
- 4, /* extr_f */
- 4, /* extr_d_f */
- 2, /* movr_f */
- 20, /* movi_f */
- 4, /* ldr_f */
- 16, /* ldi_f */
- 12, /* ldxr_f */
- 24, /* ldxi_f */
- 4, /* str_f */
- 16, /* sti_f */
- 12, /* stxr_f */
- 24, /* stxi_f */
- 10, /* bltr_f */
- 30, /* blti_f */
- 10, /* bler_f */
- 30, /* blei_f */
- 10, /* beqr_f */
- 30, /* beqi_f */
- 10, /* bger_f */
- 30, /* bgei_f */
- 10, /* bgtr_f */
- 30, /* bgti_f */
- 10, /* bner_f */
- 30, /* bnei_f */
- 10, /* bunltr_f */
- 30, /* bunlti_f */
- 10, /* bunler_f */
- 30, /* bunlei_f */
- 18, /* buneqr_f */
- 38, /* buneqi_f */
- 10, /* bunger_f */
- 30, /* bungei_f */
- 10, /* bungtr_f */
- 30, /* bungti_f */
- 18, /* bltgtr_f */
- 38, /* bltgti_f */
- 10, /* bordr_f */
- 30, /* bordi_f */
- 10, /* bunordr_f */
- 30, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 6, /* addr_d */
- 26, /* addi_d */
- 8, /* subr_d */
- 26, /* subi_d */
- 28, /* rsbi_d */
- 6, /* mulr_d */
- 26, /* muli_d */
- 8, /* divr_d */
- 26, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 16, /* ltr_d */
- 36, /* lti_d */
- 16, /* ler_d */
- 36, /* lei_d */
- 16, /* eqr_d */
- 36, /* eqi_d */
- 16, /* ger_d */
- 36, /* gei_d */
- 16, /* gtr_d */
- 36, /* gti_d */
- 16, /* ner_d */
- 36, /* nei_d */
- 16, /* unltr_d */
- 36, /* unlti_d */
- 16, /* unler_d */
- 36, /* unlei_d */
- 20, /* uneqr_d */
- 40, /* uneqi_d */
- 16, /* unger_d */
- 36, /* ungei_d */
- 16, /* ungtr_d */
- 36, /* ungti_d */
- 20, /* ltgtr_d */
- 40, /* ltgti_d */
- 16, /* ordr_d */
- 36, /* ordi_d */
- 16, /* unordr_d */
- 36, /* unordi_d */
- 4, /* truncr_d_i */
- 4, /* truncr_d_l */
- 4, /* extr_d */
- 4, /* extr_f_d */
- 2, /* movr_d */
- 24, /* movi_d */
- 4, /* ldr_d */
- 16, /* ldi_d */
- 12, /* ldxr_d */
- 24, /* ldxi_d */
- 4, /* str_d */
- 16, /* sti_d */
- 12, /* stxr_d */
- 24, /* stxi_d */
- 10, /* bltr_d */
- 30, /* blti_d */
- 10, /* bler_d */
- 30, /* blei_d */
- 10, /* beqr_d */
- 34, /* beqi_d */
- 10, /* bger_d */
- 30, /* bgei_d */
- 10, /* bgtr_d */
- 30, /* bgti_d */
- 10, /* bner_d */
- 30, /* bnei_d */
- 10, /* bunltr_d */
- 30, /* bunlti_d */
- 10, /* bunler_d */
- 30, /* bunlei_d */
- 18, /* buneqr_d */
- 38, /* buneqi_d */
- 10, /* bunger_d */
- 30, /* bungei_d */
- 10, /* bungtr_d */
- 30, /* bungti_d */
- 18, /* bltgtr_d */
- 38, /* bltgti_d */
- 10, /* bordr_d */
- 30, /* bordi_d */
- 10, /* bunordr_d */
- 30, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __WORDSIZE */
-
-#if __WORDSIZE == 64
-#define JIT_INSTR_MAX 104
- 0, /* data */
- 0, /* live */
- 6, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 2, /* label */
- 42, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 44, /* va_start */
- 104, /* va_arg */
- 100, /* va_arg_d */
- 0, /* va_end */
- 8, /* addr */
- 24, /* addi */
- 8, /* addcr */
- 20, /* addci */
- 8, /* addxr */
- 12, /* addxi */
- 12, /* subr */
- 24, /* subi */
- 12, /* subcr */
- 20, /* subci */
- 12, /* subxr */
- 12, /* subxi */
- 28, /* rsbi */
- 8, /* mulr */
- 24, /* muli */
- 60, /* qmulr */
- 68, /* qmuli */
- 16, /* qmulr_u */
- 32, /* qmuli_u */
- 12, /* divr */
- 28, /* divi */
- 16, /* divr_u */
- 32, /* divi_u */
- 16, /* qdivr */
- 20, /* qdivi */
- 20, /* qdivr_u */
- 24, /* qdivi_u */
- 12, /* remr */
- 28, /* remi */
- 16, /* remr_u */
- 32, /* remi_u */
- 8, /* andr */
- 20, /* andi */
- 8, /* orr */
- 20, /* ori */
- 8, /* xorr */
- 24, /* xori */
- 6, /* lshr */
- 10, /* lshi */
- 6, /* rshr */
- 10, /* rshi */
- 6, /* rshr_u */
- 10, /* rshi_u */
- 4, /* negr */
- 12, /* comr */
- 20, /* ltr */
- 24, /* lti */
- 20, /* ltr_u */
- 24, /* lti_u */
- 20, /* ler */
- 24, /* lei */
- 20, /* ler_u */
- 24, /* lei_u */
- 20, /* eqr */
- 24, /* eqi */
- 20, /* ger */
- 24, /* gei */
- 20, /* ger_u */
- 24, /* gei_u */
- 20, /* gtr */
- 24, /* gti */
- 20, /* gtr_u */
- 24, /* gti_u */
- 20, /* ner */
- 24, /* nei */
- 4, /* movr */
- 16, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 4, /* extr_i */
- 4, /* extr_ui */
- 4, /* htonr_us */
- 4, /* htonr_ui */
- 4, /* htonr_ul */
- 6, /* ldr_c */
- 18, /* ldi_c */
- 6, /* ldr_uc */
- 18, /* ldi_uc */
- 6, /* ldr_s */
- 18, /* ldi_s */
- 6, /* ldr_us */
- 18, /* ldi_us */
- 6, /* ldr_i */
- 18, /* ldi_i */
- 6, /* ldr_ui */
- 18, /* ldi_ui */
- 6, /* ldr_l */
- 18, /* ldi_l */
- 14, /* ldxr_c */
- 26, /* ldxi_c */
- 14, /* ldxr_uc */
- 26, /* ldxi_uc */
- 14, /* ldxr_s */
- 26, /* ldxi_s */
- 14, /* ldxr_us */
- 26, /* ldxi_us */
- 14, /* ldxr_i */
- 26, /* ldxi_i */
- 14, /* ldxr_ui */
- 26, /* ldxi_ui */
- 14, /* ldxr_l */
- 26, /* ldxi_l */
- 4, /* str_c */
- 16, /* sti_c */
- 4, /* str_s */
- 16, /* sti_s */
- 4, /* str_i */
- 16, /* sti_i */
- 6, /* str_l */
- 18, /* sti_l */
- 12, /* stxr_c */
- 28, /* stxi_c */
- 12, /* stxr_s */
- 28, /* stxi_s */
- 12, /* stxr_i */
- 28, /* stxi_i */
- 14, /* stxr_l */
- 30, /* stxi_l */
- 10, /* bltr */
- 14, /* blti */
- 10, /* bltr_u */
- 14, /* blti_u */
- 10, /* bler */
- 14, /* blei */
- 10, /* bler_u */
- 14, /* blei_u */
- 10, /* beqr */
- 26, /* beqi */
- 10, /* bger */
- 14, /* bgei */
- 10, /* bger_u */
- 14, /* bgei_u */
- 10, /* bgtr */
- 14, /* bgti */
- 10, /* bgtr_u */
- 14, /* bgti_u */
- 10, /* bner */
- 26, /* bnei */
- 18, /* bmsr */
- 18, /* bmsi */
- 18, /* bmcr */
- 18, /* bmci */
- 10, /* boaddr */
- 14, /* boaddi */
- 10, /* boaddr_u */
- 14, /* boaddi_u */
- 10, /* bxaddr */
- 14, /* bxaddi */
- 10, /* bxaddr_u */
- 14, /* bxaddi_u */
- 10, /* bosubr */
- 14, /* bosubi */
- 10, /* bosubr_u */
- 14, /* bosubi_u */
- 10, /* bxsubr */
- 14, /* bxsubi */
- 10, /* bxsubr_u */
- 14, /* bxsubi_u */
- 2, /* jmpr */
- 18, /* jmpi */
- 2, /* callr */
- 18, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 40, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 6, /* addr_f */
- 26, /* addi_f */
- 8, /* subr_f */
- 26, /* subi_f */
- 28, /* rsbi_f */
- 6, /* mulr_f */
- 26, /* muli_f */
- 8, /* divr_f */
- 26, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 16, /* ltr_f */
- 36, /* lti_f */
- 16, /* ler_f */
- 36, /* lei_f */
- 16, /* eqr_f */
- 36, /* eqi_f */
- 16, /* ger_f */
- 36, /* gei_f */
- 16, /* gtr_f */
- 36, /* gti_f */
- 16, /* ner_f */
- 36, /* nei_f */
- 16, /* unltr_f */
- 36, /* unlti_f */
- 16, /* unler_f */
- 36, /* unlei_f */
- 20, /* uneqr_f */
- 40, /* uneqi_f */
- 16, /* unger_f */
- 36, /* ungei_f */
- 16, /* ungtr_f */
- 36, /* ungti_f */
- 20, /* ltgtr_f */
- 40, /* ltgti_f */
- 16, /* ordr_f */
- 36, /* ordi_f */
- 16, /* unordr_f */
- 36, /* unordi_f */
- 4, /* truncr_f_i */
- 4, /* truncr_f_l */
- 4, /* extr_f */
- 4, /* extr_d_f */
- 2, /* movr_f */
- 20, /* movi_f */
- 4, /* ldr_f */
- 16, /* ldi_f */
- 12, /* ldxr_f */
- 24, /* ldxi_f */
- 4, /* str_f */
- 16, /* sti_f */
- 12, /* stxr_f */
- 24, /* stxi_f */
- 10, /* bltr_f */
- 30, /* blti_f */
- 10, /* bler_f */
- 30, /* blei_f */
- 10, /* beqr_f */
- 30, /* beqi_f */
- 10, /* bger_f */
- 30, /* bgei_f */
- 10, /* bgtr_f */
- 30, /* bgti_f */
- 10, /* bner_f */
- 30, /* bnei_f */
- 10, /* bunltr_f */
- 30, /* bunlti_f */
- 10, /* bunler_f */
- 30, /* bunlei_f */
- 18, /* buneqr_f */
- 38, /* buneqi_f */
- 10, /* bunger_f */
- 30, /* bungei_f */
- 10, /* bungtr_f */
- 30, /* bungti_f */
- 18, /* bltgtr_f */
- 38, /* bltgti_f */
- 10, /* bordr_f */
- 30, /* bordi_f */
- 10, /* bunordr_f */
- 30, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 6, /* addr_d */
- 26, /* addi_d */
- 8, /* subr_d */
- 26, /* subi_d */
- 28, /* rsbi_d */
- 6, /* mulr_d */
- 26, /* muli_d */
- 8, /* divr_d */
- 26, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 16, /* ltr_d */
- 36, /* lti_d */
- 16, /* ler_d */
- 36, /* lei_d */
- 16, /* eqr_d */
- 36, /* eqi_d */
- 16, /* ger_d */
- 36, /* gei_d */
- 16, /* gtr_d */
- 36, /* gti_d */
- 16, /* ner_d */
- 36, /* nei_d */
- 16, /* unltr_d */
- 36, /* unlti_d */
- 16, /* unler_d */
- 36, /* unlei_d */
- 20, /* uneqr_d */
- 40, /* uneqi_d */
- 16, /* unger_d */
- 36, /* ungei_d */
- 16, /* ungtr_d */
- 36, /* ungti_d */
- 20, /* ltgtr_d */
- 40, /* ltgti_d */
- 16, /* ordr_d */
- 36, /* ordi_d */
- 16, /* unordr_d */
- 36, /* unordi_d */
- 4, /* truncr_d_i */
- 4, /* truncr_d_l */
- 4, /* extr_d */
- 4, /* extr_f_d */
- 2, /* movr_d */
- 24, /* movi_d */
- 4, /* ldr_d */
- 16, /* ldi_d */
- 12, /* ldxr_d */
- 24, /* ldxi_d */
- 4, /* str_d */
- 16, /* sti_d */
- 12, /* stxr_d */
- 24, /* stxi_d */
- 10, /* bltr_d */
- 30, /* blti_d */
- 10, /* bler_d */
- 30, /* blei_d */
- 10, /* beqr_d */
- 34, /* beqi_d */
- 10, /* bger_d */
- 30, /* bgei_d */
- 10, /* bgtr_d */
- 30, /* bgti_d */
- 10, /* bner_d */
- 30, /* bnei_d */
- 10, /* bunltr_d */
- 30, /* bunlti_d */
- 10, /* bunler_d */
- 30, /* bunlei_d */
- 18, /* buneqr_d */
- 38, /* buneqi_d */
- 10, /* bunger_d */
- 30, /* bungei_d */
- 10, /* bungtr_d */
- 30, /* bungti_d */
- 18, /* bltgtr_d */
- 38, /* bltgti_d */
- 10, /* bordr_d */
- 30, /* bordi_d */
- 10, /* bunordr_d */
- 30, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __WORDSIZE */
diff --git a/libguile/lightning/lib/jit_size.c b/libguile/lightning/lib/jit_size.c
deleted file mode 100644
index 50c8aca62..000000000
--- a/libguile/lightning/lib/jit_size.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2013-2018 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#define DEBUG 1
-#define DISASSEMBLER 0
-
-#include <lightning.h>
-#include <lightning/jit_private.h>
-
-/*
- * Initialization
- */
-static jit_int16_t _szs[jit_code_last_code] = {
-# if defined(__i386__) || defined(__x86_64__)
-# include "jit_x86-sz.c"
-# elif defined(__mips__)
-# include "jit_mips-sz.c"
-# elif defined(__arm__)
-# include "jit_arm-sz.c"
-# elif defined(__ppc__) || defined(__powerpc__)
-# include "jit_ppc-sz.c"
-# elif defined(__sparc__)
-# include "jit_sparc-sz.c"
-# elif defined(__ia64__)
-# include "jit_ia64-sz.c"
-# elif defined(__hppa__)
-# include "jit_hppa-sz.c"
-# elif defined(__aarch64__)
-# include "jit_aarch64-sz.c"
-# elif defined(__s390__) || defined(__s390x__)
-# include "jit_s390-sz.c"
-# elif defined(__alpha__)
-# include "jit_alpha-sz.c"
-# endif
-};
-
-/*
- * Implementation
- */
-void
-jit_init_size(void)
-{
-#if DEBUG
- jit_word_t offset;
-
- for (offset = 0; offset < jit_size(_szs); offset++)
- if (_szs[offset] != 0)
- return;
- /* Ensure data was collected */
- abort();
-#endif
-}
-
-jit_word_t
-jit_get_max_instr(void)
-{
- return (JIT_INSTR_MAX >= 144 ? JIT_INSTR_MAX : 144);
-}
-
-void
-jit_finish_size(void)
-{
-}
diff --git a/libguile/lightning/lib/jit_sparc-sz.c b/libguile/lightning/lib/jit_sparc-sz.c
deleted file mode 100644
index ac683b660..000000000
--- a/libguile/lightning/lib/jit_sparc-sz.c
+++ /dev/null
@@ -1,803 +0,0 @@
-#if __WORDSIZE == 32
-#define JIT_INSTR_MAX 44
- 0, /* data */
- 0, /* live */
- 0, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 0, /* label */
- 36, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 4, /* va_start */
- 8, /* va_arg */
- 8, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 12, /* addi */
- 4, /* addcr */
- 12, /* addci */
- 4, /* addxr */
- 4, /* addxi */
- 4, /* subr */
- 12, /* subi */
- 4, /* subcr */
- 12, /* subci */
- 4, /* subxr */
- 4, /* subxi */
- 16, /* rsbi */
- 4, /* mulr */
- 12, /* muli */
- 8, /* qmulr */
- 16, /* qmuli */
- 8, /* qmulr_u */
- 16, /* qmuli_u */
- 12, /* divr */
- 20, /* divi */
- 8, /* divr_u */
- 16, /* divi_u */
- 28, /* qdivr */
- 24, /* qdivi */
- 24, /* qdivr_u */
- 20, /* qdivi_u */
- 20, /* remr */
- 28, /* remi */
- 16, /* remr_u */
- 24, /* remi_u */
- 4, /* andr */
- 12, /* andi */
- 4, /* orr */
- 12, /* ori */
- 4, /* xorr */
- 12, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 16, /* ltr */
- 16, /* lti */
- 16, /* ltr_u */
- 16, /* lti_u */
- 16, /* ler */
- 16, /* lei */
- 16, /* ler_u */
- 16, /* lei_u */
- 16, /* eqr */
- 16, /* eqi */
- 16, /* ger */
- 16, /* gei */
- 16, /* ger_u */
- 16, /* gei_u */
- 16, /* gtr */
- 16, /* gti */
- 16, /* gtr_u */
- 16, /* gti_u */
- 16, /* ner */
- 16, /* nei */
- 4, /* movr */
- 8, /* movi */
- 8, /* extr_c */
- 4, /* extr_uc */
- 8, /* extr_s */
- 8, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 8, /* htonr_us */
- 4, /* htonr_ui */
- 0, /* htonr_ul */
- 4, /* ldr_c */
- 12, /* ldi_c */
- 4, /* ldr_uc */
- 12, /* ldi_uc */
- 4, /* ldr_s */
- 12, /* ldi_s */
- 4, /* ldr_us */
- 12, /* ldi_us */
- 4, /* ldr_i */
- 12, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 4, /* ldxr_c */
- 8, /* ldxi_c */
- 4, /* ldxr_uc */
- 8, /* ldxi_uc */
- 4, /* ldxr_s */
- 8, /* ldxi_s */
- 4, /* ldxr_us */
- 8, /* ldxi_us */
- 4, /* ldxr_i */
- 8, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 4, /* str_c */
- 12, /* sti_c */
- 4, /* str_s */
- 12, /* sti_s */
- 4, /* str_i */
- 12, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 4, /* stxr_c */
- 8, /* stxi_c */
- 4, /* stxr_s */
- 8, /* stxi_s */
- 4, /* stxr_i */
- 8, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 12, /* bltr */
- 12, /* blti */
- 12, /* bltr_u */
- 12, /* blti_u */
- 12, /* bler */
- 12, /* blei */
- 12, /* bler_u */
- 12, /* blei_u */
- 12, /* beqr */
- 20, /* beqi */
- 12, /* bger */
- 12, /* bgei */
- 12, /* bger_u */
- 12, /* bgei_u */
- 12, /* bgtr */
- 12, /* bgti */
- 12, /* bgtr_u */
- 12, /* bgti_u */
- 12, /* bner */
- 20, /* bnei */
- 12, /* bmsr */
- 12, /* bmsi */
- 12, /* bmcr */
- 12, /* bmci */
- 12, /* boaddr */
- 12, /* boaddi */
- 12, /* boaddr_u */
- 12, /* boaddi_u */
- 12, /* bxaddr */
- 12, /* bxaddi */
- 12, /* bxaddr_u */
- 12, /* bxaddi_u */
- 12, /* bosubr */
- 12, /* bosubi */
- 12, /* bosubr_u */
- 12, /* bosubi_u */
- 12, /* bxsubr */
- 12, /* bxsubi */
- 12, /* bxsubr_u */
- 12, /* bxsubi_u */
- 8, /* jmpr */
- 16, /* jmpi */
- 8, /* callr */
- 16, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 44, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 4, /* addr_f */
- 16, /* addi_f */
- 4, /* subr_f */
- 16, /* subi_f */
- 16, /* rsbi_f */
- 4, /* mulr_f */
- 16, /* muli_f */
- 4, /* divr_f */
- 16, /* divi_f */
- 4, /* negr_f */
- 4, /* absr_f */
- 4, /* sqrtr_f */
- 16, /* ltr_f */
- 32, /* lti_f */
- 16, /* ler_f */
- 32, /* lei_f */
- 16, /* eqr_f */
- 32, /* eqi_f */
- 16, /* ger_f */
- 32, /* gei_f */
- 16, /* gtr_f */
- 32, /* gti_f */
- 16, /* ner_f */
- 32, /* nei_f */
- 16, /* unltr_f */
- 32, /* unlti_f */
- 16, /* unler_f */
- 32, /* unlei_f */
- 16, /* uneqr_f */
- 32, /* uneqi_f */
- 16, /* unger_f */
- 32, /* ungei_f */
- 16, /* ungtr_f */
- 32, /* ungti_f */
- 16, /* ltgtr_f */
- 32, /* ltgti_f */
- 16, /* ordr_f */
- 32, /* ordi_f */
- 16, /* unordr_f */
- 32, /* unordi_f */
- 12, /* truncr_f_i */
- 0, /* truncr_f_l */
- 12, /* extr_f */
- 4, /* extr_d_f */
- 4, /* movr_f */
- 16, /* movi_f */
- 4, /* ldr_f */
- 12, /* ldi_f */
- 4, /* ldxr_f */
- 8, /* ldxi_f */
- 4, /* str_f */
- 12, /* sti_f */
- 4, /* stxr_f */
- 8, /* stxi_f */
- 12, /* bltr_f */
- 24, /* blti_f */
- 12, /* bler_f */
- 24, /* blei_f */
- 12, /* beqr_f */
- 24, /* beqi_f */
- 12, /* bger_f */
- 24, /* bgei_f */
- 12, /* bgtr_f */
- 24, /* bgti_f */
- 12, /* bner_f */
- 28, /* bnei_f */
- 12, /* bunltr_f */
- 28, /* bunlti_f */
- 12, /* bunler_f */
- 28, /* bunlei_f */
- 12, /* buneqr_f */
- 28, /* buneqi_f */
- 12, /* bunger_f */
- 28, /* bungei_f */
- 12, /* bungtr_f */
- 28, /* bungti_f */
- 12, /* bltgtr_f */
- 24, /* bltgti_f */
- 12, /* bordr_f */
- 24, /* bordi_f */
- 12, /* bunordr_f */
- 28, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 24, /* addi_d */
- 4, /* subr_d */
- 24, /* subi_d */
- 24, /* rsbi_d */
- 4, /* mulr_d */
- 24, /* muli_d */
- 4, /* divr_d */
- 24, /* divi_d */
- 8, /* negr_d */
- 8, /* absr_d */
- 4, /* sqrtr_d */
- 16, /* ltr_d */
- 40, /* lti_d */
- 16, /* ler_d */
- 40, /* lei_d */
- 16, /* eqr_d */
- 40, /* eqi_d */
- 16, /* ger_d */
- 40, /* gei_d */
- 16, /* gtr_d */
- 40, /* gti_d */
- 16, /* ner_d */
- 40, /* nei_d */
- 16, /* unltr_d */
- 40, /* unlti_d */
- 16, /* unler_d */
- 40, /* unlei_d */
- 16, /* uneqr_d */
- 40, /* uneqi_d */
- 16, /* unger_d */
- 40, /* ungei_d */
- 16, /* ungtr_d */
- 40, /* ungti_d */
- 16, /* ltgtr_d */
- 40, /* ltgti_d */
- 16, /* ordr_d */
- 40, /* ordi_d */
- 16, /* unordr_d */
- 40, /* unordi_d */
- 12, /* truncr_d_i */
- 0, /* truncr_d_l */
- 16, /* extr_d */
- 4, /* extr_f_d */
- 8, /* movr_d */
- 24, /* movi_d */
- 4, /* ldr_d */
- 12, /* ldi_d */
- 4, /* ldxr_d */
- 8, /* ldxi_d */
- 4, /* str_d */
- 12, /* sti_d */
- 4, /* stxr_d */
- 8, /* stxi_d */
- 12, /* bltr_d */
- 32, /* blti_d */
- 12, /* bler_d */
- 32, /* blei_d */
- 12, /* beqr_d */
- 32, /* beqi_d */
- 12, /* bger_d */
- 32, /* bgei_d */
- 12, /* bgtr_d */
- 32, /* bgti_d */
- 12, /* bner_d */
- 36, /* bnei_d */
- 12, /* bunltr_d */
- 36, /* bunlti_d */
- 12, /* bunler_d */
- 36, /* bunlei_d */
- 12, /* buneqr_d */
- 36, /* buneqi_d */
- 12, /* bunger_d */
- 36, /* bungei_d */
- 12, /* bungtr_d */
- 36, /* bungti_d */
- 12, /* bltgtr_d */
- 32, /* bltgti_d */
- 12, /* bordr_d */
- 32, /* bordi_d */
- 12, /* bunordr_d */
- 36, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __WORDSIZE */
-
-#if __WORDSIZE == 64
-#define JIT_INSTR_MAX 64
- 0, /* data */
- 0, /* live */
- 4, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 4, /* label */
- 36, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 4, /* va_start */
- 8, /* va_arg */
- 8, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 28, /* addi */
- 24, /* addcr */
- 48, /* addci */
- 52, /* addxr */
- 52, /* addxi */
- 4, /* subr */
- 28, /* subi */
- 24, /* subcr */
- 48, /* subci */
- 52, /* subxr */
- 52, /* subxi */
- 32, /* rsbi */
- 4, /* mulr */
- 28, /* muli */
- 48, /* qmulr */
- 64, /* qmuli */
- 48, /* qmulr_u */
- 64, /* qmuli_u */
- 4, /* divr */
- 28, /* divi */
- 4, /* divr_u */
- 28, /* divi_u */
- 20, /* qdivr */
- 16, /* qdivi */
- 20, /* qdivr_u */
- 16, /* qdivi_u */
- 12, /* remr */
- 36, /* remi */
- 12, /* remr_u */
- 36, /* remi_u */
- 4, /* andr */
- 28, /* andi */
- 4, /* orr */
- 28, /* ori */
- 4, /* xorr */
- 28, /* xori */
- 4, /* lshr */
- 4, /* lshi */
- 4, /* rshr */
- 4, /* rshi */
- 4, /* rshr_u */
- 4, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 16, /* ltr */
- 16, /* lti */
- 16, /* ltr_u */
- 16, /* lti_u */
- 16, /* ler */
- 16, /* lei */
- 16, /* ler_u */
- 16, /* lei_u */
- 16, /* eqr */
- 16, /* eqi */
- 16, /* ger */
- 16, /* gei */
- 16, /* ger_u */
- 16, /* gei_u */
- 16, /* gtr */
- 16, /* gti */
- 16, /* gtr_u */
- 16, /* gti_u */
- 16, /* ner */
- 16, /* nei */
- 4, /* movr */
- 24, /* movi */
- 8, /* extr_c */
- 4, /* extr_uc */
- 8, /* extr_s */
- 8, /* extr_us */
- 8, /* extr_i */
- 8, /* extr_ui */
- 8, /* htonr_us */
- 8, /* htonr_ui */
- 4, /* htonr_ul */
- 4, /* ldr_c */
- 28, /* ldi_c */
- 4, /* ldr_uc */
- 28, /* ldi_uc */
- 4, /* ldr_s */
- 28, /* ldi_s */
- 4, /* ldr_us */
- 28, /* ldi_us */
- 4, /* ldr_i */
- 28, /* ldi_i */
- 4, /* ldr_ui */
- 28, /* ldi_ui */
- 4, /* ldr_l */
- 28, /* ldi_l */
- 4, /* ldxr_c */
- 24, /* ldxi_c */
- 4, /* ldxr_uc */
- 24, /* ldxi_uc */
- 4, /* ldxr_s */
- 24, /* ldxi_s */
- 4, /* ldxr_us */
- 24, /* ldxi_us */
- 4, /* ldxr_i */
- 24, /* ldxi_i */
- 4, /* ldxr_ui */
- 24, /* ldxi_ui */
- 4, /* ldxr_l */
- 24, /* ldxi_l */
- 4, /* str_c */
- 28, /* sti_c */
- 4, /* str_s */
- 28, /* sti_s */
- 4, /* str_i */
- 28, /* sti_i */
- 4, /* str_l */
- 28, /* sti_l */
- 4, /* stxr_c */
- 24, /* stxi_c */
- 4, /* stxr_s */
- 24, /* stxi_s */
- 4, /* stxr_i */
- 24, /* stxi_i */
- 4, /* stxr_l */
- 24, /* stxi_l */
- 12, /* bltr */
- 12, /* blti */
- 12, /* bltr_u */
- 12, /* blti_u */
- 12, /* bler */
- 12, /* blei */
- 12, /* bler_u */
- 12, /* blei_u */
- 12, /* beqr */
- 36, /* beqi */
- 12, /* bger */
- 12, /* bgei */
- 12, /* bger_u */
- 12, /* bgei_u */
- 12, /* bgtr */
- 12, /* bgti */
- 12, /* bgtr_u */
- 12, /* bgti_u */
- 12, /* bner */
- 36, /* bnei */
- 12, /* bmsr */
- 12, /* bmsi */
- 12, /* bmcr */
- 12, /* bmci */
- 12, /* boaddr */
- 12, /* boaddi */
- 12, /* boaddr_u */
- 12, /* boaddi_u */
- 12, /* bxaddr */
- 12, /* bxaddi */
- 12, /* bxaddr_u */
- 12, /* bxaddi_u */
- 12, /* bosubr */
- 12, /* bosubi */
- 12, /* bosubr_u */
- 12, /* bosubi_u */
- 12, /* bxsubr */
- 12, /* bxsubi */
- 12, /* bxsubr_u */
- 12, /* bxsubi_u */
- 8, /* jmpr */
- 32, /* jmpi */
- 8, /* callr */
- 32, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 44, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 16, /* addr_f */
- 40, /* addi_f */
- 24, /* subr_f */
- 40, /* subi_f */
- 40, /* rsbi_f */
- 16, /* mulr_f */
- 40, /* muli_f */
- 16, /* divr_f */
- 40, /* divi_f */
- 12, /* negr_f */
- 12, /* absr_f */
- 12, /* sqrtr_f */
- 24, /* ltr_f */
- 48, /* lti_f */
- 24, /* ler_f */
- 48, /* lei_f */
- 24, /* eqr_f */
- 48, /* eqi_f */
- 24, /* ger_f */
- 48, /* gei_f */
- 24, /* gtr_f */
- 48, /* gti_f */
- 24, /* ner_f */
- 48, /* nei_f */
- 24, /* unltr_f */
- 48, /* unlti_f */
- 24, /* unler_f */
- 48, /* unlei_f */
- 24, /* uneqr_f */
- 48, /* uneqi_f */
- 24, /* unger_f */
- 48, /* ungei_f */
- 24, /* ungtr_f */
- 48, /* ungti_f */
- 24, /* ltgtr_f */
- 48, /* ltgti_f */
- 24, /* ordr_f */
- 48, /* ordi_f */
- 24, /* unordr_f */
- 48, /* unordi_f */
- 16, /* truncr_f_i */
- 16, /* truncr_f_l */
- 20, /* extr_f */
- 12, /* extr_d_f */
- 16, /* movr_f */
- 32, /* movi_f */
- 8, /* ldr_f */
- 32, /* ldi_f */
- 8, /* ldxr_f */
- 28, /* ldxi_f */
- 8, /* str_f */
- 32, /* sti_f */
- 8, /* stxr_f */
- 28, /* stxi_f */
- 20, /* bltr_f */
- 44, /* blti_f */
- 20, /* bler_f */
- 44, /* blei_f */
- 28, /* beqr_f */
- 60, /* beqi_f */
- 20, /* bger_f */
- 44, /* bgei_f */
- 20, /* bgtr_f */
- 44, /* bgti_f */
- 20, /* bner_f */
- 44, /* bnei_f */
- 20, /* bunltr_f */
- 44, /* bunlti_f */
- 20, /* bunler_f */
- 44, /* bunlei_f */
- 20, /* buneqr_f */
- 44, /* buneqi_f */
- 20, /* bunger_f */
- 44, /* bungei_f */
- 20, /* bungtr_f */
- 44, /* bungti_f */
- 20, /* bltgtr_f */
- 44, /* bltgti_f */
- 20, /* bordr_f */
- 44, /* bordi_f */
- 20, /* bunordr_f */
- 44, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 4, /* addr_d */
- 32, /* addi_d */
- 4, /* subr_d */
- 32, /* subi_d */
- 32, /* rsbi_d */
- 4, /* mulr_d */
- 32, /* muli_d */
- 4, /* divr_d */
- 32, /* divi_d */
- 4, /* negr_d */
- 4, /* absr_d */
- 4, /* sqrtr_d */
- 16, /* ltr_d */
- 48, /* lti_d */
- 16, /* ler_d */
- 48, /* lei_d */
- 16, /* eqr_d */
- 48, /* eqi_d */
- 16, /* ger_d */
- 48, /* gei_d */
- 16, /* gtr_d */
- 48, /* gti_d */
- 16, /* ner_d */
- 48, /* nei_d */
- 16, /* unltr_d */
- 48, /* unlti_d */
- 16, /* unler_d */
- 48, /* unlei_d */
- 16, /* uneqr_d */
- 48, /* uneqi_d */
- 16, /* unger_d */
- 48, /* ungei_d */
- 16, /* ungtr_d */
- 48, /* ungti_d */
- 16, /* ltgtr_d */
- 48, /* ltgti_d */
- 16, /* ordr_d */
- 48, /* ordi_d */
- 16, /* unordr_d */
- 48, /* unordi_d */
- 16, /* truncr_d_i */
- 12, /* truncr_d_l */
- 12, /* extr_d */
- 8, /* extr_f_d */
- 4, /* movr_d */
- 32, /* movi_d */
- 4, /* ldr_d */
- 28, /* ldi_d */
- 4, /* ldxr_d */
- 24, /* ldxi_d */
- 4, /* str_d */
- 28, /* sti_d */
- 4, /* stxr_d */
- 24, /* stxi_d */
- 12, /* bltr_d */
- 40, /* blti_d */
- 12, /* bler_d */
- 40, /* blei_d */
- 12, /* beqr_d */
- 40, /* beqi_d */
- 12, /* bger_d */
- 40, /* bgei_d */
- 12, /* bgtr_d */
- 40, /* bgti_d */
- 12, /* bner_d */
- 44, /* bnei_d */
- 12, /* bunltr_d */
- 44, /* bunlti_d */
- 12, /* bunler_d */
- 44, /* bunlei_d */
- 12, /* buneqr_d */
- 44, /* buneqi_d */
- 12, /* bunger_d */
- 44, /* bungei_d */
- 12, /* bungtr_d */
- 44, /* bungti_d */
- 12, /* bltgtr_d */
- 40, /* bltgti_d */
- 12, /* bordr_d */
- 40, /* bordi_d */
- 12, /* bunordr_d */
- 44, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __WORDSIZE */
diff --git a/libguile/lightning/lib/jit_x86-cpu.c b/libguile/lightning/lib/jit_x86-cpu.c
deleted file mode 100644
index 18ace1ff8..000000000
--- a/libguile/lightning/lib/jit_x86-cpu.c
+++ /dev/null
@@ -1,3861 +0,0 @@
-/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-/* avoid using it due to partial stalls */
-#define USE_INC_DEC 0
-
-#if PROTO
-# if __X32 || __X64_32
-# define WIDE 0
-# define ldi(u, v) ldi_i(u, v)
-# define ldr(u, v) ldr_i(u, v)
-# define ldxr(u, v, w) ldxr_i(u, v, w)
-# define ldxi(u, v, w) ldxi_i(u, v, w)
-# define sti(u, v) sti_i(u, v)
-# define stxi(u, v, w) stxi_i(u, v, w)
-# define can_sign_extend_int_p(im) 1
-# define can_zero_extend_int_p(im) 1
-# define fits_uint32_p(im) 1
-# else
-# define WIDE 1
-# define ldi(u, v) ldi_l(u, v)
-# define ldr(u, v) ldr_l(u, v)
-# define ldxr(u, v, w) ldxr_l(u, v, w)
-# define ldxi(u, v, w) ldxi_l(u, v, w)
-# define sti(u, v) sti_l(u, v)
-# define stxi(u, v, w) stxi_l(u, v, w)
-# define can_sign_extend_int_p(im) \
- (((im) >= 0 && (long long)(im) <= 0x7fffffffLL) || \
- ((im) < 0 && (long long)(im) > -0x80000000LL))
-# define can_zero_extend_int_p(im) \
- ((im) >= 0 && (im) < 0x80000000LL)
-# define fits_uint32_p(im) (((im) & 0xffffffff00000000LL) == 0)
-# endif
-# if __X32 || __CYGWIN__ || __X64_32
-# define reg8_p(rn) \
- ((rn) >= _RAX_REGNO && (rn) <= _RBX_REGNO)
-# else
-# define reg8_p(rn) 1
-# endif
-# define _RAX_REGNO 0
-# define _RCX_REGNO 1
-# define _RDX_REGNO 2
-# define _RBX_REGNO 3
-# define _RSP_REGNO 4
-# define _RBP_REGNO 5
-# define _RSI_REGNO 6
-# define _RDI_REGNO 7
-# define _R8_REGNO 8
-# define _R9_REGNO 9
-# define _R10_REGNO 10
-# define _R11_REGNO 11
-# define _R12_REGNO 12
-# define _R13_REGNO 13
-# define _R14_REGNO 14
-# define _R15_REGNO 15
-# define r7(reg) ((reg) & 7)
-# define r8(reg) ((reg) & 15)
-# define _SCL1 0x00
-# define _SCL2 0x01
-# define _SCL4 0x02
-# define _SCL8 0x03
-# define X86_ADD 0
-# define X86_OR 1 << 3
-# define X86_ADC 2 << 3
-# define X86_SBB 3 << 3
-# define X86_AND 4 << 3
-# define X86_SUB 5 << 3
-# define X86_XOR 6 << 3
-# define X86_CMP 7 << 3
-# define X86_ROL 0
-# define X86_ROR 1
-# define X86_RCL 2
-# define X86_RCR 3
-# define X86_SHL 4
-# define X86_SHR 5
-# define X86_SAR 7
-# define X86_NOT 2
-# define X86_NEG 3
-# define X86_MUL 4
-# define X86_IMUL 5
-# define X86_DIV 6
-# define X86_IDIV 7
-# define X86_CC_O 0x0
-# define X86_CC_NO 0x1
-# define X86_CC_NAE 0x2
-# define X86_CC_B 0x2
-# define X86_CC_C 0x2
-# define X86_CC_AE 0x3
-# define X86_CC_NB 0x3
-# define X86_CC_NC 0x3
-# define X86_CC_E 0x4
-# define X86_CC_Z 0x4
-# define X86_CC_NE 0x5
-# define X86_CC_NZ 0x5
-# define X86_CC_BE 0x6
-# define X86_CC_NA 0x6
-# define X86_CC_A 0x7
-# define X86_CC_NBE 0x7
-# define X86_CC_S 0x8
-# define X86_CC_NS 0x9
-# define X86_CC_P 0xa
-# define X86_CC_PE 0xa
-# define X86_CC_NP 0xb
-# define X86_CC_PO 0xb
-# define X86_CC_L 0xc
-# define X86_CC_NGE 0xc
-# define X86_CC_GE 0xd
-# define X86_CC_NL 0xd
-# define X86_CC_LE 0xe
-# define X86_CC_NG 0xe
-# define X86_CC_G 0xf
-# define X86_CC_NLE 0xf
-# define mrm(md, r, m) *_jit->pc.uc++ = (md<<6) | (r<<3) | m
-# define sib(sc, i, b) *_jit->pc.uc++ = (sc<<6) | (i<<3) | b
-# define ic(c) *_jit->pc.uc++ = c
-# define is(s) *_jit->pc.us++ = s
-# define ii(i) *_jit->pc.ui++ = i
-# if __X64 && !__X64_32
-# define il(l) *_jit->pc.ul++ = l
-# else
-# define il(l) ii(l)
-# endif
-# define patch_abs(instr, label) \
- *(jit_word_t *)(instr - sizeof(jit_word_t)) = label
-# define patch_rel(instr, label) \
- *(jit_int32_t *)(instr - 4) = label - instr
-# define patch_rel_char(instr, label) \
- *(jit_int8_t *)(instr - 1) = label - instr
-# define rex(l, w, r, x, b) _rex(_jit, l, w, r, x, b)
-static void
-_rex(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
-# define rx(rd, md, rb, ri, ms) _rx(_jit, rd, md, rb, ri, ms)
-static void
-_rx(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
-# define nop(n) _nop(_jit, n)
-static void _nop(jit_state_t*, jit_int32_t);
-# define emms() is(0x770f)
-# define lea(md, rb, ri, ms, rd) _lea(_jit, md, rb, ri, ms, rd)
-static void
-_lea(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
-# define pushr(r0) _pushr(_jit, r0)
-static void _pushr(jit_state_t*, jit_int32_t) maybe_unused;
-# define popr(r0) _popr(_jit, r0)
-static void _popr(jit_state_t*, jit_int32_t) maybe_unused;
-# define xchgr(r0, r1) _xchgr(_jit, r0, r1)
-static void _xchgr(jit_state_t*, jit_int32_t, jit_int32_t);
-# define testr(r0, r1) _testr(_jit, r0, r1)
-static void _testr(jit_state_t*, jit_int32_t, jit_int32_t);
-# define testi(r0, i0) _testi(_jit, r0, i0)
-static void _testi(jit_state_t*, jit_int32_t, jit_word_t);
-# define cc(code, r0) _cc(_jit, code, r0)
-static void _cc(jit_state_t*, jit_int32_t, jit_int32_t);
-# define icmpr(r0, r1) alur(X86_CMP, r0, r1)
-# define alur(code, r0, r1) _alur(_jit, code, r0, r1)
-static void _alur(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define icmpi(r0, i0) alui(X86_CMP, r0, i0)
-# define alui(code, r0, i0) _alui(_jit, code, r0, i0)
-static void _alui(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define iaddr(r0, r1) alur(X86_ADD, r0, r1)
-# define save(r0) _save(_jit, r0)
-static void _save(jit_state_t*, jit_int32_t);
-# define load(r0) _load(_jit, r0)
-static void _load(jit_state_t*, jit_int32_t);
-# define addr(r0, r1, r2) _addr(_jit, r0, r1, r2)
-static void _addr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define iaddi(r0, i0) alui(X86_ADD, r0, i0)
-# define addi(r0, r1, i0) _addi(_jit, r0, r1, i0)
-static void _addi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-#define addcr(r0, r1, r2) _addcr(_jit, r0, r1, r2)
-static void _addcr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-#define addci(r0, r1, i0) _addci(_jit, r0, r1, i0)
-static void _addci(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define iaddxr(r0, r1) alur(X86_ADC, r0, r1)
-# define addxr(r0, r1, r2) _addxr(_jit, r0, r1, r2)
-static void _addxr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define iaddxi(r0, i0) alui(X86_ADC, r0, i0)
-# define addxi(r0, r1, i0) _addxi(_jit, r0, r1, i0)
-static void _addxi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define isubr(r0, r1) alur(X86_SUB, r0, r1)
-# define subr(r0, r1, r2) _subr(_jit, r0, r1, r2)
-static void _subr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define isubi(r0, i0) alui(X86_SUB, r0, i0)
-# define subi(r0, r1, i0) _subi(_jit, r0, r1, i0)
-static void _subi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define subcr(r0, r1, r2) _subcr(_jit, r0, r1, r2)
-static void _subcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define subci(r0, r1, i0) _subci(_jit, r0, r1, i0)
-static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-# define isubxr(r0, r1) alur(X86_SBB, r0, r1)
-# define subxr(r0, r1, r2) _subxr(_jit, r0, r1, r2)
-static void _subxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define isubxi(r0, i0) alui(X86_SBB, r0, i0)
-# define subxi(r0, r1, i0) _subxi(_jit, r0, r1, i0)
-static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-# define rsbi(r0, r1, i0) _rsbi(_jit, r0, r1, i0)
-static void _rsbi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-# define imulr(r0, r1) _imulr(_jit, r0, r1)
-static void _imulr(jit_state_t*, jit_int32_t, jit_int32_t);
-# define imuli(r0, r1, i0) _imuli(_jit, r0, r1, i0)
-static void _imuli(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define mulr(r0, r1, r2) _mulr(_jit, r0, r1, r2)
-static void _mulr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define muli(r0, r1, i0) _muli(_jit, r0, r1, i0)
-static void _muli(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define umulr(r0) unr(X86_IMUL, r0)
-# define umulr_u(r0) unr(X86_MUL, r0)
-# define qmulr(r0, r1, r2, r3) _iqmulr(_jit, r0, r1, r2, r3, 1)
-# define qmulr_u(r0, r1, r2, r3) _iqmulr(_jit, r0, r1, r2, r3, 0)
-# define iqmulr(r0, r1, r2, r3, sign) _iqmulr(_jit, r0, r1, r2, r3, sign)
-static void _iqmulr(jit_state_t*, jit_int32_t, jit_int32_t,
- jit_int32_t,jit_int32_t, jit_bool_t);
-# define qmuli(r0, r1, r2, i0) _iqmuli(_jit, r0, r1, r2, i0, 1)
-# define qmuli_u(r0, r1, r2, i0) _iqmuli(_jit, r0, r1, r2, i0, 0)
-# define iqmuli(r0, r1, r2, i0, sign) _iqmuli(_jit, r0, r1, r2, i0, sign)
-static void _iqmuli(jit_state_t*, jit_int32_t, jit_int32_t,
- jit_int32_t,jit_word_t, jit_bool_t);
-# define sign_extend_rdx_rax() _sign_extend_rdx_rax(_jit)
-static void _sign_extend_rdx_rax(jit_state_t*);
-# define idivr(r0) unr(X86_IDIV, r0)
-# define idivr_u(r0) unr(X86_DIV, r0)
-# define divremr(r0, r1, r2, i0, i1) _divremr(_jit, r0, r1, r2, i0, i1)
-static void
-_divremr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,
- jit_bool_t,jit_bool_t);
-# define divremi(r0, r1, i0, i1, i2) _divremi(_jit, r0, r1, i0, i1, i2)
-static void
-_divremi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t,jit_bool_t,jit_bool_t);
-# define divr(r0, r1, r2) divremr(r0, r1, r2, 1, 1)
-# define divi(r0, r1, i0) divremi(r0, r1, i0, 1, 1)
-# define divr_u(r0, r1, r2) divremr(r0, r1, r2, 0, 1)
-# define divi_u(r0, r1, i0) divremi(r0, r1, i0, 0, 1)
-# define qdivr(r0, r1, r2, r3) _iqdivr(_jit, r0, r1, r2, r3, 1)
-# define qdivr_u(r0, r1, r2, r3) _iqdivr(_jit, r0, r1, r2, r3, 0)
-# define iqdivr(r0, r1, r2, r3, sign) _iqdivr(_jit, r0, r1, r2, r3, sign)
-static void _iqdivr(jit_state_t*, jit_int32_t, jit_int32_t,
- jit_int32_t,jit_int32_t, jit_bool_t);
-# define qdivi(r0, r1, r2, i0) _iqdivi(_jit, r0, r1, r2, i0, 1)
-# define qdivi_u(r0, r1, r2, i0) _iqdivi(_jit, r0, r1, r2, i0, 0)
-# define iqdivi(r0, r1, r2, i0, sign) _iqdivi(_jit, r0, r1, r2, i0, sign)
-static void _iqdivi(jit_state_t*, jit_int32_t, jit_int32_t,
- jit_int32_t,jit_word_t, jit_bool_t);
-# define remr(r0, r1, r2) divremr(r0, r1, r2, 1, 0)
-# define remi(r0, r1, i0) divremi(r0, r1, i0, 1, 0)
-# define remr_u(r0, r1, r2) divremr(r0, r1, r2, 0, 0)
-# define remi_u(r0, r1, i0) divremi(r0, r1, i0, 0, 0)
-# define iandr(r0, r1) alur(X86_AND, r0, r1)
-# define andr(r0, r1, r2) _andr(_jit, r0, r1, r2)
-static void _andr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define iandi(r0, i0) alui(X86_AND, r0, i0)
-# define andi(r0, r1, i0) _andi(_jit, r0, r1, i0)
-static void _andi(jit_state_t*, jit_int32_t,jit_int32_t,jit_word_t);
-# define iorr(r0, r1) alur(X86_OR, r0, r1)
-# define orr(r0, r1, r2) _orr(_jit, r0, r1, r2)
-static void _orr(jit_state_t*, jit_int32_t,jit_int32_t,jit_int32_t);
-# define iori(r0, i0) alui(X86_OR, r0, i0)
-# define ori(r0, r1, i0) _ori(_jit, r0, r1, i0)
-static void _ori(jit_state_t*, jit_int32_t,jit_int32_t,jit_word_t);
-# define ixorr(r0, r1) alur(X86_XOR, r0, r1)
-# define xorr(r0, r1, r2) _xorr(_jit, r0, r1, r2)
-static void _xorr(jit_state_t*, jit_int32_t,jit_int32_t,jit_int32_t);
-# define ixori(r0, i0) alui(X86_XOR, r0, i0)
-# define xori(r0, r1, i0) _xori(_jit, r0, r1, i0)
-static void _xori(jit_state_t*, jit_int32_t,jit_int32_t,jit_word_t);
-# define irotshr(code, r0) _irotshr(_jit, code, r0)
-static void _irotshr(jit_state_t*, jit_int32_t, jit_int32_t);
-# define rotshr(code, r0, r1, r2) _rotshr(_jit, code, r0, r1, r2)
-static void
-_rotshr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
-# define irotshi(code, r0, i0) _irotshi(_jit, code, r0, i0)
-static void _irotshi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define rotshi(code, r0, r1, i0) _rotshi(_jit, code, r0, r1, i0)
-static void
-_rotshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_word_t);
-# define lshr(r0, r1, r2) rotshr(X86_SHL, r0, r1, r2)
-# define lshi(r0, r1, i0) _lshi(_jit, r0, r1, i0)
-static void _lshi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define rshr(r0, r1, r2) rotshr(X86_SAR, r0, r1, r2)
-# define rshi(r0, r1, i0) rotshi(X86_SAR, r0, r1, i0)
-# define rshr_u(r0, r1, r2) rotshr(X86_SHR, r0, r1, r2)
-# define rshi_u(r0, r1, i0) rotshi(X86_SHR, r0, r1, i0)
-# define unr(code, r0) _unr(_jit, code, r0)
-static void _unr(jit_state_t*, jit_int32_t, jit_int32_t);
-# define inegr(r0) unr(X86_NEG, r0)
-# define negr(r0, r1) _negr(_jit, r0, r1)
-static void _negr(jit_state_t*, jit_int32_t, jit_int32_t);
-# define icomr(r0) unr(X86_NOT, r0)
-# define comr(r0, r1) _comr(_jit, r0, r1)
-static void _comr(jit_state_t*, jit_int32_t, jit_int32_t);
-# if USE_INC_DEC
-# define incr(r0, r1) _incr(_jit, r0, r1)
-static void _incr(jit_state_t*, jit_int32_t, jit_int32_t);
-# define decr(r0, r1) _decr(_jit, r0, r1)
-static void _decr(jit_state_t*, jit_int32_t, jit_int32_t);
-# endif
-# define cr(code, r0, r1, r2) _cr(_jit, code, r0, r1, r2)
-static void
-_cr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
-# define ci(code, r0, r1, i0) _ci(_jit, code, r0, r1, i0)
-static void
-_ci(jit_state_t *_jit, jit_int32_t, jit_int32_t, jit_int32_t, jit_word_t);
-# define ci0(code, r0, r1) _ci0(_jit, code, r0, r1)
-static void _ci0(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define ltr(r0, r1, r2) _ltr(_jit, r0, r1, r2)
-static void _ltr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define lti(r0, r1, i0) _lti(_jit, r0, r1, i0)
-static void _lti(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define ltr_u(r0, r1, r2) _ltr_u(_jit, r0, r1, r2)
-static void _ltr_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define lti_u(r0, r1, i0) ci(X86_CC_B, r0, r1, i0)
-# define ler(r0, r1, r2) _ler(_jit, r0, r1, r2)
-static void _ler(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define lei(r0, r1, i0) ci(X86_CC_LE, r0, r1, i0)
-# define ler_u(r0, r1, r2) _ler_u(_jit, r0, r1, r2)
-static void _ler_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define lei_u(r0, r1, i0) _lei_u(_jit, r0, r1, i0)
-static void _lei_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define eqr(r0, r1, r2) _eqr(_jit, r0, r1, r2)
-static void _eqr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define eqi(r0, r1, i0) _eqi(_jit, r0, r1, i0)
-static void _eqi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define ger(r0, r1, r2) _ger(_jit, r0, r1, r2)
-static void _ger(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define gei(r0, r1, i0) _gei(_jit, r0, r1, i0)
-static void _gei(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define ger_u(r0, r1, r2) _ger_u(_jit, r0, r1, r2)
-static void _ger_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define gei_u(r0, r1, i0) _gei_u(_jit, r0, r1, i0)
-static void _gei_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define gtr(r0, r1, r2) _gtr(_jit, r0, r1, r2)
-static void _gtr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define gti(r0, r1, i0) _ci(_jit, X86_CC_G, r0, r1, i0)
-# define gtr_u(r0, r1, r2) _gtr_u(_jit, r0, r1, r2)
-static void _gtr_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define gti_u(r0, r1, i0) _gti_u(_jit, r0, r1, i0)
-static void _gti_u(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define ner(r0, r1, r2) _ner(_jit, r0, r1, r2)
-static void _ner(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define nei(r0, r1, i0) _nei(_jit, r0, r1, i0)
-static void _nei(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define movr(r0, r1) _movr(_jit, r0, r1)
-static void _movr(jit_state_t*, jit_int32_t, jit_int32_t);
-# define imovi(r0, i0) _imovi(_jit, r0, i0)
-static void _imovi(jit_state_t*, jit_int32_t, jit_word_t);
-# define movi(r0, i0) _movi(_jit, r0, i0)
-static void _movi(jit_state_t*, jit_int32_t, jit_word_t);
-# define movi_p(r0, i0) _movi_p(_jit, r0, i0)
-static jit_word_t _movi_p(jit_state_t*, jit_int32_t, jit_word_t);
-# define movcr(r0, r1) _movcr(_jit, r0, r1)
-static void _movcr(jit_state_t*,jit_int32_t,jit_int32_t);
-# define movcr_u(r0, r1) _movcr_u(_jit, r0, r1)
-static void _movcr_u(jit_state_t*,jit_int32_t,jit_int32_t);
-# define movsr(r0, r1) _movsr(_jit, r0, r1)
-static void _movsr(jit_state_t*,jit_int32_t,jit_int32_t);
-# define movsr_u(r0, r1) _movsr_u(_jit, r0, r1)
-static void _movsr_u(jit_state_t*,jit_int32_t,jit_int32_t);
-# if __X64 && !__X64_32
-# define movir(r0, r1) _movir(_jit, r0, r1)
-static void _movir(jit_state_t*,jit_int32_t,jit_int32_t);
-# define movir_u(r0, r1) _movir_u(_jit, r0, r1)
-static void _movir_u(jit_state_t*,jit_int32_t,jit_int32_t);
-# endif
-# define htonr_us(r0, r1) _htonr_us(_jit, r0, r1)
-static void _htonr_us(jit_state_t*,jit_int32_t,jit_int32_t);
-# define htonr_ui(r0, r1) _htonr_ui(_jit, r0, r1)
-static void _htonr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
-# if __X64 && !__X64_32
-#define htonr_ul(r0, r1) _htonr_ul(_jit, r0, r1)
-static void _htonr_ul(jit_state_t*,jit_int32_t,jit_int32_t);
-#endif
-# define extr_c(r0, r1) _extr_c(_jit, r0, r1)
-static void _extr_c(jit_state_t*,jit_int32_t,jit_int32_t);
-# define extr_uc(r0, r1) _extr_uc(_jit, r0, r1)
-static void _extr_uc(jit_state_t*,jit_int32_t,jit_int32_t);
-# define extr_s(r0, r1) movsr(r0, r1)
-# define extr_us(r0, r1) movsr_u(r0, r1)
-# if __X64 && !__X64_32
-# define extr_i(r0, r1) movir(r0, r1)
-# define extr_ui(r0, r1) movir_u(r0, r1)
-# endif
-# define ldr_c(r0, r1) _ldr_c(_jit, r0, r1)
-static void _ldr_c(jit_state_t*, jit_int32_t, jit_int32_t);
-# define ldi_c(r0, i0) _ldi_c(_jit, r0, i0)
-static void _ldi_c(jit_state_t*, jit_int32_t, jit_word_t);
-# define ldr_uc(r0, r1) _ldr_uc(_jit, r0, r1)
-static void _ldr_uc(jit_state_t*, jit_int32_t, jit_int32_t);
-# define ldi_uc(r0, i0) _ldi_uc(_jit, r0, i0)
-static void _ldi_uc(jit_state_t*, jit_int32_t, jit_word_t);
-# define ldr_s(r0, r1) _ldr_s(_jit, r0, r1)
-static void _ldr_s(jit_state_t*, jit_int32_t, jit_int32_t);
-# define ldi_s(r0, i0) _ldi_s(_jit, r0, i0)
-static void _ldi_s(jit_state_t*, jit_int32_t, jit_word_t);
-# define ldr_us(r0, r1) _ldr_us(_jit, r0, r1)
-static void _ldr_us(jit_state_t*, jit_int32_t, jit_int32_t);
-# define ldi_us(r0, i0) _ldi_us(_jit, r0, i0)
-static void _ldi_us(jit_state_t*, jit_int32_t, jit_word_t);
-# if __X32 || !__X64_32
-# define ldr_i(r0, r1) _ldr_i(_jit, r0, r1)
-static void _ldr_i(jit_state_t*, jit_int32_t, jit_int32_t);
-# define ldi_i(r0, i0) _ldi_i(_jit, r0, i0)
-static void _ldi_i(jit_state_t*, jit_int32_t, jit_word_t);
-# endif
-# if __X64
-# if __X64_32
-# define ldr_i(r0, r1) _ldr_ui(_jit, r0, r1)
-# define ldi_i(r0, i0) _ldi_ui(_jit, r0, i0)
-# else
-# define ldr_ui(r0, r1) _ldr_ui(_jit, r0, r1)
-# define ldi_ui(r0, i0) _ldi_ui(_jit, r0, i0)
-# endif
-static void _ldr_ui(jit_state_t*, jit_int32_t, jit_int32_t);
-static void _ldi_ui(jit_state_t*, jit_int32_t, jit_word_t);
-# if !__X64_32
-# define ldr_l(r0, r1) _ldr_l(_jit, r0, r1)
-static void _ldr_l(jit_state_t*, jit_int32_t, jit_int32_t);
-# define ldi_l(r0, i0) _ldi_l(_jit, r0, i0)
-static void _ldi_l(jit_state_t*, jit_int32_t, jit_word_t);
-# endif
-# endif
-# define ldxr_c(r0, r1, r2) _ldxr_c(_jit, r0, r1, r2)
-static void _ldxr_c(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define ldxi_c(r0, r1, i0) _ldxi_c(_jit, r0, r1, i0)
-static void _ldxi_c(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define ldxr_uc(r0, r1, r2) _ldxr_uc(_jit, r0, r1, r2)
-static void _ldxr_uc(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define ldxi_uc(r0, r1, i0) _ldxi_uc(_jit, r0, r1, i0)
-static void _ldxi_uc(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define ldxr_s(r0, r1, r2) _ldxr_s(_jit, r0, r1, r2)
-static void _ldxr_s(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define ldxi_s(r0, r1, i0) _ldxi_s(_jit, r0, r1, i0)
-static void _ldxi_s(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define ldxr_us(r0, r1, r2) _ldxr_us(_jit, r0, r1, r2)
-static void _ldxr_us(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define ldxi_us(r0, r1, i0) _ldxi_us(_jit, r0, r1, i0)
-static void _ldxi_us(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# if __X32 || !__X64_32
-# define ldxr_i(r0, r1, r2) _ldxr_i(_jit, r0, r1, r2)
-static void _ldxr_i(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define ldxi_i(r0, r1, i0) _ldxi_i(_jit, r0, r1, i0)
-static void _ldxi_i(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# endif
-# if __X64
-# if __X64_32
-# define ldxr_i(r0, r1, r2) _ldxr_ui(_jit, r0, r1, r2)
-# define ldxi_i(r0, r1, i0) _ldxi_ui(_jit, r0, r1, i0)
-# else
-# define ldxr_ui(r0, r1, r2) _ldxr_ui(_jit, r0, r1, r2)
-# define ldxi_ui(r0, r1, i0) _ldxi_ui(_jit, r0, r1, i0)
-# endif
-static void _ldxr_ui(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-static void _ldxi_ui(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# if !__X64_32
-# define ldxr_l(r0, r1, r2) _ldxr_l(_jit, r0, r1, r2)
-static void _ldxr_l(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define ldxi_l(r0, r1, i0) _ldxi_l(_jit, r0, r1, i0)
-static void _ldxi_l(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# endif
-# endif
-# define str_c(r0, r1) _str_c(_jit, r0, r1)
-static void _str_c(jit_state_t*, jit_int32_t, jit_int32_t);
-# define sti_c(i0, r0) _sti_c(_jit, i0, r0)
-static void _sti_c(jit_state_t*, jit_word_t, jit_int32_t);
-# define str_s(r0, r1) _str_s(_jit, r0, r1)
-static void _str_s(jit_state_t*, jit_int32_t, jit_int32_t);
-# define sti_s(i0, r0) _sti_s(_jit, i0, r0)
-static void _sti_s(jit_state_t*, jit_word_t, jit_int32_t);
-# define str_i(r0, r1) _str_i(_jit, r0, r1)
-static void _str_i(jit_state_t*, jit_int32_t, jit_int32_t);
-# define sti_i(i0, r0) _sti_i(_jit, i0, r0)
-static void _sti_i(jit_state_t*, jit_word_t, jit_int32_t);
-# if __X64 && !__X64_32
-# define str_l(r0, r1) _str_l(_jit, r0, r1)
-static void _str_l(jit_state_t*, jit_int32_t, jit_int32_t);
-# define sti_l(i0, r0) _sti_l(_jit, i0, r0)
-static void _sti_l(jit_state_t*, jit_word_t, jit_int32_t);
-# endif
-# define stxr_c(r0, r1, r2) _stxr_c(_jit, r0, r1, r2)
-static void _stxr_c(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define stxi_c(i0, r0, r1) _stxi_c(_jit, i0, r0, r1)
-static void _stxi_c(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define stxr_s(r0, r1, r2) _stxr_s(_jit, r0, r1, r2)
-static void _stxr_s(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define stxi_s(i0, r0, r1) _stxi_s(_jit, i0, r0, r1)
-static void _stxi_s(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define stxr_i(r0, r1, r2) _stxr_i(_jit, r0, r1, r2)
-static void _stxr_i(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define stxi_i(i0, r0, r1) _stxi_i(_jit, i0, r0, r1)
-static void _stxi_i(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# if __X64 && !__X64_32
-# define stxr_l(r0, r1, r2) _stxr_l(_jit, r0, r1, r2)
-static void _stxr_l(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define stxi_l(i0, r0, r1) _stxi_l(_jit, i0, r0, r1)
-static void _stxi_l(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# endif
-# define jcc(code, i0) _jcc(_jit, code, i0)
-# define jo(i0) jcc(X86_CC_O, i0)
-# define jno(i0) jcc(X86_CC_NO, i0)
-# define jnae(i0) jcc(X86_CC_NAE, i0)
-# define jb(i0) jcc(X86_CC_B, i0)
-# define jc(i0) jcc(X86_CC_C, i0)
-# define jae(i0) jcc(X86_CC_AE, i0)
-# define jnb(i0) jcc(X86_CC_NB, i0)
-# define jnc(i0) jcc(X86_CC_NC, i0)
-# define je(i0) jcc(X86_CC_E, i0)
-# define jz(i0) jcc(X86_CC_Z, i0)
-# define jne(i0) jcc(X86_CC_NE, i0)
-# define jnz(i0) jcc(X86_CC_NZ, i0)
-# define jbe(i0) jcc(X86_CC_BE, i0)
-# define jna(i0) jcc(X86_CC_NA, i0)
-# define ja(i0) jcc(X86_CC_A, i0)
-# define jnbe(i0) jcc(X86_CC_NBE, i0)
-# define js(i0) jcc(X86_CC_S, i0)
-# define jns(i0) jcc(X86_CC_NS, i0)
-# define jp(i0) jcc(X86_CC_P, i0)
-# define jpe(i0) jcc(X86_CC_PE, i0)
-# define jnp(i0) jcc(X86_CC_NP, i0)
-# define jpo(i0) jcc(X86_CC_PO, i0)
-# define jl(i0) jcc(X86_CC_L, i0)
-# define jnge(i0) jcc(X86_CC_NGE, i0)
-# define jge(i0) jcc(X86_CC_GE, i0)
-# define jnl(i0) jcc(X86_CC_NL, i0)
-# define jle(i0) jcc(X86_CC_LE, i0)
-# define jng(i0) jcc(X86_CC_NG, i0)
-# define jg(i0) jcc(X86_CC_G, i0)
-# define jnle(i0) jcc(X86_CC_NLE, i0)
-static void _jcc(jit_state_t*, jit_int32_t, jit_word_t);
-# define jccs(code, i0) _jccs(_jit, code, i0)
-# define jos(i0) jccs(X86_CC_O, i0)
-# define jnos(i0) jccs(X86_CC_NO, i0)
-# define jnaes(i0) jccs(X86_CC_NAE, i0)
-# define jbs(i0) jccs(X86_CC_B, i0)
-# define jcs(i0) jccs(X86_CC_C, i0)
-# define jaes(i0) jccs(X86_CC_AE, i0)
-# define jnbs(i0) jccs(X86_CC_NB, i0)
-# define jncs(i0) jccs(X86_CC_NC, i0)
-# define jes(i0) jccs(X86_CC_E, i0)
-# define jzs(i0) jccs(X86_CC_Z, i0)
-# define jnes(i0) jccs(X86_CC_NE, i0)
-# define jnzs(i0) jccs(X86_CC_NZ, i0)
-# define jbes(i0) jccs(X86_CC_BE, i0)
-# define jnas(i0) jccs(X86_CC_NA, i0)
-# define jas(i0) jccs(X86_CC_A, i0)
-# define jnbes(i0) jccs(X86_CC_NBE, i0)
-# define jss(i0) jccs(X86_CC_S, i0)
-# define jnss(i0) jccs(X86_CC_NS, i0)
-# define jps(i0) jccs(X86_CC_P, i0)
-# define jpes(i0) jccs(X86_CC_PE, i0)
-# define jnps(i0) jccs(X86_CC_NP, i0)
-# define jpos(i0) jccs(X86_CC_PO, i0)
-# define jls(i0) jccs(X86_CC_L, i0)
-# define jnges(i0) jccs(X86_CC_NGE, i0)
-# define jges(i0) jccs(X86_CC_GE, i0)
-# define jnls(i0) jccs(X86_CC_NL, i0)
-# define jles(i0) jccs(X86_CC_LE, i0)
-# define jngs(i0) jccs(X86_CC_NG, i0)
-# define jgs(i0) jccs(X86_CC_G, i0)
-# define jnles(i0) jccs(X86_CC_NLE, i0)
-static void _jccs(jit_state_t*, jit_int32_t, jit_word_t);
-# define jcr(code, i0, r0, r1) _jcr(_jit, code, i0, r0, r1)
-static void _jcr(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_int32_t);
-# define jci(code, i0, r0, i1) _jci(_jit, code, i0, r0, i1)
-static void _jci(jit_state_t*,jit_int32_t,jit_word_t,jit_int32_t,jit_word_t);
-# define jci0(code, i0, r0) _jci0(_jit, code, i0, r0)
-static void _jci0(jit_state_t*, jit_int32_t, jit_word_t, jit_int32_t);
-# define bltr(i0, r0, r1) _bltr(_jit, i0, r0, r1)
-static jit_word_t _bltr(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define blti(i0, r0, i1) _blti(_jit, i0, r0, i1)
-static jit_word_t _blti(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define bltr_u(i0, r0, r1) _bltr_u(_jit, i0, r0, r1)
-static jit_word_t _bltr_u(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define blti_u(i0, r0, i1) _blti_u(_jit, i0, r0, i1)
-static jit_word_t _blti_u(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define bler(i0, r0, r1) _bler(_jit, i0, r0, r1)
-static jit_word_t _bler(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define blei(i0, r0, i1) _blei(_jit, i0, r0, i1)
-static jit_word_t _blei(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define bler_u(i0, r0, r1) _bler_u(_jit, i0, r0, r1)
-static jit_word_t _bler_u(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define blei_u(i0, r0, i1) _blei_u(_jit, i0, r0, i1)
-static jit_word_t _blei_u(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define beqr(i0, r0, r1) _beqr(_jit, i0, r0, r1)
-static jit_word_t _beqr(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define beqi(i0, r0, i1) _beqi(_jit, i0, r0, i1)
-static jit_word_t _beqi(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define bger(i0, r0, r1) _bger(_jit, i0, r0, r1)
-static jit_word_t _bger(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define bgei(i0, r0, i1) _bgei(_jit, i0, r0, i1)
-static jit_word_t _bgei(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define bger_u(i0, r0, r1) _bger_u(_jit, i0, r0, r1)
-static jit_word_t _bger_u(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define bgei_u(i0, r0, i1) _bgei_u(_jit, i0, r0, i1)
-static jit_word_t _bgei_u(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define bgtr(i0, r0, r1) _bgtr(_jit, i0, r0, r1)
-static jit_word_t _bgtr(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define bgti(i0, r0, i1) _bgti(_jit, i0, r0, i1)
-static jit_word_t _bgti(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define bgtr_u(i0, r0, r1) _bgtr_u(_jit, i0, r0, r1)
-static jit_word_t _bgtr_u(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define bgti_u(i0, r0, i1) _bgti_u(_jit, i0, r0, i1)
-static jit_word_t _bgti_u(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define bner(i0, r0, r1) _bner(_jit, i0, r0, r1)
-static jit_word_t _bner(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
-# define bnei(i0, r0, i1) _bnei(_jit, i0, r0, i1)
-static jit_word_t _bnei(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
-# define bmsr(i0, r0, r1) _bmsr(_jit, i0, r0, r1)
-static jit_word_t _bmsr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define bmsi(i0, r0, i1) _bmsi(_jit, i0, r0, i1)
-static jit_word_t _bmsi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define bmcr(i0, r0, r1) _bmcr(_jit, i0, r0, r1)
-static jit_word_t _bmcr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define bmci(i0, r0, i1) _bmci(_jit, i0, r0, i1)
-static jit_word_t _bmci(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define boaddr(i0, r0, r1) _boaddr(_jit, i0, r0, r1)
-static jit_word_t _boaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define boaddi(i0, r0, i1) _boaddi(_jit, i0, r0, i1)
-static jit_word_t _boaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define boaddr_u(i0, r0, r1) _boaddr_u(_jit, i0, r0, r1)
-static jit_word_t _boaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define boaddi_u(i0, r0, i1) _boaddi_u(_jit, i0, r0, i1)
-static jit_word_t _boaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define bxaddr(i0, r0, r1) _bxaddr(_jit, i0, r0, r1)
-static jit_word_t _bxaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define bxaddi(i0, r0, i1) _bxaddi(_jit, i0, r0, i1)
-static jit_word_t _bxaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define bxaddr_u(i0, r0, r1) _bxaddr_u(_jit, i0, r0, r1)
-static jit_word_t _bxaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define bxaddi_u(i0, r0, i1) _bxaddi_u(_jit, i0, r0, i1)
-static jit_word_t _bxaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define bosubr(i0, r0, r1) _bosubr(_jit, i0, r0, r1)
-static jit_word_t _bosubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define bosubi(i0, r0, i1) _bosubi(_jit, i0, r0, i1)
-static jit_word_t _bosubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define bosubr_u(i0, r0, r1) _bosubr_u(_jit, i0, r0, r1)
-static jit_word_t _bosubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define bosubi_u(i0, r0, i1) _bosubi_u(_jit, i0, r0, i1)
-static jit_word_t _bosubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define bxsubr(i0, r0, r1) _bxsubr(_jit, i0, r0, r1)
-static jit_word_t _bxsubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define bxsubi(i0, r0, i1) _bxsubi(_jit, i0, r0, i1)
-static jit_word_t _bxsubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define bxsubr_u(i0, r0, r1) _bxsubr_u(_jit, i0, r0, r1)
-static jit_word_t _bxsubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define bxsubi_u(i0, r0, i1) _bxsubi_u(_jit, i0, r0, i1)
-static jit_word_t _bxsubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-# define callr(r0) _callr(_jit, r0)
-static void _callr(jit_state_t*, jit_int32_t);
-# define calli(i0) _calli(_jit, i0)
-static jit_word_t _calli(jit_state_t*, jit_word_t);
-# define jmpr(r0) _jmpr(_jit, r0)
-static void _jmpr(jit_state_t*, jit_int32_t);
-# define jmpi(i0) _jmpi(_jit, i0)
-static jit_word_t _jmpi(jit_state_t*, jit_word_t);
-# define jmpsi(i0) _jmpsi(_jit, i0)
-static void _jmpsi(jit_state_t*, jit_uint8_t);
-# define prolog(node) _prolog(_jit, node)
-static void _prolog(jit_state_t*, jit_node_t*);
-# define epilog(node) _epilog(_jit, node)
-static void _epilog(jit_state_t*, jit_node_t*);
-# define vastart(r0) _vastart(_jit, r0)
-static void _vastart(jit_state_t*, jit_int32_t);
-# define vaarg(r0, r1) _vaarg(_jit, r0, r1)
-static void _vaarg(jit_state_t*, jit_int32_t, jit_int32_t);
-# define vaarg_d(r0, r1, i0) _vaarg_d(_jit, r0, r1, i0)
-static void _vaarg_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_bool_t);
-# define patch_at(node, instr, label) _patch_at(_jit, node, instr, label)
-static void _patch_at(jit_state_t*, jit_node_t*, jit_word_t, jit_word_t);
-# if !defined(HAVE_FFSL)
-# if __X32
-# define ffsl(i) ffs(i)
-# else
-static int ffsl(long);
-# endif
-# endif
-#endif
-
-#if CODE
-static void
-_rex(jit_state_t *_jit, jit_int32_t l, jit_int32_t w,
- jit_int32_t r, jit_int32_t x, jit_int32_t b)
-{
-#if __X64
- jit_int32_t v = 0x40 | (w << 3);
-
- if (r != _NOREG)
- v |= (r & 8) >> 1;
- if (x != _NOREG)
- v |= (x & 8) >> 2;
- if (b != _NOREG)
- v |= (b & 8) >> 3;
- if (l || v != 0x40)
- ic(v);
-#endif
-}
-
-static void
-_rx(jit_state_t *_jit, jit_int32_t rd, jit_int32_t md,
- jit_int32_t rb, jit_int32_t ri, jit_int32_t ms)
-{
- if (ri == _NOREG) {
- if (rb == _NOREG) {
-#if __X32
- mrm(0x00, r7(rd), 0x05);
-#else
- mrm(0x00, r7(rd), 0x04);
- sib(_SCL1, 0x04, 0x05);
-#endif
- ii(md);
- }
- else if (r7(rb) == _RSP_REGNO) {
- if (md == 0) {
- mrm(0x00, r7(rd), 0x04);
- sib(ms, 0x04, 0x04);
- }
- else if ((jit_int8_t)md == md) {
- mrm(0x01, r7(rd), 0x04);
- sib(ms, 0x04, 0x04);
- ic(md);
- }
- else {
- mrm(0x02, r7(rd), 0x04);
- sib(ms, 0x04, 0x04);
- ii(md);
- }
- }
- else {
- if (md == 0 && r7(rb) != _RBP_REGNO)
- mrm(0x00, r7(rd), r7(rb));
- else if ((jit_int8_t)md == md) {
- mrm(0x01, r7(rd), r7(rb));
- ic(md);
- }
- else {
- mrm(0x02, r7(rd), r7(rb));
- ii(md);
- }
- }
- }
- else if (rb == _NOREG) {
- mrm(0x00, r7(rd), 0x04);
- sib(ms, r7(ri), 0x05);
- ii(md);
- }
- else if (r8(ri) != _RSP_REGNO) {
- if (md == 0 && r7(rb) != _RBP_REGNO) {
- mrm(0x00, r7(rd), 0x04);
- sib(ms, r7(ri), r7(rb));
- }
- else if ((jit_int8_t)md == md) {
- mrm(0x01, r7(rd), 0x04);
- sib(ms, r7(ri), r7(rb));
- ic(md);
- }
- else {
- mrm(0x02, r7(rd), 0x04);
- sib(ms, r7(ri), r7(rb));
- ic(md);
- }
- }
- else {
- fprintf(stderr, "illegal index register");
- abort();
- }
-}
-
-static void
-_nop(jit_state_t *_jit, jit_int32_t count)
-{
- switch (count) {
- case 0:
- break;
- case 1: /* NOP */
- ic(0x90); break;
- case 2: /* 66 NOP */
- ic(0x66); ic(0x90);
- break;
- case 3: /* NOP DWORD ptr [EAX] */
- ic(0x0f); ic(0x1f); ic(0x00);
- break;
- case 4: /* NOP DWORD ptr [EAX + 00H] */
- ic(0x0f); ic(0x1f); ic(0x40); ic(0x00);
- break;
- case 5: /* NOP DWORD ptr [EAX + EAX*1 + 00H] */
- ic(0x0f); ic(0x1f); ic(0x44); ic(0x00);
- ic(0x00);
- break;
- case 6: /* 66 NOP DWORD ptr [EAX + EAX*1 + 00H] */
- ic(0x66); ic(0x0f); ic(0x1f); ic(0x44);
- ic(0x00); ic(0x00);
- break;
- case 7: /* NOP DWORD ptr [EAX + 00000000H] */
- ic(0x0f); ic(0x1f); ic(0x80); ii(0x0000);
- break;
- case 8: /* NOP DWORD ptr [EAX + EAX*1 + 00000000H] */
- ic(0x0f); ic(0x1f); ic(0x84); ic(0x00);
- ii(0x0000);
- break;
- case 9: /* 66 NOP DWORD ptr [EAX + EAX*1 + 00000000H] */
- ic(0x66); ic(0x0f); ic(0x1f); ic(0x84);
- ic(0x00); ii(0x0000);
- break;
- default:
- abort();
- }
-}
-
-static void
-_lea(jit_state_t *_jit, jit_int32_t md, jit_int32_t rb,
- jit_int32_t ri, jit_int32_t ms, jit_int32_t rd)
-{
- rex(0, WIDE, rd, ri, rb);
- ic(0x8d);
- rx(rd, md, rb, ri, ms);
-}
-
-static void
-_pushr(jit_state_t *_jit, jit_int32_t r0)
-{
- rex(0, WIDE, 0, 0, r0);
- ic(0x50 | r7(r0));
-}
-
-static void
-_popr(jit_state_t *_jit, jit_int32_t r0)
-{
- rex(0, WIDE, 0, 0, r0);
- ic(0x58 | r7(r0));
-}
-
-static void
-_xchgr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r1, _NOREG, r0);
- ic(0x87);
- mrm(0x03, r7(r1), r7(r0));
-}
-
-static void
-_testr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r1, _NOREG, r0);
- ic(0x85);
- mrm(0x03, r7(r1), r7(r0));
-}
-
-static void
-_testi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- rex(0, WIDE, _NOREG, _NOREG, r0);
- if (r0 == _RAX_REGNO)
- ic(0xa9);
- else {
- ic(0xf7);
- mrm(0x03, 0x00, r7(r0));
- }
- ii(i0);
-}
-
-static void
-_cc(jit_state_t *_jit, jit_int32_t code, jit_int32_t r0)
-{
- rex(0, 0, _NOREG, _NOREG, r0);
- ic(0x0f);
- ic(0x90 | code);
- mrm(0x03, 0x00, r7(r0));
-}
-
-static void
-_alur(jit_state_t *_jit, jit_int32_t code, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r1, _NOREG, r0);
- ic(code | 0x01);
- mrm(0x03, r7(r1), r7(r0));
-}
-
-static void
-_alui(jit_state_t *_jit, jit_int32_t code, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, _NOREG, _NOREG, r0);
- if ((jit_int8_t)i0 == i0) {
- ic(0x83);
- ic(0xc0 | code | r7(r0));
- ic(i0);
- }
- else {
- if (r0 == _RAX_REGNO)
- ic(code | 0x05);
- else {
- ic(0x81);
- ic(0xc0 | code | r7(r0));
- }
- ii(i0);
- }
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- alur(code, r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_save(jit_state_t *_jit, jit_int32_t r0)
-{
- if (!_jitc->function->regoff[r0]) {
- _jitc->function->regoff[r0] = jit_allocai(sizeof(jit_word_t));
- _jitc->again = 1;
- }
- assert(!jit_regset_tstbit(&_jitc->regsav, r0));
- jit_regset_setbit(&_jitc->regsav, r0);
- stxi(_jitc->function->regoff[r0], _RBP_REGNO, r0);
-}
-
-static void
-_load(jit_state_t *_jit, jit_int32_t r0)
-{
- assert(_jitc->function->regoff[r0]);
- assert(jit_regset_tstbit(&_jitc->regsav, r0));
- jit_regset_clrbit(&_jitc->regsav, r0);
- ldxi(r0, _RBP_REGNO, _jitc->function->regoff[r0]);
-}
-
-static void
-_addr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r0 == r1)
- iaddr(r0, r2);
- else if (r0 == r2)
- iaddr(r0, r1);
- else
- lea(0, r1, r2, _SCL1, r0);
-}
-
-static void
-_addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (i0 == 0)
- movr(r0, r1);
-#if USE_INC_DEC
- else if (i0 == 1)
- incr(r0, r1);
- else if (i0 == -1)
- decr(r0, r1);
-#endif
- else if (can_sign_extend_int_p(i0)) {
- if (r0 == r1)
- iaddi(r0, i0);
- else
- lea(i0, r1, _NOREG, _SCL1, r0);
- }
- else if (r0 != r1) {
- movi(r0, i0);
- iaddr(r0, r1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- iaddr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r0 == r2)
- iaddr(r0, r1);
- else {
- movr(r0, r1);
- iaddr(r0, r2);
- }
-}
-
-static void
-_addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- movr(r0, r1);
- iaddi(r0, i0);
- }
- else if (r0 == r1) {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- iaddr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- movi(r0, i0);
- iaddr(r0, r1);
- }
-}
-
-static void
-_addxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r0 == r2)
- iaddxr(r0, r1);
- else {
- movr(r0, r1);
- iaddxr(r0, r2);
- }
-}
-
-static void
-_addxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- movr(r0, r1);
- iaddxi(r0, i0);
- }
- else if (r0 == r1) {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- iaddxr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- movi(r0, i0);
- iaddxr(r0, r1);
- }
-}
-
-static void
-_subr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- ixorr(r0, r0);
- else if (r0 == r2) {
- isubr(r0, r1);
- inegr(r0);
- }
- else {
- movr(r0, r1);
- isubr(r0, r2);
- }
-}
-
-static void
-_subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (i0 == 0)
- movr(r0, r1);
-#if USE_INC_DEC
- else if (i0 == 1)
- decr(r0, r1);
- else if (i0 == -1)
- incr(r0, r1);
-#endif
- else if (can_sign_extend_int_p(i0)) {
- if (r0 == r1)
- isubi(r0, i0);
- else
- lea(-i0, r1, _NOREG, _SCL1, r0);
- }
- else if (r0 != r1) {
- movi(r0, -i0);
- iaddr(r0, r1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- isubr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_int32_t reg;
- if (r0 == r2 && r0 != r1) {
- reg = jit_get_reg(jit_class_gpr);
- movr(rn(reg), r0);
- movr(r0, r1);
- isubr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- movr(r0, r1);
- isubr(r0, r2);
- }
-}
-
-static void
-_subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- movr(r0, r1);
- if (can_sign_extend_int_p(i0))
- isubi(r0, i0);
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- isubr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_subxr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_int32_t reg;
- if (r0 == r2 && r0 != r1) {
- reg = jit_get_reg(jit_class_gpr);
- movr(rn(reg), r0);
- movr(r0, r1);
- isubxr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- movr(r0, r1);
- isubxr(r0, r2);
- }
-}
-
-static void
-_subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- movr(r0, r1);
- if (can_sign_extend_int_p(i0))
- isubxi(r0, i0);
- else {
- reg = jit_get_reg(jit_class_gpr);
- imovi(rn(reg), i0);
- isubxr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_rsbi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- subi(r0, r1, i0);
- negr(r0, r0);
-}
-
-static void
-_imulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xaf);
- mrm(0x03, r7(r0), r7(r1));
-}
-
-static void
-_imuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, r0, _NOREG, r1);
- if ((jit_int8_t)i0 == i0) {
- ic(0x6b);
- mrm(0x03, r7(r0), r7(r1));
- ic(i0);
- }
- else {
- ic(0x69);
- mrm(0x03, r7(r0), r7(r1));
- ii(i0);
- }
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- imulr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r0 == r1)
- imulr(r0, r2);
- else if (r0 == r2)
- imulr(r0, r1);
- else {
- movr(r0, r1);
- imulr(r0, r2);
- }
-}
-
-static void
-_muli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- switch (i0) {
- case 0:
- ixorr(r0, r0);
- break;
- case 1:
- movr(r0, r1);
- break;
- case -1:
- negr(r0, r1);
- break;
- case 2:
- lea(0, _NOREG, r1, _SCL2, r0);
- break;
- case 4:
- lea(0, _NOREG, r1, _SCL4, r0);
- break;
- case 8:
- lea(0, _NOREG, r1, _SCL8, r0);
- break;
- default:
- if (i0 > 0 && !(i0 & (i0 - 1)))
- lshi(r0, r1, ffsl(i0) - 1);
- else if (can_sign_extend_int_p(i0))
- imuli(r0, r1, i0);
- else if (r0 != r1) {
- movi(r0, i0);
- imulr(r0, r1);
- }
- else
- imuli(r0, r0, i0);
- break;
- }
-}
-
-#define savset(rn) \
- if (r0 != rn) { \
- sav |= 1 << rn; \
- if (r1 != rn && r2 != rn) \
- set |= 1 << rn; \
- }
-#define isavset(rn) \
- if (r0 != rn) { \
- sav |= 1 << rn; \
- if (r1 != rn) \
- set |= 1 << rn; \
- }
-#define qsavset(rn) \
- if (r0 != rn && r1 != rn) { \
- sav |= 1 << rn; \
- if (r2 != rn && r3 != rn) \
- set |= 1 << rn; \
- }
-#define allocr(rn, rv) \
- if (set & (1 << rn)) \
- (void)jit_get_reg(rv|jit_class_gpr|jit_class_named); \
- if (sav & (1 << rn)) { \
- if ( jit_regset_tstbit(&_jitc->regsav, rv) || \
- !jit_regset_tstbit(&_jitc->reglive, rv)) \
- sav &= ~(1 << rn); \
- else \
- save(rv); \
- }
-#define clear(rn, rv) \
- if (set & (1 << rn)) \
- jit_unget_reg(rv); \
- if (sav & (1 << rn)) \
- load(rv);
-static void
-_iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
-{
- jit_int32_t mul;
- jit_int32_t sav;
- jit_int32_t set;
-
- sav = set = 0;
- qsavset(_RDX_REGNO);
- qsavset(_RAX_REGNO);
- allocr(_RDX_REGNO, _RDX);
- allocr(_RAX_REGNO, _RAX);
-
- if (r3 == _RAX_REGNO)
- mul = r2;
- else {
- mul = r3;
- movr(_RAX_REGNO, r2);
- }
- if (sign)
- umulr(mul);
- else
- umulr_u(mul);
-
- if (r0 == _RDX_REGNO && r1 == _RAX_REGNO)
- xchgr(_RAX_REGNO, _RDX_REGNO);
- else {
- if (r0 != _RDX_REGNO)
- movr(r0, _RAX_REGNO);
- movr(r1, _RDX_REGNO);
- if (r0 == _RDX_REGNO)
- movr(r0, _RAX_REGNO);
- }
-
- clear(_RDX_REGNO, _RDX);
- clear(_RAX_REGNO, _RAX);
-}
-
-static void
-_iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
-{
- jit_int32_t reg;
-
- if (i0 == 0) {
- ixorr(r0, r0);
- ixorr(r1, r1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- if (sign)
- qmulr(r0, r1, r2, rn(reg));
- else
- qmulr_u(r0, r1, r2, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_sign_extend_rdx_rax(jit_state_t *_jit)
-{
- rex(0, WIDE, 0, 0, 0);
- ic(0x99);
-}
-
-static void
-_divremr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2,
- jit_bool_t sign, jit_bool_t divide)
-{
- jit_int32_t div;
- jit_int32_t reg;
- jit_int32_t set;
- jit_int32_t sav;
- jit_int32_t use;
-
- sav = set = use = 0;
- savset(_RDX_REGNO);
- savset(_RAX_REGNO);
- allocr(_RDX_REGNO, _RDX);
- allocr(_RAX_REGNO, _RAX);
-
- if (r2 == _RAX_REGNO) {
- if (r0 == _RAX_REGNO || r0 == _RDX_REGNO) {
- if ((reg = jit_get_reg(jit_class_gpr|jit_class_chk)) == JIT_NOREG)
- reg = jit_get_reg((r1 == _RCX_REGNO ? _RBX : _RCX) |
- jit_class_gpr|jit_class_named);
- use = 1;
- div = rn(reg);
- movr(div, _RAX_REGNO);
- if (r1 != _RAX_REGNO)
- movr(_RAX_REGNO, r1);
- }
- else {
- if (r0 == r1)
- xchgr(r0, _RAX_REGNO);
- else {
- if (r0 != _RAX_REGNO)
- movr(r0, _RAX_REGNO);
- if (r1 != _RAX_REGNO)
- movr(_RAX_REGNO, r1);
- }
- div = r0;
- }
- }
- else if (r2 == _RDX_REGNO) {
- if (r0 == _RAX_REGNO || r0 == _RDX_REGNO) {
- if ((reg = jit_get_reg(jit_class_gpr|jit_class_chk)) == JIT_NOREG)
- reg = jit_get_reg((r1 == _RCX_REGNO ? _RBX : _RCX) |
- jit_class_gpr|jit_class_named);
- use = 1;
- div = rn(reg);
- movr(div, _RDX_REGNO);
- if (r1 != _RAX_REGNO)
- movr(_RAX_REGNO, r1);
- }
- else {
- if (r1 != _RAX_REGNO)
- movr(_RAX_REGNO, r1);
- movr(r0, _RDX_REGNO);
- div = r0;
- }
- }
- else {
- if (r1 != _RAX_REGNO)
- movr(_RAX_REGNO, r1);
- div = r2;
- }
-
- if (sign) {
- sign_extend_rdx_rax();
- idivr(div);
- }
- else {
- ixorr(_RDX_REGNO, _RDX_REGNO);
- idivr_u(div);
- }
-
- if (use)
- jit_unget_reg(reg);
-
- if (divide)
- movr(r0, _RAX_REGNO);
- else
- movr(r0, _RDX_REGNO);
-
- clear(_RDX_REGNO, _RDX);
- clear(_RAX_REGNO, _RAX);
-}
-
-static void
-_divremi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0,
- jit_bool_t sign, jit_bool_t divide)
-{
- jit_int32_t reg;
- jit_int32_t div;
- jit_int32_t sav;
- jit_int32_t set;
- jit_int32_t use;
-
- if (divide) {
- switch (i0) {
- case 1:
- movr(r0, r1);
- return;
- case -1:
- if (sign) {
- negr(r0, r1);
- return;
- }
- break;
- default:
- if (i0 > 0 && !(i0 & (i0 - 1))) {
- movr(r0, r1);
- if (sign)
- rshi(r0, r0, ffsl(i0) - 1);
- else
- rshi_u(r0, r0, ffsl(i0) - 1);
- return;
- }
- break;
- }
- }
- else if (i0 == 1 || (sign && i0 == -1)) {
- ixorr(r0, r0);
- return;
- }
- else if (!sign && i0 > 0 && !(i0 & (i0 - 1))) {
- if (can_sign_extend_int_p(i0)) {
- movr(r0, r1);
- iandi(r0, i0 - 1);
- }
- else if (r0 != r1) {
- movi(r0, i0 - 1);
- iandr(r0, r1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0 - 1);
- iandr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- return;
- }
-
- sav = set = use = 0;
- isavset(_RDX_REGNO);
- isavset(_RAX_REGNO);
- allocr(_RDX_REGNO, _RDX);
- allocr(_RAX_REGNO, _RAX);
-
- if (r0 == _RAX_REGNO || r0 == _RDX_REGNO || r0 == r1) {
- if ((reg = jit_get_reg(jit_class_gpr|jit_class_chk)) == JIT_NOREG)
- reg = jit_get_reg((r1 == _RCX_REGNO ? _RBX : _RCX) |
- jit_class_gpr|jit_class_named);
- use = 1;
- div = rn(reg);
- }
- else
- div = r0;
-
- movi(div, i0);
- movr(_RAX_REGNO, r1);
-
- if (sign) {
- sign_extend_rdx_rax();
- idivr(div);
- }
- else {
- ixorr(_RDX_REGNO, _RDX_REGNO);
- idivr_u(div);
- }
-
- if (use)
- jit_unget_reg(reg);
-
- if (divide)
- movr(r0, _RAX_REGNO);
- else
- movr(r0, _RDX_REGNO);
-
- clear(_RDX_REGNO, _RDX);
- clear(_RAX_REGNO, _RAX);
-}
-
-static void
-_iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
-{
- jit_int32_t div;
- jit_int32_t reg;
- jit_int32_t sav;
- jit_int32_t set;
- jit_int32_t use;
-
- sav = set = use = 0;
- qsavset(_RDX_REGNO);
- qsavset(_RAX_REGNO);
- allocr(_RDX_REGNO, _RDX);
- allocr(_RAX_REGNO, _RAX);
- if (r3 == _RAX_REGNO) {
- if (r0 == _RAX_REGNO || r0 == _RDX_REGNO) {
- if ((reg = jit_get_reg(jit_class_gpr|jit_class_chk)) == JIT_NOREG)
- reg = jit_get_reg((r1 == _RCX_REGNO ? _RBX : _RCX) |
- jit_class_gpr|jit_class_named);
- use = 1;
- div = rn(reg);
- movr(div, _RAX_REGNO);
- if (r2 != _RAX_REGNO)
- movr(_RAX_REGNO, r2);
- }
- else {
- if (r0 == r2)
- xchgr(r0, _RAX_REGNO);
- else {
- if (r0 != _RAX_REGNO)
- movr(r0, _RAX_REGNO);
- if (r2 != _RAX_REGNO)
- movr(_RAX_REGNO, r2);
- }
- div = r0;
- }
- }
- else if (r3 == _RDX_REGNO) {
- if (r0 == _RAX_REGNO || r0 == _RDX_REGNO) {
- if ((reg = jit_get_reg(jit_class_gpr|jit_class_chk)) == JIT_NOREG)
- reg = jit_get_reg((r1 == _RCX_REGNO ? _RBX : _RCX) |
- jit_class_gpr|jit_class_named);
- use = 1;
- div = rn(reg);
- movr(div, _RDX_REGNO);
- if (r2 != _RAX_REGNO)
- movr(_RAX_REGNO, r2);
- }
- else {
- if (r2 != _RAX_REGNO)
- movr(_RAX_REGNO, r2);
- movr(r0, _RDX_REGNO);
- div = r0;
- }
- }
- else {
- if (r2 != _RAX_REGNO)
- movr(_RAX_REGNO, r2);
- div = r3;
- }
- if (sign) {
- sign_extend_rdx_rax();
- idivr(div);
- }
- else {
- ixorr(_RDX_REGNO, _RDX_REGNO);
- idivr_u(div);
- }
- if (use)
- jit_unget_reg(reg);
-
- if (r0 == _RDX_REGNO && r1 == _RAX_REGNO)
- xchgr(_RAX_REGNO, _RDX_REGNO);
- else {
- if (r0 != _RDX_REGNO)
- movr(r0, _RAX_REGNO);
- movr(r1, _RDX_REGNO);
- if (r0 == _RDX_REGNO)
- movr(r0, _RAX_REGNO);
- }
-
- clear(_RDX_REGNO, _RDX);
- clear(_RAX_REGNO, _RAX);
-}
-
-static void
-_iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
- jit_int32_t r2, jit_word_t i0, jit_bool_t sign)
-{
- jit_int32_t reg;
-
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- if (sign)
- qdivr(r0, r1, r2, rn(reg));
- else
- qdivr_u(r0, r1, r2, rn(reg));
- jit_unget_reg(reg);
-}
-#undef clear
-#undef allocr
-#undef savset
-
-static void
-_andr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movr(r0, r1);
- else if (r0 == r1)
- iandr(r0, r2);
- else if (r0 == r2)
- iandr(r0, r1);
- else {
- movr(r0, r1);
- iandr(r0, r2);
- }
-}
-
-static void
-_andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
-
- if (i0 == 0)
- ixorr(r0, r0);
- else if (i0 == -1)
- movr(r0, r1);
- else if (r0 == r1) {
- if (can_sign_extend_int_p(i0))
- iandi(r0, i0);
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- iandr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- }
- else {
- movi(r0, i0);
- iandr(r0, r1);
- }
-}
-
-static void
-_orr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movr(r0, r1);
- else if (r0 == r1)
- iorr(r0, r2);
- else if (r0 == r2)
- iorr(r0, r1);
- else {
- movr(r0, r1);
- iorr(r0, r2);
- }
-}
-
-static void
-_ori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (i0 == 0)
- movr(r0, r1);
- else if (i0 == -1)
- movi(r0, -1);
- else if (can_sign_extend_int_p(i0)) {
- movr(r0, r1);
- iori(r0, i0);
- }
- else if (r0 != r1) {
- movi(r0, i0);
- iorr(r0, r1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- iorr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_xorr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- ixorr(r0, r0);
- else if (r0 == r1)
- ixorr(r0, r2);
- else if (r0 == r2)
- ixorr(r0, r1);
- else {
- movr(r0, r1);
- ixorr(r0, r2);
- }
-}
-
-static void
-_xori(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (i0 == 0)
- movr(r0, r1);
- else if (i0 == -1)
- comr(r0, r1);
- else if (can_sign_extend_int_p(i0)) {
- movr(r0, r1);
- ixori(r0, i0);
- }
- else if (r0 != r1) {
- movi(r0, i0);
- ixorr(r0, r1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ixorr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_irotshr(jit_state_t *_jit, jit_int32_t code, jit_int32_t r0)
-{
- rex(0, WIDE, _RCX_REGNO, _NOREG, r0);
- ic(0xd3);
- mrm(0x03, code, r7(r0));
-}
-
-static void
-_rotshr(jit_state_t *_jit, jit_int32_t code,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_int32_t reg;
- jit_int32_t use;
-
- if (r0 == _RCX_REGNO) {
- reg = jit_get_reg(jit_class_gpr);
- movr(rn(reg), r1);
- if (r2 != _RCX_REGNO)
- movr(_RCX_REGNO, r2);
- irotshr(code, rn(reg));
- movr(_RCX_REGNO, rn(reg));
- jit_unget_reg(reg);
- }
- else if (r2 != _RCX_REGNO) {
- use = !jit_reg_free_p(_RCX);
- if (use) {
- reg = jit_get_reg(jit_class_gpr);
- movr(rn(reg), _RCX_REGNO);
- }
- else
- reg = 0;
- if (r1 == _RCX_REGNO) {
- if (r0 == r2)
- xchgr(r0, _RCX_REGNO);
- else {
- movr(r0, r1);
- movr(_RCX_REGNO, r2);
- }
- }
- else {
- movr(_RCX_REGNO, r2);
- movr(r0, r1);
- }
- irotshr(code, r0);
- if (use) {
- movr(_RCX_REGNO, rn(reg));
- jit_unget_reg(reg);
- }
- }
- else {
- movr(r0, r1);
- irotshr(code, r0);
- }
-}
-
-static void
-_irotshi(jit_state_t *_jit, jit_int32_t code, jit_int32_t r0, jit_word_t i0)
-{
- rex(0, WIDE, _NOREG, _NOREG, r0);
- if (i0 == 1) {
- ic(0xd1);
- mrm(0x03, code, r7(r0));
- }
- else {
- ic(0xc1);
- mrm(0x03, code, r7(r0));
- ic(i0);
- }
-}
-
-static void
-_rotshi(jit_state_t *_jit, jit_int32_t code,
- jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- movr(r0, r1);
- if (i0)
- irotshi(code, r0, i0);
-}
-
-static void
-_lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- if (i0 == 0)
- movr(r0, r1);
- else if (i0 <= 3)
- lea(0, _NOREG, r1, i0 == 1 ? _SCL2 : i0 == 2 ? _SCL4 : _SCL8, r0);
- else
- rotshi(X86_SHL, r0, r1, i0);
-}
-
-static void
-_unr(jit_state_t *_jit, jit_int32_t code, jit_int32_t r0)
-{
- rex(0, WIDE, _NOREG, _NOREG, r0);
- ic(0xf7);
- mrm(0x03, code, r7(r0));
-}
-
-static void
-_negr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1)
- inegr(r0);
- else {
- ixorr(r0, r0);
- isubr(r0, r1);
- }
-}
-
-static void
-_comr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- movr(r0, r1);
- icomr(r0);
-}
-
-#if USE_INC_DEC
-static void
-_incr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- movr(r0, r1);
-# if __X64
- rex(0, WIDE, _NOREG, _NOREG, r0);
- ic(0xff);
- ic(0xc0 | r7(r0));
-# else
- ic(0x40 | r7(r0));
-# endif
-}
-
-static void
-_decr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- movr(r0, r1);
-# if __X64
- rex(0, WIDE, _NOREG, _NOREG, r0);
- ic(0xff);
- ic(0xc8 | r7(r0));
-# else
- ic(0x48 | r7(r0));
-# endif
-}
-#endif
-
-static void
-_cr(jit_state_t *_jit,
- jit_int32_t code, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_int32_t reg;
- jit_bool_t same;
- if (reg8_p(r0)) {
- same = r0 == r1 || r0 == r2;
- if (!same)
- ixorr(r0, r0);
- icmpr(r1, r2);
- if (same)
- imovi(r0, 0);
- cc(code, r0);
- }
- else {
- reg = jit_get_reg(jit_class_gpr|jit_class_rg8);
- ixorr(rn(reg), rn(reg));
- icmpr(r1, r2);
- cc(code, rn(reg));
- movr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ci(jit_state_t *_jit,
- jit_int32_t code, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- jit_bool_t same;
- if (reg8_p(r0)) {
- same = r0 == r1;
- if (!same)
- ixorr(r0, r0);
- icmpi(r1, i0);
- if (same)
- imovi(r0, 0);
- cc(code, r0);
- }
- else {
- reg = jit_get_reg(jit_class_gpr|jit_class_rg8);
- ixorr(rn(reg), rn(reg));
- icmpi(r1, i0);
- cc(code, rn(reg));
- movr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ci0(jit_state_t *_jit, jit_int32_t code, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- jit_bool_t same;
- if (reg8_p(r0)) {
- same = r0 == r1;
- if (!same)
- ixorr(r0, r0);
- testr(r1, r1);
- if (same)
- imovi(r0, 0);
- cc(code, r0);
- }
- else {
- reg = jit_get_reg(jit_class_gpr|jit_class_rg8);
- ixorr(rn(reg), rn(reg));
- testr(r1, r1);
- cc(code, rn(reg));
- movr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ltr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 0);
- else
- cr(X86_CC_L, r0, r1, r2);
-}
-
-static void
-_lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- if (i0)
- ci(X86_CC_L, r0, r1, i0);
- else
- ci0(X86_CC_S, r0, r1);
-}
-
-static void
-_ltr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 0);
- else
- cr(X86_CC_B, r0, r1, r2);
-}
-
-static void
-_ler(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- cr(X86_CC_LE, r0, r1, r2);
-}
-
-static void
-_ler_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- cr(X86_CC_BE, r0, r1, r2);
-}
-
-static void
-_lei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- if (i0)
- ci(X86_CC_BE, r0, r1, i0);
- else
- ci0(X86_CC_E, r0, r1);
-}
-
-static void
-_eqr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- cr(X86_CC_E, r0, r1, r2);
-}
-
-static void
-_eqi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- if (i0)
- ci(X86_CC_E, r0, r1, i0);
- else
- ci0(X86_CC_E, r0, r1);
-}
-
-static void
-_ger(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- cr(X86_CC_GE, r0, r1, r2);
-}
-
-static void
-_gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- if (i0)
- ci(X86_CC_GE, r0, r1, i0);
- else
- ci0(X86_CC_NS, r0, r1);
-}
-
-static void
-_ger_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- cr(X86_CC_AE, r0, r1, r2);
-}
-
-static void
-_gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- if (i0)
- ci(X86_CC_AE, r0, r1, i0);
- else
- ci0(X86_CC_NB, r0, r1);
-}
-
-static void
-_gtr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 0);
- else
- cr(X86_CC_G, r0, r1, r2);
-}
-
-static void
-_gtr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 0);
- else
- cr(X86_CC_A, r0, r1, r2);
-}
-
-static void
-_gti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- if (i0)
- ci(X86_CC_A, r0, r1, i0);
- else
- ci0(X86_CC_NE, r0, r1);
-}
-
-static void
-_ner(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 0);
- else
- cr(X86_CC_NE, r0, r1, r2);
-}
-
-static void
-_nei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- if (i0)
- ci(X86_CC_NE, r0, r1, i0);
- else
- ci0(X86_CC_NE, r0, r1);
-}
-
-static void
-_movr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 != r1) {
- rex(0, 1, r1, _NOREG, r0);
- ic(0x89);
- ic(0xc0 | (r1 << 3) | r7(r0));
- }
-}
-
-static void
-_imovi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
-#if __X64
-# if !__X64_32
- if (fits_uint32_p(i0)) {
-# endif
- rex(0, 0, _NOREG, _NOREG, r0);
- ic(0xb8 | r7(r0));
- ii(i0);
-# if !__X64_32
- }
- else {
- rex(0, 1, _NOREG, _NOREG, r0);
- ic(0xb8 | r7(r0));
- il(i0);
- }
-# endif
-#else
- ic(0xb8 | r7(r0));
- ii(i0);
-#endif
-}
-
-static void
-_movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- if (i0)
- imovi(r0, i0);
- else
- ixorr(r0, r0);
-}
-
-static jit_word_t
-_movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- rex(0, WIDE, _NOREG, _NOREG, r0);
- ic(0xb8 | r7(r0));
- il(i0);
- return (_jit->pc.w);
-}
-
-static void
-_movcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xbe);
- mrm(0x03, r7(r0), r7(r1));
-}
-
-static void
-_movcr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xb6);
- mrm(0x03, r7(r0), r7(r1));
-}
-
-static void
-_movsr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xbf);
- mrm(0x03, r7(r0), r7(r1));
-}
-
-static void
-_movsr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xb7);
- mrm(0x03, r7(r0), r7(r1));
-}
-
-#if __X64
-static void
-_movir(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, 1, r0, _NOREG, r1);
- ic(0x63);
- mrm(0x03, r7(r0), r7(r1));
-}
-
-static void
-_movir_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, 0, r1, _NOREG, r0);
- ic(0x89);
- ic(0xc0 | (r1 << 3) | r7(r0));
-}
-#endif
-
-static void
-_htonr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- extr_us(r0, r1);
- ic(0x66);
- rex(0, 0, _NOREG, _NOREG, r0);
- ic(0xc1);
- mrm(0x03, X86_ROR, r7(r0));
- ic(8);
-}
-
-static void
-_htonr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- movr(r0, r1);
- rex(0, 0, _NOREG, _NOREG, r0);
- ic(0x0f);
- ic(0xc8 | r7(r0));
-}
-
-#if __X64 && !__X64_32
-static void
-_htonr_ul(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- movr(r0, r1);
- rex(0, 1, _NOREG, _NOREG, r0);
- ic(0x0f);
- ic(0xc8 | r7(r0));
-}
-#endif
-
-static void
-_extr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (reg8_p(r1))
- movcr(r0, r1);
- else {
- reg = jit_get_reg(jit_class_gpr|jit_class_rg8);
- movr(rn(reg), r1);
- movcr(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_extr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (reg8_p(r1))
- movcr_u(r0, r1);
- else {
- reg = jit_get_reg(jit_class_gpr|jit_class_rg8);
- movr(rn(reg), r1);
- movcr_u(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ldr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xbe);
- rx(r0, 0, r1, _NOREG, _SCL1);
-}
-
-static void
-_ldi_c(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, r0, _NOREG, _NOREG);
- ic(0x0f);
- ic(0xbe);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldr_c(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ldr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xb6);
- rx(r0, 0, r1, _NOREG, _SCL1);
-}
-
-static void
-_ldi_uc(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, r0, _NOREG, _NOREG);
- ic(0x0f);
- ic(0xb6);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldr_uc(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ldr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xbf);
- rx(r0, 0, r1, _NOREG, _SCL1);
-}
-
-static void
-_ldi_s(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, r0, _NOREG, _NOREG);
- ic(0x0f);
- ic(0xbf);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldr_s(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ldr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xb7);
- rx(r0, 0, r1, _NOREG, _SCL1);
-}
-
-static void
-_ldi_us(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, r0, _NOREG, _NOREG);
- ic(0x0f);
- ic(0xb7);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldr_us(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-#if __X32 || !__X64_32
-static void
-_ldr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
-#if __X64
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x63);
-#else
- ic(0x8b);
-#endif
- rx(r0, 0, r1, _NOREG, _SCL1);
-}
-
-static void
-_ldi_i(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
-#if __X64
- rex(0, WIDE, r0, _NOREG, _NOREG);
- ic(0x63);
-#else
- ic(0x8b);
-#endif
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldr_i(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-#endif
-
-#if __X64
-static void
-_ldr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, 0, r0, _NOREG, r1);
- ic(0x63);
- rx(r0, 0, r1, _NOREG, _SCL1);
-}
-
-static void
-_ldi_ui(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, 0, r0, _NOREG, _NOREG);
- ic(0x63);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldr_ui(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-# if !__X64_32
-static void
-_ldr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, 1, r0, _NOREG, r1);
- ic(0x8b);
- rx(r0, 0, r1, _NOREG, _SCL1);
-}
-
-static void
-_ldi_l(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, 1, r0, _NOREG, _NOREG);
- ic(0x8b);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldr_l(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-# endif
-#endif
-
-static void
-_ldxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- addr(r0, r1, r2);
- ldr_c(r0, r0);
-#else
- rex(0, WIDE, r0, r1, r2);
- ic(0x0f);
- ic(0xbe);
- rx(r0, 0, r2, r1, _SCL1);
-#endif
-}
-
-static void
-_ldxi_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xbe);
- rx(r0, i0, r1, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldxr_c(r0, r1, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ldxr_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- addr(r0, r1, r2);
- ldr_uc(r0, r0);
-#else
- rex(0, WIDE, r0, r1, r2);
- ic(0x0f);
- ic(0xb6);
- rx(r0, 0, r2, r1, _SCL1);
-#endif
-}
-
-static void
-_ldxi_uc(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xb6);
- rx(r0, i0, r1, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldxr_uc(r0, r1, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ldxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- addr(r0, r1, r2);
- ldr_s(r0, r0);
-#else
- rex(0, WIDE, r0, r1, r2);
- ic(0x0f);
- ic(0xbf);
- rx(r0, 0, r2, r1, _SCL1);
-#endif
-}
-
-static void
-_ldxi_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xbf);
- rx(r0, i0, r1, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldxr_s(r0, r1, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_ldxr_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- addr(r0, r1, r2);
- ldr_us(r0, r0);
-#else
- rex(0, WIDE, r0, r1, r2);
- ic(0x0f);
- ic(0xb7);
- rx(r0, 0, r2, r1, _SCL1);
-#endif
-}
-
-static void
-_ldxi_us(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x0f);
- ic(0xb7);
- rx(r0, i0, r1, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldxr_us(r0, r1, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-#if __X64 || !__X64_32
-static void
-_ldxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64
- rex(0, WIDE, r0, r1, r2);
- ic(0x63);
-#else
- ic(0x8b);
-#endif
- rx(r0, 0, r2, r1, _SCL1);
-}
-
-static void
-_ldxi_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
-#if __X64
- rex(0, WIDE, r0, _NOREG, r1);
- ic(0x63);
-#else
- ic(0x8b);
-#endif
- rx(r0, i0, r1, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldxr_i(r0, r1, rn(reg));
- jit_unget_reg(reg);
- }
-}
-#endif
-
-#if __X64
-static void
-_ldxr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- addr(r0, r1, r2);
- /* to avoid confusion with macro renames */
- _ldr_ui(_jit, r0, r0);
-#else
- rex(0, 0, r0, r1, r2);
- ic(0x8b);
- rx(r0, 0, r2, r1, _SCL1);
-#endif
-}
-
-static void
-_ldxi_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, 0, r0, _NOREG, r1);
- ic(0x8b);
- rx(r0, i0, r1, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldxr_ui(r0, r1, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-# if !__X64_32
-static void
-_ldxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- rex(0, 1, r0, r1, r2);
- ic(0x8b);
- rx(r0, 0, r2, r1, _SCL1);
-}
-
-static void
-_ldxi_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, 1, r0, _NOREG, r1);
- ic(0x8b);
- rx(r0, i0, r1, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- ldxr_l(r0, r1, rn(reg));
- jit_unget_reg(reg);
- }
-}
-# endif
-#endif
-
-static void
-_str_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (reg8_p(r1)) {
- rex(0, 0, r1, _NOREG, r0);
- ic(0x88);
- rx(r1, 0, r0, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr|jit_class_rg8);
- movr(rn(reg), r1);
- rex(0, 0, rn(reg), _NOREG, r0);
- ic(0x88);
- rx(rn(reg), 0, r0, _NOREG, _SCL1);
- jit_unget_reg(reg);
- }
-}
-
-static void
-_sti_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- if (reg8_p(r0)) {
- rex(0, 0, r0, _NOREG, _NOREG);
- ic(0x88);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr|jit_class_rg8);
- movr(rn(reg), r0);
- rex(0, 0, rn(reg), _NOREG, _NOREG);
- ic(0x88);
- rx(rn(reg), i0, _NOREG, _NOREG, _SCL1);
- jit_unget_reg(reg);
- }
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- str_c(rn(reg), r0);
- jit_unget_reg(reg);
- }
-}
-
-static void
-_str_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- ic(0x66);
- rex(0, 0, r1, _NOREG, r0);
- ic(0x89);
- rx(r1, 0, r0, _NOREG, _SCL1);
-}
-
-static void
-_sti_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- ic(0x66);
- rex(0, 0, r0, _NOREG, _NOREG);
- ic(0x89);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- str_s(rn(reg), r0);
- jit_unget_reg(reg);
- }
-}
-
-static void
-_str_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, 0, r1, _NOREG, r0);
- ic(0x89);
- rx(r1, 0, r0, _NOREG, _SCL1);
-}
-
-static void
-_sti_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, 0, r0, _NOREG, _NOREG);
- ic(0x89);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- str_i(rn(reg), r0);
- jit_unget_reg(reg);
- }
-}
-
-#if __X64 && !__X64_32
-static void
-_str_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, 1, r1, _NOREG, r0);
- ic(0x89);
- rx(r1, 0, r0, _NOREG, _SCL1);
-}
-
-static void
-_sti_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, 1, r0, _NOREG, _NOREG);
- ic(0x89);
- rx(r0, i0, _NOREG, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- str_l(rn(reg), r0);
- jit_unget_reg(reg);
- }
-}
-#endif
-
-static void
-_stxr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_int32_t reg;
-#if __X64_32
- reg = jit_get_reg(jit_class_gpr);
- addr(rn(reg), r0, r1);
- str_c(rn(reg), r2);
- jit_unget_reg(reg);
-#else
- if (reg8_p(r2)) {
- rex(0, 0, r2, r1, r0);
- ic(0x88);
- rx(r2, 0, r0, r1, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr|jit_class_rg8);
- movr(rn(reg), r2);
- rex(0, 0, rn(reg), r1, r0);
- ic(0x88);
- rx(rn(reg), 0, r0, r1, _SCL1);
- jit_unget_reg(reg);
- }
-#endif
-}
-
-static void
-_stxi_c(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- if (reg8_p(r1)) {
- rex(0, 0, r1, _NOREG, r0);
- ic(0x88);
- rx(r1, i0, r0, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr|jit_class_rg8);
- movr(rn(reg), r1);
- rex(0, 0, rn(reg), _NOREG, r0);
- ic(0x88);
- rx(rn(reg), i0, r0, _NOREG, _SCL1);
- jit_unget_reg(reg);
- }
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- stxr_c(rn(reg), r0, r1);
- jit_unget_reg(reg);
- }
-}
-
-static void
-_stxr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- jit_int32_t reg;
- reg = jit_get_reg(jit_class_gpr);
- addr(rn(reg), r0, r1);
- str_s(rn(reg), r2);
- jit_unget_reg(reg);
-#else
- ic(0x66);
- rex(0, 0, r2, r1, r0);
- ic(0x89);
- rx(r2, 0, r0, r1, _SCL1);
-#endif
-}
-
-static void
-_stxi_s(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- ic(0x66);
- rex(0, 0, r1, _NOREG, r0);
- ic(0x89);
- rx(r1, i0, r0, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- stxr_s(rn(reg), r0, r1);
- jit_unget_reg(reg);
- }
-}
-
-static void
-_stxr_i(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- jit_int32_t reg;
- reg = jit_get_reg(jit_class_gpr);
- addr(rn(reg), r0, r1);
- str_i(rn(reg), r2);
- jit_unget_reg(reg);
-#else
- rex(0, 0, r2, r1, r0);
- ic(0x89);
- rx(r2, 0, r0, r1, _SCL1);
-#endif
-}
-
-static void
-_stxi_i(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, 0, r1, _NOREG, r0);
- ic(0x89);
- rx(r1, i0, r0, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- stxr_i(rn(reg), r0, r1);
- jit_unget_reg(reg);
- }
-}
-
-#if __X64 && !__X64_32
-static void
-_stxr_l(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- rex(0, 1, r2, r1, r0);
- ic(0x89);
- rx(r2, 0, r0, r1, _SCL1);
-}
-
-static void
-_stxi_l(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0)) {
- rex(0, 1, r1, _NOREG, r0);
- ic(0x89);
- rx(r1, i0, r0, _NOREG, _SCL1);
- }
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- stxr_l(rn(reg), r0, r1);
- jit_unget_reg(reg);
- }
-}
-#endif
-
-static void
-_jccs(jit_state_t *_jit, jit_int32_t code, jit_word_t i0)
-{
- jit_word_t w;
- ic(0x70 | code);
- w = i0 - (_jit->pc.w + 1);
- ic(w);
-}
-
-static void
-_jcc(jit_state_t *_jit, jit_int32_t code, jit_word_t i0)
-{
- jit_word_t w;
- ic(0x0f);
- ic(0x80 | code);
- w = i0 - (_jit->pc.w + 4);
- ii(w);
-}
-
-static void
-_jcr(jit_state_t *_jit,
- jit_int32_t code, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- alur(X86_CMP, r0, r1);
- jcc(code, i0);
-}
-
-static void
-_jci(jit_state_t *_jit,
- jit_int32_t code, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- alui(X86_CMP, r0, i1);
- jcc(code, i0);
-}
-
-static void
-_jci0(jit_state_t *_jit, jit_int32_t code, jit_word_t i0, jit_int32_t r0)
-{
- testr(r0, r0);
- jcc(code, i0);
-}
-
-static jit_word_t
-_bltr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jcr(X86_CC_L, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- if (i1) jci (X86_CC_L, i0, r0, i1);
- else jci0(X86_CC_S, i0, r0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bltr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jcr(X86_CC_B, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- if (i1) jci (X86_CC_B, i0, r0, i1);
- else jci0(X86_CC_B, i0, r0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bler(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1) jmpi(i0);
- else jcr (X86_CC_LE, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_blei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- if (i1) jci (X86_CC_LE, i0, r0, i1);
- else jci0(X86_CC_LE, i0, r0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bler_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1) jmpi(i0);
- else jcr (X86_CC_BE, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_blei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- if (i1) jci (X86_CC_BE, i0, r0, i1);
- else jci0(X86_CC_BE, i0, r0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_beqr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1) jmpi(i0);
- else jcr (X86_CC_E, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_beqi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- if (i1) jci (X86_CC_E, i0, r0, i1);
- else jci0(X86_CC_E, i0, r0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bger(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1) jmpi(i0);
- else jcr (X86_CC_GE, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- if (i1) jci (X86_CC_GE, i0, r0, i1);
- else jci0(X86_CC_NS, i0, r0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bger_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1) jmpi(i0);
- else jcr (X86_CC_AE, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- if (i1) jci (X86_CC_AE, i0, r0, i1);
- else jmpi(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bgtr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jcr(X86_CC_G, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bgti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jci(X86_CC_G, i0, r0, i1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bgtr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jcr(X86_CC_A, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bgti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- if (i1) jci (X86_CC_A, i0, r0, i1);
- else jci0(X86_CC_NE, i0, r0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bner(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jcr(X86_CC_NE, i0, r0, r1);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bnei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- if (i1) jci (X86_CC_NE, i0, r0, i1);
- else jci0(X86_CC_NE, i0, r0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bmsr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- testr(r0, r1);
- jnz(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bmsi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_zero_extend_int_p(i1))
- testi(r0, i1);
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i1);
- testr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- jnz(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bmcr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- testr(r0, r1);
- jz(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bmci(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_zero_extend_int_p(i1))
- testi(r0, i1);
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i1);
- testr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- jz(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_boaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- iaddr(r0, r1);
- jo(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_boaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i1)) {
- iaddi(r0, i1);
- jo(i0);
- return (_jit->pc.w);
- }
- reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
- movi(rn(reg), i1);
- jit_unget_reg(reg);
- return (boaddr(i0, r0, rn(reg)));
-}
-
-static jit_word_t
-_boaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- iaddr(r0, r1);
- jc(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_boaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i1)) {
- iaddi(r0, i1);
- jc(i0);
- return (_jit->pc.w);
- }
- reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
- movi(rn(reg), i1);
- jit_unget_reg(reg);
- return (boaddr_u(i0, r0, rn(reg)));
-}
-
-static jit_word_t
-_bxaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- iaddr(r0, r1);
- jno(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bxaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i1)) {
- iaddi(r0, i1);
- jno(i0);
- return (_jit->pc.w);
- }
- reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
- movi(rn(reg), i1);
- jit_unget_reg(reg);
- return (bxaddr(i0, r0, rn(reg)));
-}
-
-static jit_word_t
-_bxaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- iaddr(r0, r1);
- jnc(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bxaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i1)) {
- iaddi(r0, i1);
- jnc(i0);
- return (_jit->pc.w);
- }
- reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
- movi(rn(reg), i1);
- jit_unget_reg(reg);
- return (bxaddr_u(i0, r0, rn(reg)));
-}
-
-static jit_word_t
-_bosubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- isubr(r0, r1);
- jo(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bosubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i1)) {
- isubi(r0, i1);
- jo(i0);
- return (_jit->pc.w);
- }
- reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
- movi(rn(reg), i1);
- jit_unget_reg(reg);
- return (bosubr(i0, r0, rn(reg)));
-}
-
-static jit_word_t
-_bosubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- isubr(r0, r1);
- jc(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bosubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i1)) {
- isubi(r0, i1);
- jc(i0);
- return (_jit->pc.w);
- }
- reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
- movi(rn(reg), i1);
- jit_unget_reg(reg);
- return (bosubr_u(i0, r0, rn(reg)));
-}
-
-static jit_word_t
-_bxsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- isubr(r0, r1);
- jno(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bxsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i1)) {
- isubi(r0, i1);
- jno(i0);
- return (_jit->pc.w);
- }
- reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
- movi(rn(reg), i1);
- jit_unget_reg(reg);
- return (bxsubr(i0, r0, rn(reg)));
-}
-
-static jit_word_t
-_bxsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- isubr(r0, r1);
- jnc(i0);
- return (_jit->pc.w);
-}
-
-static jit_word_t
-_bxsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i1)) {
- isubi(r0, i1);
- jnc(i0);
- return (_jit->pc.w);
- }
- reg = jit_get_reg(jit_class_gpr|jit_class_nospill);
- movi(rn(reg), i1);
- jit_unget_reg(reg);
- return (bxsubr_u(i0, r0, rn(reg)));
-}
-
-static void
-_callr(jit_state_t *_jit, jit_int32_t r0)
-{
- rex(0, 0, _NOREG, _NOREG, r0);
- ic(0xff);
- mrm(0x03, 0x02, r7(r0));
-}
-
-static jit_word_t
-_calli(jit_state_t *_jit, jit_word_t i0)
-{
- jit_word_t word;
-#if __X64
- jit_int32_t reg;
-
- reg = jit_get_reg(jit_class_gpr);
- word = movi_p(rn(reg), i0);
- callr(rn(reg));
- jit_unget_reg(reg);
-#else
- jit_word_t w;
- ic(0xe8);
- w = i0 - (_jit->pc.w + 4);
- ii(w);
- word = _jit->pc.w;
-#endif
- return (word);
-}
-
-static void
-_jmpr(jit_state_t *_jit, jit_int32_t r0)
-{
- rex(0, WIDE, _NOREG, _NOREG, r0);
- ic(0xff);
- mrm(0x03, 0x04, r7(r0));
-}
-
-static jit_word_t
-_jmpi(jit_state_t *_jit, jit_word_t i0)
-{
- jit_word_t w;
- ic(0xe9);
- w = i0 - (_jit->pc.w + 4);
- ii(w);
- return (_jit->pc.w);
-}
-
-static void
-_jmpsi(jit_state_t *_jit, jit_uint8_t i0)
-{
- ic(0xeb);
- ic(i0);
-}
-
-static void
-_prolog(jit_state_t *_jit, jit_node_t *node)
-{
- jit_int32_t reg;
- if (_jitc->function->define_frame || _jitc->function->assume_frame) {
- jit_int32_t frame = -_jitc->function->frame;
- assert(_jitc->function->self.aoff >= frame);
- if (_jitc->function->assume_frame)
- return;
- _jitc->function->self.aoff = frame;
- }
- if (_jitc->function->allocar)
- _jitc->function->self.aoff &= -16;
-#if __X64 && __CYGWIN__
- _jitc->function->stack = (((/* first 32 bytes must be allocated */
- (_jitc->function->self.alen > 32 ?
- _jitc->function->self.alen : 32) -
- /* align stack at 16 bytes */
- _jitc->function->self.aoff) + 15) & -16) +
- stack_adjust;
-#else
- _jitc->function->stack = (((_jitc->function->self.alen -
- _jitc->function->self.aoff) + 15) & -16) +
- stack_adjust;
-#endif
- subi(_RSP_REGNO, _RSP_REGNO, stack_framesize - REAL_WORDSIZE);
- /* callee save registers */
-#if __X32
- if (jit_regset_tstbit(&_jitc->function->regset, _RDI))
- stxi(12, _RSP_REGNO, _RDI_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _RSI))
- stxi( 8, _RSP_REGNO, _RSI_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _RBX))
- stxi( 4, _RSP_REGNO, _RBX_REGNO);
-#else
-# if __CYGWIN__
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM15))
- sse_stxi_d(136, _RSP_REGNO, _XMM15_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM14))
- sse_stxi_d(128, _RSP_REGNO, _XMM14_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM13))
- sse_stxi_d(120, _RSP_REGNO, _XMM13_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM12))
- sse_stxi_d(112, _RSP_REGNO, _XMM12_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM11))
- sse_stxi_d(104, _RSP_REGNO, _XMM11_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM10))
- sse_stxi_d(96, _RSP_REGNO, _XMM10_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM9))
- sse_stxi_d(88, _RSP_REGNO, _XMM9_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM8))
- sse_stxi_d(80, _RSP_REGNO, _XMM8_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM7))
- sse_stxi_d(72, _RSP_REGNO, _XMM7_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM6))
- sse_stxi_d(64, _RSP_REGNO, _XMM6_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _R15))
- stxi(56, _RSP_REGNO, _R15_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _R14))
- stxi(48, _RSP_REGNO, _R14_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _R13))
- stxi(40, _RSP_REGNO, _R13_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _R12))
- stxi(32, _RSP_REGNO, _R12_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _RSI))
- stxi(24, _RSP_REGNO, _RSI_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _RDI))
- stxi(16, _RSP_REGNO, _RDI_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _RBX))
- stxi( 8, _RSP_REGNO, _RBX_REGNO);
-# else
- if (jit_regset_tstbit(&_jitc->function->regset, _RBX))
- stxi(40, _RSP_REGNO, _RBX_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _R12))
- stxi(32, _RSP_REGNO, _R12_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _R13))
- stxi(24, _RSP_REGNO, _R13_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _R14))
- stxi(16, _RSP_REGNO, _R14_REGNO);
- if (jit_regset_tstbit(&_jitc->function->regset, _R15))
- stxi( 8, _RSP_REGNO, _R15_REGNO);
-# endif
-#endif
- stxi(0, _RSP_REGNO, _RBP_REGNO);
- movr(_RBP_REGNO, _RSP_REGNO);
-
- /* alloca */
- subi(_RSP_REGNO, _RSP_REGNO, _jitc->function->stack);
- if (_jitc->function->allocar) {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), _jitc->function->self.aoff);
- stxi_i(_jitc->function->aoffoff, _RBP_REGNO, rn(reg));
- jit_unget_reg(reg);
- }
-
-#if __X64 && !__CYGWIN__
- if (_jitc->function->self.call & jit_call_varargs) {
- jit_word_t nofp_code;
-
- /* Save gp registers in the save area, if any is a vararg */
- for (reg = first_gp_from_offset(_jitc->function->vagp);
- jit_arg_reg_p(reg); ++reg)
- stxi(_jitc->function->vaoff + first_gp_offset +
- reg * 8, _RBP_REGNO, rn(JIT_RA0 - reg));
-
- reg = first_fp_from_offset(_jitc->function->vafp);
- if (jit_arg_f_reg_p(reg)) {
- /* Skip over if no float registers were passed as argument */
- /* test %al, %al */
- ic(0x84);
- ic(0xc0);
- jes(0);
- nofp_code = _jit->pc.w;
-
- /* Save fp registers in the save area, if any is a vararg */
- /* Note that the full 16 byte xmm is not saved, because
- * lightning only handles float and double, and, while
- * attempting to provide a va_list compatible pointer as
- * jit_va_start return, does not guarantee it (on all ports). */
- for (; jit_arg_f_reg_p(reg); ++reg)
- sse_stxi_d(_jitc->function->vaoff + first_fp_offset +
- reg * va_fp_increment, _RBP_REGNO, rn(_XMM0 - reg));
-
- patch_rel_char(nofp_code, _jit->pc.w);
- }
- }
-#endif
-}
-
-static void
-_epilog(jit_state_t *_jit, jit_node_t *node)
-{
- if (_jitc->function->assume_frame)
- return;
- /* callee save registers */
- movr(_RSP_REGNO, _RBP_REGNO);
-#if __X32
- if (jit_regset_tstbit(&_jitc->function->regset, _RDI))
- ldxi(_RDI_REGNO, _RSP_REGNO, 12);
- if (jit_regset_tstbit(&_jitc->function->regset, _RSI))
- ldxi(_RSI_REGNO, _RSP_REGNO, 8);
- if (jit_regset_tstbit(&_jitc->function->regset, _RBX))
- ldxi(_RBX_REGNO, _RSP_REGNO, 4);
-#else
-# if __CYGWIN__
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM15))
- sse_ldxi_d(_XMM15_REGNO, _RSP_REGNO, 136);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM14))
- sse_ldxi_d(_XMM14_REGNO, _RSP_REGNO, 128);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM13))
- sse_ldxi_d(_XMM13_REGNO, _RSP_REGNO, 120);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM12))
- sse_ldxi_d(_XMM12_REGNO, _RSP_REGNO, 112);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM11))
- sse_ldxi_d(_XMM11_REGNO, _RSP_REGNO, 104);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM10))
- sse_ldxi_d(_XMM10_REGNO, _RSP_REGNO, 96);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM9))
- sse_ldxi_d(_XMM9_REGNO, _RSP_REGNO, 88);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM8))
- sse_ldxi_d(_XMM8_REGNO, _RSP_REGNO, 80);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM7))
- sse_ldxi_d(_XMM7_REGNO, _RSP_REGNO, 72);
- if (jit_regset_tstbit(&_jitc->function->regset, _XMM6))
- sse_ldxi_d(_XMM6_REGNO, _RSP_REGNO, 64);
- if (jit_regset_tstbit(&_jitc->function->regset, _R15))
- ldxi(_R15_REGNO, _RSP_REGNO, 56);
- if (jit_regset_tstbit(&_jitc->function->regset, _R14))
- ldxi(_R14_REGNO, _RSP_REGNO, 48);
- if (jit_regset_tstbit(&_jitc->function->regset, _R13))
- ldxi(_R13_REGNO, _RSP_REGNO, 40);
- if (jit_regset_tstbit(&_jitc->function->regset, _R12))
- ldxi(_R12_REGNO, _RSP_REGNO, 32);
- if (jit_regset_tstbit(&_jitc->function->regset, _RSI))
- ldxi(_RSI_REGNO, _RSP_REGNO, 24);
- if (jit_regset_tstbit(&_jitc->function->regset, _RDI))
- ldxi(_RDI_REGNO, _RSP_REGNO, 16);
- if (jit_regset_tstbit(&_jitc->function->regset, _RBX))
- ldxi(_RBX_REGNO, _RSP_REGNO, 8);
-# else
- if (jit_regset_tstbit(&_jitc->function->regset, _RBX))
- ldxi(_RBX_REGNO, _RSP_REGNO, 40);
- if (jit_regset_tstbit(&_jitc->function->regset, _R12))
- ldxi(_R12_REGNO, _RSP_REGNO, 32);
- if (jit_regset_tstbit(&_jitc->function->regset, _R13))
- ldxi(_R13_REGNO, _RSP_REGNO, 24);
- if (jit_regset_tstbit(&_jitc->function->regset, _R14))
- ldxi(_R14_REGNO, _RSP_REGNO, 16);
- if (jit_regset_tstbit(&_jitc->function->regset, _R15))
- ldxi(_R15_REGNO, _RSP_REGNO, 8);
-# endif
-#endif
- ldxi(_RBP_REGNO, _RSP_REGNO, 0);
- addi(_RSP_REGNO, _RSP_REGNO, stack_framesize - REAL_WORDSIZE);
-
- ic(0xc3);
-}
-
-static void
-_vastart(jit_state_t *_jit, jit_int32_t r0)
-{
-#if __X32 || __CYGWIN__
- assert(_jitc->function->self.call & jit_call_varargs);
- addi(r0, _RBP_REGNO, _jitc->function->self.size);
-#else
- jit_int32_t reg;
-
- assert(_jitc->function->self.call & jit_call_varargs);
-
- /* Return jit_va_list_t in the register argument */
- addi(r0, _RBP_REGNO, _jitc->function->vaoff);
- reg = jit_get_reg(jit_class_gpr);
-
- /* Initialize gp offset in the save area. */
- movi(rn(reg), _jitc->function->vagp);
- stxi_i(offsetof(jit_va_list_t, gpoff), r0, rn(reg));
-
- /* Initialize fp offset in the save area. */
- movi(rn(reg), _jitc->function->vafp);
- stxi_i(offsetof(jit_va_list_t, fpoff), r0, rn(reg));
-
- /* Initialize overflow pointer to the first stack argument. */
- addi(rn(reg), _RBP_REGNO, _jitc->function->self.size);
- stxi(offsetof(jit_va_list_t, over), r0, rn(reg));
-
- /* Initialize register save area pointer. */
- addi(rn(reg), r0, first_gp_offset);
- stxi(offsetof(jit_va_list_t, save), r0, rn(reg));
-
- jit_unget_reg(reg);
-#endif
-}
-
-static void
-_vaarg(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
-#if __X32 || __CYGWIN__
- assert(_jitc->function->self.call & jit_call_varargs);
- ldr(r0, r1);
- addi(r1, r1, va_gp_increment);
-#else
- jit_int32_t rg0;
- jit_int32_t rg1;
- jit_word_t ge_code;
- jit_word_t lt_code;
-
- assert(_jitc->function->self.call & jit_call_varargs);
-
- rg0 = jit_get_reg(jit_class_gpr);
- rg1 = jit_get_reg(jit_class_gpr);
-
- /* Load the gp offset in save area in the first temporary. */
- ldxi_i(rn(rg0), r1, offsetof(jit_va_list_t, gpoff));
-
- /* Jump over if there are no remaining arguments in the save area. */
- icmpi(rn(rg0), va_gp_max_offset);
- jaes(0);
- ge_code = _jit->pc.w;
-
- /* Load the save area pointer in the second temporary. */
- ldxi(rn(rg1), r1, offsetof(jit_va_list_t, save));
-
- /* Load the vararg argument in the first argument. */
- ldxr(r0, rn(rg1), rn(rg0));
-
- /* Update the gp offset. */
- addi(rn(rg0), rn(rg0), 8);
- stxi_i(offsetof(jit_va_list_t, gpoff), r1, rn(rg0));
-
- /* Will only need one temporary register below. */
- jit_unget_reg(rg1);
-
- /* Jump over overflow code. */
- jmpsi(0);
- lt_code = _jit->pc.w;
-
- /* Where to land if argument is in overflow area. */
- patch_rel_char(ge_code, _jit->pc.w);
-
- /* Load overflow pointer. */
- ldxi(rn(rg0), r1, offsetof(jit_va_list_t, over));
-
- /* Load argument. */
- ldr(r0, rn(rg0));
-
- /* Update overflow pointer. */
- addi(rn(rg0), rn(rg0), va_gp_increment);
- stxi(offsetof(jit_va_list_t, over), r1, rn(rg0));
-
- /* Where to land if argument is in save area. */
- patch_rel_char(lt_code, _jit->pc.w);
-
- jit_unget_reg(rg0);
-#endif
-}
-
-/* The x87 boolean argument tells if will put the result in a x87
- * register if non false, in a sse register otherwise. */
-static void
-_vaarg_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_bool_t x87)
-{
-#if __X32 || __CYGWIN__
- assert(_jitc->function->self.call & jit_call_varargs);
- if (x87)
- x87_ldr_d(r0, r1);
- else
- sse_ldr_d(r0, r1);
- addi(r1, r1, 8);
-#else
- jit_int32_t rg0;
- jit_int32_t rg1;
- jit_word_t ge_code;
- jit_word_t lt_code;
-
- assert(_jitc->function->self.call & jit_call_varargs);
-
- rg0 = jit_get_reg(jit_class_gpr);
- rg1 = jit_get_reg(jit_class_gpr);
-
- /* Load the fp offset in save area in the first temporary. */
- ldxi_i(rn(rg0), r1, offsetof(jit_va_list_t, fpoff));
-
- /* Jump over if there are no remaining arguments in the save area. */
- icmpi(rn(rg0), va_fp_max_offset);
- jaes(0);
- ge_code = _jit->pc.w;
-
- /* Load the save area pointer in the second temporary. */
- ldxi(rn(rg1), r1, offsetof(jit_va_list_t, save));
-
- /* Load the vararg argument in the first argument. */
- if (x87)
- x87_ldxr_d(r0, rn(rg1), rn(rg0));
- else
- sse_ldxr_d(r0, rn(rg1), rn(rg0));
-
- /* Update the fp offset. */
- addi(rn(rg0), rn(rg0), va_fp_increment);
- stxi_i(offsetof(jit_va_list_t, fpoff), r1, rn(rg0));
-
- /* Will only need one temporary register below. */
- jit_unget_reg(rg1);
-
- /* Jump over overflow code. */
- jmpsi(0);
- lt_code = _jit->pc.w;
-
- /* Where to land if argument is in overflow area. */
- patch_rel_char(ge_code, _jit->pc.w);
-
- /* Load overflow pointer. */
- ldxi(rn(rg0), r1, offsetof(jit_va_list_t, over));
-
- /* Load argument. */
- if (x87)
- x87_ldr_d(r0, rn(rg0));
- else
- sse_ldr_d(r0, rn(rg0));
-
- /* Update overflow pointer. */
- addi(rn(rg0), rn(rg0), 8);
- stxi(offsetof(jit_va_list_t, over), r1, rn(rg0));
-
- /* Where to land if argument is in save area. */
- patch_rel_char(lt_code, _jit->pc.w);
-
- jit_unget_reg(rg0);
-#endif
-}
-
-static void
-_patch_at(jit_state_t *_jit, jit_node_t *node,
- jit_word_t instr, jit_word_t label)
-{
- switch (node->code) {
-# if __X64
- case jit_code_calli:
-# endif
- case jit_code_movi:
- patch_abs(instr, label);
- break;
- default:
- patch_rel(instr, label);
- break;
- }
-}
-
-# if __X64 && !defined(HAVE_FFSL)
-static int
-ffsl(long i)
-{
- int bit;
-# if __CYGWIN__
- /* Bug workaround */
- if ((int)i == (int)0x80000000)
- bit = 32;
- else
-# endif
- if ((bit = ffs((int)i)) == 0) {
- if ((bit = ffs((int)((unsigned long)i >> 32))))
- bit += 32;
- }
- return (bit);
-}
-# endif
-#endif
diff --git a/libguile/lightning/lib/jit_x86-sse.c b/libguile/lightning/lib/jit_x86-sse.c
deleted file mode 100644
index 448c94293..000000000
--- a/libguile/lightning/lib/jit_x86-sse.c
+++ /dev/null
@@ -1,1569 +0,0 @@
-/*
- * Copyright (C) 2012-2017 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#if PROTO
-# if __X32
-# define sse_address_p(i0) 1
-# else
-# if __X64_32
-# define sse_address_p(i0) ((jit_word_t)(i0) >= 0)
-# else
-# define sse_address_p(i0) can_sign_extend_int_p(i0)
-# endif
-# endif
-# define _XMM6_REGNO 6
-# define _XMM7_REGNO 7
-# define _XMM8_REGNO 8
-# define _XMM9_REGNO 9
-# define _XMM10_REGNO 10
-# define _XMM11_REGNO 11
-# define _XMM12_REGNO 12
-# define _XMM13_REGNO 13
-# define _XMM14_REGNO 14
-# define _XMM15_REGNO 15
-#define X86_SSE_MOV 0x10
-#define X86_SSE_MOV1 0x11
-#define X86_SSE_MOVLP 0x12
-#define X86_SSE_MOVHP 0x16
-#define X86_SSE_MOVA 0x28
-#define X86_SSE_CVTIS 0x2a
-#define X86_SSE_CVTTSI 0x2c
-#define X86_SSE_CVTSI 0x2d
-#define X86_SSE_UCOMI 0x2e
-#define X86_SSE_COMI 0x2f
-#define X86_SSE_ROUND 0x3a
-#define X86_SSE_SQRT 0x51
-#define X86_SSE_RSQRT 0x52
-#define X86_SSE_RCP 0x53
-#define X86_SSE_AND 0x54
-#define X86_SSE_ANDN 0x55
-#define X86_SSE_OR 0x56
-#define X86_SSE_XOR 0x57
-#define X86_SSE_ADD 0x58
-#define X86_SSE_MUL 0x59
-#define X86_SSE_CVTSD 0x5a
-#define X86_SSE_CVTDT 0x5b
-#define X86_SSE_SUB 0x5c
-#define X86_SSE_MIN 0x5d
-#define X86_SSE_DIV 0x5e
-#define X86_SSE_MAX 0x5f
-#define X86_SSE_X2G 0x6e
-#define X86_SSE_EQB 0x74
-#define X86_SSE_EQW 0x75
-#define X86_SSE_EQD 0x76
-#define X86_SSE_G2X 0x7e
-#define X86_SSE_MOV2 0xd6
-# define sser(c,r0,r1) _sser(_jit,c,r0,r1)
-static void _sser(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define ssexr(p,c,r0,r1) _ssexr(_jit,p,c,r0,r1)
-static void _ssexr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
-# define ssexi(c,r0,m,i) _ssexi(_jit,c,r0,m,i)
-static void _ssexi(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
-# define addssr(r0, r1) ssexr(0xf3, X86_SSE_ADD, r0, r1)
-# define addsdr(r0, r1) ssexr(0xf2, X86_SSE_ADD, r0, r1)
-# define subssr(r0, r1) ssexr(0xf3, X86_SSE_SUB, r0, r1)
-# define subsdr(r0, r1) ssexr(0xf2, X86_SSE_SUB, r0, r1)
-# define mulssr(r0, r1) ssexr(0xf3, X86_SSE_MUL, r0, r1)
-# define mulsdr(r0, r1) ssexr(0xf2, X86_SSE_MUL, r0, r1)
-# define divssr(r0, r1) ssexr(0xf3, X86_SSE_DIV, r0, r1)
-# define divsdr(r0, r1) ssexr(0xf2, X86_SSE_DIV, r0, r1)
-# define andpsr(r0, r1) sser( X86_SSE_AND, r0, r1)
-# define andpdr(r0, r1) ssexr(0x66, X86_SSE_AND, r0, r1)
-# define sse_truncr_f_i(r0, r1) ssexr(0xf3, X86_SSE_CVTTSI, r0, r1)
-# define sse_truncr_d_i(r0, r1) ssexr(0xf2, X86_SSE_CVTTSI, r0, r1)
-# if __X64
-# define sse_truncr_f_l(r0, r1) sselxr(0xf3, X86_SSE_CVTTSI, r0, r1)
-# define sse_truncr_d_l(r0, r1) sselxr(0xf2, X86_SSE_CVTTSI, r0, r1)
-# define sse_extr_f(r0, r1) sselxr(0xf3, X86_SSE_CVTIS, r0, r1)
-# define sse_extr_d(r0, r1) sselxr(0xf2, X86_SSE_CVTIS, r0, r1)
-# else
-# define sse_extr_f(r0, r1) ssexr(0xf3, X86_SSE_CVTIS, r0, r1)
-# define sse_extr_d(r0, r1) ssexr(0xf2, X86_SSE_CVTIS, r0, r1)
-# endif
-# define sse_extr_f_d(r0, r1) ssexr(0xf3, X86_SSE_CVTSD, r0, r1)
-# define sse_extr_d_f(r0, r1) ssexr(0xf2, X86_SSE_CVTSD, r0, r1)
-# define ucomissr(r0,r1) sser(X86_SSE_UCOMI,r0,r1)
-# define ucomisdr(r0,r1) ssexr(0x66,X86_SSE_UCOMI,r0,r1)
-# define xorpsr(r0,r1) sser(X86_SSE_XOR,r0,r1)
-# define xorpdr(r0,r1) ssexr(0x66,X86_SSE_XOR,r0,r1)
-# define movdlxr(r0,r1) ssexr(0x66, X86_SSE_X2G,r0,r1)
-# define pcmpeqlr(r0, r1) ssexr(0x66, X86_SSE_EQD, r0, r1)
-# define psrl(r0, i0) ssexi(0x72, r0, 0x02, i0)
-# define psrq(r0, i0) ssexi(0x73, r0, 0x02, i0)
-# define psll(r0, i0) ssexi(0x72, r0, 0x06, i0)
-# define pslq(r0, i0) ssexi(0x73, r0, 0x06, i0)
-# define movdqxr(r0,r1) sselxr(0x66,X86_SSE_X2G,r0,r1)
-# if __X64 && !__X64_32
-# define sselxr(p,c,r0,r1) _sselxr(_jit,p,c,r0,r1)
-static void
-_sselxr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
-# else
-# define sselxr(p,c,r0,r1) ssexr(p,c,r0,r1)
-# endif
-# define ssexrx(p,c,md,rb,ri,ms,rd) _ssexrx(_jit,p,c,md,rb,ri,ms,rd)
-# define movssmr(md,rb,ri,ms,rd) ssexrx(0xf3,X86_SSE_MOV,md,rb,ri,ms,rd)
-# define movsdmr(md,rb,ri,ms,rd) ssexrx(0xf2,X86_SSE_MOV,md,rb,ri,ms,rd)
-# define movssrm(rs,md,mb,mi,ms) ssexrx(0xf3,X86_SSE_MOV1,md,mb,mi,ms,rs)
-# define movsdrm(rs,md,mb,mi,ms) ssexrx(0xf2,X86_SSE_MOV1,md,mb,mi,ms,rs)
-static void
-_ssexrx(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t,
- jit_int32_t, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_addr_f(r0, r1, r2) _sse_addr_f(_jit, r0, r1, r2)
-static void _sse_addr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_addi_f(r0, r1, i0) _sse_addi_f(_jit, r0, r1, i0)
-static void _sse_addi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_addr_d(r0, r1, r2) _sse_addr_d(_jit, r0, r1, r2)
-static void _sse_addr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_addi_d(r0, r1, i0) _sse_addi_d(_jit, r0, r1, i0)
-static void _sse_addi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_subr_f(r0, r1, r2) _sse_subr_f(_jit, r0, r1, r2)
-static void _sse_subr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_subi_f(r0, r1, i0) _sse_subi_f(_jit, r0, r1, i0)
-static void _sse_subi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_subr_d(r0, r1, r2) _sse_subr_d(_jit, r0, r1, r2)
-static void _sse_subr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_subi_d(r0, r1, i0) _sse_subi_d(_jit, r0, r1, i0)
-static void _sse_subi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_rsbr_f(r0, r1, r2) sse_subr_f(r0, r2, r1)
-# define sse_rsbi_f(r0, r1, i0) _sse_rsbi_f(_jit, r0, r1, i0)
-static void _sse_rsbi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_rsbr_d(r0, r1, r2) sse_subr_d(r0, r2, r1)
-# define sse_rsbi_d(r0, r1, i0) _sse_rsbi_d(_jit, r0, r1, i0)
-static void _sse_rsbi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_mulr_f(r0, r1, r2) _sse_mulr_f(_jit, r0, r1, r2)
-static void _sse_mulr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_muli_f(r0, r1, i0) _sse_muli_f(_jit, r0, r1, i0)
-static void _sse_muli_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_mulr_d(r0, r1, r2) _sse_mulr_d(_jit, r0, r1, r2)
-static void _sse_mulr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_muli_d(r0, r1, i0) _sse_muli_d(_jit, r0, r1, i0)
-static void _sse_muli_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_divr_f(r0, r1, r2) _sse_divr_f(_jit, r0, r1, r2)
-static void _sse_divr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_divi_f(r0, r1, i0) _sse_divi_f(_jit, r0, r1, i0)
-static void _sse_divi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_divr_d(r0, r1, r2) _sse_divr_d(_jit, r0, r1, r2)
-static void _sse_divr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_divi_d(r0, r1, i0) _sse_divi_d(_jit, r0, r1, i0)
-static void _sse_divi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_absr_f(r0, r1) _sse_absr_f(_jit, r0, r1)
-static void _sse_absr_f(jit_state_t*,jit_int32_t,jit_int32_t);
-# define sse_absr_d(r0, r1) _sse_absr_d(_jit, r0, r1)
-static void _sse_absr_d(jit_state_t*,jit_int32_t,jit_int32_t);
-# define sse_negr_f(r0, r1) _sse_negr_f(_jit, r0, r1)
-static void _sse_negr_f(jit_state_t*,jit_int32_t,jit_int32_t);
-# define sse_negr_d(r0, r1) _sse_negr_d(_jit, r0, r1)
-static void _sse_negr_d(jit_state_t*,jit_int32_t,jit_int32_t);
-# define sse_sqrtr_f(r0, r1) ssexr(0xf3, X86_SSE_SQRT, r0, r1)
-# define sse_sqrtr_d(r0, r1) ssexr(0xf2, X86_SSE_SQRT, r0, r1)
-# define ssecmpf(code, r0, r1, r2) _ssecmp(_jit, 0, code, r0, r1, r2)
-# define ssecmpd(code, r0, r1, r2) _ssecmp(_jit, 1, code, r0, r1, r2)
-static void
-_ssecmp(jit_state_t*, jit_bool_t, jit_int32_t,
- jit_int32_t, jit_int32_t, jit_int32_t);
-#define sse_movr_f(r0,r1) _sse_movr_f(_jit,r0,r1)
-static void _sse_movr_f(jit_state_t*, jit_int32_t, jit_int32_t);
-#define sse_movi_f(r0,i0) _sse_movi_f(_jit,r0,i0)
-static void _sse_movi_f(jit_state_t*, jit_int32_t, jit_float32_t*);
-# define sse_lti_f(r0, r1, i0) _sse_lti_f(_jit, r0, r1, i0)
-static void _sse_lti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_ltr_f(r0, r1, r2) ssecmpf(X86_CC_A, r0, r1, r2)
-# define sse_lei_f(r0, r1, i0) _sse_lei_f(_jit, r0, r1, i0)
-static void _sse_lei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_ler_f(r0, r1, r2) ssecmpf(X86_CC_AE, r0, r1, r2)
-# define sse_eqi_f(r0, r1, i0) _sse_eqi_f(_jit, r0, r1, i0)
-static void _sse_eqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_eqr_f(r0, r1, r2) _sse_eqr_f(_jit, r0, r1, r2)
-static void _sse_eqr_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_gei_f(r0, r1, i0) _sse_gei_f(_jit, r0, r1, i0)
-static void _sse_gei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_ger_f(r0, r1, r2) ssecmpf(X86_CC_AE, r0, r2, r1)
-# define sse_gti_f(r0, r1, i0) _sse_gti_f(_jit, r0, r1, i0)
-static void _sse_gti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_gtr_f(r0, r1, r2) ssecmpf(X86_CC_A, r0, r2, r1)
-# define sse_nei_f(r0, r1, i0) _sse_nei_f(_jit, r0, r1, i0)
-static void _sse_nei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_ner_f(r0, r1, r2) _sse_ner_f(_jit, r0, r1, r2)
-static void _sse_ner_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_unlti_f(r0, r1, i0) _sse_unlti_f(_jit, r0, r1, i0)
-static void _sse_unlti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_unltr_f(r0, r1, r2) ssecmpf(X86_CC_NAE, r0, r2, r1)
-# define sse_unlei_f(r0, r1, i0) _sse_unlei_f(_jit, r0, r1, i0)
-static void _sse_unlei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_unler_f(r0, r1, r2) _sse_unler_f(_jit, r0, r1, r2)
-# define sse_uneqi_f(r0, r1, i0) _sse_uneqi_f(_jit, r0, r1, i0)
-static void _sse_uneqi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-static void _sse_unler_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_uneqr_f(r0, r1, r2) _sse_uneqr_f(_jit, r0, r1, r2)
-static void _sse_uneqr_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_ungei_f(r0, r1, i0) _sse_ungei_f(_jit, r0, r1, i0)
-static void _sse_ungei_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_unger_f(r0, r1, r2) _sse_unger_f(_jit, r0, r1, r2)
-static void _sse_unger_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_ungti_f(r0, r1, i0) _sse_ungti_f(_jit, r0, r1, i0)
-static void _sse_ungti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_ungtr_f(r0, r1, r2) ssecmpf(X86_CC_NAE, r0, r1, r2)
-# define sse_ltgti_f(r0, r1, i0) _sse_ltgti_f(_jit, r0, r1, i0)
-static void _sse_ltgti_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_ltgtr_f(r0, r1, r2) _sse_ltgtr_f(_jit, r0, r1, r2)
-static void _sse_ltgtr_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_ordi_f(r0, r1, i0) _sse_ordi_f(_jit, r0, r1, i0)
-static void _sse_ordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_ordr_f(r0, r1, r2) ssecmpf(X86_CC_NP, r0, r2, r1)
-# define sse_unordi_f(r0, r1, i0) _sse_unordi_f(_jit, r0, r1, i0)
-static void _sse_unordi_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_float32_t*);
-# define sse_unordr_f(r0, r1, r2) ssecmpf(X86_CC_P, r0, r2, r1)
-# define sse_ldr_f(r0, r1) movssmr(0, r1, _NOREG, _SCL1, r0)
-# define sse_ldi_f(r0, i0) _sse_ldi_f(_jit, r0, i0)
-static void _sse_ldi_f(jit_state_t*, jit_int32_t, jit_word_t);
-# define sse_ldxr_f(r0, r1, r2) _sse_ldxr_f(_jit, r0, r1, r2)
-static void _sse_ldxr_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_ldxi_f(r0, r1, i0) _sse_ldxi_f(_jit, r0, r1, i0)
-static void _sse_ldxi_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define sse_str_f(r0, r1) movssrm(r1, 0, r0, _NOREG, _SCL1)
-# define sse_sti_f(i0, r0) _sse_sti_f(_jit, i0, r0)
-static void _sse_sti_f(jit_state_t*, jit_word_t,jit_int32_t);
-# define sse_stxr_f(r0, r1, r2) _sse_stxr_f(_jit, r0, r1, r2)
-static void _sse_stxr_f(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_stxi_f(i0, r0, r1) _sse_stxi_f(_jit, i0, r0, r1)
-static void _sse_stxi_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bltr_f(i0, r0, r1) _sse_bltr_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bltr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_blti_f(i0, r0, i1) _sse_blti_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_blti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bler_f(i0, r0, r1) _sse_bler_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bler_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_blei_f(i0, r0, i1) _sse_blei_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_blei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_beqr_f(i0, r0, r1) _sse_beqr_f(_jit, i0, r0, r1)
-static jit_word_t _sse_beqr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_beqi_f(i0, r0, i1) _sse_beqi_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_beqi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bger_f(i0, r0, r1) _sse_bger_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bger_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bgei_f(i0, r0, i1) _sse_bgei_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bgei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bgtr_f(i0, r0, r1) _sse_bgtr_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bgtr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bgti_f(i0, r0, i1) _sse_bgti_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bgti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bner_f(i0, r0, r1) _sse_bner_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bner_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bnei_f(i0, r0, i1) _sse_bnei_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bnei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bunltr_f(i0, r0, r1) _sse_bunltr_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bunltr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bunlti_f(i0, r0, i1) _sse_bunlti_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bunlti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bunler_f(i0, r0, r1) _sse_bunler_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bunler_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bunlei_f(i0, r0, i1) _sse_bunlei_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bunlei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_buneqr_f(i0, r0, r1) _sse_buneqr_f(_jit, i0, r0, r1)
-static jit_word_t _sse_buneqr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_buneqi_f(i0, r0, i1) _sse_buneqi_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_buneqi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bunger_f(i0, r0, r1) _sse_bunger_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bunger_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bungei_f(i0, r0, i1) _sse_bungei_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bungei_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bungtr_f(i0, r0, r1) _sse_bungtr_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bungtr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bungti_f(i0, r0, i1) _sse_bungti_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bungti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bltgtr_f(i0, r0, r1) _sse_bltgtr_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bltgtr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bltgti_f(i0, r0, i1) _sse_bltgti_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bltgti_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bordr_f(i0, r0, r1) _sse_bordr_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bordr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bordi_f(i0, r0, i1) _sse_bordi_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bordi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-# define sse_bunordr_f(i0, r0, r1) _sse_bunordr_f(_jit, i0, r0, r1)
-static jit_word_t _sse_bunordr_f(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bunordi_f(i0, r0, i1) _sse_bunordi_f(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bunordi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_float32_t*);
-#define sse_movr_d(r0,r1) _sse_movr_d(_jit,r0,r1)
-static void _sse_movr_d(jit_state_t*, jit_int32_t, jit_int32_t);
-#define sse_movi_d(r0,i0) _sse_movi_d(_jit,r0,i0)
-static void _sse_movi_d(jit_state_t*, jit_int32_t, jit_float64_t*);
-# define sse_ltr_d(r0, r1, r2) ssecmpd(X86_CC_A, r0, r1, r2)
-# define sse_lti_d(r0, r1, i0) _sse_lti_d(_jit, r0, r1, i0)
-static void _sse_lti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_ler_d(r0, r1, r2) ssecmpd(X86_CC_AE, r0, r1, r2)
-# define sse_lei_d(r0, r1, i0) _sse_lei_d(_jit, r0, r1, i0)
-static void _sse_lei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_eqr_d(r0, r1, r2) _sse_eqr_d(_jit, r0, r1, r2)
-static void _sse_eqr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_eqi_d(r0, r1, i0) _sse_eqi_d(_jit, r0, r1, i0)
-static void _sse_eqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_ger_d(r0, r1, r2) ssecmpd(X86_CC_AE, r0, r2, r1)
-# define sse_gei_d(r0, r1, i0) _sse_gei_d(_jit, r0, r1, i0)
-static void _sse_gei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_gtr_d(r0, r1, r2) ssecmpd(X86_CC_A, r0, r2, r1)
-# define sse_gti_d(r0, r1, i0) _sse_gti_d(_jit, r0, r1, i0)
-static void _sse_gti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_ner_d(r0, r1, r2) _sse_ner_d(_jit, r0, r1, r2)
-static void _sse_ner_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_nei_d(r0, r1, i0) _sse_nei_d(_jit, r0, r1, i0)
-static void _sse_nei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_unltr_d(r0, r1, r2) ssecmpd(X86_CC_NAE, r0, r2, r1)
-# define sse_unlti_d(r0, r1, i0) _sse_unlti_d(_jit, r0, r1, i0)
-static void _sse_unlti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_unler_d(r0, r1, r2) _sse_unler_d(_jit, r0, r1, r2)
-static void _sse_unler_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_unlei_d(r0, r1, i0) _sse_unlei_d(_jit, r0, r1, i0)
-static void _sse_unlei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_uneqr_d(r0, r1, r2) _sse_uneqr_d(_jit, r0, r1, r2)
-static void _sse_uneqr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_uneqi_d(r0, r1, i0) _sse_uneqi_d(_jit, r0, r1, i0)
-static void _sse_uneqi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_unger_d(r0, r1, r2) _sse_unger_d(_jit, r0, r1, r2)
-static void _sse_unger_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_ungei_d(r0, r1, i0) _sse_ungei_d(_jit, r0, r1, i0)
-static void _sse_ungei_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_ungtr_d(r0, r1, r2) ssecmpd(X86_CC_NAE, r0, r1, r2)
-# define sse_ungti_d(r0, r1, i0) _sse_ungti_d(_jit, r0, r1, i0)
-static void _sse_ungti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_ltgtr_d(r0, r1, r2) _sse_ltgtr_d(_jit, r0, r1, r2)
-static void _sse_ltgtr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_ltgti_d(r0, r1, i0) _sse_ltgti_d(_jit, r0, r1, i0)
-static void _sse_ltgti_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_ordr_d(r0, r1, r2) ssecmpd(X86_CC_NP, r0, r2, r1)
-# define sse_ordi_d(r0, r1, i0) _sse_ordi_d(_jit, r0, r1, i0)
-static void _sse_ordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_unordr_d(r0, r1, r2) ssecmpd(X86_CC_P, r0, r2, r1)
-# define sse_unordi_d(r0, r1, i0) _sse_unordi_d(_jit, r0, r1, i0)
-static void _sse_unordi_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_float64_t*);
-# define sse_ldr_d(r0, r1) movsdmr(0, r1, _NOREG, _SCL1, r0)
-# define sse_ldi_d(r0, i0) _sse_ldi_d(_jit, r0, i0)
-static void _sse_ldi_d(jit_state_t*, jit_int32_t, jit_word_t);
-# define sse_ldxr_d(r0, r1, r2) _sse_ldxr_d(_jit, r0, r1, r2)
-static void _sse_ldxr_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-# define sse_ldxi_d(r0, r1, i0) _sse_ldxi_d(_jit, r0, r1, i0)
-static void _sse_ldxi_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-# define sse_bltr_d(i0, r0, r1) _sse_bltr_d(_jit, i0, r0, r1)
-# define sse_str_d(r0, r1) movsdrm(r1, 0, r0, _NOREG, _SCL1)
-# define sse_sti_d(i0, r0) _sse_sti_d(_jit, i0, r0)
-static void _sse_sti_d(jit_state_t*, jit_word_t,jit_int32_t);
-# define sse_stxr_d(r0, r1, r2) _sse_stxr_d(_jit, r0, r1, r2)
-static void _sse_stxr_d(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define sse_stxi_d(i0, r0, r1) _sse_stxi_d(_jit, i0, r0, r1)
-static void _sse_stxi_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-static jit_word_t _sse_bltr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_blti_d(i0, r0, i1) _sse_blti_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_blti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bler_d(i0, r0, r1) _sse_bler_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bler_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_blei_d(i0, r0, i1) _sse_blei_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_blei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_beqr_d(i0, r0, r1) _sse_beqr_d(_jit, i0, r0, r1)
-static jit_word_t _sse_beqr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_beqi_d(i0, r0, i1) _sse_beqi_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_beqi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bger_d(i0, r0, r1) _sse_bger_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bger_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bgei_d(i0, r0, i1) _sse_bgei_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bgei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bgtr_d(i0, r0, r1) _sse_bgtr_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bgtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bgti_d(i0, r0, i1) _sse_bgti_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bgti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bner_d(i0, r0, r1) _sse_bner_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bner_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bnei_d(i0, r0, i1) _sse_bnei_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bnei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bunltr_d(i0, r0, r1) _sse_bunltr_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bunltr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bunlti_d(i0, r0, i1) _sse_bunlti_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bunlti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bunler_d(i0, r0, r1) _sse_bunler_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bunler_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bunlei_d(i0, r0, i1) _sse_bunlei_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bunlei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_buneqr_d(i0, r0, r1) _sse_buneqr_d(_jit, i0, r0, r1)
-static jit_word_t _sse_buneqr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_buneqi_d(i0, r0, i1) _sse_buneqi_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_buneqi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bunger_d(i0, r0, r1) _sse_bunger_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bunger_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bungei_d(i0, r0, i1) _sse_bungei_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bungei_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bungtr_d(i0, r0, r1) _sse_bungtr_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bungtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bungti_d(i0, r0, i1) _sse_bungti_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bungti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bltgtr_d(i0, r0, r1) _sse_bltgtr_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bltgtr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bltgti_d(i0, r0, i1) _sse_bltgti_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bltgti_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bordr_d(i0, r0, r1) _sse_bordr_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bordr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bordi_d(i0, r0, i1) _sse_bordi_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bordi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-# define sse_bunordr_d(i0, r0, r1) _sse_bunordr_d(_jit, i0, r0, r1)
-static jit_word_t _sse_bunordr_d(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-# define sse_bunordi_d(i0, r0, i1) _sse_bunordi_d(_jit, i0, r0, i1)
-static jit_word_t
-_sse_bunordi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_float64_t*);
-#endif
-
-#if CODE
-# define fpr_opi(name, type, size) \
-static void \
-_sse_##name##i_##type(jit_state_t *_jit, \
- jit_int32_t r0, jit_int32_t r1, \
- jit_float##size##_t *i0) \
-{ \
- jit_int32_t reg = jit_get_reg(jit_class_fpr|jit_class_xpr); \
- assert(jit_sse_reg_p(reg)); \
- sse_movi_##type(rn(reg), i0); \
- sse_##name##r_##type(r0, r1, rn(reg)); \
- jit_unget_reg(reg); \
-}
-# define fpr_bopi(name, type, size) \
-static jit_word_t \
-_sse_b##name##i_##type(jit_state_t *_jit, \
- jit_word_t i0, jit_int32_t r0, \
- jit_float##size##_t *i1) \
-{ \
- jit_word_t word; \
- jit_int32_t reg = jit_get_reg(jit_class_fpr|jit_class_xpr| \
- jit_class_nospill); \
- assert(jit_sse_reg_p(reg)); \
- sse_movi_##type(rn(reg), i1); \
- word = sse_b##name##r_##type(i0, r0, rn(reg)); \
- jit_unget_reg(reg); \
- return (word); \
-}
-# define fopi(name) fpr_opi(name, f, 32)
-# define fbopi(name) fpr_bopi(name, f, 32)
-# define dopi(name) fpr_opi(name, d, 64)
-# define dbopi(name) fpr_bopi(name, d, 64)
-static void
-_sser(jit_state_t *_jit, jit_int32_t c, jit_int32_t r0, jit_int32_t r1)
-{
- rex(0, 0, r0, 0, r1);
- ic(0x0f);
- ic(c);
- mrm(0x03, r7(r0), r7(r1));
-}
-
-static void
-_ssexr(jit_state_t *_jit, jit_int32_t p, jit_int32_t c,
- jit_int32_t r0, jit_int32_t r1)
-{
- ic(p);
- rex(0, 0, r0, 0, r1);
- ic(0x0f);
- ic(c);
- mrm(0x03, r7(r0), r7(r1));
-}
-
-static void
-_ssexi(jit_state_t *_jit, jit_int32_t c, jit_int32_t r0,
- jit_int32_t m, jit_int32_t i)
-{
- ic(0x66);
- rex(0, 0, 0, 0, r0);
- ic(0x0f);
- ic(c);
- mrm(0x03, r7(m), r7(r0));
- ic(i);
-}
-
-#if __X64
-static void
-_sselxr(jit_state_t *_jit, jit_int32_t p, jit_int32_t c,
- jit_int32_t r0, jit_int32_t r1)
-{
- ic(p);
- rex(0, 1, r0, 0, r1);
- ic(0x0f);
- ic(c);
- mrm(0x03, r7(r0), r7(r1));
-}
-#endif
-
-static void
-_ssexrx(jit_state_t *_jit, jit_int32_t px, jit_int32_t code, jit_int32_t md,
- jit_int32_t rb, jit_int32_t ri, jit_int32_t ms, jit_int32_t rd)
-{
- ic(px);
- rex(0, 0, rd, ri, rb);
- ic(0x0f);
- ic(code);
- rx(rd, md, rb, ri, ms);
-}
-
-static void
-_sse_addr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r0 == r1)
- addssr(r0, r2);
- else if (r0 == r2)
- addssr(r0, r1);
- else {
- sse_movr_f(r0, r1);
- addssr(r0, r2);
- }
-}
-
-fopi(add)
-
-static void
-_sse_addr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r0 == r1)
- addsdr(r0, r2);
- else if (r0 == r2)
- addsdr(r0, r1);
- else {
- sse_movr_d(r0, r1);
- addsdr(r0, r2);
- }
-}
-
-dopi(add)
-
-static void
-_sse_subr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_int32_t reg;
- if (r0 == r1)
- subssr(r0, r2);
- else if (r0 == r2) {
- reg = jit_get_reg(jit_class_fpr|jit_class_xpr);
- sse_movr_f(rn(reg), r0);
- sse_movr_f(r0, r1);
- subssr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- sse_movr_f(r0, r1);
- subssr(r0, r2);
- }
-}
-
-fopi(sub)
-
-static void
-_sse_subr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_int32_t reg;
- if (r0 == r1)
- subsdr(r0, r2);
- else if (r0 == r2) {
- reg = jit_get_reg(jit_class_fpr|jit_class_xpr);
- sse_movr_d(rn(reg), r0);
- sse_movr_d(r0, r1);
- subsdr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- sse_movr_d(r0, r1);
- subsdr(r0, r2);
- }
-}
-
-dopi(sub)
-
-fopi(rsb)
-
-dopi(rsb)
-
-static void
-_sse_mulr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r0 == r1)
- mulssr(r0, r2);
- else if (r0 == r2)
- mulssr(r0, r1);
- else {
- sse_movr_f(r0, r1);
- mulssr(r0, r2);
- }
-}
-
-fopi(mul)
-
-static void
-_sse_mulr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r0 == r1)
- mulsdr(r0, r2);
- else if (r0 == r2)
- mulsdr(r0, r1);
- else {
- sse_movr_d(r0, r1);
- mulsdr(r0, r2);
- }
-}
-
-dopi(mul)
-
-static void
-_sse_divr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_int32_t reg;
- if (r0 == r1)
- divssr(r0, r2);
- else if (r0 == r2) {
- reg = jit_get_reg(jit_class_fpr|jit_class_xpr);
- sse_movr_f(rn(reg), r0);
- sse_movr_f(r0, r1);
- divssr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- sse_movr_f(r0, r1);
- divssr(r0, r2);
- }
-}
-
-fopi(div)
-
-static void
-_sse_divr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_int32_t reg;
- if (r0 == r1)
- divsdr(r0, r2);
- else if (r0 == r2) {
- reg = jit_get_reg(jit_class_fpr|jit_class_xpr);
- sse_movr_d(rn(reg), r0);
- sse_movr_d(r0, r1);
- divsdr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- sse_movr_d(r0, r1);
- divsdr(r0, r2);
- }
-}
-
-dopi(div)
-
-static void
-_sse_absr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (r0 == r1) {
- reg = jit_get_reg(jit_class_fpr|jit_class_xpr);
- pcmpeqlr(rn(reg), rn(reg));
- psrl(rn(reg), 1);
- andpsr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- pcmpeqlr(r0, r0);
- psrl(r0, 1);
- andpsr(r0, r1);
- }
-}
-
-static void
-_sse_absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (r0 == r1) {
- reg = jit_get_reg(jit_class_fpr|jit_class_xpr);
- pcmpeqlr(rn(reg), rn(reg));
- psrq(rn(reg), 1);
- andpdr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- else {
- pcmpeqlr(r0, r0);
- psrq(r0, 1);
- andpdr(r0, r1);
- }
-}
-
-static void
-_sse_negr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t freg, ireg;
- ireg = jit_get_reg(jit_class_gpr);
- imovi(rn(ireg), 0x80000000);
- if (r0 == r1) {
- freg = jit_get_reg(jit_class_fpr|jit_class_xpr);
- movdlxr(rn(freg), rn(ireg));
- xorpsr(r0, rn(freg));
- jit_unget_reg(freg);
- }
- else {
- movdlxr(r0, rn(ireg));
- xorpsr(r0, r1);
- }
- jit_unget_reg(ireg);
-}
-
-static void
-_sse_negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t freg, ireg;
- ireg = jit_get_reg(jit_class_gpr);
- imovi(rn(ireg), 0x80000000);
- if (r0 == r1) {
- freg = jit_get_reg(jit_class_fpr|jit_class_xpr);
- movdlxr(rn(freg), rn(ireg));
- pslq(rn(freg), 32);
- xorpdr(r0, rn(freg));
- jit_unget_reg(freg);
- }
- else {
- movdlxr(r0, rn(ireg));
- pslq(r0, 32);
- xorpdr(r0, r1);
- }
- jit_unget_reg(ireg);
-}
-
-static void
-_ssecmp(jit_state_t *_jit, jit_bool_t d, jit_int32_t code,
- jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_bool_t rc;
- jit_int32_t reg;
- if ((rc = reg8_p(r0)))
- reg = r0;
- else {
- reg = _RAX_REGNO;
- movr(r0, reg);
- }
- ixorr(reg, reg);
- if (d)
- ucomisdr(r2, r1);
- else
- ucomissr(r2, r1);
- cc(code, reg);
- if (!rc)
- xchgr(r0, reg);
-}
-
-static void
-_sse_movr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 != r1)
- ssexr(0xf3, X86_SSE_MOV, r0, r1);
-}
-
-static void
-_sse_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t *i0)
-{
- union {
- jit_int32_t i;
- jit_float32_t f;
- } data;
- jit_int32_t reg;
- jit_bool_t ldi;
-
- data.f = *i0;
- if (data.f == 0.0 && !(data.i & 0x80000000))
- xorpsr(r0, r0);
- else {
- ldi = !_jitc->no_data;
-#if __X64
- /* if will allocate a register for offset, just use immediate */
- if (ldi && !sse_address_p(i0))
- ldi = 0;
-#endif
- if (ldi)
- sse_ldi_f(r0, (jit_word_t)i0);
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), data.i);
- movdlxr(r0, rn(reg));
- jit_unget_reg(reg);
- }
- }
-}
-
-fopi(lt)
-fopi(le)
-
-static void
-_sse_eqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_bool_t rc;
- jit_int32_t reg;
- jit_word_t jp_code;
- if ((rc = reg8_p(r0)))
- reg = r0;
- else {
- reg = _RAX_REGNO;
- movr(r0, _RAX_REGNO);
- }
- ixorr(reg, reg);
- ucomissr(r2, r1);
- jpes(0);
- jp_code = _jit->pc.w;
- cc(X86_CC_E, reg);
- patch_rel_char(jp_code, _jit->pc.w);
- if (!rc)
- xchgr(r0, reg);
-}
-
-fopi(eq)
-fopi(ge)
-fopi(gt)
-
-static void
-_sse_ner_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_bool_t rc;
- jit_int32_t reg;
- jit_word_t jp_code;
- if ((rc = reg8_p(r0)))
- reg = r0;
- else {
- reg = _RAX_REGNO;
- movr(r0, _RAX_REGNO);
- }
- imovi(reg, 1);
- ucomissr(r2, r1);
- jpes(0);
- jp_code = _jit->pc.w;
- cc(X86_CC_NE, reg);
- patch_rel_char(jp_code, _jit->pc.w);
- if (!rc)
- xchgr(r0, reg);
-}
-
-fopi(ne)
-fopi(unlt)
-
-static void
-_sse_unler_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- ssecmpf(X86_CC_NA, r0, r2, r1);
-}
-
-fopi(unle)
-
-static void
-_sse_uneqr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- ssecmpf(X86_CC_E, r0, r1, r2);
-}
-
-fopi(uneq)
-
-static void
-_sse_unger_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- ssecmpf(X86_CC_NA, r0, r1, r2);
-}
-
-fopi(unge)
-fopi(ungt)
-
-static void
-_sse_ltgtr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- ixorr(r0, r0);
- else
- ssecmpf(X86_CC_NE, r0, r1, r2);
-}
-
-fopi(ltgt)
-fopi(ord)
-fopi(unord)
-
-static void
-_sse_ldi_f(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (sse_address_p(i0))
- movssmr(i0, _NOREG, _NOREG, _SCL1, r0);
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- sse_ldr_f(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_sse_ldxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- jit_int32_t reg;
- reg = jit_get_reg(jit_class_gpr);
- addr(rn(reg), r1, r2);
- sse_ldr_f(r0, rn(reg));
- jit_unget_reg(reg);
-#else
- movssmr(0, r1, r2, _SCL1, r0);
-#endif
-}
-
-static void
-_sse_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0))
- movssmr(i0, r1, _NOREG, _SCL1, r0);
- else {
- reg = jit_get_reg(jit_class_gpr);
-#if __X64_32
- addi(rn(reg), r1, i0);
- sse_ldr_f(r0, rn(reg));
-#else
- movi(rn(reg), i0);
- sse_ldxr_f(r0, r1, rn(reg));
-#endif
- jit_unget_reg(reg);
- }
-}
-
-static void
-_sse_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
-{
- jit_int32_t reg;
- if (sse_address_p(i0))
- movssrm(r0, i0, _NOREG, _NOREG, _SCL1);
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- sse_str_f(rn(reg), r0);
- jit_unget_reg(reg);
- }
-}
-
-static void
-_sse_stxr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- jit_int32_t reg;
- reg = jit_get_reg(jit_class_gpr);
- addr(rn(reg), r0, r1);
- sse_str_f(rn(reg), r2);
- jit_unget_reg(reg);
-#else
- movssrm(r2, 0, r0, r1, _SCL1);
-#endif
-}
-
-static void
-_sse_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0))
- movssrm(r1, i0, r0, _NOREG, _SCL1);
- else {
- reg = jit_get_reg(jit_class_gpr);
-#if __X64_32
- addi(rn(reg), r0, i0);
- sse_str_f(rn(reg), r1);
-#else
- movi(rn(reg), i0);
- sse_stxr_f(rn(reg), r0, r1);
-#endif
- jit_unget_reg(reg);
- }
-}
-
-static jit_word_t
-_sse_bltr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomissr(r1, r0);
- ja(i0);
- return (_jit->pc.w);
-}
-fbopi(lt)
-
-static jit_word_t
-_sse_bler_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomissr(r1, r0);
- jae(i0);
- return (_jit->pc.w);
-}
-fbopi(le)
-
-static jit_word_t
-_sse_beqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_word_t jp_code;
- ucomissr(r0, r1);
- jps(0);
- jp_code = _jit->pc.w;
- je(i0);
- patch_rel_char(jp_code, _jit->pc.w);
- return (_jit->pc.w);
-}
-fbopi(eq)
-
-static jit_word_t
-_sse_bger_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomissr(r0, r1);
- jae(i0);
- return (_jit->pc.w);
-}
-fbopi(ge)
-
-static jit_word_t
-_sse_bgtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomissr(r0, r1);
- ja(i0);
- return (_jit->pc.w);
-}
-fbopi(gt)
-
-static jit_word_t
-_sse_bner_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_word_t jp_code;
- jit_word_t jz_code;
- ucomissr(r0, r1);
- jps(0);
- jp_code = _jit->pc.w;
- jzs(0);
- jz_code = _jit->pc.w;
- patch_rel_char(jp_code, _jit->pc.w);
- jmpi(i0);
- patch_rel_char(jz_code, _jit->pc.w);
- return (_jit->pc.w);
-}
-fbopi(ne)
-
-static jit_word_t
-_sse_bunltr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomissr(r0, r1);
- jnae(i0);
- return (_jit->pc.w);
-}
-fbopi(unlt)
-
-static jit_word_t
-_sse_bunler_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1)
- jmpi(i0);
- else {
- ucomissr(r0, r1);
- jna(i0);
- }
- return (_jit->pc.w);
-}
-fbopi(unle)
-
-static jit_word_t
-_sse_buneqr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1)
- jmpi(i0);
- else {
- ucomissr(r0, r1);
- je(i0);
- }
- return (_jit->pc.w);
-}
-fbopi(uneq)
-
-static jit_word_t
-_sse_bunger_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1)
- jmpi(i0);
- else {
- ucomissr(r1, r0);
- jna(i0);
- }
- return (_jit->pc.w);
-}
-fbopi(unge)
-
-static jit_word_t
-_sse_bungtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomissr(r1, r0);
- jnae(i0);
- return (_jit->pc.w);
-}
-fbopi(ungt)
-
-static jit_word_t
-_sse_bltgtr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomissr(r0, r1);
- jne(i0);
- return (_jit->pc.w);
-}
-fbopi(ltgt)
-
-static jit_word_t
-_sse_bordr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomissr(r0, r1);
- jnp(i0);
- return (_jit->pc.w);
-}
-fbopi(ord)
-
-static jit_word_t
-_sse_bunordr_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomissr(r0, r1);
- jp(i0);
- return (_jit->pc.w);
-}
-fbopi(unord)
-
-dopi(lt)
-dopi(le)
-
-static void
-_sse_eqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_bool_t rc;
- jit_int32_t reg;
- jit_word_t jp_code;
- if ((rc = reg8_p(r0)))
- reg = r0;
- else {
- reg = _RAX_REGNO;
- movr(r0, _RAX_REGNO);
- }
- ixorr(reg, reg);
- ucomisdr(r2, r1);
- jpes(0);
- jp_code = _jit->pc.w;
- cc(X86_CC_E, reg);
- patch_rel_char(jp_code, _jit->pc.w);
- if (!rc)
- xchgr(r0, reg);
-}
-
-dopi(eq)
-dopi(ge)
-dopi(gt)
-
-static void
-_sse_ner_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- jit_bool_t rc;
- jit_int32_t reg;
- jit_word_t jp_code;
- if ((rc = reg8_p(r0)))
- reg = r0;
- else {
- reg = _RAX_REGNO;
- movr(r0, _RAX_REGNO);
- }
- imovi(reg, 1);
- ucomisdr(r2, r1);
- jpes(0);
- jp_code = _jit->pc.w;
- cc(X86_CC_NE, reg);
- patch_rel_char(jp_code, _jit->pc.w);
- if (!rc)
- xchgr(r0, reg);
-}
-
-dopi(ne)
-dopi(unlt)
-
-static void
-_sse_unler_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- ssecmpd(X86_CC_NA, r0, r2, r1);
-}
-
-dopi(unle)
-
-static void
-_sse_uneqr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- ssecmpd(X86_CC_E, r0, r1, r2);
-}
-
-dopi(uneq)
-
-static void
-_sse_unger_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- movi(r0, 1);
- else
- ssecmpd(X86_CC_NA, r0, r1, r2);
-}
-
-dopi(unge)
-dopi(ungt)
-
-static void
-_sse_ltgtr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
- if (r1 == r2)
- ixorr(r0, r0);
- else
- ssecmpd(X86_CC_NE, r0, r1, r2);
-}
-
-dopi(ltgt)
-dopi(ord)
-dopi(unord)
-
-static void
-_sse_movr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 != r1)
- ssexr(0xf2, X86_SSE_MOV, r0, r1);
-}
-
-static void
-_sse_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t *i0)
-{
- union {
- jit_int32_t ii[2];
- jit_word_t w;
- jit_float64_t d;
- } data;
- jit_int32_t reg;
- jit_bool_t ldi;
-
- data.d = *i0;
- if (data.d == 0.0 && !(data.ii[1] & 0x80000000))
- xorpdr(r0, r0);
- else {
- ldi = !_jitc->no_data;
-#if __X64
- /* if will allocate a register for offset, just use immediate */
- if (ldi && !sse_address_p(i0))
- ldi = 0;
-#endif
- if (ldi)
- sse_ldi_d(r0, (jit_word_t)i0);
- else {
- reg = jit_get_reg(jit_class_gpr);
-#if __X64 && !__X64_32
- movi(rn(reg), data.w);
- movdqxr(r0, rn(reg));
- jit_unget_reg(reg);
-#else
- movi(rn(reg), data.ii[0]);
- stxi_i(CVT_OFFSET, _RBP_REGNO, rn(reg));
- movi(rn(reg), data.ii[1]);
- stxi_i(CVT_OFFSET + 4, _RBP_REGNO, rn(reg));
- jit_unget_reg(reg);
- sse_ldxi_d(r0, _RBP_REGNO, CVT_OFFSET);
-#endif
- }
- }
-}
-
-static void
-_sse_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
-{
- jit_int32_t reg;
- if (sse_address_p(i0))
- movsdmr(i0, _NOREG, _NOREG, _SCL1, r0);
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- sse_ldr_d(r0, rn(reg));
- jit_unget_reg(reg);
- }
-}
-
-static void
-_sse_ldxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- jit_int32_t reg;
- reg = jit_get_reg(jit_class_gpr);
- addr(rn(reg), r1, r2);
- sse_ldr_d(r0, rn(reg));
- jit_unget_reg(reg);
-#else
- movsdmr(0, r1, r2, _SCL1, r0);
-#endif
-}
-
-static void
-_sse_ldxi_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0))
- movsdmr(i0, r1, _NOREG, _SCL1, r0);
- else {
- reg = jit_get_reg(jit_class_gpr);
-#if __X64_32
- addi(rn(reg), r1, i0);
- sse_ldr_d(r0, rn(reg));
-#else
- movi(rn(reg), i0);
- sse_ldxr_d(r0, r1, rn(reg));
-#endif
- jit_unget_reg(reg);
- }
-}
-
-static void
-_sse_sti_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
-{
- jit_int32_t reg;
- if (sse_address_p(i0))
- movsdrm(r0, i0, _NOREG, _NOREG, _SCL1);
- else {
- reg = jit_get_reg(jit_class_gpr);
- movi(rn(reg), i0);
- sse_str_d(rn(reg), r0);
- jit_unget_reg(reg);
- }
-}
-
-static void
-_sse_stxr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
-{
-#if __X64_32
- jit_int32_t reg;
- reg = jit_get_reg(jit_class_gpr);
- addr(rn(reg), r0, r1);
- sse_str_d(rn(reg), r2);
- jit_unget_reg(reg);
-#else
- movsdrm(r2, 0, r0, r1, _SCL1);
-#endif
-}
-
-static void
-_sse_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_int32_t reg;
- if (can_sign_extend_int_p(i0))
- movsdrm(r1, i0, r0, _NOREG, _SCL1);
- else {
- reg = jit_get_reg(jit_class_gpr);
-#if __X64_32
- addi(rn(reg), r0, i0);
- sse_str_d(rn(reg), r1);
-#else
- movi(rn(reg), i0);
- sse_stxr_f(rn(reg), r0, r1);
-#endif
- jit_unget_reg(reg);
- }
-}
-
-static jit_word_t
-_sse_bltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomisdr(r1, r0);
- ja(i0);
- return (_jit->pc.w);
-}
-dbopi(lt)
-
-static jit_word_t
-_sse_bler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomisdr(r1, r0);
- jae(i0);
- return (_jit->pc.w);
-}
-dbopi(le)
-
-static jit_word_t
-_sse_beqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_word_t jp_code;
- ucomisdr(r0, r1);
- jps(0);
- jp_code = _jit->pc.w;
- je(i0);
- patch_rel_char(jp_code, _jit->pc.w);
- return (_jit->pc.w);
-}
-dbopi(eq)
-
-static jit_word_t
-_sse_bger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomisdr(r0, r1);
- jae(i0);
- return (_jit->pc.w);
-}
-dbopi(ge)
-
-static jit_word_t
-_sse_bgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomisdr(r0, r1);
- ja(i0);
- return (_jit->pc.w);
-}
-dbopi(gt)
-
-static jit_word_t
-_sse_bner_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- jit_word_t jp_code;
- jit_word_t jz_code;
- ucomisdr(r0, r1);
- jps(0);
- jp_code = _jit->pc.w;
- jzs(0);
- jz_code = _jit->pc.w;
- patch_rel_char(jp_code, _jit->pc.w);
- jmpi(i0);
- patch_rel_char(jz_code, _jit->pc.w);
- return (_jit->pc.w);
-}
-dbopi(ne)
-
-static jit_word_t
-_sse_bunltr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomisdr(r0, r1);
- jnae(i0);
- return (_jit->pc.w);
-}
-dbopi(unlt)
-
-static jit_word_t
-_sse_bunler_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1)
- jmpi(i0);
- else {
- ucomisdr(r0, r1);
- jna(i0);
- }
- return (_jit->pc.w);
-}
-dbopi(unle)
-
-static jit_word_t
-_sse_buneqr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1)
- jmpi(i0);
- else {
- ucomisdr(r0, r1);
- je(i0);
- }
- return (_jit->pc.w);
-}
-dbopi(uneq)
-
-static jit_word_t
-_sse_bunger_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- if (r0 == r1)
- jmpi(i0);
- else {
- ucomisdr(r1, r0);
- jna(i0);
- }
- return (_jit->pc.w);
-}
-dbopi(unge)
-
-static jit_word_t
-_sse_bungtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomisdr(r1, r0);
- jnae(i0);
- return (_jit->pc.w);
-}
-dbopi(ungt)
-
-static jit_word_t
-_sse_bltgtr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomisdr(r0, r1);
- jne(i0);
- return (_jit->pc.w);
-}
-dbopi(ltgt)
-
-static jit_word_t
-_sse_bordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomisdr(r0, r1);
- jnp(i0);
- return (_jit->pc.w);
-}
-dbopi(ord)
-
-static jit_word_t
-_sse_bunordr_d(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
-{
- ucomisdr(r0, r1);
- jp(i0);
- return (_jit->pc.w);
-}
-dbopi(unord)
-# undef fopi
-# undef fbopi
-# undef bopi
-# undef dbopi
-# undef fpr_bopi
-# undef fpr_opi
-#endif
diff --git a/libguile/lightning/lib/jit_x86-sz.c b/libguile/lightning/lib/jit_x86-sz.c
deleted file mode 100644
index 7183e6de4..000000000
--- a/libguile/lightning/lib/jit_x86-sz.c
+++ /dev/null
@@ -1,1610 +0,0 @@
-
-#if __X32
-#define JIT_INSTR_MAX 42
- 0, /* data */
- 0, /* live */
- 3, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 3, /* label */
- 34, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 3, /* va_start */
- 5, /* va_arg */
- 7, /* va_arg_d */
- 0, /* va_end */
- 3, /* addr */
- 6, /* addi */
- 4, /* addcr */
- 6, /* addci */
- 4, /* addxr */
- 5, /* addxi */
- 4, /* subr */
- 6, /* subi */
- 6, /* subcr */
- 6, /* subci */
- 6, /* subxr */
- 5, /* subxi */
- 8, /* rsbi */
- 5, /* mulr */
- 7, /* muli */
- 20, /* qmulr */
- 25, /* qmuli */
- 20, /* qmulr_u */
- 25, /* qmuli_u */
- 21, /* divr */
- 24, /* divi */
- 22, /* divr_u */
- 25, /* divi_u */
- 23, /* qdivr */
- 26, /* qdivi */
- 24, /* qdivr_u */
- 27, /* qdivi_u */
- 21, /* remr */
- 24, /* remi */
- 22, /* remr_u */
- 25, /* remi_u */
- 4, /* andr */
- 7, /* andi */
- 4, /* orr */
- 8, /* ori */
- 4, /* xorr */
- 8, /* xori */
- 16, /* lshr */
- 7, /* lshi */
- 16, /* rshr */
- 5, /* rshi */
- 16, /* rshr_u */
- 5, /* rshi_u */
- 4, /* negr */
- 4, /* comr */
- 15, /* ltr */
- 16, /* lti */
- 15, /* ltr_u */
- 16, /* lti_u */
- 15, /* ler */
- 16, /* lei */
- 15, /* ler_u */
- 16, /* lei_u */
- 15, /* eqr */
- 16, /* eqi */
- 15, /* ger */
- 16, /* gei */
- 15, /* ger_u */
- 16, /* gei_u */
- 15, /* gtr */
- 16, /* gti */
- 15, /* gtr_u */
- 16, /* gti_u */
- 15, /* ner */
- 16, /* nei */
- 2, /* movr */
- 5, /* movi */
- 11, /* extr_c */
- 11, /* extr_uc */
- 3, /* extr_s */
- 3, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 7, /* htonr_us */
- 4, /* htonr_ui */
- 0, /* htonr_ul */
- 3, /* ldr_c */
- 7, /* ldi_c */
- 3, /* ldr_uc */
- 7, /* ldi_uc */
- 3, /* ldr_s */
- 7, /* ldi_s */
- 3, /* ldr_us */
- 7, /* ldi_us */
- 2, /* ldr_i */
- 6, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 4, /* ldxr_c */
- 7, /* ldxi_c */
- 4, /* ldxr_uc */
- 7, /* ldxi_uc */
- 4, /* ldxr_s */
- 7, /* ldxi_s */
- 4, /* ldxr_us */
- 7, /* ldxi_us */
- 3, /* ldxr_i */
- 6, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 10, /* str_c */
- 14, /* sti_c */
- 3, /* str_s */
- 7, /* sti_s */
- 2, /* str_i */
- 6, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 11, /* stxr_c */
- 11, /* stxi_c */
- 4, /* stxr_s */
- 7, /* stxi_s */
- 3, /* stxr_i */
- 6, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 8, /* bltr */
- 9, /* blti */
- 8, /* bltr_u */
- 9, /* blti_u */
- 8, /* bler */
- 12, /* blei */
- 8, /* bler_u */
- 9, /* blei_u */
- 8, /* beqr */
- 12, /* beqi */
- 8, /* bger */
- 9, /* bgei */
- 8, /* bger_u */
- 9, /* bgei_u */
- 8, /* bgtr */
- 9, /* bgti */
- 8, /* bgtr_u */
- 9, /* bgti_u */
- 8, /* bner */
- 12, /* bnei */
- 8, /* bmsr */
- 12, /* bmsi */
- 8, /* bmcr */
- 12, /* bmci */
- 8, /* boaddr */
- 9, /* boaddi */
- 8, /* boaddr_u */
- 9, /* boaddi_u */
- 8, /* bxaddr */
- 9, /* bxaddi */
- 8, /* bxaddr_u */
- 9, /* bxaddi_u */
- 8, /* bosubr */
- 9, /* bosubi */
- 8, /* bosubr_u */
- 9, /* bosubi_u */
- 8, /* bxsubr */
- 9, /* bxsubi */
- 8, /* bxsubr_u */
- 9, /* bxsubi_u */
- 2, /* jmpr */
- 5, /* jmpi */
- 2, /* callr */
- 5, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 24, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 8, /* addr_f */
- 19, /* addi_f */
- 12, /* subr_f */
- 19, /* subi_f */
- 21, /* rsbi_f */
- 8, /* mulr_f */
- 19, /* muli_f */
- 12, /* divr_f */
- 19, /* divi_f */
- 12, /* negr_f */
- 12, /* absr_f */
- 6, /* sqrtr_f */
- 13, /* ltr_f */
- 27, /* lti_f */
- 13, /* ler_f */
- 27, /* lei_f */
- 15, /* eqr_f */
- 29, /* eqi_f */
- 13, /* ger_f */
- 27, /* gei_f */
- 13, /* gtr_f */
- 27, /* gti_f */
- 18, /* ner_f */
- 32, /* nei_f */
- 13, /* unltr_f */
- 27, /* unlti_f */
- 13, /* unler_f */
- 27, /* unlei_f */
- 13, /* uneqr_f */
- 27, /* uneqi_f */
- 13, /* unger_f */
- 27, /* ungei_f */
- 13, /* ungtr_f */
- 27, /* ungti_f */
- 13, /* ltgtr_f */
- 27, /* ltgti_f */
- 13, /* ordr_f */
- 27, /* ordi_f */
- 13, /* unordr_f */
- 27, /* unordi_f */
- 8, /* truncr_f_i */
- 0, /* truncr_f_l */
- 8, /* extr_f */
- 4, /* extr_d_f */
- 10, /* movr_f */
- 19, /* movi_f */
- 4, /* ldr_f */
- 8, /* ldi_f */
- 5, /* ldxr_f */
- 8, /* ldxi_f */
- 6, /* str_f */
- 10, /* sti_f */
- 7, /* stxr_f */
- 8, /* stxi_f */
- 10, /* bltr_f */
- 23, /* blti_f */
- 10, /* bler_f */
- 23, /* blei_f */
- 12, /* beqr_f */
- 25, /* beqi_f */
- 10, /* bger_f */
- 23, /* bgei_f */
- 10, /* bgtr_f */
- 23, /* bgti_f */
- 13, /* bner_f */
- 26, /* bnei_f */
- 10, /* bunltr_f */
- 23, /* bunlti_f */
- 10, /* bunler_f */
- 23, /* bunlei_f */
- 10, /* buneqr_f */
- 23, /* buneqi_f */
- 10, /* bunger_f */
- 23, /* bungei_f */
- 10, /* bungtr_f */
- 23, /* bungti_f */
- 10, /* bltgtr_f */
- 23, /* bltgti_f */
- 10, /* bordr_f */
- 23, /* bordi_f */
- 10, /* bunordr_f */
- 23, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 10, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 8, /* addr_d */
- 26, /* addi_d */
- 12, /* subr_d */
- 26, /* subi_d */
- 30, /* rsbi_d */
- 8, /* mulr_d */
- 26, /* muli_d */
- 12, /* divr_d */
- 26, /* divi_d */
- 18, /* negr_d */
- 13, /* absr_d */
- 6, /* sqrtr_d */
- 13, /* ltr_d */
- 37, /* lti_d */
- 13, /* ler_d */
- 37, /* lei_d */
- 15, /* eqr_d */
- 39, /* eqi_d */
- 13, /* ger_d */
- 37, /* gei_d */
- 13, /* gtr_d */
- 37, /* gti_d */
- 18, /* ner_d */
- 42, /* nei_d */
- 13, /* unltr_d */
- 37, /* unlti_d */
- 13, /* unler_d */
- 37, /* unlei_d */
- 13, /* uneqr_d */
- 37, /* uneqi_d */
- 13, /* unger_d */
- 37, /* ungei_d */
- 13, /* ungtr_d */
- 37, /* ungti_d */
- 13, /* ltgtr_d */
- 37, /* ltgti_d */
- 13, /* ordr_d */
- 37, /* ordi_d */
- 13, /* unordr_d */
- 37, /* unordi_d */
- 8, /* truncr_d_i */
- 0, /* truncr_d_l */
- 8, /* extr_d */
- 4, /* extr_f_d */
- 10, /* movr_d */
- 24, /* movi_d */
- 4, /* ldr_d */
- 8, /* ldi_d */
- 5, /* ldxr_d */
- 8, /* ldxi_d */
- 6, /* str_d */
- 10, /* sti_d */
- 7, /* stxr_d */
- 8, /* stxi_d */
- 10, /* bltr_d */
- 28, /* blti_d */
- 10, /* bler_d */
- 28, /* blei_d */
- 12, /* beqr_d */
- 30, /* beqi_d */
- 10, /* bger_d */
- 28, /* bgei_d */
- 10, /* bgtr_d */
- 28, /* bgti_d */
- 13, /* bner_d */
- 31, /* bnei_d */
- 10, /* bunltr_d */
- 28, /* bunlti_d */
- 10, /* bunler_d */
- 28, /* bunlei_d */
- 10, /* buneqr_d */
- 28, /* buneqi_d */
- 10, /* bunger_d */
- 28, /* bungei_d */
- 10, /* bungtr_d */
- 28, /* bungti_d */
- 10, /* bltgtr_d */
- 28, /* bltgti_d */
- 10, /* bordr_d */
- 28, /* bordi_d */
- 10, /* bunordr_d */
- 28, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 10, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif
-
-#if __X64
-#if __CYGWIN__
-#define JIT_INSTR_MAX 130
- 0, /* data */
- 0, /* live */
- 6, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 7, /* label */
- 130, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 7, /* va_start */
- 7, /* va_arg */
- 9, /* va_arg_d */
- 0, /* va_end */
- 4, /* addr */
- 13, /* addi */
- 6, /* addcr */
- 13, /* addci */
- 6, /* addxr */
- 7, /* addxi */
- 6, /* subr */
- 13, /* subi */
- 9, /* subcr */
- 13, /* subci */
- 9, /* subxr */
- 7, /* subxi */
- 16, /* rsbi */
- 7, /* mulr */
- 14, /* muli */
- 20, /* qmulr */
- 30, /* qmuli */
- 20, /* qmulr_u */
- 30, /* qmuli_u */
- 22, /* divr */
- 29, /* divi */
- 23, /* divr_u */
- 30, /* divi_u */
- 25, /* qdivr */
- 32, /* qdivi */
- 26, /* qdivr_u */
- 33, /* qdivi_u */
- 22, /* remr */
- 29, /* remi */
- 23, /* remr_u */
- 30, /* remi_u */
- 6, /* andr */
- 13, /* andi */
- 6, /* orr */
- 13, /* ori */
- 6, /* xorr */
- 13, /* xori */
- 9, /* lshr */
- 8, /* lshi */
- 9, /* rshr */
- 7, /* rshi */
- 9, /* rshr_u */
- 7, /* rshi_u */
- 6, /* negr */
- 6, /* comr */
- 13, /* ltr */
- 14, /* lti */
- 13, /* ltr_u */
- 14, /* lti_u */
- 13, /* ler */
- 14, /* lei */
- 13, /* ler_u */
- 14, /* lei_u */
- 13, /* eqr */
- 14, /* eqi */
- 13, /* ger */
- 14, /* gei */
- 13, /* ger_u */
- 14, /* gei_u */
- 13, /* gtr */
- 14, /* gti */
- 13, /* gtr_u */
- 14, /* gti_u */
- 13, /* ner */
- 14, /* nei */
- 3, /* movr */
- 10, /* movi */
- 7, /* extr_c */
- 7, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 3, /* extr_i */
- 3, /* extr_ui */
- 9, /* htonr_us */
- 6, /* htonr_ui */
- 6, /* htonr_ul */
- 4, /* ldr_c */
- 15, /* ldi_c */
- 4, /* ldr_uc */
- 15, /* ldi_uc */
- 4, /* ldr_s */
- 15, /* ldi_s */
- 4, /* ldr_us */
- 15, /* ldi_us */
- 3, /* ldr_i */
- 14, /* ldi_i */
- 3, /* ldr_ui */
- 14, /* ldi_ui */
- 3, /* ldr_l */
- 14, /* ldi_l */
- 5, /* ldxr_c */
- 8, /* ldxi_c */
- 5, /* ldxr_uc */
- 8, /* ldxi_uc */
- 5, /* ldxr_s */
- 8, /* ldxi_s */
- 5, /* ldxr_us */
- 8, /* ldxi_us */
- 4, /* ldxr_i */
- 7, /* ldxi_i */
- 4, /* ldxr_ui */
- 6, /* ldxi_ui */
- 4, /* ldxr_l */
- 7, /* ldxi_l */
- 6, /* str_c */
- 17, /* sti_c */
- 4, /* str_s */
- 15, /* sti_s */
- 3, /* str_i */
- 14, /* sti_i */
- 3, /* str_l */
- 14, /* sti_l */
- 7, /* stxr_c */
- 7, /* stxi_c */
- 5, /* stxr_s */
- 7, /* stxi_s */
- 4, /* stxr_i */
- 6, /* stxi_i */
- 4, /* stxr_l */
- 8, /* stxi_l */
- 9, /* bltr */
- 10, /* blti */
- 9, /* bltr_u */
- 10, /* blti_u */
- 9, /* bler */
- 13, /* blei */
- 9, /* bler_u */
- 10, /* blei_u */
- 9, /* beqr */
- 19, /* beqi */
- 9, /* bger */
- 10, /* bgei */
- 9, /* bger_u */
- 10, /* bgei_u */
- 9, /* bgtr */
- 10, /* bgti */
- 9, /* bgtr_u */
- 10, /* bgti_u */
- 9, /* bner */
- 19, /* bnei */
- 9, /* bmsr */
- 13, /* bmsi */
- 9, /* bmcr */
- 13, /* bmci */
- 9, /* boaddr */
- 10, /* boaddi */
- 9, /* boaddr_u */
- 10, /* boaddi_u */
- 9, /* bxaddr */
- 10, /* bxaddi */
- 9, /* bxaddr_u */
- 10, /* bxaddi_u */
- 9, /* bosubr */
- 10, /* bosubi */
- 9, /* bosubr_u */
- 10, /* bosubi_u */
- 9, /* bxsubr */
- 10, /* bxsubi */
- 9, /* bxsubr_u */
- 10, /* bxsubi_u */
- 3, /* jmpr */
- 5, /* jmpi */
- 3, /* callr */
- 13, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 124, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 10, /* addr_f */
- 21, /* addi_f */
- 15, /* subr_f */
- 21, /* subi_f */
- 27, /* rsbi_f */
- 10, /* mulr_f */
- 21, /* muli_f */
- 15, /* divr_f */
- 21, /* divi_f */
- 15, /* negr_f */
- 15, /* absr_f */
- 5, /* sqrtr_f */
- 16, /* ltr_f */
- 31, /* lti_f */
- 16, /* ler_f */
- 31, /* lei_f */
- 18, /* eqr_f */
- 33, /* eqi_f */
- 16, /* ger_f */
- 31, /* gei_f */
- 16, /* gtr_f */
- 31, /* gti_f */
- 20, /* ner_f */
- 35, /* nei_f */
- 16, /* unltr_f */
- 31, /* unlti_f */
- 16, /* unler_f */
- 31, /* unlei_f */
- 16, /* uneqr_f */
- 31, /* uneqi_f */
- 16, /* unger_f */
- 31, /* ungei_f */
- 16, /* ungtr_f */
- 31, /* ungti_f */
- 16, /* ltgtr_f */
- 31, /* ltgti_f */
- 16, /* ordr_f */
- 31, /* ordi_f */
- 16, /* unordr_f */
- 31, /* unordi_f */
- 5, /* truncr_f_i */
- 5, /* truncr_f_l */
- 5, /* extr_f */
- 5, /* extr_d_f */
- 5, /* movr_f */
- 15, /* movi_f */
- 5, /* ldr_f */
- 16, /* ldi_f */
- 6, /* ldxr_f */
- 8, /* ldxi_f */
- 5, /* str_f */
- 16, /* sti_f */
- 6, /* stxr_f */
- 9, /* stxi_f */
- 10, /* bltr_f */
- 21, /* blti_f */
- 10, /* bler_f */
- 24, /* blei_f */
- 12, /* beqr_f */
- 27, /* beqi_f */
- 10, /* bger_f */
- 25, /* bgei_f */
- 10, /* bgtr_f */
- 25, /* bgti_f */
- 13, /* bner_f */
- 28, /* bnei_f */
- 10, /* bunltr_f */
- 25, /* bunlti_f */
- 10, /* bunler_f */
- 25, /* bunlei_f */
- 10, /* buneqr_f */
- 25, /* buneqi_f */
- 10, /* bunger_f */
- 25, /* bungei_f */
- 10, /* bungtr_f */
- 25, /* bungti_f */
- 10, /* bltgtr_f */
- 25, /* bltgti_f */
- 10, /* bordr_f */
- 25, /* bordi_f */
- 10, /* bunordr_f */
- 25, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 10, /* addr_d */
- 25, /* addi_d */
- 15, /* subr_d */
- 25, /* subi_d */
- 27, /* rsbi_d */
- 10, /* mulr_d */
- 25, /* muli_d */
- 15, /* divr_d */
- 25, /* divi_d */
- 22, /* negr_d */
- 16, /* absr_d */
- 5, /* sqrtr_d */
- 17, /* ltr_d */
- 32, /* lti_d */
- 17, /* ler_d */
- 32, /* lei_d */
- 19, /* eqr_d */
- 34, /* eqi_d */
- 17, /* ger_d */
- 32, /* gei_d */
- 17, /* gtr_d */
- 32, /* gti_d */
- 21, /* ner_d */
- 36, /* nei_d */
- 17, /* unltr_d */
- 32, /* unlti_d */
- 17, /* unler_d */
- 32, /* unlei_d */
- 17, /* uneqr_d */
- 32, /* uneqi_d */
- 17, /* unger_d */
- 32, /* ungei_d */
- 17, /* ungtr_d */
- 32, /* ungti_d */
- 17, /* ltgtr_d */
- 32, /* ltgti_d */
- 17, /* ordr_d */
- 32, /* ordi_d */
- 17, /* unordr_d */
- 32, /* unordi_d */
- 5, /* truncr_d_i */
- 5, /* truncr_d_l */
- 5, /* extr_d */
- 5, /* extr_f_d */
- 5, /* movr_d */
- 15, /* movi_d */
- 5, /* ldr_d */
- 16, /* ldi_d */
- 6, /* ldxr_d */
- 8, /* ldxi_d */
- 5, /* str_d */
- 16, /* sti_d */
- 6, /* stxr_d */
- 9, /* stxi_d */
- 11, /* bltr_d */
- 26, /* blti_d */
- 11, /* bler_d */
- 26, /* blei_d */
- 13, /* beqr_d */
- 28, /* beqi_d */
- 11, /* bger_d */
- 26, /* bgei_d */
- 11, /* bgtr_d */
- 26, /* bgti_d */
- 14, /* bner_d */
- 29, /* bnei_d */
- 11, /* bunltr_d */
- 26, /* bunlti_d */
- 11, /* bunler_d */
- 26, /* bunlei_d */
- 11, /* buneqr_d */
- 26, /* buneqi_d */
- 11, /* bunger_d */
- 26, /* bungei_d */
- 11, /* bungtr_d */
- 26, /* bungti_d */
- 11, /* bltgtr_d */
- 26, /* bltgti_d */
- 11, /* bordr_d */
- 26, /* bordi_d */
- 11, /* bunordr_d */
- 26, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#else
-
-# if __X64_32
-#define JIT_INSTR_MAX 108
- 0, /* data */
- 0, /* live */
- 3, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 3, /* label */
- 108, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 41, /* va_start */
- 45, /* va_arg */
- 54, /* va_arg_d */
- 0, /* va_end */
- 5, /* addr */
- 7, /* addi */
- 6, /* addcr */
- 7, /* addci */
- 6, /* addxr */
- 7, /* addxi */
- 6, /* subr */
- 7, /* subi */
- 9, /* subcr */
- 7, /* subci */
- 9, /* subxr */
- 7, /* subxi */
- 10, /* rsbi */
- 7, /* mulr */
- 8, /* muli */
- 18, /* qmulr */
- 24, /* qmuli */
- 18, /* qmulr_u */
- 24, /* qmuli_u */
- 19, /* divr */
- 22, /* divi */
- 20, /* divr_u */
- 23, /* divi_u */
- 22, /* qdivr */
- 25, /* qdivi */
- 23, /* qdivr_u */
- 26, /* qdivi_u */
- 19, /* remr */
- 22, /* remi */
- 20, /* remr_u */
- 23, /* remi_u */
- 6, /* andr */
- 9, /* andi */
- 6, /* orr */
- 10, /* ori */
- 6, /* xorr */
- 10, /* xori */
- 9, /* lshr */
- 8, /* lshi */
- 9, /* rshr */
- 7, /* rshi */
- 9, /* rshr_u */
- 7, /* rshi_u */
- 6, /* negr */
- 6, /* comr */
- 13, /* ltr */
- 14, /* lti */
- 13, /* ltr_u */
- 14, /* lti_u */
- 13, /* ler */
- 14, /* lei */
- 13, /* ler_u */
- 14, /* lei_u */
- 13, /* eqr */
- 14, /* eqi */
- 13, /* ger */
- 14, /* gei */
- 13, /* ger_u */
- 14, /* gei_u */
- 13, /* gtr */
- 14, /* gti */
- 13, /* gtr_u */
- 14, /* gti_u */
- 13, /* ner */
- 14, /* nei */
- 3, /* movr */
- 6, /* movi */
- 7, /* extr_c */
- 7, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 0, /* extr_i */
- 0, /* extr_ui */
- 9, /* htonr_us */
- 6, /* htonr_ui */
- 0, /* htonr_ul */
- 5, /* ldr_c */
- 9, /* ldi_c */
- 5, /* ldr_uc */
- 9, /* ldi_uc */
- 5, /* ldr_s */
- 9, /* ldi_s */
- 5, /* ldr_us */
- 9, /* ldi_us */
- 4, /* ldr_i */
- 8, /* ldi_i */
- 0, /* ldr_ui */
- 0, /* ldi_ui */
- 0, /* ldr_l */
- 0, /* ldi_l */
- 9, /* ldxr_c */
- 7, /* ldxi_c */
- 9, /* ldxr_uc */
- 7, /* ldxi_uc */
- 9, /* ldxr_s */
- 7, /* ldxi_s */
- 9, /* ldxr_us */
- 7, /* ldxi_us */
- 8, /* ldxr_i */
- 7, /* ldxi_i */
- 0, /* ldxr_ui */
- 0, /* ldxi_ui */
- 0, /* ldxr_l */
- 0, /* ldxi_l */
- 7, /* str_c */
- 11, /* sti_c */
- 5, /* str_s */
- 9, /* sti_s */
- 4, /* str_i */
- 8, /* sti_i */
- 0, /* str_l */
- 0, /* sti_l */
- 12, /* stxr_c */
- 7, /* stxi_c */
- 10, /* stxr_s */
- 7, /* stxi_s */
- 9, /* stxr_i */
- 6, /* stxi_i */
- 0, /* stxr_l */
- 0, /* stxi_l */
- 9, /* bltr */
- 10, /* blti */
- 9, /* bltr_u */
- 10, /* blti_u */
- 9, /* bler */
- 12, /* blei */
- 9, /* bler_u */
- 10, /* blei_u */
- 9, /* beqr */
- 13, /* beqi */
- 9, /* bger */
- 10, /* bgei */
- 9, /* bger_u */
- 10, /* bgei_u */
- 9, /* bgtr */
- 10, /* bgti */
- 9, /* bgtr_u */
- 10, /* bgti_u */
- 9, /* bner */
- 13, /* bnei */
- 9, /* bmsr */
- 13, /* bmsi */
- 9, /* bmcr */
- 13, /* bmci */
- 9, /* boaddr */
- 10, /* boaddi */
- 9, /* boaddr_u */
- 10, /* boaddi_u */
- 9, /* bxaddr */
- 10, /* bxaddi */
- 9, /* bxaddr_u */
- 10, /* bxaddi_u */
- 9, /* bosubr */
- 10, /* bosubi */
- 9, /* bosubr_u */
- 10, /* bosubi_u */
- 9, /* bxsubr */
- 10, /* bxsubi */
- 9, /* bxsubr_u */
- 10, /* bxsubi_u */
- 2, /* jmpr */
- 5, /* jmpi */
- 3, /* callr */
- 9, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 34, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 10, /* addr_f */
- 21, /* addi_f */
- 15, /* subr_f */
- 21, /* subi_f */
- 26, /* rsbi_f */
- 10, /* mulr_f */
- 21, /* muli_f */
- 15, /* divr_f */
- 21, /* divi_f */
- 15, /* negr_f */
- 15, /* absr_f */
- 5, /* sqrtr_f */
- 15, /* ltr_f */
- 26, /* lti_f */
- 15, /* ler_f */
- 26, /* lei_f */
- 17, /* eqr_f */
- 28, /* eqi_f */
- 15, /* ger_f */
- 26, /* gei_f */
- 15, /* gtr_f */
- 26, /* gti_f */
- 20, /* ner_f */
- 31, /* nei_f */
- 15, /* unltr_f */
- 26, /* unlti_f */
- 15, /* unler_f */
- 26, /* unlei_f */
- 15, /* uneqr_f */
- 26, /* uneqi_f */
- 15, /* unger_f */
- 26, /* ungei_f */
- 15, /* ungtr_f */
- 26, /* ungti_f */
- 15, /* ltgtr_f */
- 26, /* ltgti_f */
- 15, /* ordr_f */
- 26, /* ordi_f */
- 15, /* unordr_f */
- 26, /* unordi_f */
- 5, /* truncr_f_i */
- 0, /* truncr_f_l */
- 5, /* extr_f */
- 5, /* extr_d_f */
- 5, /* movr_f */
- 11, /* movi_f */
- 6, /* ldr_f */
- 10, /* ldi_f */
- 11, /* ldxr_f */
- 9, /* ldxi_f */
- 6, /* str_f */
- 10, /* sti_f */
- 11, /* stxr_f */
- 9, /* stxi_f */
- 10, /* bltr_f */
- 21, /* blti_f */
- 10, /* bler_f */
- 21, /* blei_f */
- 12, /* beqr_f */
- 23, /* beqi_f */
- 10, /* bger_f */
- 21, /* bgei_f */
- 10, /* bgtr_f */
- 21, /* bgti_f */
- 13, /* bner_f */
- 24, /* bnei_f */
- 10, /* bunltr_f */
- 21, /* bunlti_f */
- 10, /* bunler_f */
- 21, /* bunlei_f */
- 10, /* buneqr_f */
- 21, /* buneqi_f */
- 10, /* bunger_f */
- 21, /* bungei_f */
- 10, /* bungtr_f */
- 21, /* bungti_f */
- 10, /* bltgtr_f */
- 21, /* bltgti_f */
- 10, /* bordr_f */
- 21, /* bordi_f */
- 10, /* bunordr_f */
- 21, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 10, /* addr_d */
- 33, /* addi_d */
- 15, /* subr_d */
- 33, /* subi_d */
- 38, /* rsbi_d */
- 10, /* mulr_d */
- 33, /* muli_d */
- 15, /* divr_d */
- 33, /* divi_d */
- 22, /* negr_d */
- 16, /* absr_d */
- 5, /* sqrtr_d */
- 16, /* ltr_d */
- 39, /* lti_d */
- 16, /* ler_d */
- 39, /* lei_d */
- 18, /* eqr_d */
- 41, /* eqi_d */
- 16, /* ger_d */
- 39, /* gei_d */
- 16, /* gtr_d */
- 39, /* gti_d */
- 21, /* ner_d */
- 44, /* nei_d */
- 16, /* unltr_d */
- 39, /* unlti_d */
- 16, /* unler_d */
- 39, /* unlei_d */
- 16, /* uneqr_d */
- 39, /* uneqi_d */
- 16, /* unger_d */
- 39, /* ungei_d */
- 16, /* ungtr_d */
- 39, /* ungti_d */
- 16, /* ltgtr_d */
- 39, /* ltgti_d */
- 16, /* ordr_d */
- 39, /* ordi_d */
- 16, /* unordr_d */
- 39, /* unordi_d */
- 5, /* truncr_d_i */
- 0, /* truncr_d_l */
- 5, /* extr_d */
- 5, /* extr_f_d */
- 5, /* movr_d */
- 23, /* movi_d */
- 6, /* ldr_d */
- 10, /* ldi_d */
- 11, /* ldxr_d */
- 9, /* ldxi_d */
- 6, /* str_d */
- 10, /* sti_d */
- 11, /* stxr_d */
- 9, /* stxi_d */
- 11, /* bltr_d */
- 34, /* blti_d */
- 11, /* bler_d */
- 34, /* blei_d */
- 13, /* beqr_d */
- 36, /* beqi_d */
- 11, /* bger_d */
- 34, /* bgei_d */
- 11, /* bgtr_d */
- 34, /* bgti_d */
- 14, /* bner_d */
- 37, /* bnei_d */
- 11, /* bunltr_d */
- 34, /* bunlti_d */
- 11, /* bunler_d */
- 34, /* bunlei_d */
- 11, /* buneqr_d */
- 34, /* buneqi_d */
- 11, /* bunger_d */
- 34, /* bungei_d */
- 11, /* bungtr_d */
- 34, /* bungti_d */
- 11, /* bltgtr_d */
- 34, /* bltgti_d */
- 11, /* bordr_d */
- 34, /* bordi_d */
- 11, /* bunordr_d */
- 34, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-
-# else
-#define JIT_INSTR_MAX 115
- 0, /* data */
- 0, /* live */
- 6, /* align */
- 0, /* save */
- 0, /* load */
- 0, /* #name */
- 0, /* #note */
- 7, /* label */
- 115, /* prolog */
- 0, /* ellipsis */
- 0, /* va_push */
- 0, /* allocai */
- 0, /* allocar */
- 0, /* arg */
- 0, /* getarg_c */
- 0, /* getarg_uc */
- 0, /* getarg_s */
- 0, /* getarg_us */
- 0, /* getarg_i */
- 0, /* getarg_ui */
- 0, /* getarg_l */
- 0, /* putargr */
- 0, /* putargi */
- 42, /* va_start */
- 41, /* va_arg */
- 50, /* va_arg_d */
- 0, /* va_end */
- 5, /* addr */
- 13, /* addi */
- 6, /* addcr */
- 13, /* addci */
- 6, /* addxr */
- 7, /* addxi */
- 6, /* subr */
- 13, /* subi */
- 9, /* subcr */
- 13, /* subci */
- 9, /* subxr */
- 7, /* subxi */
- 16, /* rsbi */
- 7, /* mulr */
- 14, /* muli */
- 20, /* qmulr */
- 30, /* qmuli */
- 20, /* qmulr_u */
- 30, /* qmuli_u */
- 22, /* divr */
- 29, /* divi */
- 23, /* divr_u */
- 30, /* divi_u */
- 25, /* qdivr */
- 32, /* qdivi */
- 26, /* qdivr_u */
- 33, /* qdivi_u */
- 22, /* remr */
- 29, /* remi */
- 23, /* remr_u */
- 30, /* remi_u */
- 6, /* andr */
- 13, /* andi */
- 6, /* orr */
- 13, /* ori */
- 6, /* xorr */
- 13, /* xori */
- 9, /* lshr */
- 8, /* lshi */
- 9, /* rshr */
- 7, /* rshi */
- 9, /* rshr_u */
- 7, /* rshi_u */
- 6, /* negr */
- 6, /* comr */
- 13, /* ltr */
- 14, /* lti */
- 13, /* ltr_u */
- 14, /* lti_u */
- 13, /* ler */
- 14, /* lei */
- 13, /* ler_u */
- 14, /* lei_u */
- 13, /* eqr */
- 14, /* eqi */
- 13, /* ger */
- 14, /* gei */
- 13, /* ger_u */
- 14, /* gei_u */
- 13, /* gtr */
- 14, /* gti */
- 13, /* gtr_u */
- 14, /* gti_u */
- 13, /* ner */
- 14, /* nei */
- 3, /* movr */
- 10, /* movi */
- 4, /* extr_c */
- 4, /* extr_uc */
- 4, /* extr_s */
- 4, /* extr_us */
- 3, /* extr_i */
- 3, /* extr_ui */
- 9, /* htonr_us */
- 6, /* htonr_ui */
- 6, /* htonr_ul */
- 5, /* ldr_c */
- 9, /* ldi_c */
- 5, /* ldr_uc */
- 9, /* ldi_uc */
- 5, /* ldr_s */
- 9, /* ldi_s */
- 5, /* ldr_us */
- 9, /* ldi_us */
- 4, /* ldr_i */
- 8, /* ldi_i */
- 4, /* ldr_ui */
- 8, /* ldi_ui */
- 4, /* ldr_l */
- 8, /* ldi_l */
- 6, /* ldxr_c */
- 8, /* ldxi_c */
- 6, /* ldxr_uc */
- 8, /* ldxi_uc */
- 6, /* ldxr_s */
- 8, /* ldxi_s */
- 6, /* ldxr_us */
- 8, /* ldxi_us */
- 5, /* ldxr_i */
- 7, /* ldxi_i */
- 5, /* ldxr_ui */
- 6, /* ldxi_ui */
- 5, /* ldxr_l */
- 7, /* ldxi_l */
- 4, /* str_c */
- 8, /* sti_c */
- 5, /* str_s */
- 9, /* sti_s */
- 4, /* str_i */
- 8, /* sti_i */
- 4, /* str_l */
- 8, /* sti_l */
- 5, /* stxr_c */
- 6, /* stxi_c */
- 6, /* stxr_s */
- 7, /* stxi_s */
- 5, /* stxr_i */
- 6, /* stxi_i */
- 5, /* stxr_l */
- 7, /* stxi_l */
- 9, /* bltr */
- 10, /* blti */
- 9, /* bltr_u */
- 10, /* blti_u */
- 9, /* bler */
- 13, /* blei */
- 9, /* bler_u */
- 10, /* blei_u */
- 9, /* beqr */
- 19, /* beqi */
- 9, /* bger */
- 10, /* bgei */
- 9, /* bger_u */
- 10, /* bgei_u */
- 9, /* bgtr */
- 10, /* bgti */
- 9, /* bgtr_u */
- 10, /* bgti_u */
- 9, /* bner */
- 19, /* bnei */
- 9, /* bmsr */
- 13, /* bmsi */
- 9, /* bmcr */
- 13, /* bmci */
- 9, /* boaddr */
- 10, /* boaddi */
- 9, /* boaddr_u */
- 10, /* boaddi_u */
- 9, /* bxaddr */
- 10, /* bxaddi */
- 9, /* bxaddr_u */
- 10, /* bxaddi_u */
- 9, /* bosubr */
- 10, /* bosubi */
- 9, /* bosubr_u */
- 10, /* bosubi_u */
- 9, /* bxsubr */
- 10, /* bxsubi */
- 9, /* bxsubr_u */
- 10, /* bxsubi_u */
- 3, /* jmpr */
- 5, /* jmpi */
- 3, /* callr */
- 13, /* calli */
- 0, /* prepare */
- 0, /* pushargr */
- 0, /* pushargi */
- 0, /* finishr */
- 0, /* finishi */
- 0, /* ret */
- 0, /* retr */
- 0, /* reti */
- 0, /* retval_c */
- 0, /* retval_uc */
- 0, /* retval_s */
- 0, /* retval_us */
- 0, /* retval_i */
- 0, /* retval_ui */
- 0, /* retval_l */
- 37, /* epilog */
- 0, /* arg_f */
- 0, /* getarg_f */
- 0, /* putargr_f */
- 0, /* putargi_f */
- 10, /* addr_f */
- 21, /* addi_f */
- 15, /* subr_f */
- 21, /* subi_f */
- 30, /* rsbi_f */
- 10, /* mulr_f */
- 21, /* muli_f */
- 15, /* divr_f */
- 21, /* divi_f */
- 15, /* negr_f */
- 15, /* absr_f */
- 5, /* sqrtr_f */
- 11, /* ltr_f */
- 26, /* lti_f */
- 11, /* ler_f */
- 26, /* lei_f */
- 13, /* eqr_f */
- 28, /* eqi_f */
- 11, /* ger_f */
- 26, /* gei_f */
- 11, /* gtr_f */
- 26, /* gti_f */
- 16, /* ner_f */
- 31, /* nei_f */
- 11, /* unltr_f */
- 26, /* unlti_f */
- 11, /* unler_f */
- 26, /* unlei_f */
- 11, /* uneqr_f */
- 26, /* uneqi_f */
- 11, /* unger_f */
- 26, /* ungei_f */
- 11, /* ungtr_f */
- 26, /* ungti_f */
- 11, /* ltgtr_f */
- 26, /* ltgti_f */
- 11, /* ordr_f */
- 26, /* ordi_f */
- 11, /* unordr_f */
- 26, /* unordi_f */
- 5, /* truncr_f_i */
- 5, /* truncr_f_l */
- 5, /* extr_f */
- 5, /* extr_d_f */
- 5, /* movr_f */
- 15, /* movi_f */
- 6, /* ldr_f */
- 10, /* ldi_f */
- 7, /* ldxr_f */
- 9, /* ldxi_f */
- 6, /* str_f */
- 10, /* sti_f */
- 7, /* stxr_f */
- 9, /* stxi_f */
- 10, /* bltr_f */
- 21, /* blti_f */
- 10, /* bler_f */
- 25, /* blei_f */
- 12, /* beqr_f */
- 27, /* beqi_f */
- 10, /* bger_f */
- 25, /* bgei_f */
- 10, /* bgtr_f */
- 25, /* bgti_f */
- 13, /* bner_f */
- 28, /* bnei_f */
- 10, /* bunltr_f */
- 25, /* bunlti_f */
- 10, /* bunler_f */
- 25, /* bunlei_f */
- 10, /* buneqr_f */
- 25, /* buneqi_f */
- 10, /* bunger_f */
- 25, /* bungei_f */
- 10, /* bungtr_f */
- 25, /* bungti_f */
- 10, /* bltgtr_f */
- 25, /* bltgti_f */
- 10, /* bordr_f */
- 25, /* bordi_f */
- 10, /* bunordr_f */
- 25, /* bunordi_f */
- 0, /* pushargr_f */
- 0, /* pushargi_f */
- 0, /* retr_f */
- 0, /* reti_f */
- 0, /* retval_f */
- 0, /* arg_d */
- 0, /* getarg_d */
- 0, /* putargr_d */
- 0, /* putargi_d */
- 10, /* addr_d */
- 25, /* addi_d */
- 15, /* subr_d */
- 25, /* subi_d */
- 30, /* rsbi_d */
- 10, /* mulr_d */
- 25, /* muli_d */
- 15, /* divr_d */
- 25, /* divi_d */
- 22, /* negr_d */
- 16, /* absr_d */
- 5, /* sqrtr_d */
- 12, /* ltr_d */
- 27, /* lti_d */
- 12, /* ler_d */
- 27, /* lei_d */
- 14, /* eqr_d */
- 29, /* eqi_d */
- 12, /* ger_d */
- 27, /* gei_d */
- 12, /* gtr_d */
- 27, /* gti_d */
- 17, /* ner_d */
- 32, /* nei_d */
- 12, /* unltr_d */
- 27, /* unlti_d */
- 12, /* unler_d */
- 27, /* unlei_d */
- 12, /* uneqr_d */
- 27, /* uneqi_d */
- 12, /* unger_d */
- 27, /* ungei_d */
- 12, /* ungtr_d */
- 27, /* ungti_d */
- 12, /* ltgtr_d */
- 27, /* ltgti_d */
- 12, /* ordr_d */
- 27, /* ordi_d */
- 12, /* unordr_d */
- 27, /* unordi_d */
- 5, /* truncr_d_i */
- 5, /* truncr_d_l */
- 5, /* extr_d */
- 5, /* extr_f_d */
- 5, /* movr_d */
- 15, /* movi_d */
- 6, /* ldr_d */
- 10, /* ldi_d */
- 7, /* ldxr_d */
- 9, /* ldxi_d */
- 6, /* str_d */
- 10, /* sti_d */
- 7, /* stxr_d */
- 9, /* stxi_d */
- 11, /* bltr_d */
- 26, /* blti_d */
- 11, /* bler_d */
- 26, /* blei_d */
- 13, /* beqr_d */
- 28, /* beqi_d */
- 11, /* bger_d */
- 26, /* bgei_d */
- 11, /* bgtr_d */
- 26, /* bgti_d */
- 14, /* bner_d */
- 29, /* bnei_d */
- 11, /* bunltr_d */
- 26, /* bunlti_d */
- 11, /* bunler_d */
- 26, /* bunlei_d */
- 11, /* buneqr_d */
- 26, /* buneqi_d */
- 11, /* bunger_d */
- 26, /* bungei_d */
- 11, /* bungtr_d */
- 26, /* bungti_d */
- 11, /* bltgtr_d */
- 26, /* bltgti_d */
- 11, /* bordr_d */
- 26, /* bordi_d */
- 11, /* bunordr_d */
- 26, /* bunordi_d */
- 0, /* pushargr_d */
- 0, /* pushargi_d */
- 0, /* retr_d */
- 0, /* reti_d */
- 0, /* retval_d */
- 0, /* movr_w_f */
- 0, /* movr_ww_d */
- 0, /* movr_w_d */
- 0, /* movr_f_w */
- 0, /* movi_f_w */
- 0, /* movr_d_ww */
- 0, /* movi_d_ww */
- 0, /* movr_d_w */
- 0, /* movi_d_w */
-#endif /* __CYGWIN__ */
-# endif /* __X64_32 */
-#endif /* __X64 */
diff --git a/libguile/lightning/lib/jit_x86.c b/libguile/lightning/lib/jit_x86.c
deleted file mode 100644
index 6d6a9ed12..000000000
--- a/libguile/lightning/lib/jit_x86.c
+++ /dev/null
@@ -1,2264 +0,0 @@
-/*
- * Copyright (C) 2012-2018 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#include <lightning.h>
-#include <lightning/jit_private.h>
-
-#if __X32
-# define jit_arg_reg_p(i) 0
-# define jit_arg_f_reg_p(i) 0
-# define stack_framesize 20
-# define stack_adjust 12
-# define CVT_OFFSET -12
-# define REAL_WORDSIZE 4
-# define va_gp_increment 4
-# define va_fp_increment 8
-#else
-# if __CYGWIN__
-# define jit_arg_reg_p(i) ((i) >= 0 && (i) < 4)
-# define jit_arg_f_reg_p(i) jit_arg_reg_p(i)
-# define stack_framesize 152
-# define va_fp_increment 8
-# else
-# define jit_arg_reg_p(i) ((i) >= 0 && (i) < 6)
-# define jit_arg_f_reg_p(i) ((i) >= 0 && (i) < 8)
-# define stack_framesize 56
-# define first_gp_argument rdi
-# define first_gp_offset offsetof(jit_va_list_t, rdi)
-# define first_gp_from_offset(gp) ((gp) / 8)
-# define last_gp_argument r9
-# define va_gp_max_offset \
- (offsetof(jit_va_list_t, r9) - offsetof(jit_va_list_t, rdi) + 8)
-# define first_fp_argument xmm0
-# define first_fp_offset offsetof(jit_va_list_t, xmm0)
-# define last_fp_argument xmm7
-# define va_fp_max_offset \
- (offsetof(jit_va_list_t, xmm7) - offsetof(jit_va_list_t, rdi) + 16)
-# define va_fp_increment 16
-# define first_fp_from_offset(fp) (((fp) - va_gp_max_offset) / 16)
-# endif
-# define va_gp_increment 8
-# define stack_adjust 8
-# define CVT_OFFSET -8
-# define REAL_WORDSIZE 8
-#endif
-
-/*
- * Types
- */
-#if __X32 || __CYGWIN__
-typedef jit_pointer_t jit_va_list_t;
-#else
-typedef struct jit_va_list {
- jit_int32_t gpoff;
- jit_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;
- jit_float64_t xmm0;
- jit_float64_t _up0;
- jit_float64_t xmm1;
- jit_float64_t _up1;
- jit_float64_t xmm2;
- jit_float64_t _up2;
- jit_float64_t xmm3;
- jit_float64_t _up3;
- jit_float64_t xmm4;
- jit_float64_t _up4;
- jit_float64_t xmm5;
- jit_float64_t _up5;
- jit_float64_t xmm6;
- jit_float64_t _up6;
- jit_float64_t xmm7;
- jit_float64_t _up7;
-} jit_va_list_t;
-#endif
-
-/*
- * Prototypes
- */
-#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);
-#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);
-#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);
-#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);
-
-#define PROTO 1
-# include "jit_x86-cpu.c"
-# include "jit_x86-sse.c"
-# include "jit_x86-x87.c"
-#undef PROTO
-
-/*
- * Initialization
- */
-jit_cpu_t jit_cpu;
-jit_register_t _rvs[] = {
-#if __X32
- { rc(gpr) | rc(rg8) | 0, "%eax" },
- { rc(gpr) | rc(rg8) | 1, "%ecx" },
- { rc(gpr) | rc(rg8) | 2, "%edx" },
- { rc(sav) | rc(rg8) | rc(gpr) | 3, "%ebx" },
- { rc(sav) | rc(gpr) | 6, "%esi" },
- { rc(sav) | rc(gpr) | 7, "%edi" },
- { rc(sav) | 4, "%esp" },
- { rc(sav) | 5, "%ebp" },
- { rc(xpr) | rc(fpr) | 0, "%xmm0" },
- { rc(xpr) | rc(fpr) | 1, "%xmm1" },
- { rc(xpr) | rc(fpr) | 2, "%xmm2" },
- { rc(xpr) | rc(fpr) | 3, "%xmm3" },
- { rc(xpr) | rc(fpr) | 4, "%xmm4" },
- { rc(xpr) | rc(fpr) | 5, "%xmm5" },
- { rc(xpr) | rc(fpr) | 6, "%xmm6" },
- { rc(xpr) | rc(fpr) | 7, "%xmm7" },
- { rc(fpr) | 0, "st(0)" },
- { rc(fpr) | 1, "st(1)" },
- { rc(fpr) | 2, "st(2)" },
- { rc(fpr) | 3, "st(3)" },
- { rc(fpr) | 4, "st(4)" },
- { rc(fpr) | 5, "st(5)" },
- { rc(fpr) | 6, "st(6)" },
- { rc(fpr) | 7, "st(7)" },
-#else
-# if __CYGWIN__
- { rc(gpr) | rc(rg8) | 0, "%rax" },
- { rc(gpr) | rc(rg8) | rc(rg8) | 10, "%r10" },
- { rc(gpr) | rc(rg8) | rc(rg8) | 11, "%r11" },
- { rc(sav) | rc(rg8) | rc(gpr) | 3, "%rbx" },
- { rc(sav) | rc(gpr) | 7, "%rdi" },
- { rc(sav) | rc(gpr) | 6, "%rsi" },
- { rc(sav) | rc(gpr) | 12, "%r12" },
- { rc(sav) | rc(gpr) | 13, "%r13" },
- { rc(sav) | rc(gpr) | 14, "%r14" },
- { rc(sav) | rc(gpr) | 15, "%r15" },
- { rc(arg) | rc(rg8) | rc(gpr) | 9, "%r9" },
- { rc(arg) | rc(rg8) | rc(gpr) | 8, "%r8" },
- { rc(arg) | rc(rg8) | rc(gpr) | 2, "%rdx" },
- { rc(arg) | rc(rg8) | rc(gpr) | 1, "%rcx" },
- { rc(sav) | 4, "%rsp" },
- { rc(sav) | 5, "%rbp" },
- { rc(xpr) | rc(fpr) | 4, "%xmm4" },
- { rc(xpr) | rc(fpr) | 5, "%xmm5" },
- { rc(sav) | rc(xpr) | rc(fpr) | 6, "%xmm6" },
- { rc(sav) | rc(xpr) | rc(fpr) | 7, "%xmm7" },
- { rc(sav) | rc(xpr) | rc(fpr) | 8, "%xmm8" },
- { rc(sav) | rc(xpr) | rc(fpr) | 9, "%xmm9" },
- { rc(sav) | rc(xpr) | rc(fpr) | 10, "%xmm10" },
- { rc(sav) | rc(xpr) | rc(fpr) | 11, "%xmm11" },
- { rc(sav) | rc(xpr) | rc(fpr) | 12, "%xmm12" },
- { rc(sav) | rc(xpr) | rc(fpr) | 13, "%xmm13" },
- { rc(sav) | rc(xpr) | rc(fpr) | 14, "%xmm14" },
- { rc(sav) | rc(xpr) | rc(fpr) | 15, "%xmm15" },
- { rc(xpr) | rc(arg) | rc(fpr) | 3, "%xmm3" },
- { rc(xpr) | rc(arg) | rc(fpr) | 2, "%xmm2" },
- { rc(xpr) | rc(arg) | rc(fpr) | 1, "%xmm1" },
- { rc(xpr) | rc(arg) | rc(fpr) | 0, "%xmm0" },
-#else
- /* %rax is a pseudo flag argument for varargs functions */
- { rc(arg) | rc(gpr) | rc(rg8) | 0, "%rax" },
- { rc(gpr) | rc(rg8) | 10, "%r10" },
- { rc(gpr) | rc(rg8) | 11, "%r11" },
- { rc(sav) | rc(gpr) | rc(rg8) | 12, "%r12" },
- { rc(sav) | rc(rg8) | rc(gpr) | 3, "%rbx" },
- { rc(sav) | rc(rg8) | rc(gpr) | 13, "%r13" },
- { rc(sav) | rc(rg8) | rc(gpr) | 14, "%r14" },
- { rc(sav) | rc(rg8) | rc(gpr) | 15, "%r15" },
- { rc(arg) | rc(rg8) | rc(gpr) | 9, "%r9" },
- { rc(arg) | rc(rg8) | rc(gpr) | 8, "%r8" },
- { rc(arg) | rc(rg8) | rc(gpr) | 1, "%rcx" },
- { rc(arg) | rc(rg8) | rc(gpr) | 2, "%rdx" },
- { rc(arg) | rc(rg8) | rc(gpr) | 6, "%rsi" },
- { rc(arg) | rc(rg8) | rc(gpr) | 7, "%rdi" },
- { rc(sav) | 4, "%rsp" },
- { rc(sav) | 5, "%rbp" },
- { rc(xpr) | rc(fpr) | 8, "%xmm8" },
- { rc(xpr) | rc(fpr) | 9, "%xmm9" },
- { rc(xpr) | rc(fpr) | 10, "%xmm10" },
- { rc(xpr) | rc(fpr) | 11, "%xmm11" },
- { rc(xpr) | rc(fpr) | 12, "%xmm12" },
- { rc(xpr) | rc(fpr) | 13, "%xmm13" },
- { rc(xpr) | rc(fpr) | 14, "%xmm14" },
- { rc(xpr) | rc(fpr) | 15, "%xmm15" },
- { rc(xpr) | rc(arg) | rc(fpr) | 7, "%xmm7" },
- { rc(xpr) | rc(arg) | rc(fpr) | 6, "%xmm6" },
- { rc(xpr) | rc(arg) | rc(fpr) | 5, "%xmm5" },
- { rc(xpr) | rc(arg) | rc(fpr) | 4, "%xmm4" },
- { rc(xpr) | rc(arg) | rc(fpr) | 3, "%xmm3" },
- { rc(xpr) | rc(arg) | rc(fpr) | 2, "%xmm2" },
- { rc(xpr) | rc(arg) | rc(fpr) | 1, "%xmm1" },
- { rc(xpr) | rc(arg) | rc(fpr) | 0, "%xmm0" },
-# endif
- { rc(fpr) | 0, "st(0)" },
- { rc(fpr) | 1, "st(1)" },
- { rc(fpr) | 2, "st(2)" },
- { rc(fpr) | 3, "st(3)" },
- { rc(fpr) | 4, "st(4)" },
- { rc(fpr) | 5, "st(5)" },
- { rc(fpr) | 6, "st(6)" },
- { rc(fpr) | 7, "st(7)" },
-#endif
- { _NOREG, "<none>" },
-};
-
-/*
- * Implementation
- */
-void
-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 */
- } 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 */
- } bits;
- jit_uword_t cpuid;
- } edx;
-#if __X32
- int ac, flags;
-#endif
- jit_uword_t eax, ebx;
-
-#if __X32
- /* adapted from glibc __sysconf */
- __asm__ volatile ("pushfl;\n\t"
- "popl %0;\n\t"
- "movl $0x240000, %1;\n\t"
- "xorl %0, %1;\n\t"
- "pushl %1;\n\t"
- "popfl;\n\t"
- "pushfl;\n\t"
- "popl %1;\n\t"
- "xorl %0, %1;\n\t"
- "pushl %0;\n\t"
- "popfl"
- : "=r" (flags), "=r" (ac));
-
- /* i386 or i486 without cpuid */
- if ((ac & (1 << 21)) == 0)
- /* probably without x87 as well */
- return;
-#endif
-
- /* query %eax = 1 function */
-#if __X32 || __X64_32
- __asm__ volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1"
-#else
- __asm__ volatile ("xchgq %%rbx, %1; cpuid; xchgq %%rbx, %1"
-#endif
- : "=a" (eax), "=r" (ebx),
- "=c" (ecx.cpuid), "=d" (edx.cpuid)
- : "0" (1));
-
- jit_cpu.fpu = edx.bits.fpu;
- jit_cpu.cmpxchg8b = edx.bits.cmpxchg8b;
- jit_cpu.cmov = edx.bits.cmov;
- jit_cpu.mmx = edx.bits.mmx;
- jit_cpu.sse = edx.bits.sse;
- jit_cpu.sse2 = edx.bits.sse2;
- jit_cpu.sse3 = ecx.bits.sse3;
- jit_cpu.pclmulqdq = ecx.bits.pclmulqdq;
- jit_cpu.ssse3 = ecx.bits.ssse3;
- jit_cpu.fma = ecx.bits.fma;
- jit_cpu.cmpxchg16b = ecx.bits.cmpxchg16b;
- jit_cpu.sse4_1 = ecx.bits.sse4_1;
- jit_cpu.sse4_2 = ecx.bits.sse4_2;
- jit_cpu.movbe = ecx.bits.movbe;
- jit_cpu.popcnt = ecx.bits.popcnt;
- jit_cpu.aes = ecx.bits.aes;
- jit_cpu.avx = ecx.bits.avx;
-
- /* query %eax = 0x80000001 function */
-#if __X64
-# if __X64_32
- __asm__ volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1"
-# else
- __asm__ volatile ("xchgq %%rbx, %1; cpuid; xchgq %%rbx, %1"
-# endif
- : "=a" (eax), "=r" (ebx),
- "=c" (ecx.cpuid), "=d" (edx.cpuid)
- : "0" (0x80000001));
- jit_cpu.lahf = ecx.cpuid & 1;
-#endif
-}
-
-void
-_jit_init(jit_state_t *_jit)
-{
-#if __X32
- jit_int32_t regno;
- static jit_bool_t first = 1;
-#endif
-
- _jitc->reglen = jit_size(_rvs) - 1;
-#if __X32
- if (first) {
- if (!jit_cpu.sse2) {
- for (regno = _jitc->reglen; regno >= 0; regno--) {
- if (_rvs[regno].spec & jit_class_xpr)
- _rvs[regno].spec = 0;
- }
- }
- first = 0;
- }
-#endif
-}
-
-void
-_jit_prolog(jit_state_t *_jit)
-{
- jit_int32_t offset;
-
- if (_jitc->function)
- jit_epilog();
- assert(jit_regset_cmp_ui(&_jitc->regarg, 0) == 0);
- jit_regset_set_ui(&_jitc->regsav, 0);
- offset = _jitc->functions.offset;
- if (offset >= _jitc->functions.length) {
- jit_realloc((jit_pointer_t *)&_jitc->functions.ptr,
- _jitc->functions.length * sizeof(jit_function_t),
- (_jitc->functions.length + 16) * sizeof(jit_function_t));
- _jitc->functions.length += 16;
- }
- _jitc->function = _jitc->functions.ptr + _jitc->functions.offset++;
- _jitc->function->self.size = stack_framesize;
- _jitc->function->self.argi = _jitc->function->self.argf =
- _jitc->function->self.aoff = _jitc->function->self.alen = 0;
- /* sse/x87 conversion */
- _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));
-
- /* _no_link here does not mean the jit_link() call can be removed
- * by rewriting as:
- * _jitc->function->prolog = jit_new_node(jit_code_prolog);
- */
- _jitc->function->prolog = jit_new_node_no_link(jit_code_prolog);
- jit_link(_jitc->function->prolog);
- _jitc->function->prolog->w.w = offset;
- _jitc->function->epilog = jit_new_node_no_link(jit_code_epilog);
- /* u: label value
- * v: offset in blocks vector
- * w: offset in functions vector
- */
- _jitc->function->epilog->w.w = offset;
-
- jit_regset_new(&_jitc->function->regset);
-}
-
-jit_int32_t
-_jit_allocai(jit_state_t *_jit, jit_int32_t length)
-{
- assert(_jitc->function);
- switch (length) {
- case 0: case 1: break;
- case 2: _jitc->function->self.aoff &= -2; break;
- case 3: case 4: _jitc->function->self.aoff &= -4; break;
- default: _jitc->function->self.aoff &= -8; break;
- }
- _jitc->function->self.aoff -= length;
-
- /* jit_allocai() may be called from jit_x86-cpu.c, and force a function
- * generation restart on some conditions: div/rem and qmul/qdiv, due
- * to registers constraints.
- * The check is to prevent an assertion of a jit_xyz() being called
- * during code generation, and attempting to add a node to the tail
- * of the current IR generation. */
- if (!_jitc->realize) {
- jit_inc_synth_ww(allocai, _jitc->function->self.aoff, length);
- jit_dec_synth();
- }
-
- return (_jitc->function->self.aoff);
-}
-
-void
-_jit_allocar(jit_state_t *_jit, jit_int32_t u, jit_int32_t v)
-{
- jit_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->allocar = 1;
- }
- reg = jit_get_reg(jit_class_gpr);
- jit_negr(reg, v);
- jit_andi(reg, reg, -16);
- jit_ldxi_i(u, JIT_FP, _jitc->function->aoffoff);
- jit_addr(u, u, reg);
- jit_addr(JIT_SP, JIT_SP, reg);
- jit_stxi_i(_jitc->function->aoffoff, JIT_FP, u);
- jit_unget_reg(reg);
- jit_dec_synth();
-}
-
-void
-_jit_ret(jit_state_t *_jit)
-{
- jit_node_t *instr;
- assert(_jitc->function);
- jit_inc_synth(ret);
- /* jump to epilog */
- instr = jit_jmpi();
- jit_patch_at(instr, _jitc->function->epilog);
- jit_dec_synth();
-}
-
-void
-_jit_retr(jit_state_t *_jit, jit_int32_t u)
-{
- jit_inc_synth_w(retr, u);
- /* movr(%ret, %ret) would be optimized out */
- if (JIT_RET != u)
- jit_movr(JIT_RET, u);
- /* explicitly tell it is live */
- jit_live(JIT_RET);
- jit_ret();
- jit_dec_synth();
-}
-
-void
-_jit_reti(jit_state_t *_jit, jit_word_t u)
-{
- jit_inc_synth_w(reti, u);
- jit_movi(JIT_RET, u);
- jit_ret();
- jit_dec_synth();
-}
-
-void
-_jit_retr_f(jit_state_t *_jit, jit_int32_t u)
-{
- jit_inc_synth_w(retr_f, u);
- if (JIT_FRET != u)
- jit_movr_f(JIT_FRET, u);
- else
- jit_live(JIT_FRET);
- jit_ret();
- jit_dec_synth();
-}
-
-void
-_jit_reti_f(jit_state_t *_jit, jit_float32_t u)
-{
- jit_inc_synth_f(reti_f, u);
- jit_movi_f(JIT_FRET, u);
- jit_ret();
- jit_dec_synth();
-}
-
-void
-_jit_retr_d(jit_state_t *_jit, jit_int32_t u)
-{
- jit_inc_synth_w(retr_d, u);
- if (JIT_FRET != u)
- jit_movr_d(JIT_FRET, u);
- else
- jit_live(JIT_FRET);
- jit_ret();
- jit_dec_synth();
-}
-
-void
-_jit_reti_d(jit_state_t *_jit, jit_float64_t u)
-{
- jit_inc_synth_d(reti_d, u);
- jit_movi_d(JIT_FRET, u);
- jit_ret();
- jit_dec_synth();
-}
-
-void
-_jit_epilog(jit_state_t *_jit)
-{
- assert(_jitc->function);
- assert(_jitc->function->epilog->next == NULL);
- jit_link(_jitc->function->epilog);
- _jitc->function = NULL;
-}
-
-jit_bool_t
-_jit_arg_register_p(jit_state_t *_jit, jit_node_t *u)
-{
- if (u->code == jit_code_arg)
- return (jit_arg_reg_p(u->u.w));
- assert(u->code == jit_code_arg_f || u->code == jit_code_arg_d);
- return (jit_arg_f_reg_p(u->u.w));
-}
-
-void
-_jit_ellipsis(jit_state_t *_jit)
-{
- jit_inc_synth(ellipsis);
- if (_jitc->prepare) {
- jit_link_prepare();
- /* Remember that a varargs function call is being constructed. */
- assert(!(_jitc->function->call.call & jit_call_varargs));
- _jitc->function->call.call |= jit_call_varargs;
- }
- else {
- jit_link_prolog();
- /* Remember the current function is varargs. */
- assert(!(_jitc->function->self.call & jit_call_varargs));
- _jitc->function->self.call |= jit_call_varargs;
-
-#if __X64 && !__CYGWIN__
- /* Allocate va_list like object in the stack.
- * If applicable, with enough space to save all argument
- * registers, and use fixed offsets for them. */
- _jitc->function->vaoff = jit_allocai(sizeof(jit_va_list_t));
-
- /* Initialize gp offset in save area. */
- if (jit_arg_reg_p(_jitc->function->self.argi))
- _jitc->function->vagp = _jitc->function->self.argi * 8;
- else
- _jitc->function->vagp = va_gp_max_offset;
-
- /* Initialize fp offset in save area. */
- if (jit_arg_f_reg_p(_jitc->function->self.argf))
- _jitc->function->vafp = _jitc->function->self.argf * 16 +
- va_gp_max_offset;
- else
- _jitc->function->vafp = va_fp_max_offset;
-#endif
- }
- jit_dec_synth();
-}
-
-void
-_jit_va_push(jit_state_t *_jit, jit_int32_t u)
-{
- jit_inc_synth_w(va_push, u);
- jit_pushargr(u);
- jit_dec_synth();
-}
-
-jit_node_t *
-_jit_arg(jit_state_t *_jit)
-{
- jit_node_t *node;
- jit_int32_t offset;
- assert(_jitc->function);
- assert(!(_jitc->function->self.call & jit_call_varargs));
-#if __X64
- if (jit_arg_reg_p(_jitc->function->self.argi)) {
- offset = _jitc->function->self.argi++;
-# if __CYGWIN__
- _jitc->function->self.size += sizeof(jit_word_t);
-# endif
- }
- else
-#endif
- {
- offset = _jitc->function->self.size;
- _jitc->function->self.size += REAL_WORDSIZE;
- }
- node = jit_new_node_ww(jit_code_arg, offset,
- ++_jitc->function->self.argn);
- jit_link_prolog();
- return (node);
-}
-
-jit_node_t *
-_jit_arg_f(jit_state_t *_jit)
-{
- jit_node_t *node;
- jit_int32_t offset;
- assert(_jitc->function);
- assert(!(_jitc->function->self.call & jit_call_varargs));
-#if __X64
-# if __CYGWIN__
- if (jit_arg_reg_p(_jitc->function->self.argi)) {
- offset = _jitc->function->self.argi++;
- _jitc->function->self.size += sizeof(jit_word_t);
- }
-# else
- if (jit_arg_f_reg_p(_jitc->function->self.argf))
- offset = _jitc->function->self.argf++;
-# endif
- else
-#endif
- {
- offset = _jitc->function->self.size;
- _jitc->function->self.size += REAL_WORDSIZE;
- }
- node = jit_new_node_ww(jit_code_arg_f, offset,
- ++_jitc->function->self.argn);
- jit_link_prolog();
- return (node);
-}
-
-jit_node_t *
-_jit_arg_d(jit_state_t *_jit)
-{
- jit_node_t *node;
- jit_int32_t offset;
- assert(_jitc->function);
- assert(!(_jitc->function->self.call & jit_call_varargs));
-#if __X64
-# if __CYGWIN__
- if (jit_arg_reg_p(_jitc->function->self.argi)) {
- offset = _jitc->function->self.argi++;
- _jitc->function->self.size += sizeof(jit_word_t);
- }
-# else
- if (jit_arg_f_reg_p(_jitc->function->self.argf))
- offset = _jitc->function->self.argf++;
-# endif
- else
-#endif
- {
- offset = _jitc->function->self.size;
- _jitc->function->self.size += sizeof(jit_float64_t);
- }
- node = jit_new_node_ww(jit_code_arg_d, offset,
- ++_jitc->function->self.argn);
- jit_link_prolog();
- return (node);
-}
-
-void
-_jit_getarg_c(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg);
- jit_inc_synth_wp(getarg_c, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_extr_c(u, JIT_RA0 - v->u.w);
- else
-#endif
- jit_ldxi_c(u, _RBP, v->u.w);
- jit_dec_synth();
-}
-
-void
-_jit_getarg_uc(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg);
- jit_inc_synth_wp(getarg_uc, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_extr_uc(u, JIT_RA0 - v->u.w);
- else
-#endif
- jit_ldxi_uc(u, _RBP, v->u.w);
- jit_dec_synth();
-}
-
-void
-_jit_getarg_s(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg);
- jit_inc_synth_wp(getarg_s, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_extr_s(u, JIT_RA0 - v->u.w);
- else
-#endif
- jit_ldxi_s(u, _RBP, v->u.w);
- jit_dec_synth();
-}
-
-void
-_jit_getarg_us(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg);
- jit_inc_synth_wp(getarg_us, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_extr_us(u, JIT_RA0 - v->u.w);
- else
-#endif
- jit_ldxi_us(u, _RBP, v->u.w);
- jit_dec_synth();
-}
-
-void
-_jit_getarg_i(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg);
- jit_inc_synth_wp(getarg_i, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w)) {
-# if __X64_32
- jit_movr(u, JIT_RA0 - v->u.w);
-# else
- jit_extr_i(u, JIT_RA0 - v->u.w);
-# endif
- }
- else
-#endif
- jit_ldxi_i(u, _RBP, v->u.w);
- jit_dec_synth();
-}
-
-#if __X64 && !__X64_32
-void
-_jit_getarg_ui(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg);
- jit_inc_synth_wp(getarg_ui, u, v);
- if (jit_arg_reg_p(v->u.w))
- jit_extr_ui(u, JIT_RA0 - v->u.w);
- else
- jit_ldxi_ui(u, _RBP, v->u.w);
- jit_dec_synth();
-}
-
-void
-_jit_getarg_l(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg);
- jit_inc_synth_wp(getarg_l, u, v);
- if (jit_arg_reg_p(v->u.w))
- jit_movr(u, JIT_RA0 - v->u.w);
- else
- jit_ldxi_l(u, _RBP, v->u.w);
- jit_dec_synth();
-}
-#endif
-
-void
-_jit_putargr(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg);
- jit_inc_synth_wp(putargr, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_movr(JIT_RA0 - v->u.w, u);
- else
-#endif
- jit_stxi(v->u.w, _RBP, u);
- jit_dec_synth();
-}
-
-void
-_jit_putargi(jit_state_t *_jit, jit_word_t u, jit_node_t *v)
-{
- jit_int32_t regno;
- assert(v->code == jit_code_arg);
- jit_inc_synth_wp(putargi, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_movi(JIT_RA0 - v->u.w, u);
- else
-#endif
- {
- regno = jit_get_reg(jit_class_gpr);
- jit_movi(regno, u);
- jit_stxi(v->u.w, _RBP, regno);
- jit_unget_reg(regno);
- }
- jit_dec_synth();
-}
-
-void
-_jit_getarg_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg_f);
- jit_inc_synth_wp(getarg_f, u, v);
-#if __X64
- if (jit_arg_f_reg_p(v->u.w))
- jit_movr_f(u, _XMM0 - v->u.w);
- else
-#endif
- jit_ldxi_f(u, _RBP, v->u.w);
- jit_dec_synth();
-}
-
-void
-_jit_putargr_f(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg_f);
- jit_inc_synth_wp(putargr_f, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_movr_f(_XMM0 - v->u.w, u);
- else
-#endif
- jit_stxi_f(v->u.w, _RBP, u);
- jit_dec_synth();
-}
-
-void
-_jit_putargi_f(jit_state_t *_jit, jit_float32_t u, jit_node_t *v)
-{
- jit_int32_t regno;
- assert(v->code == jit_code_arg_f);
- jit_inc_synth_fp(putargi_f, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_movi_f(_XMM0 - v->u.w, u);
- else
-#endif
- {
- regno = jit_get_reg(jit_class_gpr);
- jit_movi_f(regno, u);
- jit_stxi_f(v->u.w, _RBP, regno);
- jit_unget_reg(regno);
- }
- jit_dec_synth();
-}
-
-void
-_jit_getarg_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg_d);
- jit_inc_synth_wp(getarg_d, u, v);
-#if __X64
- if (jit_arg_f_reg_p(v->u.w))
- jit_movr_d(u, _XMM0 - v->u.w);
- else
-#endif
- jit_ldxi_d(u, _RBP, v->u.w);
- jit_dec_synth();
-}
-
-void
-_jit_putargr_d(jit_state_t *_jit, jit_int32_t u, jit_node_t *v)
-{
- assert(v->code == jit_code_arg_d);
- jit_inc_synth_wp(putargr_d, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_movr_d(_XMM0 - v->u.w, u);
- else
-#endif
- jit_stxi_d(v->u.w, _RBP, u);
- jit_dec_synth();
-}
-
-void
-_jit_putargi_d(jit_state_t *_jit, jit_float64_t u, jit_node_t *v)
-{
- jit_int32_t regno;
- assert(v->code == jit_code_arg_d);
- jit_inc_synth_dp(putargi_d, u, v);
-#if __X64
- if (jit_arg_reg_p(v->u.w))
- jit_movi_d(_XMM0 - v->u.w, u);
- else
-#endif
- {
- regno = jit_get_reg(jit_class_gpr);
- jit_movi_d(regno, u);
- jit_stxi_d(v->u.w, _RBP, regno);
- jit_unget_reg(regno);
- }
- jit_dec_synth();
-}
-
-void
-_jit_pushargr(jit_state_t *_jit, jit_int32_t u)
-{
- assert(_jitc->function);
- jit_inc_synth_w(pushargr, u);
- jit_link_prepare();
-#if __X64
- if (jit_arg_reg_p(_jitc->function->call.argi)) {
- jit_movr(JIT_RA0 - _jitc->function->call.argi, u);
- ++_jitc->function->call.argi;
-# if __CYGWIN__
- if (_jitc->function->call.call & jit_call_varargs)
- jit_stxi(_jitc->function->call.size, _RSP, u);
- _jitc->function->call.size += sizeof(jit_word_t);
-# endif
- }
- else
-#endif
- {
- jit_stxi(_jitc->function->call.size, _RSP, u);
- _jitc->function->call.size += REAL_WORDSIZE;
- }
- jit_dec_synth();
-}
-
-void
-_jit_pushargi(jit_state_t *_jit, jit_word_t u)
-{
- jit_int32_t regno;
- assert(_jitc->function);
- jit_inc_synth_w(pushargi, u);
- jit_link_prepare();
-#if __X64
- if (jit_arg_reg_p(_jitc->function->call.argi)) {
- jit_movi(JIT_RA0 - _jitc->function->call.argi, u);
-# if __CYGWIN__
- if (_jitc->function->call.call & jit_call_varargs)
- jit_stxi(_jitc->function->call.size, _RSP,
- JIT_RA0 - _jitc->function->call.argi);
- _jitc->function->call.size += sizeof(jit_word_t);
-# endif
- ++_jitc->function->call.argi;
- }
- else
-#endif
- {
- regno = jit_get_reg(jit_class_gpr);
- jit_movi(regno, u);
- jit_stxi(_jitc->function->call.size, _RSP, regno);
- _jitc->function->call.size += REAL_WORDSIZE;
- jit_unget_reg(regno);
- }
- jit_dec_synth();
-}
-
-void
-_jit_pushargr_f(jit_state_t *_jit, jit_int32_t u)
-{
- assert(_jitc->function);
- jit_inc_synth_w(pushargr_f, u);
- jit_link_prepare();
-#if __X64
-# if __CYGWIN__
- if (jit_arg_reg_p(_jitc->function->call.argi)) {
- jit_movr_f(_XMM0 - _jitc->function->call.argi, u);
- if (_jitc->function->call.call & jit_call_varargs) {
- jit_stxi_f(_jitc->function->call.size, _RSP,
- _XMM0 - _jitc->function->call.argi);
- jit_ldxi_i(JIT_RA0 - _jitc->function->call.argi, _RSP,
- _jitc->function->call.size);
- }
- ++_jitc->function->call.argi;
- _jitc->function->call.size += sizeof(jit_word_t);
- }
-# else
- if (jit_arg_f_reg_p(_jitc->function->self.argf)) {
- jit_movr_f(_XMM0 - _jitc->function->call.argf, u);
- ++_jitc->function->call.argf;
- }
-# endif
- else
-#endif
- {
- jit_stxi_f(_jitc->function->call.size, _RSP, u);
- _jitc->function->call.size += REAL_WORDSIZE;
- }
- jit_dec_synth();
-}
-
-void
-_jit_pushargi_f(jit_state_t *_jit, jit_float32_t u)
-{
- jit_int32_t regno;
- assert(_jitc->function);
- jit_inc_synth_f(pushargi_f, u);
- jit_link_prepare();
-#if __X64
-# if __CYGWIN__
- if (jit_arg_reg_p(_jitc->function->call.argi)) {
- jit_movi_f(_XMM0 - _jitc->function->call.argi, u);
- if (_jitc->function->call.call & jit_call_varargs) {
- jit_stxi_f(_jitc->function->call.size, _RSP,
- _XMM0 - _jitc->function->call.argi);
- jit_ldxi_i(JIT_RA0 - _jitc->function->call.argi, _RSP,
- _jitc->function->call.size);
- }
- ++_jitc->function->call.argi;
- _jitc->function->call.size += sizeof(jit_word_t);
- }
-# else
- if (jit_arg_f_reg_p(_jitc->function->call.argf)) {
- jit_movi_f(_XMM0 - _jitc->function->call.argf, u);
- ++_jitc->function->call.argf;
- }
-# endif
- else
-#endif
- {
- regno = jit_get_reg(jit_class_fpr);
- jit_movi_f(regno, u);
- jit_stxi_f(_jitc->function->call.size, _RSP, regno);
- _jitc->function->call.size += REAL_WORDSIZE;
- jit_unget_reg(regno);
- }
- jit_dec_synth();
-}
-
-void
-_jit_pushargr_d(jit_state_t *_jit, jit_int32_t u)
-{
- assert(_jitc->function);
- jit_inc_synth_w(pushargr_d, u);
- jit_link_prepare();
-#if __X64
-# if __CYGWIN__
- if (jit_arg_reg_p(_jitc->function->call.argi)) {
- jit_movr_d(_XMM0 - _jitc->function->call.argi, u);
- if (_jitc->function->call.call & jit_call_varargs) {
- jit_stxi_d(_jitc->function->call.size, _RSP,
- _XMM0 - _jitc->function->call.argi);
- jit_ldxi_l(JIT_RA0 - _jitc->function->call.argi, _RSP,
- _jitc->function->call.size);
- }
- ++_jitc->function->call.argi;
- _jitc->function->call.size += sizeof(jit_word_t);
- }
-# else
- if (jit_arg_f_reg_p(_jitc->function->call.argf)) {
- jit_movr_d(_XMM0 - _jitc->function->call.argf, u);
- ++_jitc->function->call.argf;
- }
-# endif
- else
-#endif
- {
- jit_stxi_d(_jitc->function->call.size, _RSP, u);
- _jitc->function->call.size += sizeof(jit_float64_t);
- }
- jit_dec_synth();
-}
-
-void
-_jit_pushargi_d(jit_state_t *_jit, jit_float64_t u)
-{
- jit_int32_t regno;
- assert(_jitc->function);
- jit_inc_synth_d(pushargi_d, u);
- jit_link_prepare();
-#if __X64
-# if __CYGWIN__
- if (jit_arg_reg_p(_jitc->function->call.argi)) {
- jit_movi_d(_XMM0 - _jitc->function->call.argi, u);
- if (_jitc->function->call.call & jit_call_varargs) {
- jit_stxi_d(_jitc->function->call.size, _RSP,
- _XMM0 - _jitc->function->call.argi);
- jit_ldxi_l(JIT_RA0 - _jitc->function->call.argi, _RSP,
- _jitc->function->call.size);
- }
- ++_jitc->function->call.argi;
- _jitc->function->call.size += sizeof(jit_word_t);
- }
-# else
- if (jit_arg_f_reg_p(_jitc->function->call.argf)) {
- jit_movi_d(_XMM0 - _jitc->function->call.argf, u);
- ++_jitc->function->call.argf;
- }
-# endif
- else
-#endif
- {
- regno = jit_get_reg(jit_class_fpr);
- jit_movi_d(regno, u);
- jit_stxi_d(_jitc->function->call.size, _RSP, regno);
- _jitc->function->call.size += sizeof(jit_float64_t);
- jit_unget_reg(regno);
- }
- jit_dec_synth();
-}
-
-jit_bool_t
-_jit_regarg_p(jit_state_t *_jit, jit_node_t *node, jit_int32_t regno)
-{
-#if __X64
- jit_int32_t spec;
-
- spec = jit_class(_rvs[regno].spec);
- if (spec & jit_class_arg) {
- if (spec & jit_class_gpr) {
- regno = JIT_RA0 - regno;
- if (regno >= 0 && regno < node->v.w)
- return (1);
- }
- else if (spec & jit_class_fpr) {
- regno = _XMM0 - regno;
- if (regno >= 0 && regno < node->w.w)
- return (1);
- }
- }
-#endif
- return (0);
-}
-
-void
-_jit_finishr(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_int32_t reg;
- jit_node_t *call;
- assert(_jitc->function);
- reg = r0;
- jit_inc_synth_w(finishr, r0);
- if (_jitc->function->self.alen < _jitc->function->call.size)
- _jitc->function->self.alen = _jitc->function->call.size;
-#if __X64
-# if !__CYGWIN__
- if (_jitc->function->call.call & jit_call_varargs) {
- if (jit_regno(reg) == _RAX) {
- reg = jit_get_reg(jit_class_gpr);
- jit_movr(reg, _RAX);
- }
- if (_jitc->function->call.argf)
- jit_movi(_RAX, _jitc->function->call.argf);
- else
- jit_movi(_RAX, 0);
- if (reg != r0)
- jit_unget_reg(reg);
- }
-# endif
-#endif
- call = jit_callr(reg);
- call->v.w = _jitc->function->call.argi;
- call->w.w = _jitc->function->call.argf;
- _jitc->function->call.argi = _jitc->function->call.argf =
- _jitc->function->call.size = 0;
- _jitc->prepare = 0;
- jit_dec_synth();
-}
-
-jit_node_t *
-_jit_finishi(jit_state_t *_jit, jit_pointer_t i0)
-{
-#if __X64
- jit_int32_t reg;
-#endif
- jit_node_t *node;
- assert(_jitc->function);
- jit_inc_synth_w(finishi, (jit_word_t)i0);
- if (_jitc->function->self.alen < _jitc->function->call.size)
- _jitc->function->self.alen = _jitc->function->call.size;
-#if __X64
- /* FIXME preventing %rax allocation is good enough, but for consistency
- * it should automatically detect %rax is dead, in case it has run out
- * registers, and not save/restore it, what would be wrong if using the
- * the return value, otherwise, just a needless noop */
- /* >> prevent %rax from being allocated as the function pointer */
- jit_regset_setbit(&_jitc->regarg, _RAX);
- reg = jit_get_reg(jit_class_gpr);
- node = jit_movi(reg, (jit_word_t)i0);
- jit_finishr(reg);
- jit_unget_reg(reg);
- /* << prevent %rax from being allocated as the function pointer */
- jit_regset_clrbit(&_jitc->regarg, _RAX);
-#else
- node = jit_calli(i0);
- node->v.w = _jitc->function->call.argi;
- node->w.w = _jitc->function->call.argf;
-#endif
- _jitc->function->call.argi = _jitc->function->call.argf =
- _jitc->function->call.size = 0;
- _jitc->prepare = 0;
- jit_dec_synth();
- return (node);
-}
-
-void
-_jit_retval_c(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_inc_synth_w(retval_c, r0);
- jit_extr_c(r0, JIT_RET);
- jit_dec_synth();
-}
-
-void
-_jit_retval_uc(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_inc_synth_w(retval_uc, r0);
- jit_extr_uc(r0, JIT_RET);
- jit_dec_synth();
-}
-
-void
-_jit_retval_s(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_inc_synth_w(retval_s, r0);
- jit_extr_s(r0, JIT_RET);
- jit_dec_synth();
-}
-
-void
-_jit_retval_us(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_inc_synth_w(retval_us, r0);
- jit_extr_us(r0, JIT_RET);
- jit_dec_synth();
-}
-
-void
-_jit_retval_i(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_inc_synth_w(retval_i, r0);
-#if __X32 || __X64_32
- if (r0 != JIT_RET)
- jit_movr(r0, JIT_RET);
-#else
- jit_extr_i(r0, JIT_RET);
-#endif
- jit_dec_synth();
-}
-
-#if __X64 && !__X64_32
-void
-_jit_retval_ui(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_inc_synth_w(retval_ui, r0);
- jit_extr_ui(r0, JIT_RET);
- jit_dec_synth();
-}
-
-void
-_jit_retval_l(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_inc_synth_w(retval_l, r0);
- if (r0 != JIT_RET)
- jit_movr(r0, JIT_RET);
- jit_dec_synth();
-}
-#endif
-
-void
-_jit_retval_f(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_inc_synth_w(retval_f, r0);
-#if __X64
- if (r0 != JIT_FRET)
- jit_movr_f(r0, JIT_FRET);
-#endif
- jit_dec_synth();
-}
-
-void
-_jit_retval_d(jit_state_t *_jit, jit_int32_t r0)
-{
- jit_inc_synth_w(retval_d, r0);
-#if __X64
- if (r0 != JIT_FRET)
- jit_movr_d(r0, JIT_FRET);
-#endif
- jit_dec_synth();
-}
-
-jit_pointer_t
-_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;
- struct {
- jit_node_t *node;
- jit_word_t word;
-#if DEVEL_DISASSEMBLER
- jit_word_t prevw;
-#endif
- jit_int32_t patch_offset;
- } undo;
-#if DEVEL_DISASSEMBLER
- jit_word_t prevw;
-#endif
-
- _jitc->function = NULL;
-
- jit_reglive_setup();
-
- undo.word = 0;
- undo.node = NULL;
- undo.patch_offset = 0;
-#define case_rr(name, type) \
- case jit_code_##name##r##type: \
- name##r##type(rn(node->u.w), rn(node->v.w)); \
- break
-#define case_rw(name, type) \
- case jit_code_##name##i##type: \
- name##i##type(rn(node->u.w), node->v.w); \
- break
-#define case_rf(name, type) \
- case jit_code_##name##r##type: \
- if (jit_x87_reg_p(node->v.w)) \
- x87_##name##r##type(rn(node->u.w), rn(node->v.w)); \
- else \
- sse_##name##r##type(rn(node->u.w), rn(node->v.w)); \
- break
-#define case_fr(name, type) \
- case jit_code_##name##r##type: \
- if (jit_x87_reg_p(node->u.w)) \
- x87_##name##r##type(rn(node->u.w), rn(node->v.w)); \
- else \
- sse_##name##r##type(rn(node->u.w), rn(node->v.w)); \
- break
-#define case_fw(name, type) \
- case jit_code_##name##i##type: \
- if (jit_x87_reg_p(node->u.w)) \
- x87_##name##i##type(rn(node->u.w), node->v.w); \
- else \
- sse_##name##i##type(rn(node->u.w), node->v.w); \
- break
-#define case_wr(name, type) \
- case jit_code_##name##i##type: \
- name##i##type(node->u.w, rn(node->v.w)); \
- break
-#define case_wf(name, type) \
- case jit_code_##name##i##type: \
- if (jit_x87_reg_p(node->v.w)) \
- x87_##name##i##type(node->u.w, rn(node->v.w)); \
- else \
- sse_##name##i##type(node->u.w, rn(node->v.w)); \
- break
-#define case_ff(name, type) \
- case jit_code_##name##r##type: \
- if (jit_x87_reg_p(node->u.w) && \
- jit_x87_reg_p(node->v.w)) \
- x87_##name##r##type(rn(node->u.w), rn(node->v.w)); \
- else \
- sse_##name##r##type(rn(node->u.w), rn(node->v.w)); \
- break;
-#define case_rrr(name, type) \
- case jit_code_##name##r##type: \
- name##r##type(rn(node->u.w), \
- rn(node->v.w), rn(node->w.w)); \
- break
-#define case_rrrr(name, type) \
- case jit_code_##name##r##type: \
- name##r##type(rn(node->u.q.l), rn(node->u.q.h), \
- rn(node->v.w), rn(node->w.w)); \
- break
-#define case_frr(name, type) \
- case jit_code_##name##r##type: \
- if (jit_x87_reg_p(node->u.w)) \
- x87_##name##r##type(rn(node->u.w), \
- rn(node->v.w), rn(node->w.w)); \
- else \
- sse_##name##r##type(rn(node->u.w), \
- rn(node->v.w), rn(node->w.w)); \
- break
-#define case_rrf(name, type) \
- case jit_code_##name##r##type: \
- if (jit_x87_reg_p(node->w.w)) \
- x87_##name##r##type(rn(node->u.w), \
- rn(node->v.w), rn(node->w.w)); \
- else \
- sse_##name##r##type(rn(node->u.w), \
- rn(node->v.w), rn(node->w.w)); \
- break
-#define case_rrw(name, type) \
- case jit_code_##name##i##type: \
- name##i##type(rn(node->u.w), rn(node->v.w), node->w.w); \
- break
-#define case_rrrw(name, type) \
- case jit_code_##name##i##type: \
- name##i##type(rn(node->u.q.l), rn(node->u.q.h), \
- rn(node->v.w), node->w.w); \
- break
-#define case_frw(name, type) \
- case jit_code_##name##i##type: \
- if (jit_x87_reg_p(node->u.w)) \
- x87_##name##i##type(rn(node->u.w), \
- rn(node->v.w), node->w.w); \
- else \
- sse_##name##i##type(rn(node->u.w), \
- rn(node->v.w), node->w.w); \
- break
-#define case_wrr(name, type) \
- case jit_code_##name##i##type: \
- name##i##type(node->u.w, rn(node->v.w), rn(node->w.w)); \
- break
-#define case_wrf(name, type) \
- case jit_code_##name##i##type: \
- if (jit_x87_reg_p(node->w.w)) \
- x87_##name##i##type(node->u.w, \
- rn(node->v.w), rn(node->w.w)); \
- else \
- sse_##name##i##type(node->u.w, \
- rn(node->v.w), rn(node->w.w)); \
- break
-#define case_brr(name, type) \
- case jit_code_##name##r##type: \
- temp = node->u.n; \
- assert(temp->code == jit_code_label || \
- temp->code == jit_code_epilog); \
- if (temp->flag & jit_flag_patch) \
- name##r##type(temp->u.w, rn(node->v.w), \
- rn(node->w.w)); \
- else { \
- word = name##r##type(_jit->pc.w, \
- rn(node->v.w), rn(node->w.w)); \
- patch(word, node); \
- } \
- break
-#define case_brw(name, type) \
- case jit_code_##name##i##type: \
- temp = node->u.n; \
- assert(temp->code == jit_code_label || \
- temp->code == jit_code_epilog); \
- if (temp->flag & jit_flag_patch) \
- name##i##type(temp->u.w, \
- rn(node->v.w), node->w.w); \
- else { \
- word = name##i##type(_jit->pc.w, \
- rn(node->v.w), node->w.w); \
- patch(word, node); \
- } \
- break
-#define case_rff(name, type) \
- case jit_code_##name##r##type: \
- if (jit_x87_reg_p(node->v.w) && \
- jit_x87_reg_p(node->w.w)) \
- x87_##name##r##type(rn(node->u.w), rn(node->v.w), \
- rn(node->w.w)); \
- else \
- sse_##name##r##type(rn(node->u.w), rn(node->v.w), \
- rn(node->w.w)); \
- break;
-#define case_rfw(name, type, size) \
- case jit_code_##name##i##type: \
- assert(node->flag & jit_flag_data); \
- if (jit_x87_reg_p(node->v.w)) \
- x87_##name##i##type(rn(node->u.w), rn(node->v.w), \
- (jit_float##size##_t *)node->w.n->u.w); \
- else \
- sse_##name##i##type(rn(node->u.w), rn(node->v.w), \
- (jit_float##size##_t *)node->w.n->u.w); \
- break
-#define case_fff(name, type) \
- case jit_code_##name##r##type: \
- if (jit_x87_reg_p(node->u.w) && \
- jit_x87_reg_p(node->v.w) && \
- jit_x87_reg_p(node->w.w)) \
- x87_##name##r##type(rn(node->u.w), \
- rn(node->v.w), rn(node->w.w)); \
- else \
- sse_##name##r##type(rn(node->u.w), \
- rn(node->v.w), rn(node->w.w)); \
- break
-#define case_ffw(name, type, size) \
- case jit_code_##name##i##type: \
- assert(node->flag & jit_flag_data); \
- if (jit_x87_reg_p(node->u.w) && \
- jit_x87_reg_p(node->v.w)) \
- x87_##name##i##type(rn(node->u.w), rn(node->v.w), \
- (jit_float##size##_t *)node->w.n->u.w); \
- else \
- sse_##name##i##type(rn(node->u.w), rn(node->v.w), \
- (jit_float##size##_t *)node->w.n->u.w); \
- break
-#define case_bff(name, type) \
- case jit_code_b##name##r##type: \
- temp = node->u.n; \
- assert(temp->code == jit_code_label || \
- temp->code == jit_code_epilog); \
- if (temp->flag & jit_flag_patch) { \
- if (jit_x87_reg_p(node->v.w) && \
- jit_x87_reg_p(node->w.w)) \
- x87_b##name##r##type(temp->u.w, \
- rn(node->v.w), rn(node->w.w)); \
- else \
- sse_b##name##r##type(temp->u.w, \
- rn(node->v.w), rn(node->w.w)); \
- } \
- else { \
- if (jit_x87_reg_p(node->v.w) && \
- jit_x87_reg_p(node->w.w)) \
- word = x87_b##name##r##type(_jit->pc.w, \
- rn(node->v.w), rn(node->w.w)); \
- else \
- word = sse_b##name##r##type(_jit->pc.w, \
- rn(node->v.w), rn(node->w.w)); \
- patch(word, node); \
- } \
- break
-#define case_bfw(name, type, size) \
- case jit_code_b##name##i##type: \
- temp = node->u.n; \
- assert(temp->code == jit_code_label || \
- temp->code == jit_code_epilog); \
- if (temp->flag & jit_flag_patch) { \
- if (jit_x87_reg_p(node->v.w)) \
- x87_b##name##i##type(temp->u.w, \
- rn(node->v.w), \
- (jit_float##size##_t *)node->w.n->u.w); \
- else \
- sse_b##name##i##type(temp->u.w, \
- rn(node->v.w), \
- (jit_float##size##_t *)node->w.n->u.w); \
- } \
- else { \
- if (jit_x87_reg_p(node->v.w)) \
- word = x87_b##name##i##type(_jit->pc.w, \
- rn(node->v.w), \
- (jit_float##size##_t *)node->w.n->u.w); \
- else \
- word = sse_b##name##i##type(_jit->pc.w, \
- rn(node->v.w), \
- (jit_float##size##_t *)node->w.n->u.w); \
- patch(word, node); \
- } \
- break
-#if DEVEL_DISASSEMBLER
- prevw = _jit->pc.w;
-#endif
- for (node = _jitc->head; node; node = node->next) {
- if (_jit->pc.uc >= _jitc->code.end)
- return (NULL);
-
-#if DEVEL_DISASSEMBLER
- node->offset = (jit_uword_t)_jit->pc.w - (jit_uword_t)prevw;
- prevw = _jit->pc.w;
-#endif
- value = jit_classify(node->code);
- jit_regarg_set(node, value);
- switch (node->code) {
- case jit_code_align:
- assert(!(node->u.w & (node->u.w - 1)) &&
- node->u.w <= sizeof(jit_word_t));
- if ((word = _jit->pc.w & (node->u.w - 1)))
- nop(node->u.w - word);
- break;
- case jit_code_note: case jit_code_name:
- node->u.w = _jit->pc.w;
- break;
- case jit_code_label:
- if ((node->link || (node->flag & jit_flag_use)) &&
- (word = _jit->pc.w & (sizeof(jit_word_t) - 1)))
- nop(sizeof(jit_word_t) - word);
- /* remember label is defined */
- node->flag |= jit_flag_patch;
- node->u.w = _jit->pc.w;
- break;
- case_rrr(add,);
- case_rrw(add,);
- case_rrr(addx,);
- case_rrw(addx,);
- case_rrr(addc,);
- case_rrw(addc,);
- case_rrr(sub,);
- case_rrw(sub,);
- case_rrr(subx,);
- case_rrw(subx,);
- case_rrr(subc,);
- case_rrw(subc,);
- case_rrw(rsb,);
- case_rrr(mul,);
- case_rrw(mul,);
- case_rrrr(qmul,);
- case_rrrw(qmul,);
- case_rrrr(qmul, _u);
- case_rrrw(qmul, _u);
- case_rrr(div,);
- case_rrw(div,);
- case_rrr(div, _u);
- case_rrw(div, _u);
- case_rrrr(qdiv,);
- case_rrrw(qdiv,);
- case_rrrr(qdiv, _u);
- case_rrrw(qdiv, _u);
- case_rrr(rem,);
- case_rrw(rem,);
- case_rrr(rem, _u);
- case_rrw(rem, _u);
- case_rrr(and,);
- case_rrw(and,);
- case_rrr(or,);
- case_rrw(or,);
- case_rrr(xor,);
- case_rrw(xor,);
- case_rrr(lsh,);
- case_rrw(lsh,);
- case_rrr(rsh,);
- case_rrw(rsh,);
- case_rrr(rsh, _u);
- case_rrw(rsh, _u);
- case_rr(neg,);
- case_rr(com,);
- case_rrr(lt,);
- case_rrw(lt,);
- case_rrr(lt, _u);
- case_rrw(lt, _u);
- case_rrr(le,);
- case_rrw(le,);
- case_rrr(le, _u);
- case_rrw(le, _u);
- case_rrr(eq,);
- case_rrw(eq,);
- case_rrr(ge,);
- case_rrw(ge,);
- case_rrr(ge, _u);
- case_rrw(ge, _u);
- case_rrr(gt,);
- case_rrw(gt,);
- case_rrr(gt, _u);
- case_rrw(gt, _u);
- case_rrr(ne,);
- case_rrw(ne,);
- case_rr(mov,);
- case jit_code_movi:
- if (node->flag & jit_flag_node) {
- temp = node->v.n;
- if (temp->code == jit_code_data ||
- (temp->code == jit_code_label &&
- (temp->flag & jit_flag_patch)))
- movi(rn(node->u.w), temp->u.w);
- else {
- assert(temp->code == jit_code_label ||
- temp->code == jit_code_epilog);
- word = movi_p(rn(node->u.w), node->v.w);
- patch(word, node);
- }
- }
- else
- movi(rn(node->u.w), node->v.w);
- break;
- case_rr(hton, _us);
- case_rr(hton, _ui);
-#if __X64 && !__X64_32
- case_rr(hton, _ul);
-#endif
- case_rr(ext, _c);
- case_rr(ext, _uc);
- case_rr(ext, _s);
- case_rr(ext, _us);
-#if __X64 && !__X64_32
- case_rr(ext, _i);
- case_rr(ext, _ui);
-#endif
- case_rf(trunc, _f_i);
- case_rf(trunc, _d_i);
-#if __X64
- case_rf(trunc, _f_l);
- case_rf(trunc, _d_l);
-#endif
- case_rr(ld, _c);
- case_rw(ld, _c);
- case_rr(ld, _uc);
- case_rw(ld, _uc);
- case_rr(ld, _s);
- case_rw(ld, _s);
- case_rr(ld, _us);
- case_rw(ld, _us);
- case_rr(ld, _i);
- case_rw(ld, _i);
-#if __X64 && !__X64_32
- case_rr(ld, _ui);
- case_rw(ld, _ui);
- case_rr(ld, _l);
- case_rw(ld, _l);
-#endif
- case_rrr(ldx, _c);
- case_rrw(ldx, _c);
- case_rrr(ldx, _uc);
- case_rrw(ldx, _uc);
- case_rrr(ldx, _s);
- case_rrw(ldx, _s);
- case_rrr(ldx, _us);
- case_rrw(ldx, _us);
- case_rrr(ldx, _i);
- case_rrw(ldx, _i);
-#if __X64 && !__X64_32
- case_rrr(ldx, _ui);
- case_rrw(ldx, _ui);
- case_rrr(ldx, _l);
- case_rrw(ldx, _l);
-#endif
- case_rr(st, _c);
- case_wr(st, _c);
- case_rr(st, _s);
- case_wr(st, _s);
- case_rr(st, _i);
- case_wr(st, _i);
-#if __X64 && !__X64_32
- case_rr(st, _l);
- case_wr(st, _l);
-#endif
- case_rrr(stx, _c);
- case_wrr(stx, _c);
- case_rrr(stx, _s);
- case_wrr(stx, _s);
- case_rrr(stx, _i);
- case_wrr(stx, _i);
-#if __X64 && !__X64_32
- case_rrr(stx, _l);
- case_wrr(stx, _l);
-#endif
- case_brr(blt,);
- case_brw(blt,);
- case_brr(blt, _u);
- case_brw(blt, _u);
- case_brr(ble,);
- case_brw(ble,);
- case_brr(ble, _u);
- case_brw(ble, _u);
- case_brr(beq,);
- case_brw(beq,);
- case_brr(bge,);
- case_brw(bge,);
- case_brr(bge, _u);
- case_brw(bge, _u);
- case_brr(bgt,);
- case_brw(bgt,);
- case_brr(bgt, _u);
- case_brw(bgt, _u);
- case_brr(bne,);
- case_brw(bne,);
- case_brr(bms,);
- case_brw(bms,);
- case_brr(bmc,);
- case_brw(bmc,);
- case_brr(boadd,);
- case_brw(boadd,);
- case_brr(boadd, _u);
- case_brw(boadd, _u);
- case_brr(bxadd,);
- case_brw(bxadd,);
- case_brr(bxadd, _u);
- case_brw(bxadd, _u);
- case_brr(bosub,);
- case_brw(bosub,);
- case_brr(bosub, _u);
- case_brw(bosub, _u);
- case_brr(bxsub,);
- case_brw(bxsub,);
- case_brr(bxsub, _u);
- case_brw(bxsub, _u);
- case_fff(add, _f);
- case_ffw(add, _f, 32);
- case_fff(sub, _f);
- case_ffw(sub, _f, 32);
- case_ffw(rsb, _f, 32);
- case_fff(mul, _f);
- case_ffw(mul, _f, 32);
- case_fff(div, _f);
- case_ffw(div, _f, 32);
- case_ff(abs, _f);
- case_ff(neg, _f);
- case_ff(sqrt, _f);
- case_fr(ext, _f);
- case_fr(ext, _d_f);
- case_rff(lt, _f);
- case_rfw(lt, _f, 32);
- case_rff(le, _f);
- case_rfw(le, _f, 32);
- case_rff(eq, _f);
- case_rfw(eq, _f, 32);
- case_rff(ge, _f);
- case_rfw(ge, _f, 32);
- case_rff(gt, _f);
- case_rfw(gt, _f, 32);
- case_rff(ne, _f);
- case_rfw(ne, _f, 32);
- case_rff(unlt, _f);
- case_rfw(unlt, _f, 32);
- case_rff(unle, _f);
- case_rfw(unle, _f, 32);
- case_rff(uneq, _f);
- case_rfw(uneq, _f, 32);
- case_rff(unge, _f);
- case_rfw(unge, _f, 32);
- case_rff(ungt, _f);
- case_rfw(ungt, _f, 32);
- case_rff(ltgt, _f);
- case_rfw(ltgt, _f, 32);
- case_rff(ord, _f);
- case_rfw(ord, _f, 32);
- case_rff(unord, _f);
- case_rfw(unord, _f, 32);
- case jit_code_movr_f:
- if (jit_x87_reg_p(node->u.w)) {
- if (jit_x87_reg_p(node->v.w))
- x87_movr_f(rn(node->u.w), rn(node->v.w));
- else
- x87_from_sse_f(rn(node->u.w), rn(node->v.w));
- }
- else {
- if (jit_sse_reg_p(node->v.w))
- sse_movr_f(rn(node->u.w), rn(node->v.w));
- else
- sse_from_x87_f(rn(node->u.w), rn(node->v.w));
- }
- break;
- case jit_code_movi_f:
- assert(node->flag & jit_flag_data);
- if (jit_x87_reg_p(node->u.w))
- x87_movi_f(rn(node->u.w), (jit_float32_t *)node->v.n->u.w);
- else
- sse_movi_f(rn(node->u.w), (jit_float32_t *)node->v.n->u.w);
- break;
- case_fr(ld, _f);
- case_fw(ld, _f);
- case_frr(ldx, _f);
- case_frw(ldx, _f);
- case_rf(st, _f);
- case_wf(st, _f);
- case_rrf(stx, _f);
- case_wrf(stx, _f);
- case_bff(lt, _f);
- case_bfw(lt, _f, 32);
- case_bff(le, _f);
- case_bfw(le, _f, 32);
- case_bff(eq, _f);
- case_bfw(eq, _f, 32);
- case_bff(ge, _f);
- case_bfw(ge, _f, 32);
- case_bff(gt, _f);
- case_bfw(gt, _f, 32);
- case_bff(ne, _f);
- case_bfw(ne, _f, 32);
- case_bff(unlt, _f);
- case_bfw(unlt, _f, 32);
- case_bff(unle, _f);
- case_bfw(unle, _f, 32);
- case_bff(uneq, _f);
- case_bfw(uneq, _f, 32);
- case_bff(unge, _f);
- case_bfw(unge, _f, 32);
- case_bff(ungt, _f);
- case_bfw(ungt, _f, 32);
- case_bff(ltgt, _f);
- case_bfw(ltgt, _f, 32);
- case_bff(ord, _f);
- case_bfw(ord, _f, 32);
- case_bff(unord, _f);
- case_bfw(unord, _f, 32);
- case_fff(add, _d);
- case_ffw(add, _d, 64);
- case_fff(sub, _d);
- case_ffw(sub, _d, 64);
- case_ffw(rsb, _d, 64);
- case_fff(mul, _d);
- case_ffw(mul, _d, 64);
- case_fff(div, _d);
- case_ffw(div, _d, 64);
- case_ff(abs, _d);
- case_ff(neg, _d);
- case_ff(sqrt, _d);
- case_fr(ext, _d);
- case_fr(ext, _f_d);
- case_rff(lt, _d);
- case_rfw(lt, _d, 64);
- case_rff(le, _d);
- case_rfw(le, _d, 64);
- case_rff(eq, _d);
- case_rfw(eq, _d, 64);
- case_rff(ge, _d);
- case_rfw(ge, _d, 64);
- case_rff(gt, _d);
- case_rfw(gt, _d, 64);
- case_rff(ne, _d);
- case_rfw(ne, _d, 64);
- case_rff(unlt, _d);
- case_rfw(unlt, _d, 64);
- case_rff(unle, _d);
- case_rfw(unle, _d, 64);
- case_rff(uneq, _d);
- case_rfw(uneq, _d, 64);
- case_rff(unge, _d);
- case_rfw(unge, _d, 64);
- case_rff(ungt, _d);
- case_rfw(ungt, _d, 64);
- case_rff(ltgt, _d);
- case_rfw(ltgt, _d, 64);
- case_rff(ord, _d);
- case_rfw(ord, _d, 64);
- case_rff(unord, _d);
- case_rfw(unord, _d, 64);
- case jit_code_movr_d:
- if (jit_x87_reg_p(node->u.w)) {
- if (jit_x87_reg_p(node->v.w))
- x87_movr_d(rn(node->u.w), rn(node->v.w));
- else
- x87_from_sse_d(rn(node->u.w), rn(node->v.w));
- }
- else {
- if (jit_sse_reg_p(node->v.w))
- sse_movr_d(rn(node->u.w), rn(node->v.w));
- else
- sse_from_x87_d(rn(node->u.w), rn(node->v.w));
- }
- break;
- case jit_code_movi_d:
- assert(node->flag & jit_flag_data);
- if (jit_x87_reg_p(node->u.w))
- x87_movi_d(rn(node->u.w), (jit_float64_t *)node->v.n->u.w);
- else
- sse_movi_d(rn(node->u.w), (jit_float64_t *)node->v.n->u.w);
- break;
- case_fr(ld, _d);
- case_fw(ld, _d);
- case_frr(ldx, _d);
- case_frw(ldx, _d);
- case_rf(st, _d);
- case_wf(st, _d);
- case_rrf(stx, _d);
- case_wrf(stx, _d);
- case_bff(lt, _d);
- case_bfw(lt, _d, 64);
- case_bff(le, _d);
- case_bfw(le, _d, 64);
- case_bff(eq, _d);
- case_bfw(eq, _d, 64);
- case_bff(ge, _d);
- case_bfw(ge, _d, 64);
- case_bff(gt, _d);
- case_bfw(gt, _d, 64);
- case_bff(ne, _d);
- case_bfw(ne, _d, 64);
- case_bff(unlt, _d);
- case_bfw(unlt, _d, 64);
- case_bff(unle, _d);
- case_bfw(unle, _d, 64);
- case_bff(uneq, _d);
- case_bfw(uneq, _d, 64);
- case_bff(unge, _d);
- case_bfw(unge, _d, 64);
- case_bff(ungt, _d);
- case_bfw(ungt, _d, 64);
- case_bff(ltgt, _d);
- case_bfw(ltgt, _d, 64);
- case_bff(ord, _d);
- case_bfw(ord, _d, 64);
- case_bff(unord, _d);
- case_bfw(unord, _d, 64);
- case jit_code_jmpr:
- jmpr(rn(node->u.w));
- break;
- case jit_code_jmpi:
- if (node->flag & jit_flag_node) {
- temp = node->u.n;
- assert(temp->code == jit_code_label ||
- temp->code == jit_code_epilog);
- if (temp->flag & jit_flag_patch)
- jmpi(temp->u.w);
- else {
- word = jmpi(_jit->pc.w);
- patch(word, node);
- }
- }
- else
- jmpi(node->u.w);
- break;
- case jit_code_callr:
- callr(rn(node->u.w));
- break;
- case jit_code_calli:
- if (node->flag & jit_flag_node) {
- temp = node->u.n;
- assert(temp->code == jit_code_label ||
- temp->code == jit_code_epilog);
- word = calli(temp->u.w);
- if (!(temp->flag & jit_flag_patch))
- patch(word, node);
- }
- else
- calli(node->u.w);
- break;
- case jit_code_prolog:
- _jitc->function = _jitc->functions.ptr + node->w.w;
- undo.node = node;
- undo.word = _jit->pc.w;
-#if DEVEL_DISASSEMBLER
- undo.prevw = prevw;
-#endif
- undo.patch_offset = _jitc->patches.offset;
- restart_function:
- _jitc->again = 0;
- prolog(node);
- break;
- case jit_code_epilog:
- assert(_jitc->function == _jitc->functions.ptr + node->w.w);
- if (_jitc->again) {
- for (temp = undo.node->next;
- temp != node; temp = temp->next) {
- if (temp->code == jit_code_label ||
- temp->code == jit_code_epilog)
- temp->flag &= ~jit_flag_patch;
- }
- temp->flag &= ~jit_flag_patch;
- node = undo.node;
- _jit->pc.w = undo.word;
-#if DEVEL_DISASSEMBLER
- prevw = undo.prevw;
-#endif
- _jitc->patches.offset = undo.patch_offset;
- goto restart_function;
- }
- if (node->link &&
- (word = _jit->pc.w & (sizeof(jit_word_t) - 1)))
- nop(sizeof(jit_word_t) - word);
- /* remember label is defined */
- node->flag |= jit_flag_patch;
- node->u.w = _jit->pc.w;
- epilog(node);
- _jitc->function = NULL;
- break;
- case jit_code_va_start:
- vastart(rn(node->u.w));
- break;
- case jit_code_va_arg:
- vaarg(rn(node->u.w), rn(node->v.w));
- break;
- case jit_code_va_arg_d:
- vaarg_d(rn(node->u.w), rn(node->v.w), jit_x87_reg_p(node->u.w));
- break;
- case jit_code_live: case jit_code_ellipsis:
- case jit_code_va_push:
- case jit_code_allocai: case jit_code_allocar:
- case jit_code_arg:
- case jit_code_arg_f: case jit_code_arg_d:
- case jit_code_va_end:
- case jit_code_ret:
- case jit_code_retr: case jit_code_reti:
- case jit_code_retr_f: case jit_code_reti_f:
- case jit_code_retr_d: case jit_code_reti_d:
- case jit_code_getarg_c: case jit_code_getarg_uc:
- case jit_code_getarg_s: case jit_code_getarg_us:
- case jit_code_getarg_i:
-#if __X64 && !__X64_32
- case jit_code_getarg_ui: case jit_code_getarg_l:
-#endif
- case jit_code_getarg_f: case jit_code_getarg_d:
- case jit_code_putargr: case jit_code_putargi:
- case jit_code_putargr_f: case jit_code_putargi_f:
- case jit_code_putargr_d: case jit_code_putargi_d:
- case jit_code_pushargr: case jit_code_pushargi:
- case jit_code_pushargr_f: case jit_code_pushargi_f:
- case jit_code_pushargr_d: case jit_code_pushargi_d:
- case jit_code_retval_c: case jit_code_retval_uc:
- case jit_code_retval_s: case jit_code_retval_us:
- case jit_code_retval_i:
-#if __X64 && !__X32
- case jit_code_retval_ui: case jit_code_retval_l:
-#endif
- case jit_code_prepare:
- case jit_code_finishr: case jit_code_finishi:
- break;
- case jit_code_retval_f:
-#if __X32
- if (jit_sse_reg_p(node->u.w)) {
- fstpr(_ST1_REGNO);
- sse_from_x87_f(rn(node->u.w), _ST0_REGNO);
- }
- else
- fstpr(rn(node->u.w) + 1);
-#endif
- break;
- case jit_code_retval_d:
-#if __X32
- if (jit_sse_reg_p(node->u.w)) {
- fstpr(_ST1_REGNO);
- sse_from_x87_d(rn(node->u.w), _ST0_REGNO);
- }
- else
- fstpr(rn(node->u.w) + 1);
-#endif
- break;
- default:
- abort();
- }
- jit_regarg_clr(node, value);
- assert(_jitc->regarg == 0 && _jitc->synth == 0);
- /* update register live state */
- jit_reglive(node);
- }
-#undef case_bfw
-#undef case_bff
-#undef case_ffw
-#undef case_rfw
-#undef case_rff
-#undef case_brw
-#undef case_brr
-#undef case_wrf
-#undef case_wrr
-#undef case_frw
-#undef case_rrf
-#undef case_rrw
-#undef case_frr
-#undef case_rrr
-#undef case_wf
-#undef case_fw
-#undef case_fr
-#undef case_rr
-
- for (offset = 0; offset < _jitc->patches.offset; offset++) {
- node = _jitc->patches.ptr[offset].node;
- word = node->code == jit_code_movi ? node->v.n->u.w : node->u.n->u.w;
- patch_at(node, _jitc->patches.ptr[offset].inst, word);
- }
-
- jit_flush(_jit->code.ptr, _jit->pc.uc);
-
- return (_jit->code.ptr);
-}
-
-#define CODE 1
-# include "jit_x86-cpu.c"
-# include "jit_x86-sse.c"
-# include "jit_x86-x87.c"
-#undef CODE
-
-void
-jit_flush(void *fptr, void *tptr)
-{
-}
-
-void
-_emit_ldxi(jit_state_t *_jit, jit_gpr_t r0, jit_gpr_t r1, jit_word_t i0)
-{
- ldxi(rn(r0), rn(r1), i0);
-}
-
-void
-_emit_stxi(jit_state_t *_jit, jit_word_t i0, jit_gpr_t r0, jit_gpr_t r1)
-{
- stxi(i0, rn(r0), rn(r1));
-}
-
-void
-_emit_ldxi_d(jit_state_t *_jit, jit_fpr_t r0, jit_gpr_t r1, jit_word_t i0)
-{
- if (jit_x87_reg_p(r0))
- x87_ldxi_d(rn(r0), rn(r1), i0);
- else
- sse_ldxi_d(rn(r0), rn(r1), i0);
-}
-
-void
-_emit_stxi_d(jit_state_t *_jit, jit_word_t i0, jit_gpr_t r0, jit_fpr_t r1)
-{
- if (jit_x87_reg_p(r1))
- x87_stxi_d(i0, rn(r0), rn(r1));
- else
- sse_stxi_d(i0, rn(r0), rn(r1));
-}
-
-static void
-_patch(jit_state_t *_jit, jit_word_t instr, jit_node_t *node)
-{
- jit_int32_t flag;
-
- assert(node->flag & jit_flag_node);
- if (node->code == jit_code_movi)
- flag = node->v.n->flag;
- else
- flag = node->u.n->flag;
- assert(!(flag & jit_flag_patch));
- if (_jitc->patches.offset >= _jitc->patches.length) {
- jit_realloc((jit_pointer_t *)&_jitc->patches.ptr,
- _jitc->patches.length * sizeof(jit_patch_t),
- (_jitc->patches.length + 1024) * sizeof(jit_patch_t));
- _jitc->patches.length += 1024;
- }
- _jitc->patches.ptr[_jitc->patches.offset].inst = instr;
- _jitc->patches.ptr[_jitc->patches.offset].node = node;
- ++_jitc->patches.offset;
-}
-
-static void
-_sse_from_x87_f(jit_state_t *_jit, 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)
-{
- 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)
-{
- 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)
-{
- sse_stxi_d(CVT_OFFSET, _RBP_REGNO, r1);
- x87_ldxi_d(r0, _RBP_REGNO, CVT_OFFSET);
-}
diff --git a/libguile/lightning/lib/lightning.c b/libguile/lightning/lib/lightning.c
deleted file mode 100644
index 521746643..000000000
--- a/libguile/lightning/lib/lightning.c
+++ /dev/null
@@ -1,3391 +0,0 @@
-/*
- * Copyright (C) 2012-2018 Free Software Foundation, Inc.
- *
- * This file is part of GNU lightning.
- *
- * GNU lightning is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * GNU lightning is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
- *
- * Authors:
- * Paulo Cesar Pereira de Andrade
- */
-
-#define DEBUG 1
-#define DISASSEMBLER 0
-#define DEVEL_DISASSEMBLER 0
-
-#include <lightning.h>
-#include <lightning/jit_private.h>
-#include <sys/mman.h>
-#if defined(__sgi)
-# include <fcntl.h>
-#endif
-
-#ifndef MAP_ANON
-# define MAP_ANON MAP_ANONYMOUS
-# ifndef MAP_ANONYMOUS
-# define MAP_ANONYMOUS 0
-# endif
-#endif
-
-#define jit_regload_reload 0 /* convert to reload */
-#define jit_regload_delete 1 /* just remove node */
-#define jit_regload_isdead 2 /* delete and unset live bit */
-
-#if __WORDSIZE == 32
-# define bmp_shift 5
-#else
-# define bmp_shift 6
-#endif
-
-/*
- * Prototypes
- */
-static jit_word_t hash_data(const void*, jit_word_t);
-
-#define new_pool() _new_pool(_jit)
-static void _new_pool(jit_state_t*);
-
-#define new_node(u) _new_node(_jit, u)
-static jit_node_t *_new_node(jit_state_t*, jit_code_t);
-
-#define link_node(u) _link_node(_jit, u)
-static inline jit_node_t *_link_node(jit_state_t*, jit_node_t*);
-
-#define del_node(u, v) _del_node(_jit, u, v)
-static inline void _del_node(jit_state_t*, jit_node_t*, jit_node_t*);
-
-#define free_node(u) _free_node(_jit, u)
-static inline void _free_node(jit_state_t*, jit_node_t*);
-
-#define del_label(u, v) _del_label(_jit, u, v)
-static void _del_label(jit_state_t*, jit_node_t*, jit_node_t*);
-
-#define bmp_init() _bmp_init(_jit)
-static void _bmp_init(jit_state_t*);
-
-#define bmp_clear() _bmp_clear(_jit)
-static void _bmp_clear(jit_state_t*);
-
-#define bmp_zero() \
- memset(_jitc->blockmask.ptr, 0, \
- _jitc->blockmask.length * sizeof(jit_word_t))
-
-#define bmp_set(bit) _bmp_set(_jit, bit)
-static void _bmp_set(jit_state_t*, jit_word_t);
-
-#define bmp_clr(bit) _bmp_clr(_jit, bit)
-static void _bmp_clr(jit_state_t*, jit_word_t) maybe_unused;
-
-#define bmp_tst(bit) _bmp_tst(_jit, bit)
-static jit_bool_t _bmp_tst(jit_state_t*, jit_word_t);
-
-#define jit_dataset() _jit_dataset(_jit)
-static void
-_jit_dataset(jit_state_t *_jit);
-
-#define jit_setup(block) _jit_setup(_jit, block)
-static void
-_jit_setup(jit_state_t *_jit, jit_block_t *block);
-
-#define jit_update(node, live, mask, r) _jit_update(_jit, node, live, mask, r)
-static void
-_jit_update(jit_state_t *_jit, jit_node_t *node,
- jit_regset_t *live, jit_regset_t *mask, jit_bool_t recurse);
-
-#define thread_jumps() _thread_jumps(_jit)
-static void
-_thread_jumps(jit_state_t *_jit);
-
-#define sequential_labels() _sequential_labels(_jit)
-static void
-_sequential_labels(jit_state_t *_jit);
-
-#define shortcut_jump(prev, node) _shortcut_jump(_jit, prev, node)
-static jit_bool_t
-_shortcut_jump(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node);
-
-#define redundant_jump(prev, node) _redundant_jump(_jit, prev, node)
-static jit_bool_t
-_redundant_jump(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node);
-
-static jit_code_t
-reverse_jump_code(jit_code_t code);
-
-#define reverse_jump(prev, node) _reverse_jump(_jit, prev, node)
-static jit_bool_t
-_reverse_jump(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node);
-
-#define redundant_store(node, jump) _redundant_store(_jit, node, jump)
-static void
-_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);
-
-#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);
-
-#define simplify_ldxi(prev, node) _simplify_ldxi(_jit, prev, node)
-static jit_bool_t
-_simplify_ldxi(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node);
-
-#define simplify_stxi(prev, node) _simplify_stxi(_jit, prev, node)
-static jit_bool_t
-_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);
-
-#define simplify() _simplify(_jit)
-static void
-_simplify(jit_state_t *_jit);
-
-#define jit_reg_undef -1
-#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
-_register_change_p(jit_state_t *_jit, jit_node_t *node, jit_node_t *link,
- jit_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);
-
-#define patch_registers() _patch_registers(_jit)
-static void
-_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);
-
-/*
- * Initialization
- */
-#if !defined(__sgi)
-#define mmap_fd -1
-#endif
-
-/*
- * Implementation
- */
-void
-init_jit(const char *progname)
-{
- jit_get_cpu();
- jit_init_size();
-}
-
-void
-finish_jit(void)
-{
- jit_finish_size();
-}
-
-jit_int32_t
-_jit_get_reg(jit_state_t *_jit, jit_int32_t regspec)
-{
- jit_int32_t spec;
- jit_int32_t regno;
-
- spec = regspec & ~(jit_class_chk|jit_class_nospill);
- if (spec & jit_class_named) {
- regno = jit_regno(spec);
- if (jit_regset_tstbit(&_jitc->regsav, regno))
- /* fail if register is spilled */
- goto fail;
- if (jit_regset_tstbit(&_jitc->regarg, regno))
- /* fail if register is an argument to current instruction */
- goto fail;
- if (jit_regset_tstbit(&_jitc->reglive, regno)) {
- if (regspec & jit_class_nospill)
- /* fail if register is live and should not spill/reload */
- goto fail;
- goto spill;
- }
- jit_regset_setbit(&_jitc->regarg, regno);
- return (regno);
- }
- else
- assert(jit_class(spec) != 0);
-
- if (_jitc->emit) {
- /* search for a free register matching spec */
- for (regno = 0; regno < _jitc->reglen; regno++) {
- if ((jit_class(_rvs[regno].spec) & spec) == spec &&
- !jit_regset_tstbit(&_jitc->regarg, regno) &&
- !jit_regset_tstbit(&_jitc->reglive, regno))
- goto regarg;
- }
-
- /* search for a register matching spec that is not an argument
- * for the current instruction */
- for (regno = 0; regno < _jitc->reglen; regno++) {
- if ((jit_class(_rvs[regno].spec) & spec) == spec &&
- !jit_regset_tstbit(&_jitc->regsav, regno) &&
- !jit_regset_tstbit(&_jitc->regarg, regno) &&
- !(regspec & jit_class_nospill)) {
- spill:
- assert(_jitc->function != NULL);
- if (spec & jit_class_gpr) {
- if (!_jitc->function->regoff[regno]) {
- _jitc->function->regoff[regno] =
- jit_allocai(sizeof(jit_word_t));
- _jitc->again = 1;
- }
-#if DEBUG
- /* emit_stxi must not need temporary registers */
- assert(!_jitc->getreg);
- _jitc->getreg = 1;
-#endif
- emit_stxi(_jitc->function->regoff[regno], JIT_FP, regno);
-#if DEBUG
- _jitc->getreg = 0;
-#endif
- }
- else {
- if (!_jitc->function->regoff[regno]) {
- _jitc->function->regoff[regno] =
- jit_allocai(sizeof(jit_float64_t));
- _jitc->again = 1;
- }
-#if DEBUG
- /* emit_stxi must not need temporary registers */
- assert(!_jitc->getreg);
- _jitc->getreg = 1;
-#endif
- emit_stxi_d(_jitc->function->regoff[regno], JIT_FP, regno);
-#if DEBUG
- _jitc->getreg = 0;
-#endif
- }
- jit_regset_setbit(&_jitc->regsav, regno);
- regarg:
- jit_regset_setbit(&_jitc->regarg, regno);
- if (jit_class(_rvs[regno].spec) & jit_class_sav) {
- /* if will modify callee save registers without a
- * function prolog, better patch this assertion */
- assert(_jitc->function != NULL);
- if (!jit_regset_tstbit(&_jitc->function->regset, regno)) {
- jit_regset_setbit(&_jitc->function->regset, regno);
- _jitc->again = 1;
- }
- }
- return (regno);
- }
- }
- }
- else {
- /* nospill hint only valid during emit" */
- assert(!(regspec & jit_class_nospill));
- for (regno = 0; regno < _jitc->reglen; regno++) {
- if ((jit_class(_rvs[regno].spec) & spec) == spec &&
- !jit_regset_tstbit(&_jitc->regsav, regno) &&
- !jit_regset_tstbit(&_jitc->regarg, regno)) {
- jit_regset_setbit(&_jitc->regarg, regno);
- jit_regset_setbit(&_jitc->regsav, regno);
- jit_save(regno);
- return (jit_regno_patch|regno);
- }
- }
- }
-
- /* Out of hardware registers */
-fail:
- assert(regspec & jit_class_chk);
- return (JIT_NOREG);
-}
-
-void
-_jit_unget_reg(jit_state_t *_jit, jit_int32_t regno)
-{
- regno = jit_regno(regno);
- if (jit_regset_tstbit(&_jitc->regsav, regno)) {
- if (_jitc->emit) {
-#if DEBUG
- /* emit_ldxi must not need a temporary register */
- assert(!_jitc->getreg);
- _jitc->getreg = 1;
-#endif
- if (jit_class(_rvs[regno].spec) & jit_class_gpr)
- emit_ldxi(regno, JIT_FP, _jitc->function->regoff[regno]);
- else
- emit_ldxi_d(regno, JIT_FP, _jitc->function->regoff[regno]);
-#if DEBUG
- /* emit_ldxi must not need a temporary register */
- _jitc->getreg = 0;
-#endif
- }
- else
- jit_load(regno);
- jit_regset_clrbit(&_jitc->regsav, regno);
- }
- assert(jit_regset_tstbit(&_jitc->regarg, regno) != 0);
- jit_regset_clrbit(&_jitc->regarg, regno);
-}
-
-jit_bool_t
-_jit_callee_save_p(jit_state_t *_jit, jit_int32_t regno)
-{
- assert(regno >= 0 && regno < JIT_NOREG);
- return (!!(_rvs[regno].spec & jit_class_sav));
-}
-
-extern jit_bool_t
-_jit_pointer_p(jit_state_t *_jit, jit_pointer_t address)
-{
- return ((jit_uint8_t *)address >= _jit->code.ptr &&
- (jit_word_t)address < _jit->pc.w);
-}
-
-#if __ia64__
-void
-jit_regset_com(jit_regset_t *u, jit_regset_t *v)
-{
- u->rl = ~v->rl; u->rh = ~v->rh;
- u->fl = ~v->fl; u->fh = ~v->fh;
-}
-
-void
-jit_regset_and(jit_regset_t *u, jit_regset_t *v, jit_regset_t *w)
-{
- u->rl = v->rl & w->rl; u->rh = v->rh & w->rh;
- u->fl = v->fl & w->fl; u->fh = v->fh & w->fh;
-}
-
-void
-jit_regset_ior(jit_regset_t *u, jit_regset_t *v, jit_regset_t *w)
-{
- u->rl = v->rl | w->rl; u->rh = v->rh | w->rh;
- u->fl = v->fl | w->fl; u->fh = v->fh | w->fh;
-}
-
-void
-jit_regset_xor(jit_regset_t *u, jit_regset_t *v, jit_regset_t *w)
-{
- u->rl = v->rl ^ w->rl; u->rh = v->rh ^ w->rh;
- u->fl = v->fl ^ w->fl; u->fh = v->fh ^ w->fh;
-}
-
-void
-jit_regset_set(jit_regset_t *u, jit_regset_t *v)
-{
- u->rl = v->rl; u->rh = v->rh;
- u->fl = v->fl; u->fh = v->fh;
-}
-
-void
-jit_regset_set_mask(jit_regset_t *u, jit_int32_t v)
-{
- jit_bool_t w = !!(v & (v - 1));
-
- assert(v >= 0 && v <= 256);
- if (v == 0)
- u->rl = u->rh = u->fl = u->fh = -1LL;
- else if (v <= 64) {
- u->rl = w ? (1LL << v) - 1 : -1LL;
- u->rh = u->fl = u->fh = 0;
- }
- else if (v <= 128) {
- u->rl = -1LL;
- u->rh = w ? (1LL << (v - 64)) - 1 : -1LL;
- u->fl = u->fh = 0;
- }
- else if (v <= 192) {
- u->rl = u->rh = -1LL;
- u->fl = w ? (1LL << (v - 128)) - 1 : -1LL;
- u->fh = 0;
- }
- else {
- u->rl = u->rh = u->fl = -1LL;
- u->fh = w ? (1LL << (v - 128)) - 1 : -1LL;
- }
-}
-
-jit_bool_t
-jit_regset_cmp_ui(jit_regset_t *u, jit_word_t v)
-{
- return !((u->rl == v && u->rh == 0 && u->fl == 0 && u->fh == 0));
-}
-
-void
-jit_regset_set_ui(jit_regset_t *u, jit_word_t v)
-{
- u->rl = v;
- u->rh = u->fl = u->fh = 0;
-}
-
-jit_bool_t
-jit_regset_set_p(jit_regset_t *u)
-{
- return (u->rl || u->rh || u->fl || u->fh);
-}
-
-void
-jit_regset_clrbit(jit_regset_t *set, jit_int32_t bit)
-{
- assert(bit >= 0 && bit <= 255);
- if (bit < 64)
- set->rl &= ~(1LL << bit);
- else if (bit < 128)
- set->rh &= ~(1LL << (bit - 64));
- else if (bit < 192)
- set->fl &= ~(1LL << (bit - 128));
- else
- set->fh &= ~(1LL << (bit - 192));
-}
-
-void
-jit_regset_setbit(jit_regset_t *set, jit_int32_t bit)
-{
- assert(bit >= 0 && bit <= 255);
- if (bit < 64)
- set->rl |= 1LL << bit;
- else if (bit < 128)
- set->rh |= 1LL << (bit - 64);
- else if (bit < 192)
- set->fl |= 1LL << (bit - 128);
- else
- set->fh |= 1LL << (bit - 192);
-}
-
-jit_bool_t
-jit_regset_tstbit(jit_regset_t *set, jit_int32_t bit)
-{
- assert(bit >= 0 && bit <= 255);
- if (bit < 64)
- return (!!(set->rl & (1LL << bit)));
- else if (bit < 128)
- return (!!(set->rh & (1LL << (bit - 64))));
- else if (bit < 192)
- return (!!(set->fl & (1LL << (bit - 128))));
- return (!!(set->fh & (1LL << (bit - 192))));
-}
-
-unsigned long
-jit_regset_scan1(jit_regset_t *set, jit_int32_t offset)
-{
- assert(offset >= 0 && offset <= 255);
- for (; offset < 64; offset++) {
- if (set->rl & (1LL << offset))
- return (offset);
- }
- for (; offset < 128; offset++) {
- if (set->rh & (1LL << (offset - 64)))
- return (offset);
- }
- for (; offset < 192; offset++) {
- if (set->fl & (1LL << (offset - 128)))
- return (offset);
- }
- for (; offset < 256; offset++) {
- if (set->fh & (1LL << (offset - 192)))
- return (offset);
- }
- return (ULONG_MAX);
-}
-
-#elif __sparc__ && __WORDSIZE == 64
-void
-jit_regset_com(jit_regset_t *u, jit_regset_t *v)
-{
- u->rl = ~v->rl; u->rh = ~v->rh;
-}
-
-void
-jit_regset_and(jit_regset_t *u, jit_regset_t *v, jit_regset_t *w)
-{
- u->rl = v->rl & w->rl; u->rh = v->rh & w->rh;
-}
-
-void
-jit_regset_ior(jit_regset_t *u, jit_regset_t *v, jit_regset_t *w)
-{
- u->rl = v->rl | w->rl; u->rh = v->rh | w->rh;
-}
-
-void
-jit_regset_xor(jit_regset_t *u, jit_regset_t *v, jit_regset_t *w)
-{
- u->rl = v->rl ^ w->rl; u->rh = v->rh ^ w->rh;
-}
-
-void
-jit_regset_set(jit_regset_t *u, jit_regset_t *v)
-{
- u->rl = v->rl; u->rh = v->rh;
-}
-
-void
-jit_regset_set_mask(jit_regset_t *u, jit_int32_t v)
-{
- jit_bool_t w = !!(v & (v - 1));
-
- assert(v >= 0 && v <= 128);
- if (v == 0)
- u->rl = u->rh = -1LL;
- else if (v <= 64) {
- u->rl = w ? (1LL << v) - 1 : -1LL;
- u->rh = 0;
- }
- else {
- u->rl = -1LL;
- u->rh = w ? (1LL << (v - 64)) - 1 : -1LL;
- }
-}
-
-jit_bool_t
-jit_regset_cmp_ui(jit_regset_t *u, jit_word_t v)
-{
- return !((u->rl == v && u->rh == 0));
-}
-
-void
-jit_regset_set_ui(jit_regset_t *u, jit_word_t v)
-{
- u->rl = v;
- u->rh = 0;
-}
-
-jit_bool_t
-jit_regset_set_p(jit_regset_t *u)
-{
- return (u->rl || u->rh);
-}
-
-void
-jit_regset_clrbit(jit_regset_t *set, jit_int32_t bit)
-{
- assert(bit >= 0 && bit <= 128);
- if (bit < 64)
- set->rl &= ~(1LL << bit);
- else
- set->rh &= ~(1LL << (bit - 64));
-}
-
-void
-jit_regset_setbit(jit_regset_t *set, jit_int32_t bit)
-{
- assert(bit >= 0 && bit <= 127);
- if (bit < 64)
- set->rl |= 1LL << bit;
- else
- set->rh |= 1LL << (bit - 64);
-}
-
-jit_bool_t
-jit_regset_tstbit(jit_regset_t *set, jit_int32_t bit)
-{
- assert(bit >= 0 && bit <= 127);
- if (bit < 64)
- return (!!(set->rl & (1LL << bit)));
- else
- return (!!(set->rh & (1LL << (bit - 64))));
-}
-
-unsigned long
-jit_regset_scan1(jit_regset_t *set, jit_int32_t offset)
-{
- assert(offset >= 0 && offset <= 127);
- for (; offset < 64; offset++) {
- if (set->rl & (1LL << offset))
- return (offset);
- }
- for (; offset < 128; offset++) {
- if (set->rh & (1LL << (offset - 64)))
- return (offset);
- }
- return (ULONG_MAX);
-}
-
-#else
-unsigned long
-jit_regset_scan1(jit_regset_t *set, jit_int32_t offset)
-{
- jit_regset_t mask;
- assert(offset >= 0 && offset <= 63);
- if ((mask = *set >> offset)) {
- for (;;) {
- if (mask & 1)
- return (offset);
- mask >>= 1;
- ++offset;
- }
- }
- return (ULONG_MAX);
-}
-#endif
-
-void
-_jit_save(jit_state_t *_jit, jit_int32_t reg)
-{
- reg = jit_regno(reg);
- assert(!_jitc->realize);
- _jitc->spill[reg] = jit_new_node_w(jit_code_save, reg);
-}
-
-void
-_jit_load(jit_state_t *_jit, jit_int32_t reg)
-{
- jit_node_t *node;
-
- reg = jit_regno(reg);
- assert(!_jitc->realize);
- assert(_jitc->spill[reg] != NULL);
- node = jit_new_node_w(jit_code_load, reg);
- /* create a path to flag the save/load is not required */
- node->link = _jitc->spill[reg];
- node->link->link = node;
- _jitc->spill[reg] = NULL;
-}
-
-static jit_word_t
-hash_data(const void *data, jit_word_t length)
-{
- const jit_uint8_t *ptr;
- jit_word_t i, key;
- for (i = key = 0, ptr = data; i < length; i++)
- key = (key << (key & 1)) ^ ptr[i];
- return (key);
-}
-
-jit_pointer_t
-_jit_address(jit_state_t *_jit, jit_node_t *node)
-{
- assert(_jitc->done);
- assert(node != NULL &&
- /* If a node type that is documented to be a fixed marker */
- (node->code == jit_code_note || node->code == jit_code_name ||
- /* If another special fixed marker, returned by jit_indirect() */
- (node->code == jit_code_label && (node->flag & jit_flag_use) != 0)));
- return ((jit_pointer_t)node->u.w);
-}
-
-jit_node_t *
-_jit_data(jit_state_t *_jit, const void *data,
- jit_word_t length, jit_int32_t align)
-{
- jit_word_t key;
- jit_node_t *node;
-
- assert(!_jitc->realize);
-
- /* Ensure there is space even if asking for a duplicate */
- if (((_jitc->data.offset + 7) & -8) + length > _jit->data.length) {
- jit_word_t size;
-
- size = (_jit->data.length + length + 4096) & - 4095;
- assert(size >= _jit->data.length);
- if (_jitc->data.ptr == NULL)
- jit_alloc((jit_pointer_t *)&_jitc->data.ptr, size);
- else
- jit_realloc((jit_pointer_t *)&_jitc->data.ptr,
- _jit->data.length, size);
- _jit->data.length = size;
- }
- if (_jitc->data.table == NULL)
- jit_alloc((jit_pointer_t *)&_jitc->data.table,
- (_jitc->data.size = 16) * sizeof(jit_node_t*));
-
- key = hash_data(data, length) & (_jitc->data.size - 1);
- node = _jitc->data.table[key];
- for (; node; node = node->next) {
- if (node->v.w == length &&
- memcmp(_jitc->data.ptr + node->u.w, data, length) == 0)
- break;
- }
-
- if (!node) {
- node = jit_new_node_no_link(jit_code_data);
- if (!align)
- align = length;
- switch (align) {
- case 0: case 1:
- break;
- case 2:
- _jitc->data.offset = (_jitc->data.offset + 1) & -2;
- break;
- case 3: case 4:
- _jitc->data.offset = (_jitc->data.offset + 3) & -4;
- break;
- default:
- _jitc->data.offset = (_jitc->data.offset + 7) & -8;
- break;
- }
- node->u.w = _jitc->data.offset;
- node->v.w = length;
- jit_memcpy(_jitc->data.ptr + _jitc->data.offset, data, length);
- _jitc->data.offset += length;
-
- node->next = _jitc->data.table[key];
- _jitc->data.table[key] = node;
- ++_jitc->data.count;
-
- /* Rehash if more than 75% used table */
- if (_jitc->data.count >
- (_jitc->data.size >> 1) + (_jitc->data.size >> 2) &&
- (_jitc->data.size << 1) > _jitc->data.size) {
- jit_word_t i;
- jit_node_t **hash;
- jit_node_t *next;
- jit_node_t *temp;
-
- jit_alloc((jit_pointer_t *)&hash,
- (_jitc->data.size << 1) * sizeof(jit_node_t*));
- for (i = 0; i < _jitc->data.size; i++) {
- temp = _jitc->data.table[i];
- for (; temp; temp = next) {
- next = temp->next;
- key = hash_data(_jitc->data.ptr + temp->u.w, temp->v.w) &
- ((_jitc->data.size << 1) - 1);
- temp->next = hash[key];
- hash[key] = temp;
- }
- }
- jit_free((jit_pointer_t *)&_jitc->data.table);
- _jitc->data.table = hash;
- _jitc->data.size <<= 1;
- }
- }
-
- return (node);
-}
-
-static void
-_new_pool(jit_state_t *_jit)
-{
- jit_node_t *list;
- jit_int32_t offset;
-
- if (_jitc->pool.offset >= _jitc->pool.length) {
- jit_int32_t length;
-
- length = _jitc->pool.length + 16;
- jit_realloc((jit_pointer_t *)&_jitc->pool.ptr,
- _jitc->pool.length * sizeof(jit_node_t *),
- length * sizeof(jit_node_t *));
- _jitc->pool.length = length;
- }
- jit_alloc((jit_pointer_t *)(_jitc->pool.ptr + _jitc->pool.offset),
- sizeof(jit_node_t) * 1024);
- list = _jitc->pool.ptr[_jitc->pool.offset];
- for (offset = 1; offset < 1024; offset++, list++)
- list->next = list + 1;
- list->next = _jitc->list;
- _jitc->list = _jitc->pool.ptr[_jitc->pool.offset];
- ++_jitc->pool.offset;
-}
-
-static jit_node_t *
-_new_node(jit_state_t *_jit, jit_code_t code)
-{
- jit_node_t *node;
-
- if (_jitc->list == NULL)
- new_pool();
- node = _jitc->list;
- _jitc->list = node->next;
- if (_jitc->synth)
- node->flag |= jit_flag_synth;
- node->next = NULL;
- node->code = code;
-
- return (node);
-}
-
-static inline jit_node_t *
-_link_node(jit_state_t *_jit, jit_node_t *node)
-{
- if (_jitc->tail)
- _jitc->tail->next = node;
- else
- _jitc->head = node;
- return (_jitc->tail = node);
-}
-
-static inline void
-_del_node(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node)
-{
- if (prev == node) {
- assert(prev == _jitc->head);
- _jitc->head = node->next;
- }
- else
- prev->next = node->next;
- memset(node, 0, sizeof(jit_node_t));
- node->next = _jitc->list;
- _jitc->list = node;
-}
-
-static inline void
-_free_node(jit_state_t *_jit, jit_node_t *node)
-{
- memset(node, 0, sizeof(jit_node_t));
- node->next = _jitc->list;
- _jitc->list = node;
-}
-
-static void
-_del_label(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node)
-{
- jit_block_t *block;
-
- /* only allow call to del_label on linked labels */
- block = _jitc->blocks.ptr + node->v.w;
- assert(block->label == node);
-
- /* del_label() should only be called when optimizing.
- * This will leave an empty block index */
- jit_regset_del(&block->reglive);
- jit_regset_del(&block->regmask);
- block->label = NULL;
-
- /* redundant, should be already true */
- assert(node->link == NULL);
- del_node(prev, node);
-}
-
-static void
-_bmp_init(jit_state_t *_jit)
-{
- _jitc->blockmask.length = 16;
- jit_alloc((jit_pointer_t *)&_jitc->blockmask.ptr,
- sizeof(jit_word_t) * _jitc->blockmask.length);
-}
-
-static void
-_bmp_clear(jit_state_t *_jit)
-{
- _jitc->blockmask.length = 0;
- jit_free((jit_pointer_t *)&_jitc->blockmask.ptr);
-}
-
-static void
-_bmp_set(jit_state_t *_jit, jit_word_t bit)
-{
- jit_word_t woff, boff;
-
- woff = bit >> bmp_shift;
- boff = 1LL << (bit & (__WORDSIZE - 1));
- if (woff >= _jitc->blockmask.length) {
- jit_word_t length = (woff + 16) & -16;
- jit_realloc((jit_pointer_t *)&_jitc->blockmask.ptr,
- _jitc->blockmask.length * sizeof(jit_word_t),
- length * sizeof(jit_word_t));
- _jitc->blockmask.length = length;
- }
- _jitc->blockmask.ptr[woff] |= boff;
-}
-
-static void
-_bmp_clr(jit_state_t *_jit, jit_word_t bit)
-{
- jit_word_t woff, boff;
-
- woff = bit >> bmp_shift;
- boff = 1LL << (bit & (__WORDSIZE - 1));
- if (woff < _jitc->blockmask.length)
- _jitc->blockmask.ptr[woff] &= ~boff;
-}
-
-static jit_bool_t
-_bmp_tst(jit_state_t *_jit, jit_word_t bit)
-{
- jit_word_t woff, boff;
-
- woff = bit >> bmp_shift;
- boff = 1LL << (bit & (__WORDSIZE - 1));
- if (woff < _jitc->blockmask.length)
- return ((_jitc->blockmask.ptr[woff] & boff) != 0);
- return (0);
-}
-
-jit_state_t *
-jit_new_state(void)
-{
- jit_state_t *_jit;
-
- jit_alloc((jit_pointer_t *)&_jit, sizeof(jit_state_t));
- jit_alloc((jit_pointer_t *)&_jitc, sizeof(jit_compiler_t));
- jit_regset_new(&_jitc->regarg);
- jit_regset_new(&_jitc->regsav);
- jit_regset_new(&_jitc->reglive);
- jit_regset_new(&_jitc->regmask);
- bmp_init();
-
- jit_init();
-
- 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));
- jit_alloc((jit_pointer_t *)&_jitc->values,
- _jitc->reglen * sizeof(jit_value_t));
-
- jit_alloc((jit_pointer_t *)&_jitc->patches.ptr,
- (_jitc->patches.length = 1024) * sizeof(jit_patch_t));
- jit_alloc((jit_pointer_t *)&_jitc->functions.ptr,
- (_jitc->functions.length = 16) * sizeof(jit_function_t));
- jit_alloc((jit_pointer_t *)&_jitc->pool.ptr,
- (_jitc->pool.length = 16) * sizeof(jit_node_t*));
- jit_alloc((jit_pointer_t *)&_jitc->blocks.ptr,
- (_jitc->blocks.length = 16) * sizeof(jit_block_t));
-
- /* allocate at most one extra note in case jit_name() is
- * never called, or called after adding at least one note */
- _jit->note.length = 1;
- _jitc->note.size = sizeof(jit_note_t);
-
- return (_jit);
-}
-
-void
-_jit_clear_state(jit_state_t *_jit)
-{
- jit_word_t offset;
- jit_function_t *function;
-
- /* release memory not required at jit execution time and set
- * pointers to NULL to explicitly know they are released */
- _jitc->head = _jitc->tail = NULL;
-
- bmp_clear();
-
- jit_free((jit_pointer_t *)&_jitc->data.table);
- _jitc->data.size = _jitc->data.count = 0;
-
- jit_free((jit_pointer_t *)&_jitc->spill);
- jit_free((jit_pointer_t *)&_jitc->gen);
- jit_free((jit_pointer_t *)&_jitc->values);
-
- jit_free((jit_pointer_t *)&_jitc->blocks.ptr);
-
- jit_free((jit_pointer_t *)&_jitc->patches.ptr);
- _jitc->patches.offset = _jitc->patches.length = 0;
-
- for (offset = 0; offset < _jitc->functions.offset; offset++) {
- function = _jitc->functions.ptr + offset;
- jit_free((jit_pointer_t *)&function->regoff);
- }
- jit_free((jit_pointer_t *)&_jitc->functions.ptr);
- _jitc->functions.offset = _jitc->functions.length = 0;
- _jitc->function = NULL;
-
- for (offset = 0; offset < _jitc->pool.offset; offset++)
- jit_free((jit_pointer_t *)(_jitc->pool.ptr + offset));
- jit_free((jit_pointer_t *)&_jitc->pool.ptr);
- _jitc->pool.offset = _jitc->pool.length = 0;
- _jitc->list = NULL;
-
- _jitc->note.head = _jitc->note.tail =
- _jitc->note.name = _jitc->note.note = NULL;
- _jitc->note.base = NULL;
-
-#if __powerpc64__ || __ia64__
- jit_free((jit_pointer_t *)&_jitc->prolog.ptr);
-#endif
-
-#if __ia64__
- jit_regset_del(&_jitc->regs);
-#endif
-
- jit_free((jit_pointer_t *)&_jitc);
-}
-
-void
-_jit_destroy_state(jit_state_t *_jit)
-{
- if (!_jit->user_code)
- munmap(_jit->code.ptr, _jit->code.length);
- if (!_jit->user_data)
- munmap(_jit->data.ptr, _jit->data.length);
- jit_free((jit_pointer_t *)&_jit);
-}
-
-void
-_jit_synth_inc(jit_state_t *_jit)
-{
- assert(_jitc->synth < 8);
- ++_jitc->synth;
-}
-
-jit_node_t *
-_jit_new_node(jit_state_t *_jit, jit_code_t code)
-{
- assert(!_jitc->realize);
- return (link_node(new_node(code)));
-}
-
-jit_node_t *
-_jit_new_node_no_link(jit_state_t *_jit, jit_code_t code)
-{
- assert(!_jitc->realize);
- return (new_node(code));
-}
-
-void
-_jit_link_node(jit_state_t *_jit, jit_node_t *node)
-{
- assert(!_jitc->realize);
- link_node(node);
-}
-
-void
-_jit_synth_dec(jit_state_t *_jit)
-{
- assert(_jitc->synth > 0);
- --_jitc->synth;
-}
-
-jit_node_t *
-_jit_new_node_w(jit_state_t *_jit, jit_code_t code,
- jit_word_t u)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.w = u;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_f(jit_state_t *_jit, jit_code_t code,
- jit_float32_t u)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.f = u;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_d(jit_state_t *_jit, jit_code_t code,
- jit_float64_t u)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.d = u;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_p(jit_state_t *_jit, jit_code_t code,
- jit_pointer_t u)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.p = u;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_ww(jit_state_t *_jit, jit_code_t code,
- jit_word_t u, jit_word_t v)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.w = u;
- node->v.w = v;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_wp(jit_state_t *_jit, jit_code_t code,
- jit_word_t u, jit_pointer_t v)
-{
- return (jit_new_node_ww(code, u, (jit_word_t)v));
-}
-
-jit_node_t *
-_jit_new_node_fp(jit_state_t *_jit, jit_code_t code,
- jit_float32_t u, jit_pointer_t v)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.f = u;
- node->v.w = (jit_word_t)v;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_dp(jit_state_t *_jit, jit_code_t code,
- jit_float64_t u, jit_pointer_t v)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.d = u;
- node->v.w = (jit_word_t)v;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_pw(jit_state_t *_jit, jit_code_t code,
- jit_pointer_t u, jit_word_t v)
-{
- return (jit_new_node_ww(code, (jit_word_t)u, v));
-}
-
-jit_node_t *
-_jit_new_node_wf(jit_state_t *_jit, jit_code_t code,
- jit_word_t u, jit_float32_t v)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.w = u;
- node->v.f = v;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_wd(jit_state_t *_jit, jit_code_t code,
- jit_word_t u, jit_float64_t v)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.w = u;
- node->v.d = v;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_www(jit_state_t *_jit, jit_code_t code,
- jit_word_t u, jit_word_t v, jit_word_t w)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.w = u;
- node->v.w = v;
- node->w.w = w;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_qww(jit_state_t *_jit, jit_code_t code,
- jit_int32_t l, jit_int32_t h,
- jit_word_t v, jit_word_t w)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- assert(l != h);
- node->u.q.l = l;
- node->u.q.h = h;
- node->v.w = v;
- node->w.w = w;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_wwf(jit_state_t *_jit, jit_code_t code,
- jit_word_t u, jit_word_t v, jit_float32_t w)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.w = u;
- node->v.w = v;
- node->w.f = w;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_wwd(jit_state_t *_jit, jit_code_t code,
- jit_word_t u, jit_word_t v, jit_float64_t w)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.w = u;
- node->v.w = v;
- node->w.d = w;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_pww(jit_state_t *_jit, jit_code_t code,
- jit_pointer_t u, jit_word_t v, jit_word_t w)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.p = u;
- node->v.w = v;
- node->w.w = w;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_pwf(jit_state_t *_jit, jit_code_t code,
- jit_pointer_t u, jit_word_t v, jit_float32_t w)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.p = u;
- node->v.w = v;
- node->w.f = w;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_new_node_pwd(jit_state_t *_jit, jit_code_t code,
- jit_pointer_t u, jit_word_t v, jit_float64_t w)
-{
- jit_node_t *node = new_node(code);
- assert(!_jitc->realize);
- node->u.p = u;
- node->v.w = v;
- node->w.d = w;
- return (link_node(node));
-}
-
-jit_node_t *
-_jit_label(jit_state_t *_jit)
-{
- jit_node_t *node;
-
- if (!(node = _jitc->tail) || node->code != jit_code_label) {
- node = jit_forward();
- jit_link(node);
- }
-
- return (node);
-}
-
-jit_node_t *
-_jit_forward(jit_state_t *_jit)
-{
- return (jit_new_node_no_link(jit_code_label));
-}
-
-jit_node_t *
-_jit_indirect(jit_state_t *_jit)
-{
- jit_node_t *node;
-
- node = jit_label();
- node->flag |= jit_flag_use;
-
- return (node);
-}
-
-void
-_jit_link(jit_state_t *_jit, jit_node_t *node)
-{
- jit_block_t *block;
-
- assert((node->code == jit_code_label ||
- node->code == jit_code_prolog ||
- node->code == jit_code_epilog) && !node->next);
- jit_link_node(node);
- if (_jitc->blocks.offset >= _jitc->blocks.length) {
- jit_word_t length;
-
- length = _jitc->blocks.length + 16;
- jit_realloc((jit_pointer_t *)&_jitc->blocks.ptr,
- _jitc->blocks.length * sizeof(jit_block_t),
- length * sizeof(jit_block_t));
- _jitc->blocks.length = length;
- }
- block = _jitc->blocks.ptr + _jitc->blocks.offset;
- block->label = node;
- node->v.w = _jitc->blocks.offset;
- jit_regset_new(&block->reglive);
- jit_regset_new(&block->regmask);
- ++_jitc->blocks.offset;
-}
-
-jit_bool_t
-_jit_forward_p(jit_state_t *_jit, jit_node_t *node)
-{
- return (node->code == jit_code_label && !node->next && node != _jitc->tail);
-}
-
-jit_bool_t
-_jit_indirect_p(jit_state_t *_jit, jit_node_t *node)
-{
- return (node->code == jit_code_label && !!(node->flag & jit_flag_use));
-}
-
-jit_bool_t
-_jit_target_p(jit_state_t *_jit, jit_node_t *node)
-{
- return (node->code == jit_code_label && !!node->link);
-}
-
-void
-_jit_prepare(jit_state_t *_jit)
-{
- assert(_jitc->function != NULL);
- _jitc->function->call.call = jit_call_default;
- _jitc->function->call.argi =
- _jitc->function->call.argf =
- _jitc->function->call.size = 0;
- _jitc->prepare = jit_new_node(jit_code_prepare);
-}
-
-void
-_jit_patch(jit_state_t* _jit, jit_node_t *instr)
-{
- jit_node_t *label;
-
- if (!(label = _jitc->tail) || label->code != jit_code_label)
- label = jit_label();
- jit_patch_at(instr, label);
-}
-
-jit_int32_t
-_jit_classify(jit_state_t *_jit, jit_code_t code)
-{
- jit_int32_t mask;
-
- switch (code) {
- case jit_code_data: case jit_code_save: case jit_code_load:
- case jit_code_name: case jit_code_label: case jit_code_note:
- case jit_code_prolog: case jit_code_ellipsis: case jit_code_va_push:
- case jit_code_epilog: case jit_code_ret: case jit_code_prepare:
- mask = 0;
- break;
- case jit_code_live: case jit_code_va_end:
- case jit_code_retr: case jit_code_retr_f: case jit_code_retr_d:
- case jit_code_pushargr: case jit_code_pushargr_f:
- case jit_code_pushargr_d:
- case jit_code_finishr: /* synthesized will set jit_cc_a0_jmp */
- mask = jit_cc_a0_reg;
- break;
- case jit_code_align: case jit_code_reti: case jit_code_pushargi:
- case jit_code_finishi: /* synthesized will set jit_cc_a0_jmp */
- mask = jit_cc_a0_int;
- break;
- case jit_code_reti_f: case jit_code_pushargi_f:
- mask = jit_cc_a0_flt;
- break;
- case jit_code_reti_d: case jit_code_pushargi_d:
- mask = jit_cc_a0_dbl;
- break;
- case jit_code_allocai:
- mask = jit_cc_a0_int|jit_cc_a1_int;
- break;
- case jit_code_arg: case jit_code_arg_f: case jit_code_arg_d:
- mask = jit_cc_a0_int|jit_cc_a0_arg;
- break;
- case jit_code_calli: case jit_code_jmpi:
- mask = jit_cc_a0_jmp;
- break;
- case jit_code_callr: case jit_code_jmpr:
- mask = jit_cc_a0_reg|jit_cc_a0_jmp;
- break;
- case jit_code_retval_c: case jit_code_retval_uc:
- case jit_code_retval_s: case jit_code_retval_us:
- case jit_code_retval_i: case jit_code_retval_ui:
- case jit_code_retval_l:
- case jit_code_retval_f: case jit_code_retval_d:
- case jit_code_va_start:
- mask = jit_cc_a0_reg|jit_cc_a0_chg;
- break;
- case jit_code_getarg_c: case jit_code_getarg_uc:
- case jit_code_getarg_s: case jit_code_getarg_us:
- case jit_code_getarg_i: case jit_code_getarg_ui:
- case jit_code_getarg_l:
- case jit_code_getarg_f: case jit_code_getarg_d:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_arg;
- break;
- case jit_code_putargr: case jit_code_putargr_f:
- case jit_code_putargr_d:
- mask = jit_cc_a0_reg|jit_cc_a1_arg;
- break;
- case jit_code_putargi:
- mask = jit_cc_a0_int|jit_cc_a1_arg;
- break;
- case jit_code_putargi_f:
- mask = jit_cc_a0_flt|jit_cc_a1_arg;
- break;
- case jit_code_putargi_d:
- mask = jit_cc_a0_dbl|jit_cc_a1_arg;
- break;
- case jit_code_movi: case jit_code_ldi_c: case jit_code_ldi_uc:
- case jit_code_ldi_s: case jit_code_ldi_us: case jit_code_ldi_i:
- case jit_code_ldi_ui: case jit_code_ldi_l: case jit_code_ldi_f:
- case jit_code_ldi_d:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_int;
- break;
- case jit_code_movi_f: case jit_code_movi_f_w:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_flt;
- break;
- case jit_code_movi_d: case jit_code_movi_d_w:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_dbl;
- break;
- case jit_code_movi_d_ww:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_reg|jit_cc_a1_chg|
- jit_cc_a2_dbl;
- break;
- case jit_code_negr: case jit_code_comr: case jit_code_movr:
- case jit_code_extr_c: case jit_code_extr_uc: case jit_code_extr_s:
- case jit_code_extr_us: case jit_code_extr_i: case jit_code_extr_ui:
- case jit_code_truncr_f_i: case jit_code_truncr_f_l:
- case jit_code_truncr_d_i: case jit_code_truncr_d_l:
- case jit_code_htonr_us: case jit_code_htonr_ui: case jit_code_htonr_ul:
- case jit_code_ldr_c: case jit_code_ldr_uc:
- case jit_code_ldr_s: case jit_code_ldr_us: case jit_code_ldr_i:
- case jit_code_ldr_ui: case jit_code_ldr_l: case jit_code_negr_f:
- case jit_code_absr_f: case jit_code_sqrtr_f: case jit_code_movr_f:
- case jit_code_extr_f: case jit_code_extr_d_f: case jit_code_ldr_f:
- case jit_code_negr_d: case jit_code_absr_d: case jit_code_sqrtr_d:
- case jit_code_movr_d: case jit_code_extr_d: case jit_code_extr_f_d:
- case jit_code_ldr_d:
- case jit_code_movr_w_f: case jit_code_movr_f_w:
- case jit_code_movr_w_d: case jit_code_movr_d_w:
- case jit_code_va_arg: case jit_code_va_arg_d:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_reg;
- break;
- case jit_code_movr_d_ww:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_reg|jit_cc_a1_chg|
- jit_cc_a2_reg;
- break;
- case jit_code_addi: case jit_code_addxi: case jit_code_addci:
- case jit_code_subi: case jit_code_subxi: case jit_code_subci:
- case jit_code_rsbi:
- case jit_code_muli: case jit_code_divi: case jit_code_divi_u:
- case jit_code_remi: case jit_code_remi_u: case jit_code_andi:
- case jit_code_ori: case jit_code_xori: case jit_code_lshi:
- case jit_code_rshi: case jit_code_rshi_u: case jit_code_lti:
- case jit_code_lti_u: case jit_code_lei: case jit_code_lei_u:
- case jit_code_eqi: case jit_code_gei: case jit_code_gei_u:
- case jit_code_gti: case jit_code_gti_u: case jit_code_nei:
- case jit_code_ldxi_c: case jit_code_ldxi_uc: case jit_code_ldxi_s:
- case jit_code_ldxi_us: case jit_code_ldxi_i: case jit_code_ldxi_ui:
- case jit_code_ldxi_l: case jit_code_ldxi_f: case jit_code_ldxi_d:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_reg|jit_cc_a2_int;
- break;
- case jit_code_qmuli: case jit_code_qmuli_u:
- case jit_code_qdivi: case jit_code_qdivi_u:
- mask = jit_cc_a0_reg|jit_cc_a0_rlh|jit_cc_a0_chg|
- jit_cc_a1_reg|jit_cc_a2_int;
- break;
- case jit_code_addi_f: case jit_code_subi_f: case jit_code_rsbi_f:
- case jit_code_muli_f: case jit_code_divi_f: case jit_code_lti_f:
- case jit_code_lei_f: case jit_code_eqi_f: case jit_code_gei_f:
- case jit_code_gti_f: case jit_code_nei_f: case jit_code_unlti_f:
- case jit_code_unlei_f: case jit_code_uneqi_f: case jit_code_ungei_f:
- case jit_code_ungti_f: case jit_code_ltgti_f: case jit_code_ordi_f:
- case jit_code_unordi_f:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_reg|jit_cc_a2_flt;
- break;
- case jit_code_addi_d: case jit_code_subi_d: case jit_code_rsbi_d:
- case jit_code_muli_d: case jit_code_divi_d: case jit_code_lti_d:
- case jit_code_lei_d: case jit_code_eqi_d: case jit_code_gei_d:
- case jit_code_gti_d: case jit_code_nei_d: case jit_code_unlti_d:
- case jit_code_unlei_d: case jit_code_uneqi_d: case jit_code_ungei_d:
- case jit_code_ungti_d: case jit_code_ltgti_d: case jit_code_ordi_d:
- case jit_code_unordi_d:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_reg|jit_cc_a2_dbl;
- break;
- case jit_code_addr: case jit_code_addxr: case jit_code_addcr:
- case jit_code_subr: case jit_code_subxr: case jit_code_subcr:
- case jit_code_mulr: case jit_code_divr: case jit_code_divr_u:
- case jit_code_remr: case jit_code_remr_u: case jit_code_andr:
- case jit_code_orr: case jit_code_xorr: case jit_code_lshr:
- case jit_code_rshr: case jit_code_rshr_u: case jit_code_ltr:
- case jit_code_ltr_u: case jit_code_ler: case jit_code_ler_u:
- case jit_code_eqr: case jit_code_ger: case jit_code_ger_u:
- case jit_code_gtr: case jit_code_gtr_u: case jit_code_ner:
- case jit_code_ldxr_c: case jit_code_ldxr_uc: case jit_code_ldxr_s:
- case jit_code_ldxr_us: case jit_code_ldxr_i: case jit_code_ldxr_ui:
- case jit_code_ldxr_l: case jit_code_addr_f: case jit_code_subr_f:
- case jit_code_mulr_f: case jit_code_divr_f: case jit_code_ltr_f:
- case jit_code_ler_f: case jit_code_eqr_f: case jit_code_ger_f:
- case jit_code_gtr_f: case jit_code_ner_f: case jit_code_unltr_f:
- case jit_code_unler_f: case jit_code_uneqr_f: case jit_code_unger_f:
- case jit_code_ungtr_f: case jit_code_ltgtr_f: case jit_code_ordr_f:
- case jit_code_unordr_f: case jit_code_ldxr_f: case jit_code_addr_d:
- case jit_code_subr_d: case jit_code_mulr_d: case jit_code_divr_d:
- case jit_code_ltr_d: case jit_code_ler_d: case jit_code_eqr_d:
- case jit_code_ger_d: case jit_code_gtr_d: case jit_code_ner_d:
- case jit_code_unltr_d: case jit_code_unler_d: case jit_code_uneqr_d:
- case jit_code_unger_d: case jit_code_ungtr_d: case jit_code_ltgtr_d:
- case jit_code_ordr_d: case jit_code_unordr_d: case jit_code_ldxr_d:
- case jit_code_movr_ww_d:
- mask = jit_cc_a0_reg|jit_cc_a0_chg|jit_cc_a1_reg|jit_cc_a2_reg;
- break;
- case jit_code_qmulr: case jit_code_qmulr_u:
- case jit_code_qdivr: case jit_code_qdivr_u:
- mask = jit_cc_a0_reg|jit_cc_a0_rlh|jit_cc_a0_chg|
- jit_cc_a1_reg|jit_cc_a2_reg;
- break;
- case jit_code_sti_c: case jit_code_sti_s: case jit_code_sti_i:
- case jit_code_sti_l: case jit_code_sti_f: case jit_code_sti_d:
- mask = jit_cc_a0_int|jit_cc_a1_reg;
- break;
- case jit_code_blti: case jit_code_blti_u: case jit_code_blei:
- case jit_code_blei_u: case jit_code_beqi: case jit_code_bgei:
- case jit_code_bgei_u: case jit_code_bgti: case jit_code_bgti_u:
- case jit_code_bnei: case jit_code_bmsi: case jit_code_bmci:
- mask = jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a2_int;
- break;
- case jit_code_blti_f: case jit_code_blei_f: case jit_code_beqi_f:
- case jit_code_bgei_f: case jit_code_bgti_f: case jit_code_bnei_f:
- case jit_code_bunlti_f: case jit_code_bunlei_f: case jit_code_buneqi_f:
- case jit_code_bungei_f: case jit_code_bungti_f: case jit_code_bltgti_f:
- case jit_code_bordi_f: case jit_code_bunordi_f:
- mask = jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a2_flt;
- break;
- case jit_code_blti_d: case jit_code_blei_d: case jit_code_beqi_d:
- case jit_code_bgei_d: case jit_code_bgti_d: case jit_code_bnei_d:
- case jit_code_bunlti_d: case jit_code_bunlei_d: case jit_code_buneqi_d:
- case jit_code_bungei_d: case jit_code_bungti_d: case jit_code_bltgti_d:
- case jit_code_bordi_d: case jit_code_bunordi_d:
- mask = jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a2_dbl;
- break;
- case jit_code_allocar: /* synthesized instructions make it
- * equivalent to jit_cc_a0_chg */
- case jit_code_str_c: case jit_code_str_s: case jit_code_str_i:
- case jit_code_str_l: case jit_code_str_f: case jit_code_str_d:
- mask = jit_cc_a0_reg|jit_cc_a1_reg;
- break;
- case jit_code_stxi_c: case jit_code_stxi_s: case jit_code_stxi_i:
- case jit_code_stxi_l: case jit_code_stxi_f: case jit_code_stxi_d:
- mask = jit_cc_a0_int|jit_cc_a1_reg|jit_cc_a2_reg;
- break;
- case jit_code_bltr: case jit_code_bltr_u: case jit_code_bler:
- case jit_code_bler_u: case jit_code_beqr: case jit_code_bger:
- case jit_code_bger_u: case jit_code_bgtr: case jit_code_bgtr_u:
- case jit_code_bner: case jit_code_bmsr: case jit_code_bmcr:
- case jit_code_bltr_f: case jit_code_bler_f: case jit_code_beqr_f:
- case jit_code_bger_f: case jit_code_bgtr_f: case jit_code_bner_f:
- case jit_code_bunltr_f: case jit_code_bunler_f: case jit_code_buneqr_f:
- case jit_code_bunger_f: case jit_code_bungtr_f: case jit_code_bltgtr_f:
- case jit_code_bordr_f: case jit_code_bunordr_f:case jit_code_bltr_d:
- case jit_code_bler_d: case jit_code_beqr_d: case jit_code_bger_d:
- case jit_code_bgtr_d: case jit_code_bner_d: case jit_code_bunltr_d:
- case jit_code_bunler_d: case jit_code_buneqr_d: case jit_code_bunger_d:
- case jit_code_bungtr_d: case jit_code_bltgtr_d: case jit_code_bordr_d:
- case jit_code_bunordr_d:
- mask = jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a2_reg;
- break;
- case jit_code_boaddi: case jit_code_boaddi_u: case jit_code_bxaddi:
- case jit_code_bxaddi_u: case jit_code_bosubi: case jit_code_bosubi_u:
- case jit_code_bxsubi: case jit_code_bxsubi_u:
- mask = jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a1_chg|jit_cc_a2_int;
- break;
- case jit_code_stxr_c: case jit_code_stxr_s: case jit_code_stxr_i:
- case jit_code_stxr_l: case jit_code_stxr_f: case jit_code_stxr_d:
- mask = jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a2_reg;
- break;
- case jit_code_boaddr: case jit_code_boaddr_u: case jit_code_bxaddr:
- case jit_code_bxaddr_u: case jit_code_bosubr: case jit_code_bosubr_u:
- case jit_code_bxsubr: case jit_code_bxsubr_u:
- mask = jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a1_chg|jit_cc_a2_reg;
- break;
- default:
- abort();
- }
-
- return (mask);
-}
-
-void
-_jit_patch_abs(jit_state_t *_jit, jit_node_t *instr, jit_pointer_t address)
-{
- jit_int32_t mask;
-
- if (instr->code == jit_code_movi)
- instr->v.p = address;
- else {
- mask = jit_classify(instr->code);
- assert((mask & (jit_cc_a0_reg|jit_cc_a0_jmp)) == jit_cc_a0_jmp);
- instr->u.p = address;
- }
-}
-
-void
-_jit_patch_at(jit_state_t *_jit, jit_node_t *instr, jit_node_t *label)
-{
- jit_int32_t mask;
-
- assert(!(instr->flag & jit_flag_node));
- instr->flag |= jit_flag_node;
- switch (instr->code) {
- case jit_code_movi:
- assert(label->code == jit_code_label ||
- label->code == jit_code_data);
- instr->v.n = label;
- if (label->code == jit_code_data)
- instr->flag |= jit_flag_data;
- break;
- case jit_code_jmpi:
- assert(label->code == jit_code_label ||
- label->code == jit_code_epilog);
- instr->u.n = label;
- break;
- default:
- mask = jit_classify(instr->code);
- assert((mask & (jit_cc_a0_reg|jit_cc_a0_jmp)) == jit_cc_a0_jmp);
- assert(label->code == jit_code_label);
- instr->u.n = label;
- break;
- }
- /* link field is used as list of nodes associated with a given label */
- instr->link = label->link;
- label->link = instr;
-}
-
-void
-_jit_optimize(jit_state_t *_jit)
-{
- jit_bool_t jump;
- jit_int32_t mask;
- jit_node_t *node;
- jit_block_t *block;
- jit_word_t offset;
-
- _jitc->function = NULL;
-
- thread_jumps();
- sequential_labels();
-
- /* create initial mapping of live register values
- * at the start of a basic block */
- for (offset = 0; offset < _jitc->blocks.offset; offset++) {
- block = _jitc->blocks.ptr + offset;
- if (!block->label)
- continue;
- if (block->label->code != jit_code_epilog) {
- jit_setup(block);
- jit_regset_set(&block->setmask, &block->regmask);
- }
- }
- /* call jit_update resolving undefined values in reverse
- * order so that sequential code would find most data already
- * resolved when reaching the start of a new basic block */
- for (offset = _jitc->blocks.offset - 1; offset >= 0; offset--) {
- block = _jitc->blocks.ptr + offset;
- if (!block->label)
- continue;
- if (block->label->code != jit_code_epilog) {
- jit_regset_set(&_jitc->regmask, &block->regmask);
- jit_update(block->label->next, &block->reglive, &_jitc->regmask, 1);
- }
- }
- /* do a second pass from start to properly handle some conditions
- * of very long living registers that are not referenced for
- * several blocks */
- bmp_zero();
- for (offset = 0; offset < _jitc->blocks.offset; offset++) {
- block = _jitc->blocks.ptr + offset;
- if (!block->label)
- continue;
- if (block->label->code != jit_code_epilog) {
- jit_regset_set(&_jitc->regmask, &block->setmask);
- jit_update(block->label->next, &block->reglive, &_jitc->regmask, 1);
- }
- }
-
- patch_registers();
- simplify();
-
- /* figure out labels that are only reached with a jump
- * and is required to do a simple redundant_store removal
- * on jit_beqi below */
- jump = 1;
- for (node = _jitc->head; node; node = node->next) {
- switch (node->code) {
- case jit_code_label:
- if (!jump)
- node->flag |= jit_flag_head;
- break;
- case jit_code_jmpi: case jit_code_jmpr:
- case jit_code_epilog:
- jump = 1;
- break;
- case jit_code_data: case jit_code_note:
- break;
- default:
- jump = 0;
- break;
- }
- }
-
- for (node = _jitc->head; node; node = node->next) {
- mask = jit_classify(node->code);
- if (mask & jit_cc_a0_reg)
- node->u.w &= ~jit_regno_patch;
- if (mask & jit_cc_a1_reg)
- node->v.w &= ~jit_regno_patch;
- if (mask & jit_cc_a2_reg)
- node->w.w &= ~jit_regno_patch;
- switch (node->code) {
- case jit_code_prolog:
- _jitc->function = _jitc->functions.ptr + node->w.w;
- break;
- case jit_code_epilog:
- _jitc->function = NULL;
- break;
- case jit_code_beqi:
- redundant_store(node, 1);
- break;
- case jit_code_bnei:
- redundant_store(node, 0);
- break;
- default:
-#if JIT_HASH_CONSTS
- if (mask & jit_cc_a0_flt) {
- node->u.p = jit_data(&node->u.f, sizeof(jit_float32_t), 4);
- node->flag |= jit_flag_node | jit_flag_data;
- }
- else if (mask & jit_cc_a0_dbl) {
- node->u.p = jit_data(&node->u.d, sizeof(jit_float64_t), 8);
- node->flag |= jit_flag_node | jit_flag_data;
- }
- else if (mask & jit_cc_a1_flt) {
- node->v.p = jit_data(&node->v.f, sizeof(jit_float32_t), 4);
- node->flag |= jit_flag_node | jit_flag_data;
- }
- else if (mask & jit_cc_a1_dbl) {
- node->v.p = jit_data(&node->v.d, sizeof(jit_float64_t), 8);
- node->flag |= jit_flag_node | jit_flag_data;
- }
- else if (mask & jit_cc_a2_flt) {
- node->w.p = jit_data(&node->w.f, sizeof(jit_float32_t), 4);
- node->flag |= jit_flag_node | jit_flag_data;
- }
- else if (mask & jit_cc_a2_dbl) {
- node->w.p = jit_data(&node->w.d, sizeof(jit_float64_t), 8);
- node->flag |= jit_flag_node | jit_flag_data;
- }
-#endif
- if (_jitc->function) {
- if ((mask & (jit_cc_a0_reg|jit_cc_a0_chg)) ==
- (jit_cc_a0_reg|jit_cc_a0_chg)) {
- if (mask & jit_cc_a0_rlh) {
- jit_regset_setbit(&_jitc->function->regset,
- jit_regno(node->u.q.l));
- jit_regset_setbit(&_jitc->function->regset,
- jit_regno(node->u.q.h));
- }
- else
- jit_regset_setbit(&_jitc->function->regset,
- jit_regno(node->u.w));
- }
- if ((mask & (jit_cc_a1_reg|jit_cc_a1_chg)) ==
- (jit_cc_a1_reg|jit_cc_a1_chg))
- jit_regset_setbit(&_jitc->function->regset,
- jit_regno(node->v.w));
- if ((mask & (jit_cc_a2_reg|jit_cc_a2_chg)) ==
- (jit_cc_a2_reg|jit_cc_a2_chg))
- jit_regset_setbit(&_jitc->function->regset,
- jit_regno(node->w.w));
- }
- break;
- }
- }
-}
-
-void
-_jit_reglive(jit_state_t *_jit, jit_node_t *node)
-{
- jit_int32_t spec;
- jit_int32_t value;
- jit_block_t *block;
-
- switch (node->code) {
- case jit_code_label: case jit_code_prolog: case jit_code_epilog:
- block = _jitc->blocks.ptr + node->v.w;
- jit_regset_set(&_jitc->reglive, &block->reglive);
- break;
- case jit_code_callr:
- value = jit_regno(node->u.w);
- if (!(node->u.w & jit_regno_patch)) {
- jit_regset_setbit(&_jitc->reglive, value);
- }
- case jit_code_calli:
- for (value = 0; value < _jitc->reglen; value++) {
- spec = jit_class(_rvs[value].spec);
- if ((spec & jit_class_arg) && jit_regarg_p(node, value))
- jit_regset_setbit(&_jitc->reglive, value);
- else if (!(spec & jit_class_sav))
- jit_regset_clrbit(&_jitc->reglive, value);
- }
- break;
- default:
- value = jit_classify(node->code);
- if (value & jit_cc_a0_reg) {
- if (value & jit_cc_a0_rlh) {
- if (!(node->u.q.l & jit_regno_patch)) {
- if (value & jit_cc_a0_chg) {
- jit_regset_clrbit(&_jitc->reglive, node->u.q.l);
- jit_regset_setbit(&_jitc->regmask, node->u.q.l);
- }
- else
- jit_regset_setbit(&_jitc->reglive, node->u.q.l);
- }
- if (!(node->u.q.h & jit_regno_patch)) {
- if (value & jit_cc_a0_chg) {
- jit_regset_clrbit(&_jitc->reglive, node->u.q.h);
- jit_regset_setbit(&_jitc->regmask, node->u.q.h);
- }
- else
- jit_regset_setbit(&_jitc->reglive, node->u.q.h);
- }
- }
- else {
- if (!(node->u.w & jit_regno_patch)) {
- if (value & jit_cc_a0_chg) {
- jit_regset_clrbit(&_jitc->reglive, node->u.w);
- jit_regset_setbit(&_jitc->regmask, node->u.w);
- }
- else
- jit_regset_setbit(&_jitc->reglive, node->u.w);
- }
- }
- }
- if ((value & jit_cc_a1_reg) && !(node->v.w & jit_regno_patch)) {
- if (value & jit_cc_a1_chg) {
- jit_regset_clrbit(&_jitc->reglive, node->v.w);
- jit_regset_setbit(&_jitc->regmask, node->v.w);
- }
- else
- jit_regset_setbit(&_jitc->reglive, node->v.w);
- }
- if ((value & jit_cc_a2_reg) && !(node->w.w & jit_regno_patch)) {
- if (value & jit_cc_a2_chg) {
- jit_regset_clrbit(&_jitc->reglive, node->w.w);
- jit_regset_setbit(&_jitc->regmask, node->w.w);
- }
- else
- jit_regset_setbit(&_jitc->reglive, node->w.w);
- }
- if (jit_regset_set_p(&_jitc->regmask)) {
- bmp_zero();
- jit_update(node->next, &_jitc->reglive, &_jitc->regmask, 1);
- if (jit_regset_set_p(&_jitc->regmask)) {
- /* any unresolved live state is considered as live */
- jit_regset_ior(&_jitc->reglive,
- &_jitc->reglive, &_jitc->regmask);
- jit_regset_set_ui(&_jitc->regmask, 0);
- }
- }
- break;
- }
-}
-
-void
-_jit_regarg_set(jit_state_t *_jit, jit_node_t *node, jit_int32_t value)
-{
- if (value & jit_cc_a0_reg) {
- if (value & jit_cc_a0_rlh) {
- jit_regset_setbit(&_jitc->regarg, jit_regno(node->u.q.l));
- jit_regset_setbit(&_jitc->regarg, jit_regno(node->u.q.h));
- }
- else
- jit_regset_setbit(&_jitc->regarg, jit_regno(node->u.w));
- }
- if (value & jit_cc_a1_reg)
- jit_regset_setbit(&_jitc->regarg, jit_regno(node->v.w));
- if (value & jit_cc_a2_reg)
- jit_regset_setbit(&_jitc->regarg, jit_regno(node->w.w));
-}
-
-void
-_jit_regarg_clr(jit_state_t *_jit, jit_node_t *node, jit_int32_t value)
-{
- if (value & jit_cc_a0_reg) {
- if (value & jit_cc_a0_rlh) {
- jit_regset_clrbit(&_jitc->regarg, jit_regno(node->u.q.l));
- jit_regset_clrbit(&_jitc->regarg, jit_regno(node->u.q.h));
- }
- else
- jit_regset_clrbit(&_jitc->regarg, jit_regno(node->u.w));
- }
- if (value & jit_cc_a1_reg)
- jit_regset_clrbit(&_jitc->regarg, jit_regno(node->v.w));
- if (value & jit_cc_a2_reg)
- jit_regset_clrbit(&_jitc->regarg, jit_regno(node->w.w));
-}
-
-void
-_jit_realize(jit_state_t *_jit)
-{
- assert(!_jitc->realize);
- if (_jitc->function)
- jit_epilog();
- jit_optimize();
- _jitc->realize = 1;
-
- /* ensure it is aligned */
- _jitc->data.offset = (_jitc->data.offset + 7) & -8;
-}
-
-void
-_jit_dataset(jit_state_t *_jit)
-{
- jit_uint8_t *ptr;
- jit_node_t *node;
- jit_word_t offset;
-#if defined(__sgi)
- int mmap_fd;
-#endif
-
- assert(!_jitc->dataset);
- if (!_jit->user_data) {
-
- /* create read only data buffer */
- _jit->data.length = (_jitc->data.offset +
- /* reserve space for annotations */
- _jitc->note.size + 4095) & -4096;
-#if defined(__sgi)
- mmap_fd = open("/dev/zero", O_RDWR);
-#endif
- _jit->data.ptr = mmap(NULL, _jit->data.length,
- PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANON, mmap_fd, 0);
- assert(_jit->data.ptr != MAP_FAILED);
-#if defined(__sgi)
- close(mmap_fd);
-#endif
- }
-
- if (!_jitc->no_data)
- jit_memcpy(_jit->data.ptr, _jitc->data.ptr, _jitc->data.offset);
-
- if (_jitc->no_note) {
- /* Space for one note is always allocated, so revert it here
- * if after jit_new_state was called, it is also requested to
- * not generate annotation information */
- _jit->note.length = 0;
- _jitc->note.size = 0;
- }
- else {
- _jitc->note.base = _jit->data.ptr;
- if (!_jitc->no_data)
- _jitc->note.base += _jitc->data.offset;
- memset(_jitc->note.base, 0, _jitc->note.size);
- }
-
- if (_jit->user_data)
- /* Need the temporary hashed data until jit_emit is finished */
- ptr = _jitc->no_data ? _jitc->data.ptr : _jit->data.ptr;
- else {
- ptr = _jit->data.ptr;
- /* Temporary hashed data no longer required */
- jit_free((jit_pointer_t *)&_jitc->data.ptr);
- }
-
- for (offset = 0; offset < _jitc->data.size; offset++) {
- for (node = _jitc->data.table[offset]; node; node = node->next) {
- node->flag |= jit_flag_patch;
- node->u.w = (jit_word_t)(ptr + node->u.w);
- }
- }
-
- _jitc->dataset = 1;
-}
-
-jit_pointer_t
-_jit_get_code(jit_state_t *_jit, jit_word_t *length)
-{
- assert(_jitc->realize);
- if (length) {
- if (_jitc->done)
- /* If code already generated, return exact size of code */
- *length = _jit->pc.uc - _jit->code.ptr;
- else
- /* Else return current size of the code buffer */
- *length = _jit->code.length;
- }
-
- return (_jit->code.ptr);
-}
-
-void
-_jit_set_code(jit_state_t *_jit, jit_pointer_t ptr, jit_word_t length)
-{
- assert(_jitc->realize);
- _jit->code.ptr = ptr;
- _jit->code.length = length;
- _jit->user_code = 1;
-}
-
-jit_pointer_t
-_jit_get_data(jit_state_t *_jit, jit_word_t *data_size, jit_word_t *note_size)
-{
- assert(_jitc->realize);
- if (data_size)
- *data_size = _jitc->data.offset;
- if (note_size)
- *note_size = _jitc->note.size;
- return (_jit->data.ptr);
-}
-
-void
-_jit_set_data(jit_state_t *_jit, jit_pointer_t ptr,
- jit_word_t length, jit_word_t flags)
-{
- assert(_jitc->realize);
- if (flags & JIT_DISABLE_DATA)
- _jitc->no_data = 1;
- else
- assert(length >= _jitc->data.offset);
- if (flags & JIT_DISABLE_NOTE)
- _jitc->no_note = 1;
- else {
- if (flags & JIT_DISABLE_DATA)
- assert(length >= _jitc->note.size);
- else
- assert(length >= _jitc->data.offset + _jitc->note.size);
- }
- _jit->data.ptr = ptr;
- _jit->data.length = length;
- _jit->user_data = 1;
-}
-
-jit_pointer_t
-_jit_emit(jit_state_t *_jit)
-{
- jit_pointer_t code;
- jit_node_t *node;
- size_t length;
- int result;
-#if defined(__sgi)
- int mmap_fd;
-#endif
-
- if (!_jitc->realize)
- jit_realize();
-
- if (!_jitc->dataset)
- jit_dataset();
-
- _jitc->emit = 1;
-
- if (!_jit->user_code) {
-#if defined(__sgi)
- mmap_fd = open("/dev/zero", O_RDWR);
-#endif
- if (_jit->code.length == 0)
- _jit->code.length = 4096;
-
- _jit->code.ptr = mmap(NULL, _jit->code.length,
- PROT_EXEC | PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANON, mmap_fd, 0);
- assert(_jit->code.ptr != MAP_FAILED);
- }
- _jitc->code.end = _jit->code.ptr + _jit->code.length -
- jit_get_max_instr();
- _jit->pc.uc = _jit->code.ptr;
-
- for (;;) {
- if ((code = emit_code()) == NULL) {
- _jitc->patches.offset = 0;
- for (node = _jitc->head; node; node = node->next) {
- if (node->link &&
- (node->code == jit_code_label ||
- node->code == jit_code_epilog))
- node->flag &= ~jit_flag_patch;
- }
- if (_jit->user_code)
- goto fail;
- /* Should only happen on very special cases */
- length = _jit->code.length + 4096;
-
-#if !HAVE_MREMAP
- munmap(_jit->code.ptr, _jit->code.length);
-#endif
-
-#if HAVE_MREMAP
-# if __NetBSD__
- _jit->code.ptr = mremap(_jit->code.ptr, _jit->code.length,
- _jit->code.ptr, length, 0);
-# else
- _jit->code.ptr = mremap(_jit->code.ptr, _jit->code.length,
- length, MREMAP_MAYMOVE, NULL);
-# endif
-#else
- _jit->code.ptr = mmap(NULL, length,
- PROT_EXEC | PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANON, mmap_fd, 0);
-#endif
-
- assert(_jit->code.ptr != MAP_FAILED);
- _jit->code.length = length;
- _jitc->code.end = _jit->code.ptr + _jit->code.length -
- jit_get_max_instr();
- _jit->pc.uc = _jit->code.ptr;
- }
- else
- break;
- }
-
-#if defined(__sgi)
- if (!_jit->user_code)
- close(mmap_fd);
-#endif
-
- _jitc->done = 1;
- if (!_jitc->no_note)
- jit_annotate();
-
- if (_jit->user_data)
- jit_free((jit_pointer_t *)&_jitc->data.ptr);
- else {
- result = mprotect(_jit->data.ptr, _jit->data.length, PROT_READ);
- assert(result == 0);
- }
- if (!_jit->user_code) {
- result = mprotect(_jit->code.ptr, _jit->code.length,
- PROT_READ | PROT_EXEC);
- assert(result == 0);
- }
-
- return (_jit->code.ptr);
-fail:
- return (NULL);
-}
-
-void
-_jit_frame(jit_state_t *_jit, jit_int32_t frame)
-{
- jit_trampoline(frame, 1);
-}
-
-void
-_jit_tramp(jit_state_t *_jit, jit_int32_t frame)
-{
- jit_trampoline(frame, 0);
-}
-
-void
-_jit_trampoline(jit_state_t *_jit, jit_int32_t frame, jit_bool_t prolog)
-{
- jit_int32_t regno;
-
- /* Must be called after prolog, actually, just to simplify
- * tests and know there is a current function and that
- * _jitc->function->self.aoff is at the before any alloca value */
- assert(_jitc->tail && _jitc->tail->code == jit_code_prolog);
-
- /* + 24 for 3 possible spilled temporaries (that could be a double) */
- frame += 24;
-#if defined(__hppa__)
- frame += _jitc->function->self.aoff;
-#else
- frame -= _jitc->function->self.aoff;
-#endif
- _jitc->function->frame = frame;
- if (prolog)
- _jitc->function->define_frame = 1;
- else
- _jitc->function->assume_frame = 1;
- for (regno = 0; regno < _jitc->reglen; regno++)
- if (jit_class(_rvs[regno].spec) & jit_class_sav)
- jit_regset_setbit(&_jitc->function->regset, regno);
-}
-
-/* Compute initial reglive and regmask set values of a basic block.
- * reglive is the set of known live registers
- * regmask is the set of registers not referenced in the block
- */
-static void
-_jit_setup(jit_state_t *_jit, jit_block_t *block)
-{
-#define reglive block->reglive
-#define regmask block->regmask
- jit_node_t *node;
- jit_bool_t live;
- jit_bool_t jump;
- unsigned long value;
-
- jump = 0;
- jit_regset_set_mask(&regmask, _jitc->reglen);
- for (node = block->label->next; node; node = node->next) {
- switch (node->code) {
- case jit_code_label: case jit_code_prolog:
- case jit_code_epilog:
- return;
- default:
- value = jit_classify(node->code);
- if (value & jit_cc_a0_reg) {
- live = !(value & jit_cc_a0_chg);
- if (value & jit_cc_a0_rlh) {
- if (!(node->u.q.l & jit_regno_patch) &&
- jit_regset_tstbit(&regmask, node->u.q.l)) {
- if (live || !jump)
- jit_regset_clrbit(&regmask, node->u.q.l);
- if (live)
- jit_regset_setbit(&reglive, node->u.q.l);
- }
- if (!(node->u.q.h & jit_regno_patch) &&
- jit_regset_tstbit(&regmask, node->u.q.h)) {
- if (live || !jump)
- jit_regset_clrbit(&regmask, node->u.q.h);
- if (live)
- jit_regset_setbit(&reglive, node->u.q.h);
- }
- }
- else {
- if (!(node->u.w & jit_regno_patch) &&
- jit_regset_tstbit(&regmask, node->u.w)) {
- if (live || !jump)
- jit_regset_clrbit(&regmask, node->u.w);
- if (live)
- jit_regset_setbit(&reglive, node->u.w);
- }
- }
- }
- if ((value & jit_cc_a1_reg) &&
- !(node->v.w & jit_regno_patch) &&
- jit_regset_tstbit(&regmask, node->v.w)) {
- live = !(value & jit_cc_a1_chg);
- if (live || !jump)
- jit_regset_clrbit(&regmask, node->v.w);
- if (live)
- jit_regset_setbit(&reglive, node->v.w);
- }
- if ((value & jit_cc_a2_reg) &&
- !(node->w.w & jit_regno_patch) &&
- jit_regset_tstbit(&regmask, node->w.w)) {
- live = !(value & jit_cc_a2_chg);
- if (live || !jump)
- jit_regset_clrbit(&regmask, node->w.w);
- if (live)
- jit_regset_setbit(&reglive, node->w.w);
- }
- if (value & jit_cc_a0_jmp)
- jump = 1;
- break;
- }
- }
-#undef regmask
-#undef reglive
-}
-
-/* Remove bit of mask argument based on instructions arguments up to end
- * of code or finding a basic block boundary, if a value is used as argument,
- * also set the live bit to know value cannot be clobbered; if value is
- * modified, just remove it from the mask as if it not already in the live
- * bitmask, then the value is dead.
- */
-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;
- jit_regset_t ztmp;
- jit_regset_t zmask;
- unsigned long value;
- jit_block_t *block;
- jit_node_t *label;
-
- for (; node; node = node->next) {
- restart:
- if (jit_regset_set_p(mask) == 0)
- break;
- switch (node->code) {
- case jit_code_label:
- block = _jitc->blocks.ptr + node->v.w;
- jit_regset_and(&ztmp, mask, &block->reglive);
- if (jit_regset_set_p(&ztmp)) {
- jit_regset_ior(live, live, &ztmp);
- jit_regset_com(&ztmp, &ztmp);
- jit_regset_and(mask, mask, &ztmp);
- }
- if (bmp_tst(node->v.w))
- return;
- bmp_set(node->v.w);
- break;
- case jit_code_prolog:
- jit_regset_set_ui(mask, 0);
- return;
- case jit_code_epilog:
- jit_regset_set_ui(mask, 0);
- return;
- case jit_code_callr:
- value = jit_regno(node->u.w);
- if (!(node->u.w & jit_regno_patch)) {
- if (jit_regset_tstbit(mask, value)) {
- jit_regset_clrbit(mask, value);
- jit_regset_setbit(live, value);
- }
- }
- case jit_code_calli:
- for (value = 0; value < _jitc->reglen; ++value) {
- value = jit_regset_scan1(mask, value);
- if (value >= _jitc->reglen)
- break;
- spec = jit_class(_rvs[value].spec);
- if (!(spec & jit_class_sav))
- jit_regset_clrbit(mask, value);
- if ((spec & jit_class_arg) && jit_regarg_p(node, value))
- jit_regset_setbit(live, value);
- }
- break;
- default:
- value = jit_classify(node->code);
- if (value & jit_cc_a2_reg) {
- if (!(node->w.w & jit_regno_patch)) {
- if (jit_regset_tstbit(mask, node->w.w)) {
- jit_regset_clrbit(mask, node->w.w);
- if (!(value & jit_cc_a2_chg))
- jit_regset_setbit(live, node->w.w);
- }
- }
- }
- if (value & jit_cc_a1_reg) {
- if (!(node->v.w & jit_regno_patch)) {
- if (jit_regset_tstbit(mask, node->v.w)) {
- jit_regset_clrbit(mask, node->v.w);
- if (!(value & jit_cc_a1_chg))
- jit_regset_setbit(live, node->v.w);
- }
- }
- }
- if (value & jit_cc_a0_reg) {
- if (value & jit_cc_a0_rlh) {
- if (!(node->u.q.l & jit_regno_patch)) {
- if (jit_regset_tstbit(mask, node->u.q.l)) {
- jit_regset_clrbit(mask, node->u.q.l);
- if (!(value & jit_cc_a0_chg))
- jit_regset_setbit(live, node->u.q.l);
- }
- }
- if (!(node->u.q.h & jit_regno_patch)) {
- if (jit_regset_tstbit(mask, node->u.q.h)) {
- jit_regset_clrbit(mask, node->u.q.h);
- if (!(value & jit_cc_a0_chg))
- jit_regset_setbit(live, node->u.q.h);
- }
- }
- }
- else {
- if (!(node->u.w & jit_regno_patch)) {
- if (jit_regset_tstbit(mask, node->u.w)) {
- jit_regset_clrbit(mask, node->u.w);
- if (!(value & jit_cc_a0_chg))
- jit_regset_setbit(live, node->u.w);
- }
- }
- }
- }
- if (value & jit_cc_a0_jmp) {
- if (node->flag & jit_flag_node) {
- label = node->u.n;
- if (node->code == jit_code_jmpi) {
- node = label;
- goto restart;
- }
- block = _jitc->blocks.ptr + label->v.w;
- jit_regset_and(&ztmp, mask, &block->reglive);
- if (jit_regset_set_p(&ztmp)) {
- jit_regset_ior(live, live, &ztmp);
- jit_regset_com(&ztmp, &ztmp);
- jit_regset_and(mask, mask, &ztmp);
- }
- if (bmp_tst(label->v.w))
- continue;
- bmp_set(label->v.w);
- if (jit_regset_set_p(mask) == 0)
- return;
- /* restore mask if branch is conditional */
- if (recurse) {
- jit_regset_set(&zmask, mask);
- jit_update(block->label->next, live, &zmask, 0);
- }
- else {
- node = block->label->next;
- goto restart;
- }
- jit_regset_xor(&ztmp, &zmask, mask);
- /* remove known live registers from mask */
- if (jit_regset_set_p(&ztmp)) {
- jit_regset_and(&ztmp, &ztmp, live);
- jit_regset_com(&ztmp, &ztmp);
- jit_regset_and(mask, mask, &ztmp);
- }
- continue;
- }
- /* Should not really mark as live all registers in unknown
- * state if using jit_jmpr(), or jit_jmpi(absolute_address)
- * because that would leave the register allocator with
- * no options for "nospill" temporaries (other temporaries
- * also benefit from not needing to spill/reload), so, the
- * user must ensure to either spill/reload, or only leave
- * live values on registers that are advertised as
- * callee save (as per jit_callee_save_p); on most targets
- * these are the JIT_Vn registers. */
- for (regno = 0; regno < _jitc->reglen; regno++) {
- spec = jit_class(_rvs[regno].spec);
- if (jit_regset_tstbit(mask, regno) &&
- (spec & (jit_class_gpr|jit_class_fpr)) &&
- !(spec & jit_class_sav))
- jit_regset_clrbit(mask, regno);
- }
- /* assume value is live due to jump to unknown location */
- jit_regset_ior(live, live, mask);
- jit_regset_set_ui(mask, 0);
- return;
- }
- break;
- }
- }
-}
-
-static void
-_thread_jumps(jit_state_t *_jit)
-{
- jit_node_t *prev;
- jit_node_t *node;
- jit_node_t *next;
- jit_int32_t mask;
-
- for (prev = node = _jitc->head; node;) {
- next = node->next;
- switch (node->code) {
- case jit_code_jmpi:
- if (redundant_jump(prev, node)) {
- node = prev;
- continue;
- }
- if (shortcut_jump(prev, node))
- continue;
- break;
- case jit_code_jmpr:
- case jit_code_callr: case jit_code_calli:
- /* non optimizable jump like code */
- break;
- default:
- mask = jit_classify(node->code);
- if (mask & jit_cc_a0_jmp) {
- if (reverse_jump(prev, node) ||
- shortcut_jump(prev, node))
- continue;
- }
- break;
- }
- prev = node;
- node = next;
- }
-}
-
-static void
-_sequential_labels(jit_state_t *_jit)
-{
- jit_node_t *jump;
- jit_node_t *link;
- jit_node_t *prev;
- jit_node_t *next;
- jit_node_t *node;
-
- for (prev = node = _jitc->head; node; node = next) {
- next = node->next;
- if (node->code == jit_code_label) {
- if (!node->flag) {
- if (!node->link) {
- del_label(prev, node);
- continue;
- }
- if (prev != node && prev->code == jit_code_label) {
- if ((jump = node->link)) {
- for (; jump; jump = link) {
- link = jump->link;
- jump->u.n = prev;
- jump->link = prev->link;
- prev->link = jump;
- }
- node->link = NULL;
- }
- del_label(prev, node);
- continue;
- }
- }
- if (next && next->code == jit_code_label && !next->flag) {
- if ((jump = next->link)) {
- for (; jump; jump = link) {
- link = jump->link;
- jump->u.n = node;
- jump->link = node->link;
- node->link = jump;
- }
- next->link = NULL;
- }
- del_label(node, next);
- next = node->next;
- continue;
- }
- }
- prev = node;
- }
-}
-
-static jit_bool_t
-_shortcut_jump(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node)
-{
- jit_bool_t cond;
- jit_node_t *jump;
- jit_node_t *next;
- jit_node_t *temp;
-
- if (!(node->flag & jit_flag_node))
- return (0);
- assert(node->code != jit_code_jmpr);
- cond = node->code != jit_code_jmpi;
- jump = node->u.n;
- for (next = jump->next; next; next = next->next) {
- switch (next->code) {
- case jit_code_jmpi:
- if (!(next->flag & jit_flag_node))
- return (0);
- if (jump->link == node)
- jump->link = node->link;
- else {
- for (temp = jump->link;
- temp->link != node;
- temp = temp->link)
- assert(temp != NULL);
- temp->link = node->link;
- }
- jump = next->u.n;
- node->u.n = jump;
- node->link = jump->link;
- jump->link = node;
- return (1);
- case jit_code_jmpr:
- if (cond)
- return (0);
- node->code = jit_code_jmpr;
- node->u.w = next->u.w;
- node->link = NULL;
- node->flag &= ~jit_flag_node;
- return (1);
- case jit_code_note: case jit_code_label:
- break;
- default:
- return (0);
- }
- }
- return (0);
-}
-
-static jit_bool_t
-_redundant_jump(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node)
-{
- jit_node_t *local_prev;
- jit_node_t *local_next;
-
- if (!(node->flag & jit_flag_node))
- return (0);
- for (local_prev = node, local_next = node->next;
- local_next;
- local_prev = local_next, local_next = local_next->next) {
-
- switch (local_next->code) {
- case jit_code_label: case jit_code_epilog:
- if (node->u.n == local_next) {
- if (local_next->link == node)
- local_next->link = node->link;
- else {
- for (local_prev = local_next->link;
- local_prev->link != node;
- local_prev = local_prev->link)
- assert(local_prev != NULL);
- local_prev->link = node->link;
- }
- del_node(prev, node);
- return (1);
- }
- break;
- case jit_code_name: case jit_code_note:
- case jit_code_align:
- break;
- default:
- return (0);
- }
- }
- return (0);
-}
-
-static jit_code_t
-reverse_jump_code(jit_code_t code)
-{
- switch (code) {
- case jit_code_bltr: return (jit_code_bger);
- case jit_code_blti: return (jit_code_bgei);
- case jit_code_bltr_u: return (jit_code_bger_u);
- case jit_code_blti_u: return (jit_code_bgei_u);
- case jit_code_bler: return (jit_code_bgtr);
- case jit_code_blei: return (jit_code_bgti);
- case jit_code_bler_u: return (jit_code_bgtr_u);
- case jit_code_blei_u: return (jit_code_bgti_u);
- case jit_code_beqr: return (jit_code_bner);
- case jit_code_beqi: return (jit_code_bnei);
- case jit_code_bger: return (jit_code_bltr);
- case jit_code_bgei: return (jit_code_blti);
- case jit_code_bger_u: return (jit_code_bltr_u);
- case jit_code_bgei_u: return (jit_code_blti_u);
- case jit_code_bgtr: return (jit_code_bler);
- case jit_code_bgti: return (jit_code_blei);
- case jit_code_bgtr_u: return (jit_code_bler_u);
- case jit_code_bgti_u: return (jit_code_blei_u);
- case jit_code_bner: return (jit_code_beqr);
- case jit_code_bnei: return (jit_code_beqi);
- case jit_code_bmsr: return (jit_code_bmcr);
- case jit_code_bmsi: return (jit_code_bmci);
- case jit_code_bmcr: return (jit_code_bmsr);
- case jit_code_bmci: return (jit_code_bmsi);
- case jit_code_bltr_f: return (jit_code_bunger_f);
- case jit_code_blti_f: return (jit_code_bungei_f);
- case jit_code_bler_f: return (jit_code_bungtr_f);
- case jit_code_blei_f: return (jit_code_bungti_f);
-
- case jit_code_beqr_f: return (jit_code_bner_f);
- case jit_code_beqi_f: return (jit_code_bnei_f);
-
- case jit_code_bger_f: return (jit_code_bunltr_f);
- case jit_code_bgei_f: return (jit_code_bunlti_f);
- case jit_code_bgtr_f: return (jit_code_bunler_f);
- case jit_code_bgti_f: return (jit_code_bunlei_f);
-
- case jit_code_bner_f: return (jit_code_beqr_f);
- case jit_code_bnei_f: return (jit_code_beqr_f);
-
- case jit_code_bunltr_f: return (jit_code_bger_f);
- case jit_code_bunlti_f: return (jit_code_bgei_f);
- case jit_code_bunler_f: return (jit_code_bgtr_f);
- case jit_code_bunlei_f: return (jit_code_bgti_f);
-
- case jit_code_buneqr_f: return (jit_code_bltgtr_f);
- case jit_code_buneqi_f: return (jit_code_bltgti_f);
-
- case jit_code_bunger_f: return (jit_code_bltr_f);
- case jit_code_bungei_f: return (jit_code_blti_f);
- case jit_code_bungtr_f: return (jit_code_bler_f);
- case jit_code_bungti_f: return (jit_code_blei_f);
-
- case jit_code_bltgtr_f: return (jit_code_buneqr_f);
- case jit_code_bltgti_f: return (jit_code_buneqi_f);
-
- case jit_code_bordr_f: return (jit_code_bunordr_f);
- case jit_code_bordi_f: return (jit_code_bunordi_f);
- case jit_code_bunordr_f:return (jit_code_bordr_f);
- case jit_code_bunordi_f:return (jit_code_bordi_f);
- case jit_code_bltr_d: return (jit_code_bunger_d);
- case jit_code_blti_d: return (jit_code_bungei_d);
- case jit_code_bler_d: return (jit_code_bungtr_d);
- case jit_code_blei_d: return (jit_code_bungti_d);
-
- case jit_code_beqr_d: return (jit_code_bner_d);
- case jit_code_beqi_d: return (jit_code_bnei_d);
-
- case jit_code_bger_d: return (jit_code_bunltr_d);
- case jit_code_bgei_d: return (jit_code_bunlti_d);
- case jit_code_bgtr_d: return (jit_code_bunler_d);
- case jit_code_bgti_d: return (jit_code_bunlei_d);
-
- case jit_code_bner_d: return (jit_code_beqr_d);
- case jit_code_bnei_d: return (jit_code_beqi_d);
-
- case jit_code_bunltr_d: return (jit_code_bger_d);
- case jit_code_bunlti_d: return (jit_code_bgei_d);
- case jit_code_bunler_d: return (jit_code_bgtr_d);
- case jit_code_bunlei_d: return (jit_code_bgti_d);
-
- case jit_code_buneqr_d: return (jit_code_bltgtr_d);
- case jit_code_buneqi_d: return (jit_code_bltgti_d);
-
- case jit_code_bunger_d: return (jit_code_bltr_d);
- case jit_code_bungei_d: return (jit_code_blti_d);
- case jit_code_bungtr_d: return (jit_code_bler_d);
- case jit_code_bungti_d: return (jit_code_blei_d);
-
- case jit_code_bltgtr_d: return (jit_code_buneqr_d);
- case jit_code_bltgti_d: return (jit_code_buneqi_d);
-
- case jit_code_bordr_d: return (jit_code_bunordr_d);
- case jit_code_bordi_d: return (jit_code_bunordi_d);
- case jit_code_bunordr_d:return (jit_code_bordr_d);
- case jit_code_bunordi_d:return (jit_code_bordi_d);
- case jit_code_boaddr: return (jit_code_bxaddr);
- case jit_code_boaddi: return (jit_code_bxaddi);
- case jit_code_boaddr_u: return (jit_code_bxaddr_u);
- case jit_code_boaddi_u: return (jit_code_bxaddi_u);
- case jit_code_bxaddr: return (jit_code_boaddr);
- case jit_code_bxaddi: return (jit_code_boaddi);
- case jit_code_bxaddr_u: return (jit_code_boaddr_u);
- case jit_code_bxaddi_u: return (jit_code_boaddi_u);
- case jit_code_bosubr: return (jit_code_bxsubr);
- case jit_code_bosubi: return (jit_code_bxsubi);
- case jit_code_bosubr_u: return (jit_code_bxsubr_u);
- case jit_code_bosubi_u: return (jit_code_bxsubi_u);
- case jit_code_bxsubr: return (jit_code_bosubr);
- case jit_code_bxsubi: return (jit_code_bosubi);
- case jit_code_bxsubr_u: return (jit_code_bosubr_u);
- case jit_code_bxsubi_u: return (jit_code_bosubi_u);
- default: abort(); /* invalid jump code */
- }
-}
-
-/*
- * change common pattern:
- * <cond_jump L0> <jump L1> <label L0>
- * into
- * <reverse_cond_jump L1>
- */
-static jit_bool_t
-_reverse_jump(jit_state_t *_jit, jit_node_t *prev, jit_node_t *node)
-{
- jit_node_t *local_prev;
- jit_node_t *local_next;
- jit_node_t *local_jump;
-
- if (!(node->flag & jit_flag_node))
- return (0);
- /* =><cond_jump L0> <jump L1> <label L0> */
- local_next = node->next;
- if (local_next->code != jit_code_jmpi ||
- !(local_next->flag & jit_flag_node))
- return (0);
- /* <cond_jump L0> =><jump L1> <label L0> */
-
- local_jump = local_next->u.n;
- for (local_prev = local_next, local_next = local_next->next;
- local_next;
- local_prev = local_next, local_next = local_next->next) {
- switch (local_next->code) {
- case jit_code_label: case jit_code_epilog:
- if (node->u.n == local_next) {
- if (local_next->link == node)
- local_next->link = node->link;
- else {
- for (local_prev = local_next->link;
- local_prev->link != node;
- local_prev = local_prev->link)
- assert(local_prev != NULL);
- local_prev->link = node->link;
- }
- del_node(node, node->next);
- node->code = reverse_jump_code(node->code);
- node->u.n = local_jump;
- node->link = local_jump->link;
- local_jump->link = node;
- return (1);
- }
- break;
- case jit_code_note:
- break;
- default:
- return (0);
- }
- }
- return (0);
-}
-
-static void
-_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;
-
- if (jump) {
- prev = node->u.n;
- if (prev->code == jit_code_epilog)
- return;
- assert(prev->code == jit_code_label);
- if ((prev->flag & jit_flag_head) || node->link || prev->link != node)
- /* multiple sources */
- return;
- /* if there are sequential labels it will return below */
- }
- else
- prev = node;
- word = node->w.w;
- regno = jit_regno(node->v.w);
- for (iter = prev->next; iter; prev = iter, iter = iter->next) {
- switch (iter->code) {
- case jit_code_label: case jit_code_prolog:
- case jit_code_epilog:
- return;
- case jit_code_movi:
- if (regno == jit_regno(iter->u.w)) {
- if (iter->flag || iter->v.w != word)
- return;
- del_node(prev, iter);
- iter = prev;
- }
- break;
- default:
- spec = jit_classify(iter->code);
- if (spec & jit_cc_a0_jmp)
- return;
- if ((spec & (jit_cc_a0_reg|jit_cc_a0_chg)) ==
- (jit_cc_a0_reg|jit_cc_a0_chg)) {
- if (spec & jit_cc_a0_rlh) {
- if (regno == jit_regno(iter->u.q.l) ||
- regno == jit_regno(iter->u.q.h))
- return;
- }
- else {
- if (regno == jit_regno(iter->u.w))
- return;
- }
- }
- if ((spec & (jit_cc_a1_reg|jit_cc_a1_chg)) ==
- (jit_cc_a1_reg|jit_cc_a1_chg)) {
- if (regno == jit_regno(iter->v.w))
- return;
- }
- if ((spec & (jit_cc_a2_reg|jit_cc_a2_chg)) ==
- (jit_cc_a2_reg|jit_cc_a2_chg)) {
- if (regno == jit_regno(iter->w.w))
- return;
- }
- break;
- }
- }
-}
-
-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)
-{
- jit_int32_t regno;
- jit_int32_t right;
- jit_value_t *value;
-
- regno = jit_regno(node->u.w);
- right = jit_regno(node->v.w);
- value = _jitc->values + regno;
- if ((value->kind == jit_kind_register &&
- jit_regno(value->base.q.l) == right &&
- value->base.q.h == _jitc->gen[right]) ||
- (value->kind == kind && _jitc->values[right].kind == kind &&
- memcmp(&value->base.w, &_jitc->values[right].base.w, size) == 0)) {
- del_node(prev, node);
- return (1);
- }
- if (_jitc->values[right].kind == jit_kind_word)
- jit_memcpy(value, _jitc->values + right, sizeof(jit_value_t));
- else {
- value->kind = jit_kind_register;
- value->base.q.l = right;
- value->base.q.h = _jitc->gen[right];
- }
- ++_jitc->gen[regno];
-
- return (0);
-}
-
-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)
-{
- jit_value_t *value;
- jit_int32_t spec;
- jit_int32_t regno;
- jit_int32_t offset;
-
- regno = jit_regno(node->u.w);
- value = _jitc->values + regno;
- if (node->flag & jit_flag_node) {
- /* set to undefined if value will be patched */
- value->kind = 0;
- ++_jitc->gen[regno];
- return (0);
- }
- if (value->kind == kind) {
- if (memcmp(&node->v.w, &value->base.w, size) == 0) {
- del_node(prev, node);
- return (1);
- }
- spec = jit_class(_rvs[regno].spec);
- if (kind == jit_kind_word)
- spec &= jit_class_gpr;
- else
- spec &= (jit_class_xpr | jit_class_fpr);
- for (offset = 0; offset < _jitc->reglen; offset++) {
- if (_jitc->values[offset].kind == kind &&
- memcmp(&node->v.w, &_jitc->values[offset].base.w, size) == 0 &&
- (jit_class(_rvs[offset].spec) & spec) == spec) {
- if (kind == jit_kind_word)
- node->code = jit_code_movr;
- else if (kind == jit_kind_float32)
- node->code = jit_code_movr_f;
- else
- node->code = jit_code_movr_d;
- node->v.w = offset;
- jit_memcpy(value, _jitc->values + offset, sizeof(jit_value_t));
- ++_jitc->gen[regno];
- return (0);
- }
- }
- }
- value->kind = kind;
- jit_memcpy(&value->base.w, &node->v.w, size);
- ++_jitc->gen[regno];
-
- return (0);
-}
-
-/* simple/safe redundandy test not checking if another register
- * holds the same value
- */
-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;
-
- regno = jit_regno(node->u.w);
- right = jit_regno(node->v.w);
- value = _jitc->values + regno;
- if (regno != right &&
- value->kind == jit_kind_code && value->code == node->code &&
- value->base.q.l == right && value->base.q.h == _jitc->gen[right] &&
- node->w.w == value->disp.w) {
- del_node(prev, node);
- return (1);
- }
- value->kind = jit_kind_code;
- value->code = node->code;
- value->base.q.l = right;
- value->base.q.h = _jitc->gen[right];
- value->disp.w = node->w.w;
- ++_jitc->gen[regno];
-
- return (0);
-}
-
-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;
-
- regno = jit_regno(node->w.w);
- right = jit_regno(node->v.w);
- value = _jitc->values + regno;
-
- /* check for redundant store after load */
- if (regno != right &&
- value->kind == jit_kind_code && value->code == node->code &&
- value->base.q.l == right && value->base.q.h == _jitc->gen[right] &&
- node->u.w == value->disp.w) {
- del_node(prev, node);
- return (1);
- }
-
- /* assume anything can alias, and invalidate tracked values */
- for (offset = 0; offset < _jitc->reglen; offset++) {
- if (_jitc->values[offset].kind == jit_kind_code) {
- _jitc->values[offset].kind = 0;
- ++_jitc->gen[offset];
- }
- }
-
- /* no multiple information, so, if set to a constant,
- * prefer to keep that information */
- if (value->kind == 0) {
- value->kind = jit_kind_code;
- switch (node->code) {
- /* no information about signed/unsigned either */
- case jit_code_stxi_c: value->code = jit_code_ldxi_c; break;
- case jit_code_stxi_s: value->code = jit_code_ldxi_s; break;
- case jit_code_stxi_i: value->code = jit_code_ldxi_i; break;
- case jit_code_stxi_l: value->code = jit_code_ldxi_l; break;
- case jit_code_stxi_f: value->code = jit_code_ldxi_f; break;
- case jit_code_stxi_d: value->code = jit_code_ldxi_d; break;
- default: abort();
- }
- value->kind = jit_kind_code;
- value->base.q.l = right;
- value->base.q.h = _jitc->gen[right];
- value->disp.w = node->u.w;
- }
-
- return (0);
-}
-
-/* usually there should be only one store in the
- * 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)
-{
- jit_node_t *save;
- jit_node_t *temp;
-
- if ((temp = _jitc->spill[regno]) && (save = temp->next) != node) {
- temp->next = save->next;
- save->next = node->next;
- node->next = save;
- _jitc->spill[regno] = node;
- }
-}
-
-/* checks for simple cases where a register is set more than
- * once to the same value, and is a common pattern of calls
- * to jit_pushargi and jit_pushargr
- */
-static void
-_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;
-
- for (prev = NULL, node = _jitc->head; node; prev = node, node = next) {
- next = node->next;
- switch (node->code) {
- 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->values, 0, sizeof(jit_value_t) * _jitc->reglen);
- break;
- case jit_code_save:
- _jitc->spill[jit_regno(node->u.w)] = prev;
- break;
- case jit_code_load:
- regno = jit_regno(node->u.w);
- if (register_change_p(node->link->next, node, regno) !=
- jit_reg_change) {
- /* spill not required due to optimizing common
- * redundancy case of calling jit_get_reg/jit_unget_reg
- * and then setting the register to the value it is
- * already holding */
- patch_register(node->link->next, node,
- jit_regno_patch|regno, regno);
- del_node(_jitc->spill[regno], node->link);
- del_node(prev, node);
- node = prev;
- }
- _jitc->spill[regno] = NULL;
- break;
- case jit_code_movr:
- regno = jit_regno(node->u.w);
- if (simplify_movr(prev, node,
- jit_kind_word, sizeof(jit_word_t)))
- simplify_spill(node = prev, regno);
- break;
- case jit_code_movi:
- regno = jit_regno(node->u.w);
- if (simplify_movi(prev, node,
- jit_kind_word, sizeof(jit_word_t)))
- simplify_spill(node = prev, regno);
- break;
- case jit_code_movr_f:
- regno = jit_regno(node->u.w);
- if (simplify_movr(prev, node,
- jit_kind_float32, sizeof(jit_float32_t)))
- simplify_spill(node = prev, regno);
- break;
- case jit_code_movi_f:
- regno = jit_regno(node->u.w);
- if (simplify_movi(prev, node,
- jit_kind_float32, sizeof(jit_float32_t)))
- simplify_spill(node = prev, regno);
- break;
- case jit_code_movr_d:
- regno = jit_regno(node->u.w);
- if (simplify_movr(prev, node,
- jit_kind_float64, sizeof(jit_float64_t)))
- simplify_spill(node = prev, regno);
- break;
- case jit_code_movi_d:
- regno = jit_regno(node->u.w);
- if (simplify_movi(prev, node,
- jit_kind_float64, sizeof(jit_float64_t)))
- simplify_spill(node = prev, regno);
- break;
- case jit_code_ldxi_c: case jit_code_ldxi_uc:
- case jit_code_ldxi_s: case jit_code_ldxi_us:
- case jit_code_ldxi_i: case jit_code_ldxi_ui:
- case jit_code_ldxi_l:
- case jit_code_ldxi_f: case jit_code_ldxi_d:
- regno = jit_regno(node->u.w);
- if (simplify_ldxi(prev, node))
- simplify_spill(node = prev, regno);
- break;
- case jit_code_stxi_c: case jit_code_stxi_s:
- case jit_code_stxi_i: case jit_code_stxi_l:
- case jit_code_stxi_f: case jit_code_stxi_d:
- regno = jit_regno(node->u.w);
- if (simplify_stxi(prev, node))
- simplify_spill(node = prev, regno);
- break;
- default:
- info = jit_classify(node->code);
- if (info & jit_cc_a0_jmp)
- /* labels are not implicitly added when not taking
- * a conditional branch */
- goto reset;
- if (info & jit_cc_a0_chg) {
- if (info & jit_cc_a0_rlh) {
- regno = jit_regno(node->u.q.l);
- _jitc->values[regno].kind = 0;
- ++_jitc->gen[regno];
- regno = jit_regno(node->u.q.h);
- _jitc->values[regno].kind = 0;
- ++_jitc->gen[regno];
- }
- else {
- regno = jit_regno(node->u.w);
- _jitc->values[regno].kind = 0;
- ++_jitc->gen[regno];
- }
- }
- if (info & jit_cc_a1_chg) {
- regno = jit_regno(node->v.w);
- _jitc->values[regno].kind = 0;
- ++_jitc->gen[regno];
- }
- if (info & jit_cc_a2_chg) {
- regno = jit_regno(node->w.w);
- _jitc->values[regno].kind = 0;
- ++_jitc->gen[regno];
- }
- break;
- }
- }
-}
-
-static jit_int32_t
-_register_change_p(jit_state_t *_jit, jit_node_t *node, jit_node_t *link,
- jit_int32_t regno)
-{
- jit_int32_t value;
-
- for (; node != link; node = node->next) {
- switch (node->code) {
- case jit_code_label: case jit_code_prolog:
- /* lack of extra information so cannot say it is undefined */
- return (jit_reg_change);
- case jit_code_callr: case jit_code_calli:
- if (!(jit_class(_rvs[regno].spec) & jit_class_sav))
- return (jit_reg_undef);
- break;
- default:
- value = jit_classify(node->code);
- /* lack of extra information */
- if (value & jit_cc_a0_jmp)
- return (jit_reg_change);
- else if ((value & (jit_cc_a0_reg|jit_cc_a0_chg)) ==
- (jit_cc_a0_reg|jit_cc_a0_chg) &&
- (((value & jit_cc_a0_rlh) &&
- (node->u.q.l == regno || node->u.q.h == regno)) ||
- (!(value & jit_cc_a0_rlh) &&
- node->u.w == regno)))
- return (jit_reg_change);
- else if ((value & jit_cc_a1_reg) && node->v.w == regno &&
- (value & jit_cc_a1_chg))
- return (jit_reg_change);
- else if ((value & jit_cc_a2_reg) && node->w.w == regno &&
- (value & jit_cc_a2_chg))
- return (jit_reg_change);
- }
- }
-
- return (jit_reg_static);
-}
-
-/* most of this could be done at the same time as generating jit, but
- * 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)
-{
- if (!jit_regset_tstbit(&_jitc->reglive, regno)) {
- bmp_zero();
- jit_regset_setbit(&_jitc->regmask, regno);
- jit_update(node->next, &_jitc->reglive, &_jitc->regmask, 1);
- if (!jit_regset_tstbit(&_jitc->reglive, regno) &&
- register_change_p(node->next, node->link, regno) != jit_reg_change)
- return (0);
- }
-
- return (1);
-}
-
-static void
-_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;
-
- _jitc->function = NULL;
-
- jit_reglive_setup();
- for (prev = NULL, node = _jitc->head; node; node = next) {
- next = node->next;
-
- info = jit_classify(node->code);
- jit_regarg_set(node, info);
-
- switch (node->code) {
- case jit_code_save:
- regno = jit_regno(node->u.w);
- if (!spill_reglive_p(node, regno)) {
- /* register is not live, just remove spill/reload */
- jit_regarg_clr(node, info);
- node->link->v.w = jit_regload_delete;
- del_node(prev, node);
- continue;
- }
- else {
- /* try to find a free register of the same class */
- spec = jit_class(_rvs[regno].spec) & ~jit_class_arg;
- for (value = 0; value < _jitc->reglen; value++) {
- if (value != regno &&
- ((jit_class(_rvs[value].spec) & spec) &
- ~jit_class_arg) == spec &&
- !jit_regset_tstbit(&_jitc->regarg, value) &&
- !spill_reglive_p(node, value))
- break;
- }
- if (value < _jitc->reglen) {
- jit_regarg_clr(node, info);
- patch_register(node->next, node->link,
- jit_regno_patch|node->u.w,
- jit_regno_patch|value);
- /* mark as live just in case there are nested
- * register patches, so that next patch will
- * not want to use the same register */
- jit_regset_setbit(&_jitc->reglive, value);
- /* register is not live, just remove spill/reload */
- node->link->v.w = jit_regload_isdead;
- del_node(prev, node);
- continue;
- }
- else {
- /* failed to find a free register */
- if (spec & jit_class_gpr) {
- if (!_jitc->function->regoff[regno])
- _jitc->function->regoff[regno] =
- jit_allocai(sizeof(jit_word_t));
-#if __WORDSIZE == 32
- node->code = jit_code_stxi_i;
-#else
- node->code = jit_code_stxi_l;
-#endif
- }
- else {
- node->code = jit_code_stxi_d;
- if (!_jitc->function->regoff[regno])
- _jitc->function->regoff[regno] =
- jit_allocai(sizeof(jit_float64_t));
- }
- node->u.w = _jitc->function->regoff[regno];
- node->v.w = JIT_FP;
- node->w.w = regno;
- node->link = NULL;
- }
- }
- break;
- case jit_code_load:
- regno = jit_regno(node->u.w);
- if (node->v.w) {
- if (node->v.w == jit_regload_isdead)
- jit_regset_clrbit(&_jitc->reglive, regno);
- del_node(prev, node);
- continue;
- }
- spec = jit_class(_rvs[regno].spec);
- if (spec & jit_class_gpr) {
-#if __WORDSIZE == 32
- node->code = jit_code_ldxi_i;
-#else
- node->code = jit_code_ldxi_l;
-#endif
- }
- else
- node->code = jit_code_ldxi_d;
- node->v.w = regno;
- node->v.w = JIT_FP;
- node->w.w = _jitc->function->regoff[regno];
- node->link = NULL;
- break;
- case jit_code_prolog:
- _jitc->function = _jitc->functions.ptr + node->w.w;
- break;
- case jit_code_epilog:
- _jitc->function = NULL;
- break;
- default:
- break;
- }
-
- jit_regarg_clr(node, info);
- /* update register live state */
- jit_reglive(node);
- prev = node;
- }
-}
-
-static void
-_patch_register(jit_state_t *_jit, jit_node_t *node, jit_node_t *link,
- jit_int32_t regno, jit_int32_t patch)
-{
- jit_int32_t value;
-
- for (; node != link; node = node->next) {
- value = jit_classify(node->code);
- if (value & jit_cc_a0_reg) {
- if (value & jit_cc_a0_rlh) {
- if (node->u.q.l == regno)
- node->u.q.l = patch;
- if (node->u.q.h == regno)
- node->u.q.h = patch;
- }
- else {
- if (node->u.w == regno)
- node->u.w = patch;
- }
- }
- if ((value & jit_cc_a1_reg) && node->v.w == regno)
- node->v.w = patch;
- if ((value & jit_cc_a2_reg) && node->w.w == regno)
- node->w.w = patch;
- }
-}
-
-#if defined(__i386__) || defined(__x86_64__)
-# include "jit_x86.c"
-#elif defined(__mips__)
-# include "jit_mips.c"
-#elif defined(__arm__)
-# include "jit_arm.c"
-#elif defined(__ppc__) || defined(__powerpc__)
-# include "jit_ppc.c"
-#elif defined(__sparc__)
-# include "jit_sparc.c"
-#elif defined(__ia64__)
-# include "jit_ia64.c"
-#elif defined(__hppa__)
-# include "jit_hppa.c"
-#elif defined(__aarch64__)
-# include "jit_aarch64.c"
-#elif defined(__s390__) || defined(__s390x__)
-# include "jit_s390.c"
-#elif defined(__alpha__)
-# include "jit_alpha.c"
-#endif
diff --git a/libguile/lightning/lightning.am b/libguile/lightning/lightning.am
index 809dd3bdf..878c147cb 100644
--- a/libguile/lightning/lightning.am
+++ b/libguile/lightning/lightning.am
@@ -1,5 +1,5 @@
#
-# Copyright 2000, 2001, 2002, 2012-2018 Free Software Foundation, Inc.
+# Copyright 2000, 2001, 2002, 2012-2019 Free Software Foundation, Inc.
#
# This file is part of GNU lightning.
#
@@ -16,78 +16,63 @@
lightning = $(top_srcdir)/libguile/lightning
-lightning_c_files = \
- $(lightning)/lib/jit_memory.c \
- $(lightning)/lib/jit_note.c \
- $(lightning)/lib/jit_print.c \
- $(lightning)/lib/jit_size.c \
- $(lightning)/lib/lightning.c
+lightning_c_files = \
+ $(lightning)/jit/jit.c
lightning_extra_files = \
$(lightning)/AUTHORS \
$(lightning)/ChangeLog \
+ $(lightning)/ChangeLog.lightning \
$(lightning)/COPYING \
+ $(lightning)/COPYING.DOC \
$(lightning)/COPYING.LESSER \
$(lightning)/lightning.am \
+ $(lightning)/lightning.texi \
$(lightning)/NEWS \
- $(lightning)/README \
+ $(lightning)/README.md \
$(lightning)/THANKS \
- $(lightning)/TODO \
\
- $(lightning)/include/lightning.h \
- $(lightning)/include/lightning/jit_private.h \
- $(lightning)/include/lightning/jit_arm.h \
- $(lightning)/include/lightning/jit_mips.h \
- $(lightning)/include/lightning/jit_ppc.h \
- $(lightning)/include/lightning/jit_sparc.h \
- $(lightning)/include/lightning/jit_x86.h \
- $(lightning)/include/lightning/jit_ia64.h \
- $(lightning)/include/lightning/jit_hppa.h \
- $(lightning)/include/lightning/jit_aarch64.h \
- $(lightning)/include/lightning/jit_s390.h \
- $(lightning)/include/lightning/jit_alpha.h \
+ $(lightning)/jit.h \
\
- $(lightning)/lib/jit_names.c \
- $(lightning)/lib/jit_rewind.c \
- $(lightning)/lib/jit_aarch64.c \
- $(lightning)/lib/jit_aarch64-cpu.c \
- $(lightning)/lib/jit_aarch64-fpu.c \
- $(lightning)/lib/jit_aarch64-sz.c \
- $(lightning)/lib/jit_alpha.c \
- $(lightning)/lib/jit_alpha-cpu.c \
- $(lightning)/lib/jit_alpha-fpu.c \
- $(lightning)/lib/jit_alpha-sz.c \
- $(lightning)/lib/jit_arm.c \
- $(lightning)/lib/jit_arm-cpu.c \
- $(lightning)/lib/jit_arm-swf.c \
- $(lightning)/lib/jit_arm-vfp.c \
- $(lightning)/lib/jit_arm-sz.c \
- $(lightning)/lib/jit_hppa.c \
- $(lightning)/lib/jit_hppa-cpu.c \
- $(lightning)/lib/jit_hppa-fpu.c \
- $(lightning)/lib/jit_hppa-sz.c \
- $(lightning)/lib/jit_ia64.c \
- $(lightning)/lib/jit_ia64-cpu.c \
- $(lightning)/lib/jit_ia64-fpu.c \
- $(lightning)/lib/jit_ia64-sz.c \
- $(lightning)/lib/jit_mips.c \
- $(lightning)/lib/jit_mips-cpu.c \
- $(lightning)/lib/jit_mips-fpu.c \
- $(lightning)/lib/jit_mips-sz.c \
- $(lightning)/lib/jit_ppc.c \
- $(lightning)/lib/jit_ppc-cpu.c \
- $(lightning)/lib/jit_ppc-fpu.c \
- $(lightning)/lib/jit_ppc-sz.c \
- $(lightning)/lib/jit_s390.c \
- $(lightning)/lib/jit_s390-cpu.c \
- $(lightning)/lib/jit_s390-fpu.c \
- $(lightning)/lib/jit_s390-sz.c \
- $(lightning)/lib/jit_sparc.c \
- $(lightning)/lib/jit_sparc-cpu.c \
- $(lightning)/lib/jit_sparc-fpu.c \
- $(lightning)/lib/jit_sparc-sz.c \
- $(lightning)/lib/jit_x86.c \
- $(lightning)/lib/jit_x86-cpu.c \
- $(lightning)/lib/jit_x86-sse.c \
- $(lightning)/lib/jit_x86-x87.c \
- $(lightning)/lib/jit_x86-sz.c
+ $(lightning)/jit/arm.h \
+ $(lightning)/jit/mips.h \
+ $(lightning)/jit/ppc.h \
+ $(lightning)/jit/sparc.h \
+ $(lightning)/jit/x86.h \
+ $(lightning)/jit/ia64.h \
+ $(lightning)/jit/hppa.h \
+ $(lightning)/jit/aarch64.h \
+ $(lightning)/jit/s390.h \
+ $(lightning)/jit/alpha.h \
+ \
+ $(lightning)/jit/aarch64.c \
+ $(lightning)/jit/aarch64-cpu.c \
+ $(lightning)/jit/aarch64-fpu.c \
+ $(lightning)/jit/alpha.c \
+ $(lightning)/jit/alpha-cpu.c \
+ $(lightning)/jit/alpha-fpu.c \
+ $(lightning)/jit/arm.c \
+ $(lightning)/jit/arm-cpu.c \
+ $(lightning)/jit/arm-swf.c \
+ $(lightning)/jit/arm-vfp.c \
+ $(lightning)/jit/hppa.c \
+ $(lightning)/jit/hppa-cpu.c \
+ $(lightning)/jit/hppa-fpu.c \
+ $(lightning)/jit/ia64.c \
+ $(lightning)/jit/ia64-cpu.c \
+ $(lightning)/jit/ia64-fpu.c \
+ $(lightning)/jit/mips.c \
+ $(lightning)/jit/mips-cpu.c \
+ $(lightning)/jit/mips-fpu.c \
+ $(lightning)/jit/ppc.c \
+ $(lightning)/jit/ppc-cpu.c \
+ $(lightning)/jit/ppc-fpu.c \
+ $(lightning)/jit/s390.c \
+ $(lightning)/jit/s390-cpu.c \
+ $(lightning)/jit/s390-fpu.c \
+ $(lightning)/jit/sparc.c \
+ $(lightning)/jit/sparc-cpu.c \
+ $(lightning)/jit/sparc-fpu.c \
+ $(lightning)/jit/x86.c \
+ $(lightning)/jit/x86-cpu.c \
+ $(lightning)/jit/x86-sse.c
diff --git a/libguile/lightning/lightning.texi b/libguile/lightning/lightning.texi
new file mode 100644
index 000000000..88f397a37
--- /dev/null
+++ b/libguile/lightning/lightning.texi
@@ -0,0 +1,1760 @@
+\input texinfo.tex @c -*- texinfo -*-
+@c %**start of header (This is for running Texinfo on a region.)
+
+@setfilename lightning.info
+
+@set TITLE Using @sc{gnu} @i{lightning}
+@set TOPIC installing and using
+
+@settitle @value{TITLE}
+
+@c ---------------------------------------------------------------------
+@c Common macros
+@c ---------------------------------------------------------------------
+
+@macro bulletize{a}
+@item
+\a\
+@end macro
+
+@macro rem{a}
+@r{@i{\a\}}
+@end macro
+
+@macro gnu{}
+@sc{gnu}
+@end macro
+
+@macro lightning{}
+@gnu{} @i{lightning}
+@end macro
+
+@c ---------------------------------------------------------------------
+@c Macros for Texinfo 3.1/4.0 compatibility
+@c ---------------------------------------------------------------------
+
+@c @hlink (macro), @url and @email are used instead of @uref for Texinfo 3.1
+@c compatibility
+@macro hlink{url, link}
+\link\ (\url\)
+@end macro
+
+@c ifhtml can only be true in Texinfo 4.0, which has uref
+@ifhtml
+@unmacro hlink
+
+@macro hlink{url, link}
+@uref{\url\, \link\}
+@end macro
+
+@macro email{mail}
+@uref{mailto:\mail\, , \mail\}
+@end macro
+
+@macro url{url}
+@uref{\url\}
+@end macro
+@end ifhtml
+
+@c ---------------------------------------------------------------------
+@c References to the other half of the manual
+@c ---------------------------------------------------------------------
+
+@macro usingref{node, name}
+@ref{\node\, , \name\}
+@end macro
+
+@c ---------------------------------------------------------------------
+@c End of macro section
+@c ---------------------------------------------------------------------
+
+@set UPDATED 18 June 2018
+@set UPDATED-MONTH June 2018
+@set EDITION 2.1.2
+@set VERSION 2.1.2
+
+@ifnottex
+@dircategory Software development
+@direntry
+* lightning: (lightning). Library for dynamic code generation.
+@end direntry
+@end ifnottex
+
+@ifnottex
+@node Top
+@top @lightning{}
+
+@iftex
+@macro comma
+@verbatim{|,|}
+@end macro
+@end iftex
+
+@ifnottex
+@macro comma
+@verb{|,|}
+@end macro
+@end ifnottex
+
+This document describes @value{TOPIC} the @lightning{} library for
+dynamic code generation.
+
+@menu
+* Overview:: What GNU lightning is
+* Installation:: Configuring and installing GNU lightning
+* The instruction set:: The RISC instruction set used in GNU lightning
+* GNU lightning examples:: GNU lightning's examples
+* Reentrancy:: Re-entrant usage of GNU lightning
+* Customizations:: Advanced code generation customizations
+* Acknowledgements:: Acknowledgements for GNU lightning
+@end menu
+@end ifnottex
+
+@node Overview
+@chapter Introduction to @lightning{}
+
+@iftex
+This document describes @value{TOPIC} the @lightning{} library for
+dynamic code generation.
+@end iftex
+
+Dynamic code generation is the generation of machine code
+at runtime. It is typically used to strip a layer of interpretation
+by allowing compilation to occur at runtime. One of the most
+well-known applications of dynamic code generation is perhaps that
+of interpreters that compile source code to an intermediate bytecode
+form, which is then recompiled to machine code at run-time: this
+approach effectively combines the portability of bytecode
+representations with the speed of machine code. Another common
+application of dynamic code generation is in the field of hardware
+simulators and binary emulators, which can use the same techniques
+to translate simulated instructions to the instructions of the
+underlying machine.
+
+Yet other applications come to mind: for example, windowing
+@dfn{bitblt} operations, matrix manipulations, and network packet
+filters. Albeit very powerful and relatively well known within the
+compiler community, dynamic code generation techniques are rarely
+exploited to their full potential and, with the exception of the
+two applications described above, have remained curiosities because
+of their portability and functionality barriers: binary instructions
+are generated, so programs using dynamic code generation must be
+retargeted for each machine; in addition, coding a run-time code
+generator is a tedious and error-prone task more than a difficult one.
+
+@lightning{} provides a portable, fast and easily retargetable dynamic
+code generation system.
+
+To be portable, @lightning{} abstracts over current architectures'
+quirks and unorthogonalities. The interface that it exposes to is that
+of a standardized RISC architecture loosely based on the SPARC and MIPS
+chips. There are a few general-purpose registers (six, not including
+those used to receive and pass parameters between subroutines), and
+arithmetic operations involve three operands---either three registers
+or two registers and an arbitrarily sized immediate value.
+
+On one hand, this architecture is general enough that it is possible to
+generate pretty efficient code even on CISC architectures such as the
+Intel x86 or the Motorola 68k families. On the other hand, it matches
+real architectures closely enough that, most of the time, the
+compiler's constant folding pass ends up generating code which
+assembles machine instructions without further tests.
+
+@node Installation
+@chapter Configuring and installing @lightning{}
+
+The first thing to do to use @lightning{} is to configure the
+program, picking the set of macros to be used on the host
+architecture; this configuration is automatically performed by
+the @file{configure} shell script; to run it, merely type:
+@example
+ ./configure
+@end example
+
+@lightning{} supports the @code{--enable-disassembler} option, that
+enables linking to GNU binutils and optionally print human readable
+disassembly of the jit code. This option can be disabled by the
+@code{--disable-disassembler} option.
+
+Another option that @file{configure} accepts is
+@code{--enable-assertions}, which enables several consistency checks in
+the run-time assemblers. These are not usually needed, so you can
+decide to simply forget about it; also remember that these consistency
+checks tend to slow down your code generator.
+
+After you've configured @lightning{}, run @file{make} as usual.
+
+@lightning{} has an extensive set of tests to validate it is working
+correctly in the build host. To test it run:
+@example
+ make check
+@end example
+
+The next important step is:
+@example
+ make install
+@end example
+
+This ends the process of installing @lightning{}.
+
+@node The instruction set
+@chapter @lightning{}'s instruction set
+
+@lightning{}'s instruction set was designed by deriving instructions
+that closely match those of most existing RISC architectures, or
+that can be easily syntesized if absent. Each instruction is composed
+of:
+@itemize @bullet
+@item
+an operation, like @code{sub} or @code{mul}
+
+@item
+most times, a register/immediate flag (@code{r} or @code{i})
+
+@item
+an unsigned modifier (@code{u}), a type identifier or two, when applicable.
+@end itemize
+
+Examples of legal mnemonics are @code{addr} (integer add, with three
+register operands) and @code{muli} (integer multiply, with two
+register operands and an immediate operand). Each instruction takes
+two or three operands; in most cases, one of them can be an immediate
+value instead of a register.
+
+Most @lightning{} integer operations are signed wordsize operations,
+with the exception of operations that convert types, or load or store
+values to/from memory. When applicable, the types and C types are as
+follow:
+
+@example
+ _c @r{signed char}
+ _uc @r{unsigned char}
+ _s @r{short}
+ _us @r{unsigned short}
+ _i @r{int}
+ _ui @r{unsigned int}
+ _l @r{long}
+ _f @r{float}
+ _d @r{double}
+@end example
+
+Most integer operations do not need a type modifier, and when loading or
+storing values to memory there is an alias to the proper operation
+using wordsize operands, that is, if ommited, the type is @r{int} on
+32-bit architectures and @r{long} on 64-bit architectures. Note
+that lightning also expects @code{sizeof(void*)} to match the wordsize.
+
+When an unsigned operation result differs from the equivalent signed
+operation, there is a the @code{_u} modifier.
+
+There are at least seven integer registers, of which six are
+general-purpose, while the last is used to contain the frame pointer
+(@code{FP}). The frame pointer can be used to allocate and access local
+variables on the stack, using the @code{allocai} or @code{allocar}
+instruction.
+
+Of the general-purpose registers, at least three are guaranteed to be
+preserved across function calls (@code{V0}, @code{V1} and
+@code{V2}) and at least three are not (@code{R0}, @code{R1} and
+@code{R2}). Six registers are not very much, but this
+restriction was forced by the need to target CISC architectures
+which, like the x86, are poor of registers; anyway, backends can
+specify the actual number of available registers with the calls
+@code{JIT_R_NUM} (for caller-save registers) and @code{JIT_V_NUM}
+(for callee-save registers).
+
+There are at least six floating-point registers, named @code{F0} to
+@code{F5}. These are usually caller-save and are separate from the integer
+registers on the supported architectures; on Intel architectures,
+in 32 bit mode if SSE2 is not available or use of X87 is forced,
+the register stack is mapped to a flat register file. As for the
+integer registers, the macro @code{JIT_F_NUM} yields the number of
+floating-point registers.
+
+The complete instruction set follows; as you can see, most non-memory
+operations only take integers (either signed or unsigned) as operands;
+this was done in order to reduce the instruction set, and because most
+architectures only provide word and long word operations on registers.
+There are instructions that allow operands to be extended to fit a larger
+data type, both in a signed and in an unsigned way.
+
+@table @b
+@item Binary ALU operations
+These accept three operands; the last one can be an immediate.
+@code{addx} operations must directly follow @code{addc}, and
+@code{subx} must follow @code{subc}; otherwise, results are undefined.
+Most, if not all, architectures do not support @r{float} or @r{double}
+immediate operands; lightning emulates those operations by moving the
+immediate to a temporary register and emiting the call with only
+register operands.
+@example
+addr _f _d O1 = O2 + O3
+addi _f _d O1 = O2 + O3
+addxr O1 = O2 + (O3 + carry)
+addxi O1 = O2 + (O3 + carry)
+addcr O1 = O2 + O3, set carry
+addci O1 = O2 + O3, set carry
+subr _f _d O1 = O2 - O3
+subi _f _d O1 = O2 - O3
+subxr O1 = O2 - (O3 + carry)
+subxi O1 = O2 - (O3 + carry)
+subcr O1 = O2 - O3, set carry
+subci O1 = O2 - O3, set carry
+rsbr _f _d O1 = O3 - O1
+rsbi _f _d O1 = O3 - O1
+mulr _f _d O1 = O2 * O3
+muli _f _d O1 = O2 * O3
+divr _u _f _d O1 = O2 / O3
+divi _u _f _d O1 = O2 / O3
+remr _u O1 = O2 % O3
+remi _u O1 = O2 % O3
+andr O1 = O2 & O3
+andi O1 = O2 & O3
+orr O1 = O2 | O3
+ori O1 = O2 | O3
+xorr O1 = O2 ^ O3
+xori O1 = O2 ^ O3
+lshr O1 = O2 << O3
+lshi O1 = O2 << O3
+rshr _u O1 = O2 >> O3@footnote{The sign bit is propagated unless using the @code{_u} modifier.}
+rshi _u O1 = O2 >> O3@footnote{The sign bit is propagated unless using the @code{_u} modifier.}
+@end example
+
+@item Four operand binary ALU operations
+These accept two result registers, and two operands; the last one can
+be an immediate. The first two arguments cannot be the same register.
+
+@code{qmul} stores the low word of the result in @code{O1} and the
+high word in @code{O2}. For unsigned multiplication, @code{O2} zero
+means there was no overflow. For signed multiplication, no overflow
+check is based on sign, and can be detected if @code{O2} is zero or
+minus one.
+
+@code{qdiv} stores the quotient in @code{O1} and the remainder in
+@code{O2}. It can be used as quick way to check if a division is
+exact, in which case the remainder is zero.
+
+@example
+qmulr _u O1 O2 = O3 * O4
+qmuli _u O1 O2 = O3 * O4
+qdivr _u O1 O2 = O3 / O4
+qdivi _u O1 O2 = O3 / O4
+@end example
+
+@item Unary ALU operations
+These accept two operands, both of which must be registers.
+@example
+negr _f _d O1 = -O2
+comr O1 = ~O2
+@end example
+
+These unary ALU operations are only defined for float operands.
+@example
+absr _f _d O1 = fabs(O2)
+sqrtr O1 = sqrt(O2)
+@end example
+
+Besides requiring the @code{r} modifier, there are no unary operations
+with an immediate operand.
+
+@item Compare instructions
+These accept three operands; again, the last can be an immediate.
+The last two operands are compared, and the first operand, that must be
+an integer register, is set to either 0 or 1, according to whether the
+given condition was met or not.
+
+The conditions given below are for the standard behavior of C,
+where the ``unordered'' comparison result is mapped to false.
+
+@example
+ltr _u _f _d O1 = (O2 < O3)
+lti _u _f _d O1 = (O2 < O3)
+ler _u _f _d O1 = (O2 <= O3)
+lei _u _f _d O1 = (O2 <= O3)
+gtr _u _f _d O1 = (O2 > O3)
+gti _u _f _d O1 = (O2 > O3)
+ger _u _f _d O1 = (O2 >= O3)
+gei _u _f _d O1 = (O2 >= O3)
+eqr _f _d O1 = (O2 == O3)
+eqi _f _d O1 = (O2 == O3)
+ner _f _d O1 = (O2 != O3)
+nei _f _d O1 = (O2 != O3)
+unltr _f _d O1 = !(O2 >= O3)
+unler _f _d O1 = !(O2 > O3)
+ungtr _f _d O1 = !(O2 <= O3)
+unger _f _d O1 = !(O2 < O3)
+uneqr _f _d O1 = !(O2 < O3) && !(O2 > O3)
+ltgtr _f _d O1 = !(O2 >= O3) || !(O2 <= O3)
+ordr _f _d O1 = (O2 == O2) && (O3 == O3)
+unordr _f _d O1 = (O2 != O2) || (O3 != O3)
+@end example
+
+@item Transfer operations
+These accept two operands; for @code{ext} both of them must be
+registers, while @code{mov} accepts an immediate value as the second
+operand.
+
+Unlike @code{movr} and @code{movi}, the other instructions are used
+to truncate a wordsize operand to a smaller integer data type or to
+convert float data types. You can also use @code{extr} to convert an
+integer to a floating point value: the usual options are @code{extr_f}
+and @code{extr_d}.
+
+@example
+movr _f _d O1 = O2
+movi _f _d O1 = O2
+extr _c _uc _s _us _i _ui _f _d O1 = O2
+truncr _f _d O1 = trunc(O2)
+@end example
+
+In 64-bit architectures it may be required to use @code{truncr_f_i},
+@code{truncr_f_l}, @code{truncr_d_i} and @code{truncr_d_l} to match
+the equivalent C code. Only the @code{_i} modifier is available in
+32-bit architectures.
+
+@example
+truncr_f_i = <int> O1 = <float> O2
+truncr_f_l = <long>O1 = <float> O2
+truncr_d_i = <int> O1 = <double>O2
+truncr_d_l = <long>O1 = <double>O2
+@end example
+
+The float conversion operations are @emph{destination first,
+source second}, but the order of the types is reversed. This happens
+for historical reasons.
+
+@example
+extr_f_d = <double>O1 = <float> O2
+extr_d_f = <float> O1 = <double>O2
+@end example
+
+@item Network extensions
+These accept two operands, both of which must be registers; these
+two instructions actually perform the same task, yet they are
+assigned to two mnemonics for the sake of convenience and
+completeness. As usual, the first operand is the destination and
+the second is the source.
+The @code{_ul} variant is only available in 64-bit architectures.
+@example
+htonr _us _ui _ul @r{Host-to-network (big endian) order}
+ntohr _us _ui _ul @r{Network-to-host order }
+@end example
+
+@item Load operations
+@code{ld} accepts two operands while @code{ldx} accepts three;
+in both cases, the last can be either a register or an immediate
+value. Values are extended (with or without sign, according to
+the data type specification) to fit a whole register.
+The @code{_ui} and @code{_l} types are only available in 64-bit
+architectures. For convenience, there is a version without a
+type modifier for integer or pointer operands that uses the
+appropriate wordsize call.
+@example
+ldr _c _uc _s _us _i _ui _l _f _d O1 = *O2
+ldi _c _uc _s _us _i _ui _l _f _d O1 = *O2
+ldxr _c _uc _s _us _i _ui _l _f _d O1 = *(O2+O3)
+ldxi _c _uc _s _us _i _ui _l _f _d O1 = *(O2+O3)
+@end example
+
+@item Store operations
+@code{st} accepts two operands while @code{stx} accepts three; in
+both cases, the first can be either a register or an immediate
+value. Values are sign-extended to fit a whole register.
+@example
+str _c _uc _s _us _i _ui _l _f _d *O1 = O2
+sti _c _uc _s _us _i _ui _l _f _d *O1 = O2
+stxr _c _uc _s _us _i _ui _l _f _d *(O1+O2) = O3
+stxi _c _uc _s _us _i _ui _l _f _d *(O1+O2) = O3
+@end example
+As for the load operations, the @code{_ui} and @code{_l} types are
+only available in 64-bit architectures, and for convenience, there
+is a version without a type modifier for integer or pointer operands
+that uses the appropriate wordsize call.
+
+@item Argument management
+These are:
+@example
+prepare (not specified)
+va_start (not specified)
+pushargr _f _d
+pushargi _f _d
+va_push (not specified)
+arg _c _uc _s _us _i _ui _l _f _d
+getarg _c _uc _s _us _i _ui _l _f _d
+va_arg _d
+putargr _f _d
+putargi _f _d
+ret (not specified)
+retr _f _d
+reti _f _d
+va_end (not specified)
+retval _c _uc _s _us _i _ui _l _f _d
+epilog (not specified)
+@end example
+As with other operations that use a type modifier, the @code{_ui} and
+@code{_l} types are only available in 64-bit architectures, but there
+are operations without a type modifier that alias to the appropriate
+integer operation with wordsize operands.
+
+@code{prepare}, @code{pusharg}, and @code{retval} are used by the caller,
+while @code{arg}, @code{getarg} and @code{ret} are used by the callee.
+A code snippet that wants to call another procedure and has to pass
+arguments must, in order: use the @code{prepare} instruction and use
+the @code{pushargr} or @code{pushargi} to push the arguments @strong{in
+left to right order}; and use @code{finish} or @code{call} (explained below)
+to perform the actual call.
+
+@code{va_start} returns a @code{C} compatible @code{va_list}. To fetch
+arguments, use @code{va_arg} for integers and @code{va_arg_d} for doubles.
+@code{va_push} is required when passing a @code{va_list} to another function,
+because not all architectures expect it as a single pointer. Known case
+is DEC Alpha, that requires it as a structure passed by value.
+
+@code{arg}, @code{getarg} and @code{putarg} are used by the callee.
+@code{arg} is different from other instruction in that it does not
+actually generate any code: instead, it is a function which returns
+a value to be passed to @code{getarg} or @code{putarg}. @footnote{``Return
+a value'' means that @lightning{} code that compile these
+instructions return a value when expanded.} You should call
+@code{arg} as soon as possible, before any function call or, more
+easily, right after the @code{prolog} instructions
+(which is treated later).
+
+@code{getarg} accepts a register argument and a value returned by
+@code{arg}, and will move that argument to the register, extending
+it (with or without sign, according to the data type specification)
+to fit a whole register. These instructions are more intimately
+related to the usage of the @lightning{} instruction set in code
+that generates other code, so they will be treated more
+specifically in @ref{GNU lightning examples, , Generating code at
+run-time}.
+
+@code{putarg} is a mix of @code{getarg} and @code{pusharg} in that
+it accepts as first argument a register or immediate, and as
+second argument a value returned by @code{arg}. It allows changing,
+or restoring an argument to the current function, and is a
+construct required to implement tail call optimization. Note that
+arguments in registers are very cheap, but will be overwritten
+at any moment, including on some operations, for example division,
+that on several ports is implemented as a function call.
+
+Finally, the @code{retval} instruction fetches the return value of a
+called function in a register. The @code{retval} instruction takes a
+register argument and copies the return value of the previously called
+function in that register. A function with a return value should use
+@code{retr} or @code{reti} to put the return value in the return register
+before returning. @xref{Fibonacci, the Fibonacci numbers}, for an example.
+
+@code{epilog} is an optional call, that marks the end of a function
+body. It is automatically generated by @lightning{} if starting a new
+function (what should be done after a @code{ret} call) or finishing
+generating jit.
+It is very important to note that the fact that @code{epilog} being
+optional may cause a common mistake. Consider this:
+@example
+fun1:
+ prolog
+ ...
+ ret
+fun2:
+ prolog
+@end example
+Because @code{epilog} is added when finding a new @code{prolog},
+this will cause the @code{fun2} label to actually be before the
+return from @code{fun1}. Because @lightning{} will actually
+understand it as:
+@example
+fun1:
+ prolog
+ ...
+ ret
+fun2:
+ epilog
+ prolog
+@end example
+
+You should observe a few rules when using these macros. First of
+all, if calling a varargs function, you should use the @code{ellipsis}
+call to mark the position of the ellipsis in the C prototype.
+
+You should not nest calls to @code{prepare} inside a
+@code{prepare/finish} block. Doing this will result in undefined
+behavior. Note that for functions with zero arguments you can use
+just @code{call}.
+
+@item Branch instructions
+Like @code{arg}, these also return a value which, in this case,
+is to be used to compile forward branches as explained in
+@ref{Fibonacci, , Fibonacci numbers}. They accept two operands to be
+compared; of these, the last can be either a register or an immediate.
+They are:
+@example
+bltr _u _f _d @r{if }(O2 < O3)@r{ goto }O1
+blti _u _f _d @r{if }(O2 < O3)@r{ goto }O1
+bler _u _f _d @r{if }(O2 <= O3)@r{ goto }O1
+blei _u _f _d @r{if }(O2 <= O3)@r{ goto }O1
+bgtr _u _f _d @r{if }(O2 > O3)@r{ goto }O1
+bgti _u _f _d @r{if }(O2 > O3)@r{ goto }O1
+bger _u _f _d @r{if }(O2 >= O3)@r{ goto }O1
+bgei _u _f _d @r{if }(O2 >= O3)@r{ goto }O1
+beqr _f _d @r{if }(O2 == O3)@r{ goto }O1
+beqi _f _d @r{if }(O2 == O3)@r{ goto }O1
+bner _f _d @r{if }(O2 != O3)@r{ goto }O1
+bnei _f _d @r{if }(O2 != O3)@r{ goto }O1
+
+bunltr _f _d @r{if }!(O2 >= O3)@r{ goto }O1
+bunler _f _d @r{if }!(O2 > O3)@r{ goto }O1
+bungtr _f _d @r{if }!(O2 <= O3)@r{ goto }O1
+bunger _f _d @r{if }!(O2 < O3)@r{ goto }O1
+buneqr _f _d @r{if }!(O2 < O3) && !(O2 > O3)@r{ goto }O1
+bltgtr _f _d @r{if }!(O2 >= O3) || !(O2 <= O3)@r{ goto }O1
+bordr _f _d @r{if } (O2 == O2) && (O3 == O3)@r{ goto }O1
+bunordr _f _d @r{if }!(O2 != O2) || (O3 != O3)@r{ goto }O1
+
+bmsr @r{if }O2 & O3@r{ goto }O1
+bmsi @r{if }O2 & O3@r{ goto }O1
+bmcr @r{if }!(O2 & O3)@r{ goto }O1
+bmci @r{if }!(O2 & O3)@r{ goto }O1@footnote{These mnemonics mean, respectively, @dfn{branch if mask set} and @dfn{branch if mask cleared}.}
+boaddr _u O2 += O3@r{, goto }O1@r{ if overflow}
+boaddi _u O2 += O3@r{, goto }O1@r{ if overflow}
+bxaddr _u O2 += O3@r{, goto }O1@r{ if no overflow}
+bxaddi _u O2 += O3@r{, goto }O1@r{ if no overflow}
+bosubr _u O2 -= O3@r{, goto }O1@r{ if overflow}
+bosubi _u O2 -= O3@r{, goto }O1@r{ if overflow}
+bxsubr _u O2 -= O3@r{, goto }O1@r{ if no overflow}
+bxsubi _u O2 -= O3@r{, goto }O1@r{ if no overflow}
+@end example
+
+@item Jump and return operations
+These accept one argument except @code{ret} and @code{jmpi} which
+have none; the difference between @code{finishi} and @code{calli}
+is that the latter does not clean the stack from pushed parameters
+(if any) and the former must @strong{always} follow a @code{prepare}
+instruction.
+@example
+callr (not specified) @r{function call to register O1}
+calli (not specified) @r{function call to immediate O1}
+finishr (not specified) @r{function call to register O1}
+finishi (not specified) @r{function call to immediate O1}
+jmpr (not specified) @r{unconditional jump to register}
+jmpi (not specified) @r{unconditional jump}
+ret (not specified) @r{return from subroutine}
+retr _c _uc _s _us _i _ui _l _f _d
+reti _c _uc _s _us _i _ui _l _f _d
+retval _c _uc _s _us _i _ui _l _f _d @r{move return value}
+ @r{to register}
+@end example
+
+Like branch instruction, @code{jmpi} also returns a value which is to
+be used to compile forward branches. @xref{Fibonacci, , Fibonacci
+numbers}.
+
+@item Labels
+There are 3 @lightning{} instructions to create labels:
+@example
+label (not specified) @r{simple label}
+forward (not specified) @r{forward label}
+indirect (not specified) @r{special simple label}
+@end example
+
+@code{label} is normally used as @code{patch_at} argument for backward
+jumps.
+
+@example
+ jit_node_t *jump, *label;
+label = jit_label();
+ ...
+ jump = jit_beqr(JIT_R0, JIT_R1);
+ jit_patch_at(jump, label);
+@end example
+
+@code{forward} is used to patch code generation before the actual
+position of the label is known.
+
+@example
+ jit_node_t *jump, *label;
+label = jit_forward();
+ jump = jit_beqr(JIT_R0, JIT_R1);
+ jit_patch_at(jump, label);
+ ...
+ jit_link(label);
+@end example
+
+@code{indirect} is useful when creating jump tables, and tells
+@lightning{} to not optimize out a label that is not the target of
+any jump, because an indirect jump may land where it is defined.
+
+@example
+ jit_node_t *jump, *label;
+ ...
+ jmpr(JIT_R0); @rem{/* may jump to label */}
+ ...
+label = jit_indirect();
+@end example
+
+@code{indirect} is an special case of @code{note} and @code{name}
+because it is a valid argument to @code{address}.
+
+Note that the usual idiom to write the previous example is
+@example
+ jit_node_t *addr, *jump;
+addr = jit_movi(JIT_R0, 0); @rem{/* immediate is ignored */}
+ ...
+ jmpr(JIT_R0);
+ ...
+ jit_patch(addr); @rem{/* implicit label added */}
+@end example
+
+that automatically binds the implicit label added by @code{patch} with
+the @code{movi}, but on some special conditions it is required to create
+an "unbound" label.
+
+@item Function prolog
+
+These macros are used to set up a function prolog. The @code{allocai}
+call accept a single integer argument and returns an offset value
+for stack storage access. The @code{allocar} accepts two registers
+arguments, the first is set to the offset for stack access, and the
+second is the size in bytes argument.
+
+@example
+prolog (not specified) @r{function prolog}
+allocai (not specified) @r{reserve space on the stack}
+allocar (not specified) @r{allocate space on the stack}
+@end example
+
+@code{allocai} receives the number of bytes to allocate and returns
+the offset from the frame pointer register @code{FP} to the base of
+the area.
+
+@code{allocar} receives two register arguments. The first is where
+to store the offset from the frame pointer register @code{FP} to the
+base of the area. The second argument is the size in bytes. Note
+that @code{allocar} is dynamic allocation, and special attention
+should be taken when using it. If called in a loop, every iteration
+will allocate stack space. Stack space is aligned from 8 to 64 bytes
+depending on backend requirements, even if allocating only one byte.
+It is advisable to not use it with @code{frame} and @code{tramp}; it
+should work with @code{frame} with special care to call only once,
+but is not supported if used in @code{tramp}, even if called only
+once.
+
+As a small appetizer, here is a small function that adds 1 to the input
+parameter (an @code{int}). I'm using an assembly-like syntax here which
+is a bit different from the one used when writing real subroutines with
+@lightning{}; the real syntax will be introduced in @xref{GNU lightning
+examples, , Generating code at run-time}.
+
+@example
+incr:
+ prolog
+in = arg @rem{! We have an integer argument}
+ getarg R0, in @rem{! Move it to R0}
+ addi R0, R0, 1 @rem{! Add 1}
+ retr R0 @rem{! And return the result}
+@end example
+
+And here is another function which uses the @code{printf} function from
+the standard C library to write a number in hexadecimal notation:
+
+@example
+printhex:
+ prolog
+in = arg @rem{! Same as above}
+ getarg R0, in
+ prepare @rem{! Begin call sequence for printf}
+ pushargi "%x" @rem{! Push format string}
+ ellipsis @rem{! Varargs start here}
+ pushargr R0 @rem{! Push second argument}
+ finishi printf @rem{! Call printf}
+ ret @rem{! Return to caller}
+@end example
+
+@item Trampolines, continuations and tail call optimization
+
+Frequently it is required to generate jit code that must jump to
+code generated later, possibly from another @code{jit_context_t}.
+These require compatible stack frames.
+
+@lightning{} provides two primitives from where trampolines,
+continuations and tail call optimization can be implemented.
+
+@example
+frame (not specified) @r{create stack frame}
+tramp (not specified) @r{assume stack frame}
+@end example
+
+@code{frame} receives an integer argument@footnote{It is not
+automatically computed because it does not know about the
+requirement of later generated code.} that defines the size in
+bytes for the stack frame of the current, @code{C} callable,
+jit function. To calculate this value, a good formula is maximum
+number of arguments to any called native function times
+eight@footnote{Times eight so that it works for double arguments.
+And would not need conditionals for ports that pass arguments in
+the stack.}, plus the sum of the arguments to any call to
+@code{jit_allocai}. @lightning{} automatically adjusts this value
+for any backend specific stack memory it may need, or any
+alignment constraint.
+
+@code{frame} also instructs @lightning{} to save all callee
+save registers in the prolog and reload in the epilog.
+
+@example
+main: @rem{! jit entry point}
+ prolog @rem{! function prolog}
+ frame 256 @rem{! save all callee save registers and}
+ @rem{! reserve at least 256 bytes in stack}
+main_loop:
+ ...
+ jmpi handler @rem{! jumps to external code}
+ ...
+ ret @rem{! return to the caller}
+@end example
+
+@code{tramp} differs from @code{frame} only that a prolog and epilog
+will not be generated. Note that @code{prolog} must still be used.
+The code under @code{tramp} must be ready to be entered with a jump
+at the prolog position, and instead of a return, it must end with
+a non conditional jump. @code{tramp} exists solely for the fact
+that it allows optimizing out prolog and epilog code that would
+never be executed.
+
+@example
+handler: @rem{! handler entry point}
+ prolog @rem{! function prolog}
+ tramp 256 @rem{! assumes all callee save registers}
+ @rem{! are saved and there is at least}
+ @rem{! 256 bytes in stack}
+ ...
+ jmpi main_loop @rem{! return to the main loop}
+@end example
+
+@lightning{} only supports Tail Call Optimization using the
+@code{tramp} construct. Any other way is not guaranteed to
+work on all ports.
+
+An example of a simple (recursive) tail call optimization:
+
+@example
+factorial: @rem{! Entry point of the factorial function}
+ prolog
+in = arg @rem{! Receive an integer argument}
+ getarg R0, in @rem{! Move argument to RO}
+ prepare
+ pushargi 1 @rem{! This is the accumulator}
+ pushargr R0 @rem{! This is the argument}
+ finishi fact @rem{! Call the tail call optimized function}
+ retval R0 @rem{! Fetch the result}
+ retr R0 @rem{! Return it}
+ epilog @rem{! Epilog *before* label before prolog}
+
+fact: @rem{! Entry point of the helper function}
+ prolog
+ frame 16 @rem{! Reserve 16 bytes in the stack}
+fact_entry: @rem{! This is the tail call entry point}
+ac = arg @rem{! The accumulator is the first argument}
+in = arg @rem{! The factorial argument}
+ getarg R0, ac @rem{! Move the accumulator to R0}
+ getarg R1, in @rem{! Move the argument to R1}
+ blei fact_out, R1, 1 @rem{! Done if argument is one or less}
+ mulr R0, R0, R1 @rem{! accumulator *= argument}
+ putargr R0, ac @rem{! Update the accumulator}
+ subi R1, R1, 1 @rem{! argument -= 1}
+ putargr R1, in @rem{! Update the argument}
+ jmpi fact_entry @rem{! Tail Call Optimize it!}
+fact_out:
+ retr R0 @rem{! Return the accumulator}
+@end example
+
+@item Predicates
+@example
+forward_p (not specified) @r{forward label predicate}
+indirect_p (not specified) @r{indirect label predicate}
+target_p (not specified) @r{used label predicate}
+arg_register_p (not specified) @r{argument kind predicate}
+callee_save_p (not specified) @r{callee save predicate}
+pointer_p (not specified) @r{pointer predicate}
+@end example
+
+@code{forward_p} expects a @code{jit_node_t*} argument, and
+returns non zero if it is a forward label reference, that is,
+a label returned by @code{forward}, that still needs a
+@code{link} call.
+
+@code{indirect_p} expects a @code{jit_node_t*} argument, and returns
+non zero if it is an indirect label reference, that is, a label that
+was returned by @code{indirect}.
+
+@code{target_p} expects a @code{jit_node_t*} argument, that is any
+kind of label, and will return non zero if there is at least one
+jump or move referencing it.
+
+@code{arg_register_p} expects a @code{jit_node_t*} argument, that must
+have been returned by @code{arg}, @code{arg_f} or @code{arg_d}, and
+will return non zero if the argument lives in a register. This call
+is useful to know the live range of register arguments, as those
+are very fast to read and write, but have volatile values.
+
+@code{callee_save_p} exects a valid @code{JIT_Rn}, @code{JIT_Vn}, or
+@code{JIT_Fn}, and will return non zero if the register is callee
+save. This call is useful because on several ports, the @code{JIT_Rn}
+and @code{JIT_Fn} registers are actually callee save; no need
+to save and load the values when making function calls.
+
+@code{pointer_p} expects a pointer argument, and will return non
+zero if the pointer is inside the generated jit code. Must be
+called after @code{jit_emit} and before @code{jit_destroy_state}.
+@end table
+
+@node GNU lightning examples
+@chapter Generating code at run-time
+
+To use @lightning{}, you should include the @file{lightning.h} file that
+is put in your include directory by the @samp{make install} command.
+
+Each of the instructions above translates to a macro or function call.
+All you have to do is prepend @code{jit_} (lowercase) to opcode names
+and @code{JIT_} (uppercase) to register names. Of course, parameters
+are to be put between parentheses.
+
+This small tutorial presents three examples:
+
+@iftex
+@itemize @bullet
+@item
+The @code{incr} function found in @ref{The instruction set, ,
+@lightning{}'s instruction set}:
+
+@item
+A simple function call to @code{printf}
+
+@item
+An RPN calculator.
+
+@item
+Fibonacci numbers
+@end itemize
+@end iftex
+@ifnottex
+@menu
+* incr:: A function which increments a number by one
+* printf:: A simple function call to printf
+* RPN calculator:: A more complex example, an RPN calculator
+* Fibonacci:: Calculating Fibonacci numbers
+@end menu
+@end ifnottex
+
+@node incr
+@section A function which increments a number by one
+
+Let's see how to create and use the sample @code{incr} function created
+in @ref{The instruction set, , @lightning{}'s instruction set}:
+
+@example
+#include <stdio.h>
+#include <lightning.h>
+
+static jit_state_t *_jit;
+
+typedef int (*pifi)(int); @rem{/* Pointer to Int Function of Int */}
+
+int main(int argc, char *argv[])
+@{
+ jit_node_t *in;
+ pifi incr;
+
+ init_jit(argv[0]);
+ _jit = jit_new_state();
+
+ jit_prolog(); @rem{/* @t{ prolog } */}
+ in = jit_arg(); @rem{/* @t{ in = arg } */}
+ jit_getarg(JIT_R0, in); @rem{/* @t{ getarg R0 } */}
+ jit_addi(JIT_R0, JIT_R0, 1); @rem{/* @t{ addi R0@comma{} R0@comma{} 1 } */}
+ jit_retr(JIT_R0); @rem{/* @t{ retr R0 } */}
+
+ incr = jit_emit();
+ jit_clear_state();
+
+ @rem{/* call the generated code@comma{} passing 5 as an argument */}
+ printf("%d + 1 = %d\n", 5, incr(5));
+
+ jit_destroy_state();
+ finish_jit();
+ return 0;
+@}
+@end example
+
+Let's examine the code line by line (well, almost@dots{}):
+
+@table @t
+@item #include <lightning.h>
+You already know about this. It defines all of @lightning{}'s macros.
+
+@item static jit_state_t *_jit;
+You might wonder about what is @code{jit_state_t}. It is a structure
+that stores jit code generation information. The name @code{_jit} is
+special, because since multiple jit generators can run at the same
+time, you must either @r{#define _jit my_jit_state} or name it
+@code{_jit}.
+
+@item typedef int (*pifi)(int);
+Just a handy typedef for a pointer to a function that takes an
+@code{int} and returns another.
+
+@item jit_node_t *in;
+Declares a variable to hold an identifier for a function argument. It
+is an opaque pointer, that will hold the return of a call to @code{arg}
+and be used as argument to @code{getarg}.
+
+@item pifi incr;
+Declares a function pointer variable to a function that receives an
+@code{int} and returns an @code{int}.
+
+@item init_jit(argv[0]);
+You must call this function before creating a @code{jit_state_t}
+object. This function does global state initialization, and may need
+to detect CPU or Operating System features. It receives a string
+argument that is later used to read symbols from a shared object using
+GNU binutils if disassembly was enabled at configure time. If no
+disassembly will be performed a NULL pointer can be used as argument.
+
+@item _jit = jit_new_state();
+This call initializes a @lightning{} jit state.
+
+@item jit_prolog();
+Ok, so we start generating code for our beloved function@dots{}
+
+@item in = jit_arg();
+@itemx jit_getarg(JIT_R0, in);
+We retrieve the first (and only) argument, an integer, and store it
+into the general-purpose register @code{R0}.
+
+@item jit_addi(JIT_R0, JIT_R0, 1);
+We add one to the content of the register.
+
+@item jit_retr(JIT_R0);
+This instruction generates a standard function epilog that returns
+the contents of the @code{R0} register.
+
+@item incr = jit_emit();
+This instruction is very important. It actually translates the
+@lightning{} macros used before to machine code, flushes the generated
+code area out of the processor's instruction cache and return a
+pointer to the start of the code.
+
+@item jit_clear_state();
+This call cleanups any data not required for jit execution. Note
+that it must be called after any call to @code{jit_print} or
+@code{jit_address}, as this call destroy the @lightning{}
+intermediate representation.
+
+@item printf("%d + 1 = %d", 5, incr(5));
+Calling our function is this simple---it is not distinguishable from
+a normal C function call, the only difference being that @code{incr}
+is a variable.
+
+@item jit_destroy_state();
+Releases all memory associated with the jit context. It should be
+called after known the jit will no longer be called.
+
+@item finish_jit();
+This call cleanups any global state hold by @lightning{}, and is
+advisable to call it once jit code will no longer be generated.
+@end table
+
+@lightning{} abstracts two phases of dynamic code generation: selecting
+instructions that map the standard representation, and emitting binary
+code for these instructions. The client program has the responsibility
+of describing the code to be generated using the standard @lightning{}
+instruction set.
+
+Let's examine the code generated for @code{incr} on the SPARC and x86_64
+architecture (on the right is the code that an assembly-language
+programmer would write):
+
+@table @b
+@item SPARC
+@example
+ save %sp, -112, %sp
+ mov %i0, %g2 retl
+ inc %g2 inc %o0
+ mov %g2, %i0
+ restore
+ retl
+ nop
+@end example
+In this case, @lightning{} introduces overhead to create a register
+window (not knowing that the procedure is a leaf procedure) and to
+move the argument to the general purpose register @code{R0} (which
+maps to @code{%g2} on the SPARC).
+@end table
+
+@table @b
+@item x86_64
+@example
+ sub $0x30,%rsp
+ mov %rbp,(%rsp)
+ mov %rsp,%rbp
+ sub $0x18,%rsp
+ mov %rdi,%rax mov %rdi, %rax
+ add $0x1,%rax inc %rax
+ mov %rbp,%rsp
+ mov (%rsp),%rbp
+ add $0x30,%rsp
+ retq retq
+@end example
+In this case, the main overhead is due to the function's prolog and
+epilog, and stack alignment after reserving stack space for word
+to/from float conversions or moving data from/to x87 to/from SSE.
+Note that besides allocating space to save callee saved registers,
+no registers are saved/restored because @lightning{} notices those
+registers are not modified. There is currently no logic to detect
+if it needs to allocate stack space for type conversions neither
+proper leaf function detection, but these are subject to change
+(FIXME).
+@end table
+
+@node printf
+@section A simple function call to @code{printf}
+
+Again, here is the code for the example:
+
+@example
+#include <stdio.h>
+#include <lightning.h>
+
+static jit_state_t *_jit;
+
+typedef void (*pvfi)(int); @rem{/* Pointer to Void Function of Int */}
+
+int main(int argc, char *argv[])
+@{
+ pvfi myFunction; @rem{/* ptr to generated code */}
+ jit_node_t *start, *end; @rem{/* a couple of labels */}
+ jit_node_t *in; @rem{/* to get the argument */}
+
+ init_jit(argv[0]);
+ _jit = jit_new_state();
+
+ start = jit_note(__FILE__, __LINE__);
+ jit_prolog();
+ in = jit_arg();
+ jit_getarg(JIT_R1, in);
+ jit_pushargi((jit_word_t)"generated %d bytes\n");
+ jit_ellipsis();
+ jit_pushargr(JIT_R1);
+ jit_finishi(printf);
+ jit_ret();
+ jit_epilog();
+ end = jit_note(__FILE__, __LINE__);
+
+ myFunction = jit_emit();
+
+ @rem{/* call the generated code@comma{} passing its size as argument */}
+ myFunction((char*)jit_address(end) - (char*)jit_address(start));
+ jit_clear_state();
+
+ jit_disassemble();
+
+ jit_destroy_state();
+ finish_jit();
+ return 0;
+@}
+@end example
+
+The function shows how many bytes were generated. Most of the code
+is not very interesting, as it resembles very closely the program
+presented in @ref{incr, , A function which increments a number by one}.
+
+For this reason, we're going to concentrate on just a few statements.
+
+@table @t
+@item start = jit_note(__FILE__, __LINE__);
+@itemx @r{@dots{}}
+@itemx end = jit_note(__FILE__, __LINE__);
+These two instruction call the @code{jit_note} macro, which creates
+a note in the jit code; arguments to @code{jit_note} usually are a
+filename string and line number integer, but using NULL for the
+string argument is perfectly valid if only need to create a simple
+marker in the code.
+
+@item jit_ellipsis();
+@code{ellipsis} usually is only required if calling varargs functions
+with double arguments, but it is a good practice to properly describe
+the @r{@dots{}} in the call sequence.
+
+@item jit_pushargi((jit_word_t)"generated %d bytes\n");
+Note the use of the @code{(jit_word_t)} cast, that is used only
+to avoid a compiler warning, due to using a pointer where a
+wordsize integer type was expected.
+
+@item jit_prepare();
+@itemx @r{@dots{}}
+@itemx jit_finishi(printf);
+Once the arguments to @code{printf} have been pushed, what means
+moving them to stack or register arguments, the @code{printf}
+function is called and the stack cleaned. Note how @lightning{}
+abstracts the differences between different architectures and
+ABI's -- the client program does not know how parameter passing
+works on the host architecture.
+
+@item jit_epilog();
+Usually it is not required to call @code{epilog}, but because it
+is implicitly called when noticing the end of a function, if the
+@code{end} variable was set with a @code{note} call after the
+@code{ret}, it would not consider the function epilog.
+
+@item myFunction((char*)jit_address(end) - (char*)jit_address(start));
+This calls the generate jit function passing as argument the offset
+difference from the @code{start} and @code{end} notes. The @code{address}
+call must be done after the @code{emit} call or either a fatal error
+will happen (if @lightning{} is built with assertions enable) or an
+undefined value will be returned.
+
+@item jit_clear_state();
+Note that @code{jit_clear_state} was called after executing jit in
+this example. It was done because it must be called after any call
+to @code{jit_address} or @code{jit_print}.
+
+@item jit_disassemble();
+@code{disassemble} will dump the generated code to standard output,
+unless @lightning{} was built with the disassembler disabled, in which
+case no output will be shown.
+@end table
+
+@node RPN calculator
+@section A more complex example, an RPN calculator
+
+We create a small stack-based RPN calculator which applies a series
+of operators to a given parameter and to other numeric operands.
+Unlike previous examples, the code generator is fully parameterized
+and is able to compile different formulas to different functions.
+Here is the code for the expression compiler; a sample usage will
+follow.
+
+Since @lightning{} does not provide push/pop instruction, this
+example uses a stack-allocated area to store the data. Such an
+area can be allocated using the macro @code{allocai}, which
+receives the number of bytes to allocate and returns the offset
+from the frame pointer register @code{FP} to the base of the
+area.
+
+Usually, you will use the @code{ldxi} and @code{stxi} instruction
+to access stack-allocated variables. However, it is possible to
+use operations such as @code{add} to compute the address of the
+variables, and pass the address around.
+
+@example
+#include <stdio.h>
+#include <lightning.h>
+
+typedef int (*pifi)(int); @rem{/* Pointer to Int Function of Int */}
+
+static jit_state_t *_jit;
+
+void stack_push(int reg, int *sp)
+@{
+ jit_stxi_i (*sp, JIT_FP, reg);
+ *sp += sizeof (int);
+@}
+
+void stack_pop(int reg, int *sp)
+@{
+ *sp -= sizeof (int);
+ jit_ldxi_i (reg, JIT_FP, *sp);
+@}
+
+jit_node_t *compile_rpn(char *expr)
+@{
+ jit_node_t *in, *fn;
+ int stack_base, stack_ptr;
+
+ fn = jit_note(NULL, 0);
+ jit_prolog();
+ in = jit_arg();
+ stack_ptr = stack_base = jit_allocai (32 * sizeof (int));
+
+ jit_getarg_i(JIT_R2, in);
+
+ while (*expr) @{
+ char buf[32];
+ int n;
+ if (sscanf(expr, "%[0-9]%n", buf, &n)) @{
+ expr += n - 1;
+ stack_push(JIT_R0, &stack_ptr);
+ jit_movi(JIT_R0, atoi(buf));
+ @} else if (*expr == 'x') @{
+ stack_push(JIT_R0, &stack_ptr);
+ jit_movr(JIT_R0, JIT_R2);
+ @} else if (*expr == '+') @{
+ stack_pop(JIT_R1, &stack_ptr);
+ jit_addr(JIT_R0, JIT_R1, JIT_R0);
+ @} else if (*expr == '-') @{
+ stack_pop(JIT_R1, &stack_ptr);
+ jit_subr(JIT_R0, JIT_R1, JIT_R0);
+ @} else if (*expr == '*') @{
+ stack_pop(JIT_R1, &stack_ptr);
+ jit_mulr(JIT_R0, JIT_R1, JIT_R0);
+ @} else if (*expr == '/') @{
+ stack_pop(JIT_R1, &stack_ptr);
+ jit_divr(JIT_R0, JIT_R1, JIT_R0);
+ @} else @{
+ fprintf(stderr, "cannot compile: %s\n", expr);
+ abort();
+ @}
+ ++expr;
+ @}
+ jit_retr(JIT_R0);
+ jit_epilog();
+ return fn;
+@}
+@end example
+
+The principle on which the calculator is based is easy: the stack top
+is held in R0, while the remaining items of the stack are held in the
+memory area that we allocate with @code{allocai}. Compiling a numeric
+operand or the argument @code{x} pushes the old stack top onto the
+stack and moves the operand into R0; compiling an operator pops the
+second operand off the stack into R1, and compiles the operation so
+that the result goes into R0, thus becoming the new stack top.
+
+This example allocates a fixed area for 32 @code{int}s. This is not
+a problem when the function is a leaf like in this case; in a full-blown
+compiler you will want to analyze the input and determine the number
+of needed stack slots---a very simple example of register allocation.
+The area is then managed like a stack using @code{stack_push} and
+@code{stack_pop}.
+
+Source code for the client (which lies in the same source file) follows:
+
+@example
+int main(int argc, char *argv[])
+@{
+ jit_node_t *nc, *nf;
+ pifi c2f, f2c;
+ int i;
+
+ init_jit(argv[0]);
+ _jit = jit_new_state();
+
+ nc = compile_rpn("32x9*5/+");
+ nf = compile_rpn("x32-5*9/");
+ (void)jit_emit();
+ c2f = (pifi)jit_address(nc);
+ f2c = (pifi)jit_address(nf);
+ jit_clear_state();
+
+ printf("\nC:");
+ for (i = 0; i <= 100; i += 10) printf("%3d ", i);
+ printf("\nF:");
+ for (i = 0; i <= 100; i += 10) printf("%3d ", c2f(i));
+ printf("\n");
+
+ printf("\nF:");
+ for (i = 32; i <= 212; i += 18) printf("%3d ", i);
+ printf("\nC:");
+ for (i = 32; i <= 212; i += 18) printf("%3d ", f2c(i));
+ printf("\n");
+
+ jit_destroy_state();
+ finish_jit();
+ return 0;
+@}
+@end example
+
+The client displays a conversion table between Celsius and Fahrenheit
+degrees (both Celsius-to-Fahrenheit and Fahrenheit-to-Celsius). The
+formulas are, @math{F(c) = c*9/5+32} and @math{C(f) = (f-32)*5/9},
+respectively.
+
+Providing the formula as an argument to @code{compile_rpn} effectively
+parameterizes code generation, making it possible to use the same code
+to compile different functions; this is what makes dynamic code
+generation so powerful.
+
+@node Fibonacci
+@section Fibonacci numbers
+
+The code in this section calculates the Fibonacci sequence. That is
+modeled by the recurrence relation:
+@display
+ f(0) = 0
+ f(1) = f(2) = 1
+ f(n) = f(n-1) + f(n-2)
+@end display
+
+The purpose of this example is to introduce branches. There are two
+kind of branches: backward branches and forward branches. We'll
+present the calculation in a recursive and iterative form; the
+former only uses forward branches, while the latter uses both.
+
+@example
+#include <stdio.h>
+#include <lightning.h>
+
+static jit_state_t *_jit;
+
+typedef int (*pifi)(int); @rem{/* Pointer to Int Function of Int */}
+
+int main(int argc, char *argv[])
+@{
+ pifi fib;
+ jit_node_t *label;
+ jit_node_t *call;
+ jit_node_t *in; @rem{/* offset of the argument */}
+ jit_node_t *ref; @rem{/* to patch the forward reference */}
+ jit_node_t *zero; @rem{/* to patch the forward reference */}
+
+ init_jit(argv[0]);
+ _jit = jit_new_state();
+
+ label = jit_label();
+ jit_prolog ();
+ in = jit_arg ();
+ jit_getarg (JIT_V0, in); @rem{/* R0 = n */}
+ zero = jit_beqi (JIT_R0, 0);
+ jit_movr (JIT_V0, JIT_R0); /* V0 = R0 */
+ jit_movi (JIT_R0, 1);
+ ref = jit_blei (JIT_V0, 2);
+ jit_subi (JIT_V1, JIT_V0, 1); @rem{/* V1 = n-1 */}
+ jit_subi (JIT_V2, JIT_V0, 2); @rem{/* V2 = n-2 */}
+ jit_prepare();
+ jit_pushargr(JIT_V1);
+ call = jit_finishi(NULL);
+ jit_patch_at(call, label);
+ jit_retval(JIT_V1); @rem{/* V1 = fib(n-1) */}
+ jit_prepare();
+ jit_pushargr(JIT_V2);
+ call = jit_finishi(NULL);
+ jit_patch_at(call, label);
+ jit_retval(JIT_R0); @rem{/* R0 = fib(n-2) */}
+ jit_addr(JIT_R0, JIT_R0, JIT_V1); @rem{/* R0 = R0 + V1 */}
+
+ jit_patch(ref); @rem{/* patch jump */}
+ jit_patch(zero); @rem{/* patch jump */}
+ jit_retr(JIT_R0);
+
+ @rem{/* call the generated code@comma{} passing 32 as an argument */}
+ fib = jit_emit();
+ jit_clear_state();
+ printf("fib(%d) = %d\n", 32, fib(32));
+ jit_destroy_state();
+ finish_jit();
+ return 0;
+@}
+@end example
+
+As said above, this is the first example of dynamically compiling
+branches. Branch instructions have two operands containing the
+values to be compared, and return a @code{jit_note_t *} object
+to be patched.
+
+Because labels final address are only known after calling @code{emit},
+it is required to call @code{patch} or @code{patch_at}, what does
+tell @lightning{} that the target to patch is actually a pointer to
+a @code{jit_node_t *} object, otherwise, it would assume that is
+a pointer to a C function. Note that conditional branches do not
+receive a label argument, so they must be patched.
+
+You need to call @code{patch_at} on the return of value @code{calli},
+@code{finishi}, and @code{calli} if it is actually referencing a label
+in the jit code. All branch instructions do not receive a label
+argument. Note that @code{movi} is an special case, and patching it
+is usually done to get the final address of a label, usually to later
+call @code{jmpr}.
+
+Now, here is the iterative version:
+
+@example
+#include <stdio.h>
+#include <lightning.h>
+
+static jit_state_t *_jit;
+
+typedef int (*pifi)(int); @rem{/* Pointer to Int Function of Int */}
+
+int main(int argc, char *argv[])
+@{
+ pifi fib;
+ jit_node_t *in; @rem{/* offset of the argument */}
+ jit_node_t *ref; @rem{/* to patch the forward reference */}
+ jit_node_t *zero; @rem{/* to patch the forward reference */}
+ jit_node_t *jump; @rem{/* jump to start of loop */}
+ jit_node_t *loop; @rem{/* start of the loop */}
+
+ init_jit(argv[0]);
+ _jit = jit_new_state();
+
+ jit_prolog ();
+ in = jit_arg ();
+ jit_getarg (JIT_R0, in); @rem{/* R0 = n */}
+ zero = jit_beqi (JIT_R0, 0);
+ jit_movr (JIT_R1, JIT_R0);
+ jit_movi (JIT_R0, 1);
+ ref = jit_blti (JIT_R1, 2);
+ jit_subi (JIT_R2, JIT_R2, 2);
+ jit_movr (JIT_R1, JIT_R0);
+
+ loop= jit_label();
+ jit_subi (JIT_R2, JIT_R2, 1); @rem{/* decr. counter */}
+ jit_movr (JIT_V0, JIT_R0); /* V0 = R0 */
+ jit_addr (JIT_R0, JIT_R0, JIT_R1); /* R0 = R0 + R1 */
+ jit_movr (JIT_R1, JIT_V0); /* R1 = V0 */
+ jump= jit_bnei (JIT_R2, 0); /* if (R2) goto loop; */
+ jit_patch_at(jump, loop);
+
+ jit_patch(ref); @rem{/* patch forward jump */}
+ jit_patch(zero); @rem{/* patch forward jump */}
+ jit_retr (JIT_R0);
+
+ @rem{/* call the generated code@comma{} passing 36 as an argument */}
+ fib = jit_emit();
+ jit_clear_state();
+ printf("fib(%d) = %d\n", 36, fib(36));
+ jit_destroy_state();
+ finish_jit();
+ return 0;
+@}
+@end example
+
+This code calculates the recurrence relation using iteration (a
+@code{for} loop in high-level languages). There are no function
+calls anymore: instead, there is a backward jump (the @code{bnei} at
+the end of the loop).
+
+Note that the program must remember the address for backward jumps;
+for forward jumps it is only required to remember the jump code,
+and call @code{patch} for the implicit label.
+
+@node Reentrancy
+@chapter Re-entrant usage of @lightning{}
+
+@lightning{} uses the special @code{_jit} identifier. To be able
+to be able to use multiple jit generation states at the same
+time, it is required to used code similar to:
+
+@example
+ struct jit_state lightning;
+ #define lightning _jit
+@end example
+
+This will cause the symbol defined to @code{_jit} to be passed as
+the first argument to the underlying @lightning{} implementation,
+that is usually a function with an @code{_} (underscode) prefix
+and with an argument named @code{_jit}, in the pattern:
+
+@example
+ static void _jit_mnemonic(jit_state_t *, jit_gpr_t, jit_gpr_t);
+ #define jit_mnemonic(u, v) _jit_mnemonic(_jit, u, v);
+@end example
+
+The reason for this is to use the same syntax as the initial lightning
+implementation and to avoid needing the user to keep adding an extra
+argument to every call, as multiple jit states generating code in
+paralell should be very uncommon.
+
+@section Registers
+@chapter Accessing the whole register file
+
+As mentioned earlier in this chapter, all @lightning{} back-ends are
+guaranteed to have at least six general-purpose integer registers and
+six floating-point registers, but many back-ends will have more.
+
+To access the entire register files, you can use the
+@code{JIT_R}, @code{JIT_V} and @code{JIT_F} macros. They
+accept a parameter that identifies the register number, which
+must be strictly less than @code{JIT_R_NUM}, @code{JIT_V_NUM}
+and @code{JIT_F_NUM} respectively; the number need not be
+constant. Of course, expressions like @code{JIT_R0} and
+@code{JIT_R(0)} denote the same register, and likewise for
+integer callee-saved, or floating-point, registers.
+
+@node Customizations
+@chapter Customizations
+
+Frequently it is desirable to have more control over how code is
+generated or how memory is used during jit generation or execution.
+
+@section Memory functions
+To aid in complete control of memory allocation and deallocation
+@lightning{} provides wrappers that default to standard @code{malloc},
+@code{realloc} and @code{free}. These are loosely based on the
+GNU GMP counterparts, with the difference that they use the same
+prototype of the system allocation functions, that is, no @code{size}
+for @code{free} or @code{old_size} for @code{realloc}.
+
+@deftypefun void jit_set_memory_functions (@* void *(*@var{alloc_func_ptr}) (size_t), @* void *(*@var{realloc_func_ptr}) (void *, size_t), @* void (*@var{free_func_ptr}) (void *))
+@lightning{} guarantees that memory is only allocated or released
+using these wrapped functions, but you must note that if lightning
+was linked to GNU binutils, malloc is probably will be called multiple
+times from there when initializing the disassembler.
+
+Because @code{init_jit} may call memory functions, if you need to call
+@code{jit_set_memory_functions}, it must be called before @code{init_jit},
+otherwise, when calling @code{finish_jit}, a pointer allocated with the
+previous or default wrappers will be passed.
+@end deftypefun
+
+@deftypefun void jit_get_memory_functions (@* void *(**@var{alloc_func_ptr}) (size_t), @* void *(**@var{realloc_func_ptr}) (void *, size_t), @* void (**@var{free_func_ptr}) (void *))
+Get the current memory allocation function. Also, unlike the GNU GMP
+counterpart, it is an error to pass @code{NULL} pointers as arguments.
+@end deftypefun
+
+@section Alternate code buffer
+To instruct @lightning{} to use an alternate code buffer it is required
+to call @code{jit_realize} before @code{jit_emit}, and then query states
+and customize as appropriate.
+
+@deftypefun void jit_realize ()
+Must be called once, before @code{jit_emit}, to instruct @lightning{}
+that no other @code{jit_xyz} call will be made.
+@end deftypefun
+
+@deftypefun jit_pointer_t jit_get_code (jit_word_t *@var{code_size})
+Returns NULL or the previous value set with @code{jit_set_code}, and
+sets the @var{code_size} argument to an appropriate value.
+If @code{jit_get_code} is called before @code{jit_emit}, the
+@var{code_size} argument is set to the expected amount of bytes
+required to generate code.
+If @code{jit_get_code} is called after @code{jit_emit}, the
+@var{code_size} argument is set to the exact amount of bytes used
+by the code.
+@end deftypefun
+
+@deftypefun void jit_set_code (jit_ponter_t @var{code}, jit_word_t @var{size})
+Instructs @lightning{} to output to the @var{code} argument and
+use @var{size} as a guard to not write to invalid memory. If during
+@code{jit_emit} @lightning{} finds out that the code would not fit
+in @var{size} bytes, it halts code emit and returns @code{NULL}.
+@end deftypefun
+
+A simple example of a loop using an alternate buffer is:
+
+@example
+ jit_uint8_t *code;
+ int *(func)(int); @rem{/* function pointer */}
+ jit_word_t code_size;
+ jit_word_t real_code_size;
+ @rem{...}
+ jit_realize(); @rem{/* ready to generate code */}
+ jit_get_code(&code_size); @rem{/* get expected code size */}
+ code_size = (code_size + 4095) & -4096;
+ do (;;) @{
+ code = mmap(NULL, code_size, PROT_EXEC | PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANON, -1, 0);
+ jit_set_code(code, code_size);
+ if ((func = jit_emit()) == NULL) @{
+ munmap(code, code_size);
+ code_size += 4096;
+ @}
+ @} while (func == NULL);
+ jit_get_code(&real_code_size); @rem{/* query exact size of the code */}
+@end example
+
+The first call to @code{jit_get_code} should return @code{NULL} and set
+the @code{code_size} argument to the expected amount of bytes required
+to emit code.
+The second call to @code{jit_get_code} is after a successful call to
+@code{jit_emit}, and will return the value previously set with
+@code{jit_set_code} and set the @code{real_code_size} argument to the
+exact amount of bytes used to emit the code.
+
+@section Alternate data buffer
+Sometimes it may be desirable to customize how, or to prevent
+@lightning{} from using an extra buffer for constants or debug
+annotation. Usually when also using an alternate code buffer.
+
+@deftypefun jit_pointer_t jit_get_data (jit_word_t *@var{data_size}, jit_word_t *@var{note_size})
+Returns @code{NULL} or the previous value set with @code{jit_set_data},
+and sets the @var{data_size} argument to how many bytes are required
+for the constants data buffer, and @var{note_size} to how many bytes
+are required to store the debug note information.
+Note that it always preallocate one debug note entry even if
+@code{jit_name} or @code{jit_note} are never called, but will return
+zero in the @var{data_size} argument if no constant is required;
+constants are only used for the @code{float} and @code{double} operations
+that have an immediate argument, and not in all @lightning{} ports.
+@end deftypefun
+
+@deftypefun void jit_set_data (jit_pointer_t @var{data}, jit_word_t @var{size}, jit_word_t @var{flags})
+
+@var{data} can be NULL if disabling constants and annotations, otherwise,
+a valid pointer must be passed. An assertion is done that the data will
+fit in @var{size} bytes (but that is a noop if @lightning{} was built
+with @code{-DNDEBUG}).
+
+@var{size} tells the space in bytes available in @var{data}.
+
+@var{flags} can be zero to tell to just use the alternate data buffer,
+or a composition of @code{JIT_DISABLE_DATA} and @code{JIT_DISABLE_NOTE}
+
+@table @t
+@item JIT_DISABLE_DATA
+@cindex JIT_DISABLE_DATA
+Instructs @lightning{} to not use a constant table, but to use an
+alternate method to synthesize those, usually with a larger code
+sequence using stack space to transfer the value from a GPR to a
+FPR register.
+
+@item JIT_DISABLE_NOTE
+@cindex JIT_DISABLE_NOTE
+Instructs @lightning{} to not store file or function name, and
+line numbers in the constant buffer.
+@end table
+@end deftypefun
+
+A simple example of a preventing usage of a data buffer is:
+
+@example
+ @rem{...}
+ jit_realize(); @rem{/* ready to generate code */}
+ jit_get_data(NULL, NULL);
+ jit_set_data(NULL, 0, JIT_DISABLE_DATA | JIT_DISABLE_NOTE);
+ @rem{...}
+@end example
+
+Or to only use a data buffer, if required:
+
+@example
+ jit_uint8_t *data;
+ jit_word_t data_size;
+ @rem{...}
+ jit_realize(); @rem{/* ready to generate code */}
+ jit_get_data(&data_size, NULL);
+ if (data_size)
+ data = malloc(data_size);
+ else
+ data = NULL;
+ jit_set_data(data, data_size, JIT_DISABLE_NOTE);
+ @rem{...}
+ if (data)
+ free(data);
+ @rem{...}
+@end example
+
+@node Acknowledgements
+@chapter Acknowledgements
+
+As far as I know, the first general-purpose portable dynamic code
+generator is @sc{dcg}, by Dawson R.@: Engler and T.@: A.@: Proebsting.
+Further work by Dawson R. Engler resulted in the @sc{vcode} system;
+unlike @sc{dcg}, @sc{vcode} used no intermediate representation and
+directly inspired @lightning{}.
+
+Thanks go to Ian Piumarta, who kindly accepted to release his own
+program @sc{ccg} under the GNU General Public License, thereby allowing
+@lightning{} to use the run-time assemblers he had wrote for @sc{ccg}.
+@sc{ccg} provides a way of dynamically assemble programs written in the
+underlying architecture's assembly language. So it is not portable,
+yet very interesting.
+
+I also thank Steve Byrne for writing GNU Smalltalk, since @lightning{}
+was first developed as a tool to be used in GNU Smalltalk's dynamic
+translator from bytecodes to native code.
+
+@c %**end of header (This is for running Texinfo on a region.)
+
+@c ***********************************************************************
+
+@bye
diff --git a/libguile/lightning/tests/Makefile b/libguile/lightning/tests/Makefile
new file mode 100644
index 000000000..d5295ac13
--- /dev/null
+++ b/libguile/lightning/tests/Makefile
@@ -0,0 +1,24 @@
+TESTS=$(sort $(basename $(wildcard *.c)))
+
+CC = gcc
+CFLAGS = -Wall -O0 -g
+
+all: $(addprefix test-,$(TESTS))
+
+check: all
+ @echo "Running unit tests..."
+ @set -e; for test in $(TESTS); do \
+ echo "Testing: $$test"; \
+ ./test-$$test; \
+ done
+ @echo "Success."
+
+jit.o: ../jit.h ../jit/*.c
+ $(CC) $(CFLAGS) $(CPPFLAGS) -I.. -o jit.o -c ../jit/jit.c
+
+test-%: %.c jit.o test.h
+ $(CC) $(CFLAGS) $(CPPFLAGS) -I.. -o $@ jit.o $<
+
+clean:
+ rm -f $(addprefix test-,$(TESTS))
+ rm -f jit.o
diff --git a/libguile/lightning/tests/absr_d.c b/libguile/lightning/tests/absr_d.c
new file mode 100644
index 000000000..5671c4f7b
--- /dev/null
+++ b/libguile/lightning/tests/absr_d.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_absr_d(j, JIT_F0, JIT_F0);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(double) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == 0.0);
+ ASSERT(f(-0.0) == 0.0);
+ ASSERT(f(0.5) == 0.5);
+ ASSERT(f(-0.5) == 0.5);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/absr_f.c b/libguile/lightning/tests/absr_f.c
new file mode 100644
index 000000000..e93fb4993
--- /dev/null
+++ b/libguile/lightning/tests/absr_f.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_absr_f(j, JIT_F0, JIT_F0);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(float) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == 0.0);
+ ASSERT(f(-0.0) == 0.0);
+ ASSERT(f(0.5) == 0.5);
+ ASSERT(f(-0.5) == 0.5);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/addi.c b/libguile/lightning/tests/addi.c
new file mode 100644
index 000000000..9b1a82b0c
--- /dev/null
+++ b/libguile/lightning/tests/addi.c
@@ -0,0 +1,29 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_addi(j, JIT_R0, JIT_R0, 69);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ int (*f)(int) = ret;
+ ASSERT(f(42) == 111);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/addr.c b/libguile/lightning/tests/addr.c
new file mode 100644
index 000000000..236fcd18a
--- /dev/null
+++ b/libguile/lightning/tests/addr.c
@@ -0,0 +1,29 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_addr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ int (*f)(int, int) = ret;
+ ASSERT(f(42, 69) == 111);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/addr_d.c b/libguile/lightning/tests/addr_d.c
new file mode 100644
index 000000000..e89663eb0
--- /dev/null
+++ b/libguile/lightning/tests/addr_d.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_addr_d(j, JIT_F0, JIT_F0, JIT_F1);
+ jit_retr_d(j, JIT_F0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ double (*f)(double, double) = ret;
+ ASSERT(f(42., 69.) == 111.);
+ ASSERT(f(42.5, 69.5) == 112.);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/addr_f.c b/libguile/lightning/tests/addr_f.c
new file mode 100644
index 000000000..ce918fd0f
--- /dev/null
+++ b/libguile/lightning/tests/addr_f.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_addr_f(j, JIT_F0, JIT_F0, JIT_F1);
+ jit_retr_f(j, JIT_F0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ float (*f)(float, float) = ret;
+ ASSERT(f(42.f, 69.f) == 111.f);
+ ASSERT(f(42.5f, 69.5f) == 112.f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/addx.c b/libguile/lightning/tests/addx.c
new file mode 100644
index 000000000..664c13998
--- /dev/null
+++ b/libguile/lightning/tests/addx.c
@@ -0,0 +1,65 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_movi(j, JIT_R2, 0);
+ jit_addcr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_addxi(j, JIT_R2, JIT_R2, 0);
+ jit_retr(j, JIT_R2);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0, 0) == 0);
+
+#if __WORDSIZE == 32
+ /* carry */
+ ASSERT(f(0xffffffff, 0xffffffff) == 1);
+ /* overflow */
+ ASSERT(f(0x7fffffff, 1) == 0);
+ /* overflow */
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0);
+ /* carry */
+ ASSERT(f(0x7fffffff, 0x80000000) == 0);
+ /* carry+overflow */
+ ASSERT(f(0x80000000, 0x80000000) == 1);
+#else
+ /* nothing */
+ ASSERT(f(0xffffffff, 0xffffffff) == 0);
+ /* nothing */
+ ASSERT(f(0x7fffffff, 1) == 0);
+ /* nothing */
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0);
+ /* nothing */
+ ASSERT(f(0x7fffffff, 0x80000000) == 0);
+ /* nothing */
+ ASSERT(f(0x80000000, 0x80000000) == 0);
+ /* carry */
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 1);
+ /* overflow */
+ ASSERT(f(0x7fffffffffffffff, 1) == 0);
+ /* overflow */
+ ASSERT(f(0x7fffffffffffffff, 0x7fffffffffffffff) == 0);
+ /* overflow */
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == 0);
+ /* carry+overflow */
+ ASSERT(f(0x8000000000000000, 0x8000000000000000) == 1);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/andi.c b/libguile/lightning/tests/andi.c
new file mode 100644
index 000000000..781b7d0e0
--- /dev/null
+++ b/libguile/lightning/tests/andi.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_andi(j, JIT_R0, JIT_R0, 1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff) == 1);
+ ASSERT(f(0x80000000) == 0);
+#if __WORDSIZE == 64
+ ASSERT(f(0x7fffffffffffffff) == 1);
+ ASSERT(f(0x8000000000000000) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/andr.c b/libguile/lightning/tests/andr.c
new file mode 100644
index 000000000..4c549e8ef
--- /dev/null
+++ b/libguile/lightning/tests/andr.c
@@ -0,0 +1,51 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_andr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff, 1) == 1);
+ ASSERT(f(1, 0x7fffffff) == 1);
+ ASSERT(f(0x80000000, 1) == 0);
+ ASSERT(f(1, 0x80000000) == 0);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0);
+ ASSERT(f(0x80000000, 0x7fffffff) == 0);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0x7fffffff);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 0x7fffffff);
+ ASSERT(f(0xffffffff, 0xffffffff) == 0xffffffff);
+ ASSERT(f(0x7fffffff, 0) == 0);
+ ASSERT(f(0, 0x7fffffff) == 0);
+#if __WORDSIZE == 64
+ ASSERT(f(0x7fffffffffffffff, 1) == 1);
+ ASSERT(f(1, 0x7fffffffffffffff) == 1);
+ ASSERT(f(0x8000000000000000, 1) == 0);
+ ASSERT(f(1, 0x8000000000000000) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == 0);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0xffffffffffffffff) == 0x7fffffffffffffff);
+ ASSERT(f(0xffffffffffffffff, 0x7fffffffffffffff) == 0x7fffffffffffffff);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 0xffffffffffffffff);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/beqi.c b/libguile/lightning/tests/beqi.c
new file mode 100644
index 000000000..d65d48d7f
--- /dev/null
+++ b/libguile/lightning/tests/beqi.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_beqi(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 0);
+ ASSERT(f(-1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/beqr.c b/libguile/lightning/tests/beqr.c
new file mode 100644
index 000000000..6df434d02
--- /dev/null
+++ b/libguile/lightning/tests/beqr.c
@@ -0,0 +1,34 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_beqr(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 0);
+ ASSERT(f(1, 1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/beqr_d.c b/libguile/lightning/tests/beqr_d.c
new file mode 100644
index 000000000..408f0dfb0
--- /dev/null
+++ b/libguile/lightning/tests/beqr_d.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_beqr_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 0);
+ ASSERT(f(1, 1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/beqr_f.c b/libguile/lightning/tests/beqr_f.c
new file mode 100644
index 000000000..2e91105b2
--- /dev/null
+++ b/libguile/lightning/tests/beqr_f.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_beqr_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 0);
+ ASSERT(f(1, 1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bgei.c b/libguile/lightning/tests/bgei.c
new file mode 100644
index 000000000..25fe2ee42
--- /dev/null
+++ b/libguile/lightning/tests/bgei.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_bgei(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 1);
+ ASSERT(f(-1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bgei_u.c b/libguile/lightning/tests/bgei_u.c
new file mode 100644
index 000000000..f2b5a53ad
--- /dev/null
+++ b/libguile/lightning/tests/bgei_u.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_bgei_u(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 1);
+ ASSERT(f(-1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bger.c b/libguile/lightning/tests/bger.c
new file mode 100644
index 000000000..0bff98a64
--- /dev/null
+++ b/libguile/lightning/tests/bger.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bger(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bger_d.c b/libguile/lightning/tests/bger_d.c
new file mode 100644
index 000000000..74786ad9f
--- /dev/null
+++ b/libguile/lightning/tests/bger_d.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bger_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bger_f.c b/libguile/lightning/tests/bger_f.c
new file mode 100644
index 000000000..03dde27d5
--- /dev/null
+++ b/libguile/lightning/tests/bger_f.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bger_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bger_u.c b/libguile/lightning/tests/bger_u.c
new file mode 100644
index 000000000..890aec995
--- /dev/null
+++ b/libguile/lightning/tests/bger_u.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bger_u(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bgti.c b/libguile/lightning/tests/bgti.c
new file mode 100644
index 000000000..fa1e7aa7d
--- /dev/null
+++ b/libguile/lightning/tests/bgti.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_bgti(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(-1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bgti_u.c b/libguile/lightning/tests/bgti_u.c
new file mode 100644
index 000000000..2d01728db
--- /dev/null
+++ b/libguile/lightning/tests/bgti_u.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_bgti_u(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(-1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bgtr.c b/libguile/lightning/tests/bgtr.c
new file mode 100644
index 000000000..779b32063
--- /dev/null
+++ b/libguile/lightning/tests/bgtr.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bgtr(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bgtr_d.c b/libguile/lightning/tests/bgtr_d.c
new file mode 100644
index 000000000..f5ea7a254
--- /dev/null
+++ b/libguile/lightning/tests/bgtr_d.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bgtr_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bgtr_f.c b/libguile/lightning/tests/bgtr_f.c
new file mode 100644
index 000000000..e1aec3a12
--- /dev/null
+++ b/libguile/lightning/tests/bgtr_f.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bgtr_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bgtr_u.c b/libguile/lightning/tests/bgtr_u.c
new file mode 100644
index 000000000..cec4d17dc
--- /dev/null
+++ b/libguile/lightning/tests/bgtr_u.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bgtr_u(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/blei.c b/libguile/lightning/tests/blei.c
new file mode 100644
index 000000000..1d0a91eb6
--- /dev/null
+++ b/libguile/lightning/tests/blei.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_blei(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 0);
+ ASSERT(f(-1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/blei_u.c b/libguile/lightning/tests/blei_u.c
new file mode 100644
index 000000000..fcfde3acb
--- /dev/null
+++ b/libguile/lightning/tests/blei_u.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_blei_u(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 0);
+ ASSERT(f(-1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bler.c b/libguile/lightning/tests/bler.c
new file mode 100644
index 000000000..b4ec03442
--- /dev/null
+++ b/libguile/lightning/tests/bler.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bler(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bler_d.c b/libguile/lightning/tests/bler_d.c
new file mode 100644
index 000000000..8d189a872
--- /dev/null
+++ b/libguile/lightning/tests/bler_d.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bler_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bler_f.c b/libguile/lightning/tests/bler_f.c
new file mode 100644
index 000000000..74cc65ceb
--- /dev/null
+++ b/libguile/lightning/tests/bler_f.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bler_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bler_u.c b/libguile/lightning/tests/bler_u.c
new file mode 100644
index 000000000..006f84b5e
--- /dev/null
+++ b/libguile/lightning/tests/bler_u.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bler_u(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bltgtr_d.c b/libguile/lightning/tests/bltgtr_d.c
new file mode 100644
index 000000000..79ef13943
--- /dev/null
+++ b/libguile/lightning/tests/bltgtr_d.c
@@ -0,0 +1,38 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bltgtr_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 1);
+ ASSERT(f(1, 1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+ ASSERT(f(0.0/0.0, 0.0/0.0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bltgtr_f.c b/libguile/lightning/tests/bltgtr_f.c
new file mode 100644
index 000000000..8cbf83e60
--- /dev/null
+++ b/libguile/lightning/tests/bltgtr_f.c
@@ -0,0 +1,38 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bltgtr_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 1);
+ ASSERT(f(1, 1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+ ASSERT(f(0.0/0.0, 0.0/0.0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/blti.c b/libguile/lightning/tests/blti.c
new file mode 100644
index 000000000..8c3cd34ef
--- /dev/null
+++ b/libguile/lightning/tests/blti.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_blti(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 0);
+ ASSERT(f(-1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/blti_u.c b/libguile/lightning/tests/blti_u.c
new file mode 100644
index 000000000..b7af89d80
--- /dev/null
+++ b/libguile/lightning/tests/blti_u.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_blti_u(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 0);
+ ASSERT(f(-1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bltr.c b/libguile/lightning/tests/bltr.c
new file mode 100644
index 000000000..56b0d68ee
--- /dev/null
+++ b/libguile/lightning/tests/bltr.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bltr(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bltr_d.c b/libguile/lightning/tests/bltr_d.c
new file mode 100644
index 000000000..9ce78b666
--- /dev/null
+++ b/libguile/lightning/tests/bltr_d.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bltr_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bltr_f.c b/libguile/lightning/tests/bltr_f.c
new file mode 100644
index 000000000..177a5869a
--- /dev/null
+++ b/libguile/lightning/tests/bltr_f.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bltr_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bltr_u.c b/libguile/lightning/tests/bltr_u.c
new file mode 100644
index 000000000..e87a946ae
--- /dev/null
+++ b/libguile/lightning/tests/bltr_u.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bltr_u(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bmci.c b/libguile/lightning/tests/bmci.c
new file mode 100644
index 000000000..0ffe41541
--- /dev/null
+++ b/libguile/lightning/tests/bmci.c
@@ -0,0 +1,32 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_bmci(j, JIT_R0, 1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 0);
+ ASSERT(f(-1) == 0);
+ ASSERT(f(2) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bmcr.c b/libguile/lightning/tests/bmcr.c
new file mode 100644
index 000000000..03591fc65
--- /dev/null
+++ b/libguile/lightning/tests/bmcr.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bmcr(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 1);
+ ASSERT(f(1, 1) == 0);
+ ASSERT(f(1, -1) == 0);
+ ASSERT(f(-1, 1) == 0);
+ ASSERT(f(-1, -1) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bmsi.c b/libguile/lightning/tests/bmsi.c
new file mode 100644
index 000000000..21f986ff3
--- /dev/null
+++ b/libguile/lightning/tests/bmsi.c
@@ -0,0 +1,32 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_bmsi(j, JIT_R0, 1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(-1) == 1);
+ ASSERT(f(2) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bmsr.c b/libguile/lightning/tests/bmsr.c
new file mode 100644
index 000000000..cd5895198
--- /dev/null
+++ b/libguile/lightning/tests/bmsr.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bmsr(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 0);
+ ASSERT(f(1, 1) == 1);
+ ASSERT(f(1, -1) == 1);
+ ASSERT(f(-1, 1) == 1);
+ ASSERT(f(-1, -1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bnei.c b/libguile/lightning/tests/bnei.c
new file mode 100644
index 000000000..a34a3ad23
--- /dev/null
+++ b/libguile/lightning/tests/bnei.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_reloc_t r = jit_bnei(j, JIT_R0, 0);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(-1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bner.c b/libguile/lightning/tests/bner.c
new file mode 100644
index 000000000..c0253a6c1
--- /dev/null
+++ b/libguile/lightning/tests/bner.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bner(j, JIT_R0, JIT_R1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bner_d.c b/libguile/lightning/tests/bner_d.c
new file mode 100644
index 000000000..d106ef51e
--- /dev/null
+++ b/libguile/lightning/tests/bner_d.c
@@ -0,0 +1,38 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bner_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 1);
+ ASSERT(f(1, 1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+ ASSERT(f(0.0/0.0, 0.0/0.0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bner_f.c b/libguile/lightning/tests/bner_f.c
new file mode 100644
index 000000000..7c3753da0
--- /dev/null
+++ b/libguile/lightning/tests/bner_f.c
@@ -0,0 +1,38 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bner_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 1);
+ ASSERT(f(1, 1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+ ASSERT(f(0.0/0.0, 0.0/0.0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/boaddi.c b/libguile/lightning/tests/boaddi.c
new file mode 100644
index 000000000..717c4c1a7
--- /dev/null
+++ b/libguile/lightning/tests/boaddi.c
@@ -0,0 +1,43 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+ jit_reloc_t r = jit_boaddi(j, JIT_R0, 1);
+ jit_retr(j, JIT_R0);
+ jit_patch_here(j, r);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(-1) == 0);
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x7fffffff) == overflowed);
+ ASSERT(f(0x80000000) == 0x80000001);
+ ASSERT(f(0xffffffff) == 0);
+#else
+ ASSERT(f(0x7fffffffffffffff) == overflowed);
+ ASSERT(f(0x8000000000000000) == 0x8000000000000001);
+ ASSERT(f(0xffffffffffffffff) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/boaddi_u.c b/libguile/lightning/tests/boaddi_u.c
new file mode 100644
index 000000000..66b261b3f
--- /dev/null
+++ b/libguile/lightning/tests/boaddi_u.c
@@ -0,0 +1,43 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+ jit_reloc_t r = jit_boaddi_u(j, JIT_R0, 1);
+ jit_retr(j, JIT_R0);
+ jit_patch_here(j, r);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(-1) == overflowed);
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x7fffffff) == 0x80000000);
+ ASSERT(f(0x80000000) == 0x80000001);
+ ASSERT(f(0xffffffff) == overflowed);
+#else
+ ASSERT(f(0x7fffffffffffffff) == 0x8000000000000000);
+ ASSERT(f(0x8000000000000000) == 0x8000000000000001);
+ ASSERT(f(0xffffffffffffffff) == overflowed);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/boaddr.c b/libguile/lightning/tests/boaddr.c
new file mode 100644
index 000000000..95fb6244f
--- /dev/null
+++ b/libguile/lightning/tests/boaddr.c
@@ -0,0 +1,52 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_reloc_t r = jit_boaddr(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+ jit_patch_here(j, r);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(1, 1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0xffffffff, 0xffffffff) == -2);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0x7fffffff, 1) == overflowed);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == overflowed);
+ ASSERT(f(0x7fffffff, 0x80000000) == -1);
+ ASSERT(f(0x80000000, 0x80000000) == overflowed);
+#else
+ ASSERT(f(0xffffffff, 0xffffffff) == 0xffffffffull + 0xffffffffull);
+ ASSERT(f(0x7fffffff, 1) == 0x80000000);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffffull + 0x7fffffffull);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff);
+ ASSERT(f(0x80000000, 0x80000000) == 0x100000000);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == -2);
+ ASSERT(f(0x7fffffffffffffff, 1) == overflowed);
+ ASSERT(f(0x7fffffffffffffff, 0x7fffffffffffffff) == overflowed);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == -1);
+ ASSERT(f(0x8000000000000000, 0x8000000000000000) == overflowed);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/boaddr_u.c b/libguile/lightning/tests/boaddr_u.c
new file mode 100644
index 000000000..b9b2b4585
--- /dev/null
+++ b/libguile/lightning/tests/boaddr_u.c
@@ -0,0 +1,52 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_reloc_t r = jit_boaddr_u(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+ jit_patch_here(j, r);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(1, 1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0xffffffff, 0xffffffff) == overflowed);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0x7fffffff, 1) == 0x80000000);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffff + 0x7fffffff);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff);
+ ASSERT(f(0x80000000, 0x80000000) == overflowed);
+#else
+ ASSERT(f(0xffffffff, 0xffffffff) == 0xffffffffull + 0xffffffffull);
+ ASSERT(f(0x7fffffff, 1) == 0x80000000);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffffull + 0x7fffffffull);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff);
+ ASSERT(f(0x80000000, 0x80000000) == 0x100000000);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == overflowed);
+ ASSERT(f(0x7fffffffffffffff, 1) == 0x8000000000000000);
+ ASSERT(f(0x7fffffffffffffff, 0x7fffffffffffffff) == -2);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == -1);
+ ASSERT(f(0x8000000000000000, 0x8000000000000000) == overflowed);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bordr_d.c b/libguile/lightning/tests/bordr_d.c
new file mode 100644
index 000000000..24f42148c
--- /dev/null
+++ b/libguile/lightning/tests/bordr_d.c
@@ -0,0 +1,38 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bordr_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 1);
+ ASSERT(f(1, 1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+ ASSERT(f(0.0/0.0, 0.0/0.0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bordr_f.c b/libguile/lightning/tests/bordr_f.c
new file mode 100644
index 000000000..827da92a7
--- /dev/null
+++ b/libguile/lightning/tests/bordr_f.c
@@ -0,0 +1,38 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bordr_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 1);
+ ASSERT(f(1, 1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 0);
+ ASSERT(f(0.0/0.0, 0) == 0);
+ ASSERT(f(0.0/0.0, 0.0/0.0) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bosubi.c b/libguile/lightning/tests/bosubi.c
new file mode 100644
index 000000000..b64514070
--- /dev/null
+++ b/libguile/lightning/tests/bosubi.c
@@ -0,0 +1,43 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+ jit_reloc_t r = jit_bosubi(j, JIT_R0, 1);
+ jit_retr(j, JIT_R0);
+ jit_patch_here(j, r);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(-1) == -2);
+ ASSERT(f(0) == -1);
+ ASSERT(f(1) == 0);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x7fffffff) == 0x7ffffffe);
+ ASSERT(f(0x80000000) == overflowed);
+ ASSERT(f(0x80000001) == 0x80000000);
+#else
+ ASSERT(f(0x7fffffffffffffff) == 0x7ffffffffffffffe);
+ ASSERT(f(0x8000000000000000) == overflowed);
+ ASSERT(f(0x8000000000000001) == 0x8000000000000000);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bosubi_u.c b/libguile/lightning/tests/bosubi_u.c
new file mode 100644
index 000000000..76a7d6726
--- /dev/null
+++ b/libguile/lightning/tests/bosubi_u.c
@@ -0,0 +1,39 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+ jit_reloc_t r = jit_bosubi_u(j, JIT_R0, 1);
+ jit_retr(j, JIT_R0);
+ jit_patch_here(j, r);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(-1) == -2);
+ ASSERT(f(0) == overflowed);
+ ASSERT(f(1) == 0);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x80000000) == 0x7fffffff);
+#else
+ ASSERT(f(0x8000000000000000) == 0x7fffffffffffffff);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bosubr.c b/libguile/lightning/tests/bosubr.c
new file mode 100644
index 000000000..e79c10bb2
--- /dev/null
+++ b/libguile/lightning/tests/bosubr.c
@@ -0,0 +1,49 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_reloc_t r = jit_bosubr(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+ jit_patch_here(j, r);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == -1);
+ ASSERT(f(1, 1) == 0);
+ ASSERT(f(1, -1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0xffffffff, 0xffffffff) == 0);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0x7fffffff, 1) == 0x7ffffffe);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0);
+ ASSERT(f(0x80000000, 0x7fffffff) == overflowed);
+ ASSERT(f(0x7fffffff, 0x80000000) == overflowed);
+ ASSERT(f(0x80000000, 0x80000000) == 0);
+#else
+ ASSERT(f(0x7fffffffffffffff, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == overflowed);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == overflowed);
+ ASSERT(f(0x8000000000000000, 0x8000000000000000) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bosubr_u.c b/libguile/lightning/tests/bosubr_u.c
new file mode 100644
index 000000000..ad55af386
--- /dev/null
+++ b/libguile/lightning/tests/bosubr_u.c
@@ -0,0 +1,48 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_reloc_t r = jit_bosubr_u(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+ jit_patch_here(j, r);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(1, 1) == 0);
+ ASSERT(f(0, 1) == overflowed);
+ ASSERT(f(1, 0) == 1);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0xffffffff, 0xffffffff) == 0);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0x7fffffff, 1) == 0x7ffffffe);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0);
+ ASSERT(f(0x7fffffff, 0x80000000) == overflowed);
+ ASSERT(f(0x80000000, 0x80000000) == 0);
+#else
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == overflowed);
+ ASSERT(f(0x8000000000000000, 0x8000000000000000) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bswapr_ui.c b/libguile/lightning/tests/bswapr_ui.c
new file mode 100644
index 000000000..f566ad486
--- /dev/null
+++ b/libguile/lightning/tests/bswapr_ui.c
@@ -0,0 +1,32 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_bswapr_ui(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(0x12345678) == 0x78563412);
+#if __WORDSIZE > 32
+ ASSERT(f(0xff12345678) == 0x78563412);
+ ASSERT(f(0xff00000000) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bswapr_ul.c b/libguile/lightning/tests/bswapr_ul.c
new file mode 100644
index 000000000..28a2f0390
--- /dev/null
+++ b/libguile/lightning/tests/bswapr_ul.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_bswapr_ul(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(0x12345678) == 0x7856341200000000);
+ ASSERT(f(0xff12345678) == 0x78563412ff000000);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bswapr_us.c b/libguile/lightning/tests/bswapr_us.c
new file mode 100644
index 000000000..10028dfb7
--- /dev/null
+++ b/libguile/lightning/tests/bswapr_us.c
@@ -0,0 +1,28 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_bswapr_us(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(0x12345678) == 0x7856);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/buneqr_d.c b/libguile/lightning/tests/buneqr_d.c
new file mode 100644
index 000000000..887a3ddc2
--- /dev/null
+++ b/libguile/lightning/tests/buneqr_d.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_buneqr_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 0);
+ ASSERT(f(1, 1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/buneqr_f.c b/libguile/lightning/tests/buneqr_f.c
new file mode 100644
index 000000000..0671daeb1
--- /dev/null
+++ b/libguile/lightning/tests/buneqr_f.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_buneqr_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 0);
+ ASSERT(f(1, 1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bunger_d.c b/libguile/lightning/tests/bunger_d.c
new file mode 100644
index 000000000..3a22336ca
--- /dev/null
+++ b/libguile/lightning/tests/bunger_d.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bunger_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bunger_f.c b/libguile/lightning/tests/bunger_f.c
new file mode 100644
index 000000000..a4bd7f0df
--- /dev/null
+++ b/libguile/lightning/tests/bunger_f.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bunger_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bungtr_d.c b/libguile/lightning/tests/bungtr_d.c
new file mode 100644
index 000000000..780e8d0b2
--- /dev/null
+++ b/libguile/lightning/tests/bungtr_d.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bungtr_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bungtr_f.c b/libguile/lightning/tests/bungtr_f.c
new file mode 100644
index 000000000..4debed9f7
--- /dev/null
+++ b/libguile/lightning/tests/bungtr_f.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bungtr_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 1);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 1);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bunler_d.c b/libguile/lightning/tests/bunler_d.c
new file mode 100644
index 000000000..868001eb2
--- /dev/null
+++ b/libguile/lightning/tests/bunler_d.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bunler_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bunler_f.c b/libguile/lightning/tests/bunler_f.c
new file mode 100644
index 000000000..10c5d4abd
--- /dev/null
+++ b/libguile/lightning/tests/bunler_f.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bunler_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 1);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bunltr_d.c b/libguile/lightning/tests/bunltr_d.c
new file mode 100644
index 000000000..79b96a1c7
--- /dev/null
+++ b/libguile/lightning/tests/bunltr_d.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bunltr_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bunltr_f.c b/libguile/lightning/tests/bunltr_f.c
new file mode 100644
index 000000000..3fdd4bb15
--- /dev/null
+++ b/libguile/lightning/tests/bunltr_f.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bunltr_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 1);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 1);
+ ASSERT(f(0, -1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bunordr_d.c b/libguile/lightning/tests/bunordr_d.c
new file mode 100644
index 000000000..ef3818d51
--- /dev/null
+++ b/libguile/lightning/tests/bunordr_d.c
@@ -0,0 +1,38 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bunordr_d(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(double, double) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 0);
+ ASSERT(f(1, 1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+ ASSERT(f(0.0/0.0, 0.0/0.0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bunordr_f.c b/libguile/lightning/tests/bunordr_f.c
new file mode 100644
index 000000000..3af023862
--- /dev/null
+++ b/libguile/lightning/tests/bunordr_f.c
@@ -0,0 +1,38 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_reloc_t r = jit_bunordr_f(j, JIT_F0, JIT_F1);
+ jit_reti(j, 0);
+ jit_patch_here(j, r);
+ jit_reti(j, 1);
+
+ intmax_t (*f)(float, float) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == 0);
+ ASSERT(f(1, 0) == 0);
+ ASSERT(f(-1, 0) == 0);
+ ASSERT(f(0, -1) == 0);
+ ASSERT(f(1, 1) == 0);
+
+ ASSERT(f(0, 0.0/0.0) == 1);
+ ASSERT(f(0.0/0.0, 0) == 1);
+ ASSERT(f(0.0/0.0, 0.0/0.0) == 1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bxaddi.c b/libguile/lightning/tests/bxaddi.c
new file mode 100644
index 000000000..16d405524
--- /dev/null
+++ b/libguile/lightning/tests/bxaddi.c
@@ -0,0 +1,42 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+ jit_reloc_t r = jit_bxaddi(j, JIT_R0, 1);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_patch_here(j, r);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(-1) == 0);
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x7fffffff) == overflowed);
+ ASSERT(f(0x80000000) == 0x80000001);
+ ASSERT(f(0xffffffff) == 0);
+#else
+ ASSERT(f(0x7fffffffffffffff) == overflowed);
+ ASSERT(f(0x8000000000000000) == 0x8000000000000001);
+ ASSERT(f(0xffffffffffffffff) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bxaddi_u.c b/libguile/lightning/tests/bxaddi_u.c
new file mode 100644
index 000000000..6c3257876
--- /dev/null
+++ b/libguile/lightning/tests/bxaddi_u.c
@@ -0,0 +1,42 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+ jit_reloc_t r = jit_bxaddi_u(j, JIT_R0, 1);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_patch_here(j, r);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(-1) == overflowed);
+ ASSERT(f(0) == 1);
+ ASSERT(f(1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x7fffffff) == 0x80000000);
+ ASSERT(f(0x80000000) == 0x80000001);
+ ASSERT(f(0xffffffff) == overflowed);
+#else
+ ASSERT(f(0x7fffffffffffffff) == 0x8000000000000000);
+ ASSERT(f(0x8000000000000000) == 0x8000000000000001);
+ ASSERT(f(0xffffffffffffffff) == overflowed);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bxaddr.c b/libguile/lightning/tests/bxaddr.c
new file mode 100644
index 000000000..a73a0d8eb
--- /dev/null
+++ b/libguile/lightning/tests/bxaddr.c
@@ -0,0 +1,51 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_reloc_t r = jit_bxaddr(j, JIT_R0, JIT_R1);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_patch_here(j, r);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(1, 1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0xffffffff, 0xffffffff) == -2);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0x7fffffff, 1) == overflowed);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == overflowed);
+ ASSERT(f(0x7fffffff, 0x80000000) == -1);
+ ASSERT(f(0x80000000, 0x80000000) == overflowed);
+#else
+ ASSERT(f(0xffffffff, 0xffffffff) == 0xffffffffull + 0xffffffffull);
+ ASSERT(f(0x7fffffff, 1) == 0x80000000);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffffull + 0x7fffffffull);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff);
+ ASSERT(f(0x80000000, 0x80000000) == 0x100000000);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == -2);
+ ASSERT(f(0x7fffffffffffffff, 1) == overflowed);
+ ASSERT(f(0x7fffffffffffffff, 0x7fffffffffffffff) == overflowed);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == -1);
+ ASSERT(f(0x8000000000000000, 0x8000000000000000) == overflowed);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bxaddr_u.c b/libguile/lightning/tests/bxaddr_u.c
new file mode 100644
index 000000000..ba54c0391
--- /dev/null
+++ b/libguile/lightning/tests/bxaddr_u.c
@@ -0,0 +1,51 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_reloc_t r = jit_bxaddr_u(j, JIT_R0, JIT_R1);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_patch_here(j, r);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(1, 1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0xffffffff, 0xffffffff) == overflowed);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0x7fffffff, 1) == 0x80000000);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffff + 0x7fffffff);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff);
+ ASSERT(f(0x80000000, 0x80000000) == overflowed);
+#else
+ ASSERT(f(0xffffffff, 0xffffffff) == 0xffffffffull + 0xffffffffull);
+ ASSERT(f(0x7fffffff, 1) == 0x80000000);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0x7fffffffull + 0x7fffffffull);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff);
+ ASSERT(f(0x80000000, 0x80000000) == 0x100000000);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == overflowed);
+ ASSERT(f(0x7fffffffffffffff, 1) == 0x8000000000000000);
+ ASSERT(f(0x7fffffffffffffff, 0x7fffffffffffffff) == -2);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == -1);
+ ASSERT(f(0x8000000000000000, 0x8000000000000000) == overflowed);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bxsubi.c b/libguile/lightning/tests/bxsubi.c
new file mode 100644
index 000000000..83669ac12
--- /dev/null
+++ b/libguile/lightning/tests/bxsubi.c
@@ -0,0 +1,42 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+ jit_reloc_t r = jit_bxsubi(j, JIT_R0, 1);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_patch_here(j, r);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(-1) == -2);
+ ASSERT(f(0) == -1);
+ ASSERT(f(1) == 0);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x7fffffff) == 0x7ffffffe);
+ ASSERT(f(0x80000000) == overflowed);
+ ASSERT(f(0x80000001) == 0x80000000);
+#else
+ ASSERT(f(0x7fffffffffffffff) == 0x7ffffffffffffffe);
+ ASSERT(f(0x8000000000000000) == overflowed);
+ ASSERT(f(0x8000000000000001) == 0x8000000000000000);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bxsubi_u.c b/libguile/lightning/tests/bxsubi_u.c
new file mode 100644
index 000000000..5d0972706
--- /dev/null
+++ b/libguile/lightning/tests/bxsubi_u.c
@@ -0,0 +1,38 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+ jit_reloc_t r = jit_bxsubi_u(j, JIT_R0, 1);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_patch_here(j, r);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(-1) == -2);
+ ASSERT(f(0) == overflowed);
+ ASSERT(f(1) == 0);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x80000000) == 0x7fffffff);
+#else
+ ASSERT(f(0x8000000000000000) == 0x7fffffffffffffff);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bxsubr.c b/libguile/lightning/tests/bxsubr.c
new file mode 100644
index 000000000..aa99db9c4
--- /dev/null
+++ b/libguile/lightning/tests/bxsubr.c
@@ -0,0 +1,48 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_reloc_t r = jit_bxsubr(j, JIT_R0, JIT_R1);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_patch_here(j, r);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(0, 1) == -1);
+ ASSERT(f(1, 1) == 0);
+ ASSERT(f(1, -1) == 2);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0xffffffff, 0xffffffff) == 0);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0x7fffffff, 1) == 0x7ffffffe);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0);
+ ASSERT(f(0x80000000, 0x7fffffff) == overflowed);
+ ASSERT(f(0x7fffffff, 0x80000000) == overflowed);
+ ASSERT(f(0x80000000, 0x80000000) == 0);
+#else
+ ASSERT(f(0x7fffffffffffffff, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == overflowed);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == overflowed);
+ ASSERT(f(0x8000000000000000, 0x8000000000000000) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/bxsubr_u.c b/libguile/lightning/tests/bxsubr_u.c
new file mode 100644
index 000000000..f476c247a
--- /dev/null
+++ b/libguile/lightning/tests/bxsubr_u.c
@@ -0,0 +1,47 @@
+#include "test.h"
+
+static const intmax_t overflowed = 0xcabba9e5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_reloc_t r = jit_bxsubr_u(j, JIT_R0, JIT_R1);
+ jit_movi(j, JIT_R0, overflowed);
+ jit_patch_here(j, r);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t, intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0, 0) == 0);
+ ASSERT(f(1, 1) == 0);
+ ASSERT(f(0, 1) == overflowed);
+ ASSERT(f(1, 0) == 1);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0xffffffff, 0xffffffff) == 0);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0x7fffffff, 1) == 0x7ffffffe);
+ ASSERT(f(0x7fffffff, 0x7fffffff) == 0);
+ ASSERT(f(0x7fffffff, 0x80000000) == overflowed);
+ ASSERT(f(0x80000000, 0x80000000) == 0);
+#else
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == overflowed);
+ ASSERT(f(0x8000000000000000, 0x8000000000000000) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/comr.c b/libguile/lightning/tests/comr.c
new file mode 100644
index 000000000..608c374c1
--- /dev/null
+++ b/libguile/lightning/tests/comr.c
@@ -0,0 +1,45 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_comr(j, JIT_R0, JIT_R0);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0) == 0xffffffff);
+ ASSERT(f(1) == 0xfffffffe);
+ ASSERT(f(0xffffffff) == 0);
+ ASSERT(f(0x80000000) == 0x7fffffff);
+ ASSERT(f(0x7fffffff) == 0x80000000);
+ ASSERT(f(0x80000001) == 0x7ffffffe);
+#else
+ ASSERT(f(0) == 0xffffffffffffffff);
+ ASSERT(f(1) == 0xfffffffffffffffe);
+ ASSERT(f(0xffffffff) == 0xffffffff00000000);
+ ASSERT(f(0x80000000) == 0xffffffff7fffffff);
+ ASSERT(f(0x7fffffff) == 0xffffffff80000000);
+ ASSERT(f(0x80000001) == 0xffffffff7ffffffe);
+ ASSERT(f(0xffffffffffffffff) == 0);
+ ASSERT(f(0x8000000000000000) == 0x7fffffffffffffff);
+ ASSERT(f(0x7fffffffffffffff) == 0x8000000000000000);
+ ASSERT(f(0x8000000000000001) == 0x7ffffffffffffffe);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/divr.c b/libguile/lightning/tests/divr.c
new file mode 100644
index 000000000..389a69d15
--- /dev/null
+++ b/libguile/lightning/tests/divr.c
@@ -0,0 +1,63 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_divr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff, 1) == 0x7fffffff);
+ ASSERT(f(1, 0x7fffffff) == 0);
+ ASSERT(f(0x80000000, 1) == 0x80000000);
+ ASSERT(f(1, 0x80000000) == 0);
+ ASSERT(f(0x7fffffff, 2) == 0x3fffffff);
+ ASSERT(f(2, 0x7fffffff) == 0);
+ ASSERT(f(2, 0x80000000) == 0);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0);
+ ASSERT(f(0, 0x7fffffff) == 0);
+ ASSERT(f(0xffffffff, 0xffffffff) == 1);
+#if __WORDSIZE == 32
+ ASSERT(f(0x80000000, 2) == 0xc0000000);
+ ASSERT(f(0x80000000, 0x7fffffff) == 0xffffffff);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0x80000001);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 0);
+#else
+ ASSERT(f(0x80000000, 2) == 0x40000000);
+ ASSERT(f(0x80000000, 0x7fffffff) == 1);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 2);
+ ASSERT(f(0x7fffffffffffffff, 1) == 0x7fffffffffffffff);
+ ASSERT(f(1, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0x8000000000000000, 1) == 0x8000000000000000);
+ ASSERT(f(1, 0x8000000000000000) == 0);
+ ASSERT(f(0x7fffffffffffffff, 2) == 0x3fffffffffffffff);
+ ASSERT(f(2, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0x8000000000000000, 2) == 0xc000000000000000);
+ ASSERT(f(2, 0x8000000000000000) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == 0);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == 0xffffffffffffffff);
+ ASSERT(f(0x7fffffffffffffff, 0xffffffffffffffff) == 0x8000000000000001);
+ ASSERT(f(0xffffffffffffffff, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 1);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/divr_d.c b/libguile/lightning/tests/divr_d.c
new file mode 100644
index 000000000..8597fdda0
--- /dev/null
+++ b/libguile/lightning/tests/divr_d.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_divr_d(j, JIT_F0, JIT_F0, JIT_F1);
+ jit_retr_d(j, JIT_F0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ double (*f)(double, double) = ret;
+ ASSERT(f(-0.5f, 0.5f) == -1.0f);
+ ASSERT(f(1.25f, 0.5f) == 2.5f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/divr_f.c b/libguile/lightning/tests/divr_f.c
new file mode 100644
index 000000000..dd2c63317
--- /dev/null
+++ b/libguile/lightning/tests/divr_f.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_divr_f(j, JIT_F0, JIT_F0, JIT_F1);
+ jit_retr_f(j, JIT_F0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ float (*f)(float, float) = ret;
+ ASSERT(f(-0.5f, 0.5f) == -1.0f);
+ ASSERT(f(1.25f, 0.5f) == 2.5f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/divr_u.c b/libguile/lightning/tests/divr_u.c
new file mode 100644
index 000000000..177c6098c
--- /dev/null
+++ b/libguile/lightning/tests/divr_u.c
@@ -0,0 +1,58 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_divr_u(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff, 1) == 0x7fffffff);
+ ASSERT(f(1, 0x7fffffff) == 0);
+ ASSERT(f(0x80000000, 1) == 0x80000000);
+ ASSERT(f(1, 0x80000000) == 0);
+ ASSERT(f(0x7fffffff, 2) == 0x3fffffff);
+ ASSERT(f(2, 0x7fffffff) == 0);
+ ASSERT(f(0x80000000, 2) == 0x40000000);
+ ASSERT(f(2, 0x80000000) == 0);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0);
+ ASSERT(f(0x80000000, 0x7fffffff) == 1);
+ ASSERT(f(0, 0x7fffffff) == 0);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 2);
+ ASSERT(f(0xffffffff, 0xffffffff) == 1);
+#if __WORDSIZE != 32
+ ASSERT(f(0x7fffffffffffffff, 1) == 0x7fffffffffffffff);
+ ASSERT(f(1, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0x8000000000000000, 1) == 0x8000000000000000);
+ ASSERT(f(1, 0x8000000000000000) == 0);
+ ASSERT(f(0x7fffffffffffffff, 2) == 0x3fffffffffffffff);
+ ASSERT(f(2, 0x7fffffffffffffff) == 0);
+ ASSERT(f(0x8000000000000000, 2) == 0x4000000000000000);
+ ASSERT(f(2, 0x8000000000000000) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == 0);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == 1);
+ ASSERT(f(0x7fffffffffffffff, 0xffffffffffffffff) == 0);
+ ASSERT(f(0xffffffffffffffff, 0x7fffffffffffffff) == 2);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 1);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_c.c b/libguile/lightning/tests/extr_c.c
new file mode 100644
index 000000000..f4390a789
--- /dev/null
+++ b/libguile/lightning/tests/extr_c.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_c(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(0xf) == 0xf);
+ ASSERT(f(0xff) == -1);
+ ASSERT(f(0xfff) == -1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_d.c b/libguile/lightning/tests/extr_d.c
new file mode 100644
index 000000000..35d0ab3b7
--- /dev/null
+++ b/libguile/lightning/tests/extr_d.c
@@ -0,0 +1,29 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_d(j, JIT_F0, JIT_R0);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0.0);
+ ASSERT(f(1) == 1.0);
+ ASSERT(f(-100) == -100.0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_d_f.c b/libguile/lightning/tests/extr_d_f.c
new file mode 100644
index 000000000..570bae814
--- /dev/null
+++ b/libguile/lightning/tests/extr_d_f.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_d_f(j, JIT_F0, JIT_F0);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(double) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == 0.0f);
+ ASSERT(f(0.5) == 0.5f);
+ ASSERT(f(1.0 / 0.0) == 1.0f / 0.0f);
+ ASSERT(f(1.25) == 1.25f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_f.c b/libguile/lightning/tests/extr_f.c
new file mode 100644
index 000000000..f16cd8ca3
--- /dev/null
+++ b/libguile/lightning/tests/extr_f.c
@@ -0,0 +1,29 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_f(j, JIT_F0, JIT_R0);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0.0f);
+ ASSERT(f(1) == 1.0f);
+ ASSERT(f(-100) == -100.0f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_f_d.c b/libguile/lightning/tests/extr_f_d.c
new file mode 100644
index 000000000..5e90be41b
--- /dev/null
+++ b/libguile/lightning/tests/extr_f_d.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_f_d(j, JIT_F0, JIT_F0);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(float) = jit_end(j, NULL);
+
+ ASSERT(f(0.0f) == 0.0);
+ ASSERT(f(0.5f) == 0.5);
+ ASSERT(f(1.0f / 0.0f) == 1.0 / 0.0);
+ ASSERT(f(1.25f) == 1.25);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_i.c b/libguile/lightning/tests/extr_i.c
new file mode 100644
index 000000000..a0ec07916
--- /dev/null
+++ b/libguile/lightning/tests/extr_i.c
@@ -0,0 +1,34 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_i(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(0xfffffff) == 0xfffffff);
+ ASSERT(f(0xffffffff) == -1);
+ ASSERT(f(0xfffffffff) == -1);
+ ASSERT(f(0xf00000000) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_s.c b/libguile/lightning/tests/extr_s.c
new file mode 100644
index 000000000..c12adb722
--- /dev/null
+++ b/libguile/lightning/tests/extr_s.c
@@ -0,0 +1,32 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_s(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(0xfff) == 0xfff);
+ ASSERT(f(0xffff) == -1);
+ ASSERT(f(0xfffff) == -1);
+ ASSERT(f(0xf0000) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_uc.c b/libguile/lightning/tests/extr_uc.c
new file mode 100644
index 000000000..fb700bd36
--- /dev/null
+++ b/libguile/lightning/tests/extr_uc.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_uc(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(0xff) == 0xff);
+ ASSERT(f(0xfff) == 0xff);
+ ASSERT(f(0xf00) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_ui.c b/libguile/lightning/tests/extr_ui.c
new file mode 100644
index 000000000..30706f093
--- /dev/null
+++ b/libguile/lightning/tests/extr_ui.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_ui(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(0xffffffff) == 0xffffffff);
+ ASSERT(f(0xfffffffff) == 0xffffffff);
+ ASSERT(f(0xf00000000) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/extr_us.c b/libguile/lightning/tests/extr_us.c
new file mode 100644
index 000000000..a10f6e916
--- /dev/null
+++ b/libguile/lightning/tests/extr_us.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_extr_us(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+ ASSERT(f(1) == 1);
+ ASSERT(f(0xffff) == 0xffff);
+ ASSERT(f(0xfffff) == 0xffff);
+ ASSERT(f(0xf0000) == 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/jmpi.c b/libguile/lightning/tests/jmpi.c
new file mode 100644
index 000000000..2f9213fec
--- /dev/null
+++ b/libguile/lightning/tests/jmpi.c
@@ -0,0 +1,21 @@
+#include "test.h"
+
+static int tail(void) { return 42; }
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_jmpi(j, tail);
+
+ int (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == 42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/jmpr.c b/libguile/lightning/tests/jmpr.c
new file mode 100644
index 000000000..32a771791
--- /dev/null
+++ b/libguile/lightning/tests/jmpr.c
@@ -0,0 +1,27 @@
+#include "test.h"
+
+static int tail(void) { return 42; }
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_jmpr(j, JIT_R0);
+
+ int (*f)(void*) = jit_end(j, NULL);
+ ASSERT(f(tail) == 42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldi_c.c b/libguile/lightning/tests/ldi_c.c
new file mode 100644
index 000000000..e08231596
--- /dev/null
+++ b/libguile/lightning/tests/ldi_c.c
@@ -0,0 +1,22 @@
+#include "test.h"
+
+static uint8_t data[] = { 0xff, 0x00, 0x42 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_ldi_c(j, JIT_R0, &data[0]);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == -1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldi_d.c b/libguile/lightning/tests/ldi_d.c
new file mode 100644
index 000000000..562e35d99
--- /dev/null
+++ b/libguile/lightning/tests/ldi_d.c
@@ -0,0 +1,22 @@
+#include "test.h"
+
+static double data = -1.5;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_ldi_d(j, JIT_F0, &data);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == data);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldi_f.c b/libguile/lightning/tests/ldi_f.c
new file mode 100644
index 000000000..ff9abd006
--- /dev/null
+++ b/libguile/lightning/tests/ldi_f.c
@@ -0,0 +1,22 @@
+#include "test.h"
+
+static float data = -1.5f;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_ldi_f(j, JIT_F0, &data);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == data);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldi_i.c b/libguile/lightning/tests/ldi_i.c
new file mode 100644
index 000000000..7270cbcf0
--- /dev/null
+++ b/libguile/lightning/tests/ldi_i.c
@@ -0,0 +1,22 @@
+#include "test.h"
+
+static uint32_t data = 0xffffffff;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_ldi_i(j, JIT_R0, &data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == -1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldi_l.c b/libguile/lightning/tests/ldi_l.c
new file mode 100644
index 000000000..299987049
--- /dev/null
+++ b/libguile/lightning/tests/ldi_l.c
@@ -0,0 +1,24 @@
+#include "test.h"
+
+static uint64_t data = 0xffffffffffffffff;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ jit_ldi_l(j, JIT_R0, &data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == -1);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldi_s.c b/libguile/lightning/tests/ldi_s.c
new file mode 100644
index 000000000..5713370fa
--- /dev/null
+++ b/libguile/lightning/tests/ldi_s.c
@@ -0,0 +1,22 @@
+#include "test.h"
+
+static uint16_t data = 0xffff;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_ldi_s(j, JIT_R0, &data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == -1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldi_uc.c b/libguile/lightning/tests/ldi_uc.c
new file mode 100644
index 000000000..a99af0eda
--- /dev/null
+++ b/libguile/lightning/tests/ldi_uc.c
@@ -0,0 +1,22 @@
+#include "test.h"
+
+static uint8_t data[] = { 0xff, 0x00, 0x42 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_ldi_uc(j, JIT_R0, data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == 0xff);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldi_ui.c b/libguile/lightning/tests/ldi_ui.c
new file mode 100644
index 000000000..c0458a7cb
--- /dev/null
+++ b/libguile/lightning/tests/ldi_ui.c
@@ -0,0 +1,24 @@
+#include "test.h"
+
+static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ jit_ldi_ui(j, JIT_R0, data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == data[0]);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldi_us.c b/libguile/lightning/tests/ldi_us.c
new file mode 100644
index 000000000..3c9ca5122
--- /dev/null
+++ b/libguile/lightning/tests/ldi_us.c
@@ -0,0 +1,22 @@
+#include "test.h"
+
+static uint16_t data[] = { 0xffff, 0x0000, 0x4242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_ldi_us(j, JIT_R0, data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == data[0]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldr_c.c b/libguile/lightning/tests/ldr_c.c
new file mode 100644
index 000000000..d653dea3b
--- /dev/null
+++ b/libguile/lightning/tests/ldr_c.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint8_t data[] = { 0xff, 0x00, 0x42 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldr_c(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*) = jit_end(j, NULL);
+
+ ASSERT(f(&data[0]) == -1);
+ ASSERT(f(&data[1]) == 0);
+ ASSERT(f(&data[2]) == 0x42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldr_d.c b/libguile/lightning/tests/ldr_d.c
new file mode 100644
index 000000000..8488fb30f
--- /dev/null
+++ b/libguile/lightning/tests/ldr_d.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static double data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldr_d(j, JIT_F0, JIT_R1);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(void*) = jit_end(j, NULL);
+
+ ASSERT(f(&data[0]) == data[0]);
+ ASSERT(f(&data[1]) == data[1]);
+ ASSERT(f(&data[2]) == data[2]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldr_f.c b/libguile/lightning/tests/ldr_f.c
new file mode 100644
index 000000000..160af85a4
--- /dev/null
+++ b/libguile/lightning/tests/ldr_f.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static float data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldr_f(j, JIT_F0, JIT_R1);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(void*) = jit_end(j, NULL);
+
+ ASSERT(f(&data[0]) == data[0]);
+ ASSERT(f(&data[1]) == data[1]);
+ ASSERT(f(&data[2]) == data[2]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldr_i.c b/libguile/lightning/tests/ldr_i.c
new file mode 100644
index 000000000..956d254ac
--- /dev/null
+++ b/libguile/lightning/tests/ldr_i.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldr_i(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*) = jit_end(j, NULL);
+
+ ASSERT(f(&data[0]) == -1);
+ ASSERT(f(&data[1]) == 0);
+ ASSERT(f(&data[2]) == 0x42424242);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldr_l.c b/libguile/lightning/tests/ldr_l.c
new file mode 100644
index 000000000..a1a554a57
--- /dev/null
+++ b/libguile/lightning/tests/ldr_l.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldr_l(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*) = jit_end(j, NULL);
+
+ ASSERT(f(&data[0]) == -1);
+ ASSERT(f(&data[1]) == 0);
+ ASSERT(f(&data[2]) == data[2]);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldr_s.c b/libguile/lightning/tests/ldr_s.c
new file mode 100644
index 000000000..4384c5e00
--- /dev/null
+++ b/libguile/lightning/tests/ldr_s.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint16_t data[] = { 0xffff, 0x0000, 0x4242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldr_s(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*) = jit_end(j, NULL);
+
+ ASSERT(f(&data[0]) == -1);
+ ASSERT(f(&data[1]) == 0);
+ ASSERT(f(&data[2]) == 0x4242);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldr_uc.c b/libguile/lightning/tests/ldr_uc.c
new file mode 100644
index 000000000..41dad79ca
--- /dev/null
+++ b/libguile/lightning/tests/ldr_uc.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint8_t data[] = { 0xff, 0x00, 0x42 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldr_uc(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*) = jit_end(j, NULL);
+
+ ASSERT(f(&data[0]) == 0xff);
+ ASSERT(f(&data[1]) == 0);
+ ASSERT(f(&data[2]) == 0x42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldr_ui.c b/libguile/lightning/tests/ldr_ui.c
new file mode 100644
index 000000000..7f684f685
--- /dev/null
+++ b/libguile/lightning/tests/ldr_ui.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldr_ui(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*) = jit_end(j, NULL);
+
+ ASSERT(f(&data[0]) == data[0]);
+ ASSERT(f(&data[1]) == data[1]);
+ ASSERT(f(&data[2]) == data[2]);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldr_us.c b/libguile/lightning/tests/ldr_us.c
new file mode 100644
index 000000000..e813d650d
--- /dev/null
+++ b/libguile/lightning/tests/ldr_us.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint16_t data[] = { 0xffff, 0x0000, 0x4242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldr_us(j, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*) = jit_end(j, NULL);
+
+ ASSERT(f(&data[0]) == data[0]);
+ ASSERT(f(&data[1]) == data[1]);
+ ASSERT(f(&data[2]) == data[2]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxi_c.c b/libguile/lightning/tests/ldxi_c.c
new file mode 100644
index 000000000..fd208cd58
--- /dev/null
+++ b/libguile/lightning/tests/ldxi_c.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint8_t data[] = { 0xff, 0x00, 0x42 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldxi_c(j, JIT_R0, JIT_R0, (uintptr_t)&data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == -1);
+ ASSERT(f(1) == 0);
+ ASSERT(f(2) == 0x42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxi_d.c b/libguile/lightning/tests/ldxi_d.c
new file mode 100644
index 000000000..61529233d
--- /dev/null
+++ b/libguile/lightning/tests/ldxi_d.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static double data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldxi_d(j, JIT_F0, JIT_R0, (uintptr_t)data);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == data[0]);
+ ASSERT(f(8) == data[1]);
+ ASSERT(f(16) == data[2]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxi_f.c b/libguile/lightning/tests/ldxi_f.c
new file mode 100644
index 000000000..47afc3bed
--- /dev/null
+++ b/libguile/lightning/tests/ldxi_f.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static float data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldxi_f(j, JIT_F0, JIT_R0, (uintptr_t)data);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == data[0]);
+ ASSERT(f(4) == data[1]);
+ ASSERT(f(8) == data[2]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxi_i.c b/libguile/lightning/tests/ldxi_i.c
new file mode 100644
index 000000000..005471838
--- /dev/null
+++ b/libguile/lightning/tests/ldxi_i.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldxi_i(j, JIT_R0, JIT_R0, (uintptr_t)data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == -1);
+ ASSERT(f(4) == 0);
+ ASSERT(f(8) == 0x42424242);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxi_l.c b/libguile/lightning/tests/ldxi_l.c
new file mode 100644
index 000000000..c9d07c4c9
--- /dev/null
+++ b/libguile/lightning/tests/ldxi_l.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldxi_l(j, JIT_R0, JIT_R0, (uintptr_t)data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == -1);
+ ASSERT(f(8) == 0);
+ ASSERT(f(16) == data[2]);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxi_s.c b/libguile/lightning/tests/ldxi_s.c
new file mode 100644
index 000000000..1639f6c22
--- /dev/null
+++ b/libguile/lightning/tests/ldxi_s.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint16_t data[] = { 0xffff, 0x0000, 0x4242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldxi_s(j, JIT_R0, JIT_R0, (uintptr_t)data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == -1);
+ ASSERT(f(2) == 0);
+ ASSERT(f(4) == 0x4242);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxi_uc.c b/libguile/lightning/tests/ldxi_uc.c
new file mode 100644
index 000000000..744768b99
--- /dev/null
+++ b/libguile/lightning/tests/ldxi_uc.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint8_t data[] = { 0xff, 0x00, 0x42 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldxi_uc(j, JIT_R0, JIT_R0, (uintptr_t)data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0xff);
+ ASSERT(f(1) == 0);
+ ASSERT(f(2) == 0x42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxi_ui.c b/libguile/lightning/tests/ldxi_ui.c
new file mode 100644
index 000000000..a25b1b998
--- /dev/null
+++ b/libguile/lightning/tests/ldxi_ui.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldxi_ui(j, JIT_R0, JIT_R0, (uintptr_t)data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == data[0]);
+ ASSERT(f(4) == data[1]);
+ ASSERT(f(8) == data[2]);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxi_us.c b/libguile/lightning/tests/ldxi_us.c
new file mode 100644
index 000000000..1523727ec
--- /dev/null
+++ b/libguile/lightning/tests/ldxi_us.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint16_t data[] = { 0xffff, 0x0000, 0x4242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ldxi_us(j, JIT_R0, JIT_R0, (uintptr_t)data);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == data[0]);
+ ASSERT(f(2) == data[1]);
+ ASSERT(f(4) == data[2]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxr_c.c b/libguile/lightning/tests/ldxr_c.c
new file mode 100644
index 000000000..238e441cf
--- /dev/null
+++ b/libguile/lightning/tests/ldxr_c.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint8_t data[] = { 0xff, 0x00, 0x42 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_ldxr_c(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(data, 0) == -1);
+ ASSERT(f(data, 1) == 0);
+ ASSERT(f(data, 2) == 0x42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxr_d.c b/libguile/lightning/tests/ldxr_d.c
new file mode 100644
index 000000000..b79363730
--- /dev/null
+++ b/libguile/lightning/tests/ldxr_d.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static double data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_ldxr_d(j, JIT_F0, JIT_R0, JIT_R1);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(void*, uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(data, 0) == data[0]);
+ ASSERT(f(data, 8) == data[1]);
+ ASSERT(f(data, 16) == data[2]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxr_f.c b/libguile/lightning/tests/ldxr_f.c
new file mode 100644
index 000000000..8c865a9b2
--- /dev/null
+++ b/libguile/lightning/tests/ldxr_f.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static float data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_ldxr_f(j, JIT_F0, JIT_R0, JIT_R1);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(void*, uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(data, 0) == data[0]);
+ ASSERT(f(data, 4) == data[1]);
+ ASSERT(f(data, 8) == data[2]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxr_i.c b/libguile/lightning/tests/ldxr_i.c
new file mode 100644
index 000000000..fb003204b
--- /dev/null
+++ b/libguile/lightning/tests/ldxr_i.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_ldxr_i(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(data, 0) == -1);
+ ASSERT(f(data, 4) == 0);
+ ASSERT(f(data, 8) == 0x42424242);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxr_l.c b/libguile/lightning/tests/ldxr_l.c
new file mode 100644
index 000000000..f139e8e00
--- /dev/null
+++ b/libguile/lightning/tests/ldxr_l.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static uint64_t data[] = { 0xffffffffffffffff, 0, 0x4242424212345678 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_ldxr_l(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(data, 0) == -1);
+ ASSERT(f(data, 8) == 0);
+ ASSERT(f(data, 16) == data[2]);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxr_s.c b/libguile/lightning/tests/ldxr_s.c
new file mode 100644
index 000000000..8ba44c1ff
--- /dev/null
+++ b/libguile/lightning/tests/ldxr_s.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint16_t data[] = { 0xffff, 0x0000, 0x4242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_ldxr_s(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(data, 0) == -1);
+ ASSERT(f(data, 2) == 0);
+ ASSERT(f(data, 4) == 0x4242);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxr_uc.c b/libguile/lightning/tests/ldxr_uc.c
new file mode 100644
index 000000000..b6a3cb142
--- /dev/null
+++ b/libguile/lightning/tests/ldxr_uc.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint8_t data[] = { 0xff, 0x00, 0x42 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_ldxr_uc(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(data, 0) == 0xff);
+ ASSERT(f(data, 1) == 0);
+ ASSERT(f(data, 2) == 0x42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxr_ui.c b/libguile/lightning/tests/ldxr_ui.c
new file mode 100644
index 000000000..04fcb7d77
--- /dev/null
+++ b/libguile/lightning/tests/ldxr_ui.c
@@ -0,0 +1,33 @@
+#include "test.h"
+
+static uint32_t data[] = { 0xffffffff, 0x00000000, 0x42424242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_ldxr_ui(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(data, 0) == data[0]);
+ ASSERT(f(data, 4) == data[1]);
+ ASSERT(f(data, 8) == data[2]);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ldxr_us.c b/libguile/lightning/tests/ldxr_us.c
new file mode 100644
index 000000000..12c4d9ca1
--- /dev/null
+++ b/libguile/lightning/tests/ldxr_us.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static uint16_t data[] = { 0xffff, 0x0000, 0x4242 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_ldxr_us(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ uintmax_t (*f)(void*, uintmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(data, 0) == data[0]);
+ ASSERT(f(data, 2) == data[1]);
+ ASSERT(f(data, 4) == data[2]);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/lshi.c b/libguile/lightning/tests/lshi.c
new file mode 100644
index 000000000..41c079a33
--- /dev/null
+++ b/libguile/lightning/tests/lshi.c
@@ -0,0 +1,31 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_lshi(j, JIT_R0, JIT_R0, 31);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+#if __WORDSIZE == 32
+ ASSERT(f(-0x7f) == 0x80000000);
+#else
+ ASSERT(f(-0x7f) == 0xffffffc080000000);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/lshr.c b/libguile/lightning/tests/lshr.c
new file mode 100644
index 000000000..80edae3b3
--- /dev/null
+++ b/libguile/lightning/tests/lshr.c
@@ -0,0 +1,72 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_lshr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0x7f, 1) == 0xfe);
+ ASSERT(f(0x7fff, 2) == 0x1fffc);
+ ASSERT(f(0x81, 16) == 0x810000);
+ ASSERT(f(0xff, 15) == 0x7f8000);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+#if __WORDSIZE == 32
+ ASSERT(f(0xffffffff, 8) == 0xffffff00);
+ ASSERT(f(0x7fffffff, 3) == 0xfffffff8);
+ ASSERT(f(-0x7f, 31) == 0x80000000);
+ ASSERT(f(-0x7fff, 30) == 0x40000000);
+ ASSERT(f(-0x7fffffff, 29) == 0x20000000);
+ ASSERT(f(0x80000001, 28) == 0x10000000);
+ ASSERT(f(0x8001, 17) == 0x20000);
+ ASSERT(f(0x80000001, 18) == 0x40000);
+ ASSERT(f(-0xffff, 24) == 0x1000000);
+#else
+ ASSERT(f(0xffffffff, 8) == 0xffffffff00);
+ ASSERT(f(0x7fffffff, 3) == 0x3fffffff8);
+ ASSERT(f(-0x7f, 31) == 0xffffffc080000000);
+ ASSERT(f(-0x7fff, 30) == 0xffffe00040000000);
+ ASSERT(f(-0x7fffffff, 29) == 0xf000000020000000);
+ ASSERT(f(0x80000001, 28) == 0x800000010000000);
+ ASSERT(f(0x8001, 17) == 0x100020000);
+ ASSERT(f(0x80000001, 18) == 0x2000000040000);
+ ASSERT(f(-0xffff, 24) == 0xffffff0001000000);
+ ASSERT(f(0x7f, 33) == 0xfe00000000);
+ ASSERT(f(0x7ffff, 34) == 0x1ffffc00000000);
+ ASSERT(f(0x7fffffff, 35) == 0xfffffff800000000);
+ ASSERT(f(-0x7f, 63) == 0x8000000000000000);
+ ASSERT(f(-0x7fff, 62) == 0x4000000000000000);
+ ASSERT(f(-0x7fffffff, 61) == 0x2000000000000000);
+ ASSERT(f(0x80000001, 60) == 0x1000000000000000);
+ ASSERT(f(0x81, 48) == 0x81000000000000);
+ ASSERT(f(0x8001, 49) == 0x2000000000000);
+ ASSERT(f(0x80000001, 40) == 0x10000000000);
+ ASSERT(f(0xff, 47) == 0x7f800000000000);
+ ASSERT(f(0xffff0001, 56) == 0x100000000000000);
+ ASSERT(f(0xffffffff, 40) == 0xffffff0000000000);
+ ASSERT(f(0x7fffffffff, 33) == 0xfffffffe00000000);
+ ASSERT(f(-0x7fffffffff, 63) == 0x8000000000000000);
+ ASSERT(f(0x8000000001, 48) == 0x1000000000000);
+ ASSERT(f(0xffffffffff, 47) == 0xffff800000000000);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/mov_addr.c b/libguile/lightning/tests/mov_addr.c
new file mode 100644
index 000000000..0d7d9e071
--- /dev/null
+++ b/libguile/lightning/tests/mov_addr.c
@@ -0,0 +1,23 @@
+#include "test.h"
+
+static uint64_t thing = 0x123456789abcdef0;
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_patch_there(j, jit_mov_addr(j, JIT_R0), &thing);
+ jit_retr(j, JIT_R0);
+
+ void* (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == &thing);
+ ASSERT(*(uint64_t*)f() == thing);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/movi_d.c b/libguile/lightning/tests/movi_d.c
new file mode 100644
index 000000000..58ec949fc
--- /dev/null
+++ b/libguile/lightning/tests/movi_d.c
@@ -0,0 +1,20 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_movi_d(j, JIT_F0, 3.14159);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == 3.14159);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/movi_f.c b/libguile/lightning/tests/movi_f.c
new file mode 100644
index 000000000..0b92f9242
--- /dev/null
+++ b/libguile/lightning/tests/movi_f.c
@@ -0,0 +1,20 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ jit_movi_f(j, JIT_F0, 3.14159f);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(void) = jit_end(j, NULL);
+
+ ASSERT(f() == 3.14159f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/mulr.c b/libguile/lightning/tests/mulr.c
new file mode 100644
index 000000000..4cd28e618
--- /dev/null
+++ b/libguile/lightning/tests/mulr.c
@@ -0,0 +1,67 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_mulr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff, 1) == 0x7fffffff);
+ ASSERT(f(1, 0x7fffffff) == 0x7fffffff);
+ ASSERT(f(0x80000000, 1) == 0x80000000);
+ ASSERT(f(1, 0x80000000) == 0x80000000);
+ ASSERT(f(0x7fffffff, 2) == 0xfffffffe);
+ ASSERT(f(2, 0x7fffffff) == 0xfffffffe);
+ ASSERT(f(0x7fffffff, 0) == 0);
+ ASSERT(f(0, 0x7fffffff) == 0);
+#if __WORDSIZE == 32
+ ASSERT(f(0x80000000, 2) == 0);
+ ASSERT(f(2, 0x80000000) == 0);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0x80000000);
+ ASSERT(f(0x80000000, 0x7fffffff) == 0x80000000);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0x80000001);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 0x80000001);
+ ASSERT(f(0xffffffff, 0xffffffff) == 1);
+#else
+ ASSERT(f(0x80000000, 2) == 0x100000000);
+ ASSERT(f(2, 0x80000000) == 0x100000000);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0x3fffffff80000000);
+ ASSERT(f(0x80000000, 0x7fffffff) == 0x3fffffff80000000);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0x7ffffffe80000001);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 0x7ffffffe80000001);
+ ASSERT(f(0xffffffff, 0xffffffff) == 0xfffffffe00000001);
+ ASSERT(f(0x7fffffffffffffff, 1) == 0x7fffffffffffffff);
+ ASSERT(f(1, 0x7fffffffffffffff) == 0x7fffffffffffffff);
+ ASSERT(f(0x8000000000000000, 1) == 0x8000000000000000);
+ ASSERT(f(1, 0x8000000000000000) == 0x8000000000000000);
+ ASSERT(f(0x7fffffffffffffff, 2) == 0xfffffffffffffffe);
+ ASSERT(f(2, 0x7fffffffffffffff) == 0xfffffffffffffffe);
+ ASSERT(f(0x8000000000000000, 2) == 0);
+ ASSERT(f(2, 0x8000000000000000) == 0);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == 0x8000000000000000);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == 0x8000000000000000);
+ ASSERT(f(0x7fffffffffffffff, 0xffffffffffffffff) == 0x8000000000000001);
+ ASSERT(f(0xffffffffffffffff, 0x7fffffffffffffff) == 0x8000000000000001);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 1);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/mulr_d.c b/libguile/lightning/tests/mulr_d.c
new file mode 100644
index 000000000..0b4fa18ad
--- /dev/null
+++ b/libguile/lightning/tests/mulr_d.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_mulr_d(j, JIT_F0, JIT_F0, JIT_F1);
+ jit_retr_d(j, JIT_F0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ double (*f)(double, double) = ret;
+ ASSERT(f(-0.5, 0.5) == -0.25);
+ ASSERT(f(0.25, 0.75) == 0.1875);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/mulr_f.c b/libguile/lightning/tests/mulr_f.c
new file mode 100644
index 000000000..ed716fa5f
--- /dev/null
+++ b/libguile/lightning/tests/mulr_f.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_mulr_f(j, JIT_F0, JIT_F0, JIT_F1);
+ jit_retr_f(j, JIT_F0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ float (*f)(float, float) = ret;
+ ASSERT(f(-0.5f, 0.5f) == -0.25f);
+ ASSERT(f(0.25f, 0.75f) == 0.1875f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/negr.c b/libguile/lightning/tests/negr.c
new file mode 100644
index 000000000..5a5c5c1d2
--- /dev/null
+++ b/libguile/lightning/tests/negr.c
@@ -0,0 +1,43 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_negr(j, JIT_R0, JIT_R0);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+ ASSERT(f(0) == 0);
+#if __WORDSIZE == 32
+ ASSERT(f(1) == 0xffffffff);
+ ASSERT(f(0xffffffff) == 1);
+ ASSERT(f(0x80000000) == 0x80000000);
+ ASSERT(f(0x7fffffff) == 0x80000001);
+ ASSERT(f(0x80000001) == 0x7fffffff);
+#else
+ ASSERT(f(1) == 0xffffffffffffffff);
+ ASSERT(f(0xffffffff) == 0xffffffff00000001);
+ ASSERT(f(0x80000000) == 0xffffffff80000000);
+ ASSERT(f(0x7fffffff) == 0xffffffff80000001);
+ ASSERT(f(0x80000001) == 0xffffffff7fffffff);
+ ASSERT(f(0xffffffffffffffff) == 1);
+ ASSERT(f(0x8000000000000000) == 0x8000000000000000);
+ ASSERT(f(0x7fffffffffffffff) == 0x8000000000000001);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/negr_d.c b/libguile/lightning/tests/negr_d.c
new file mode 100644
index 000000000..1af229be6
--- /dev/null
+++ b/libguile/lightning/tests/negr_d.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_negr_d(j, JIT_F0, JIT_F0);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(double) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == -0.0);
+ ASSERT(f(0.5) == -0.5);
+ ASSERT(f(1.0 / 0.0) == -1.0 / 0.0);
+ ASSERT(f(-1.25) == 1.25);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/negr_f.c b/libguile/lightning/tests/negr_f.c
new file mode 100644
index 000000000..cdc1ccdcc
--- /dev/null
+++ b/libguile/lightning/tests/negr_f.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_negr_f(j, JIT_F0, JIT_F0);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(float) = jit_end(j, NULL);
+
+ ASSERT(f(0.0f) == -0.0f);
+ ASSERT(f(0.5f) == -0.5f);
+ ASSERT(f(1.0f / 0.0f) == -1.0f / 0.0f);
+ ASSERT(f(-1.25f) == 1.25f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/nop.c b/libguile/lightning/tests/nop.c
new file mode 100644
index 000000000..16c5c8a7e
--- /dev/null
+++ b/libguile/lightning/tests/nop.c
@@ -0,0 +1,24 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ size_t total = 0;
+ char *start = jit_address(j);
+ for (size_t i = 1; i < 10; total += i, i++)
+ jit_nop(j, i);
+ char *end = jit_address(j);
+ ASSERT(end - start == total);
+ jit_reti(j, 42);
+
+ intmax_t (*f)(void) = jit_end(j, NULL);
+ ASSERT(f() == 42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/ori.c b/libguile/lightning/tests/ori.c
new file mode 100644
index 000000000..59e91b95a
--- /dev/null
+++ b/libguile/lightning/tests/ori.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_ori(j, JIT_R0, JIT_R0, 1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff) == 0x7fffffff);
+ ASSERT(f(0x80000000) == 0x80000001);
+#if __WORDSIZE == 64
+ ASSERT(f(0x7fffffffffffffff) == 0x7fffffffffffffff);
+ ASSERT(f(0x8000000000000000) == 0x8000000000000001);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/orr.c b/libguile/lightning/tests/orr.c
new file mode 100644
index 000000000..6c98544b4
--- /dev/null
+++ b/libguile/lightning/tests/orr.c
@@ -0,0 +1,51 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_orr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff, 1) == 0x7fffffff);
+ ASSERT(f(1, 0x7fffffff) == 0x7fffffff);
+ ASSERT(f(0x80000000, 1) == 0x80000001);
+ ASSERT(f(1, 0x80000000) == 0x80000001);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff);
+ ASSERT(f(0x80000000, 0x7fffffff) == 0xffffffff);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0xffffffff);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 0xffffffff);
+ ASSERT(f(0xffffffff, 0xffffffff) == 0xffffffff);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0, 0x7fffffff) == 0x7fffffff);
+#if __WORDSIZE == 64
+ ASSERT(f(0x7fffffffffffffff, 1) == 0x7fffffffffffffff);
+ ASSERT(f(1, 0x7fffffffffffffff) == 0x7fffffffffffffff);
+ ASSERT(f(0x8000000000000000, 1) == 0x8000000000000001);
+ ASSERT(f(1, 0x8000000000000000) == 0x8000000000000001);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == 0xffffffffffffffff);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == 0xffffffffffffffff);
+ ASSERT(f(0x7fffffffffffffff, 0xffffffffffffffff) == 0xffffffffffffffff);
+ ASSERT(f(0xffffffffffffffff, 0x7fffffffffffffff) == 0xffffffffffffffff);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 0xffffffffffffffff);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/pushpop.c b/libguile/lightning/tests/pushpop.c
new file mode 100644
index 000000000..9a464c3ed
--- /dev/null
+++ b/libguile/lightning/tests/pushpop.c
@@ -0,0 +1,44 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ const jit_gpr_t gpr[] = { JIT_R0, JIT_R1, JIT_R2, JIT_V0, JIT_V1, JIT_V2 };
+ const jit_fpr_t fpr[] = { JIT_F0, JIT_F1, JIT_F2 };
+
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ for (int i=0; i<6; i++)
+ jit_pushr(j, gpr[i]);
+ for (int i=0; i<3; i++)
+ jit_pushr_d(j, fpr[i]);
+
+ // Stomple registers.
+ for (int i=0; i<6; i++)
+ jit_movi(j, gpr[i], 0xcabba9e5);
+ for (int i=0; i<3; i++)
+ jit_extr_d(j, fpr[i], gpr[i]);
+
+ for (int i=2; i>=0; i--)
+ jit_popr_d(j, fpr[i]);
+ for (int i=5; i>=0; i--)
+ jit_popr(j, gpr[i]);
+
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+ ASSERT(f(42) == 42);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/qdivr.c b/libguile/lightning/tests/qdivr.c
new file mode 100644
index 000000000..37871f375
--- /dev/null
+++ b/libguile/lightning/tests/qdivr.c
@@ -0,0 +1,69 @@
+#include "test.h"
+
+static void
+maybe_save(jit_state_t *j, jit_gpr_t reg)
+{
+ if (jit_class(reg.bits) & jit_class_sav)
+ jit_pushr(j, reg);
+}
+
+static void
+maybe_restore(jit_state_t *j, jit_gpr_t reg)
+{
+ if (jit_class(reg.bits) & jit_class_sav)
+ jit_popr(j, reg);
+}
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = {
+ JIT_ARG_ABI_POINTER, JIT_ARG_ABI_POINTER,
+ JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX
+ };
+ jit_arg_t args[4];
+ const jit_anyreg_t regs[] = {
+ { .gpr=JIT_R0 }, { .gpr=JIT_R1 },
+ { .gpr=JIT_R2 }, { .gpr=JIT_V0 }
+ };
+
+ maybe_save(j, JIT_V0);
+ maybe_save(j, JIT_V1);
+ maybe_save(j, JIT_V2);
+
+ jit_receive(j, 4, abi, args);
+ jit_load_args(j, 4, abi, args, regs);
+
+ jit_qdivr(j, JIT_V1, JIT_V2, JIT_R2, JIT_V0);
+ jit_str(j, JIT_R0, JIT_V1);
+ jit_str(j, JIT_R1, JIT_V2);
+
+ maybe_restore(j, JIT_V2);
+ maybe_restore(j, JIT_V1);
+ maybe_restore(j, JIT_V0);
+
+ jit_ret(j);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ void (*f)(intmax_t*, intmax_t*, intmax_t, intmax_t) = ret;
+
+#define QDIV(a, b, c, d) \
+ do { \
+ intmax_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \
+ } while (0)
+
+ QDIV(10, 3, 3, 1);
+ QDIV(-33, 9, -3, -6);
+ QDIV(-41, -7, 5, -6);
+ QDIV(65536, 4096, 16, 0);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/qdivr_u.c b/libguile/lightning/tests/qdivr_u.c
new file mode 100644
index 000000000..84f101f56
--- /dev/null
+++ b/libguile/lightning/tests/qdivr_u.c
@@ -0,0 +1,67 @@
+#include "test.h"
+
+static void
+maybe_save(jit_state_t *j, jit_gpr_t reg)
+{
+ if (jit_class(reg.bits) & jit_class_sav)
+ jit_pushr(j, reg);
+}
+
+static void
+maybe_restore(jit_state_t *j, jit_gpr_t reg)
+{
+ if (jit_class(reg.bits) & jit_class_sav)
+ jit_popr(j, reg);
+}
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = {
+ JIT_ARG_ABI_POINTER, JIT_ARG_ABI_POINTER,
+ JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX
+ };
+ jit_arg_t args[4];
+ const jit_anyreg_t regs[] = {
+ { .gpr=JIT_R0 }, { .gpr=JIT_R1 },
+ { .gpr=JIT_R2 }, { .gpr=JIT_V0 }
+ };
+
+ maybe_save(j, JIT_V0);
+ maybe_save(j, JIT_V1);
+ maybe_save(j, JIT_V2);
+
+ jit_receive(j, 4, abi, args);
+ jit_load_args(j, 4, abi, args, regs);
+
+ jit_qdivr_u(j, JIT_V1, JIT_V2, JIT_R2, JIT_V0);
+ jit_str(j, JIT_R0, JIT_V1);
+ jit_str(j, JIT_R1, JIT_V2);
+
+ maybe_restore(j, JIT_V2);
+ maybe_restore(j, JIT_V1);
+ maybe_restore(j, JIT_V0);
+
+ jit_ret(j);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ void (*f)(intmax_t*, intmax_t*, intmax_t, intmax_t) = ret;
+
+#define QDIV(a, b, c, d) \
+ do { \
+ intmax_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \
+ } while (0)
+
+ QDIV(-1, -2, 1, 1);
+ QDIV(-2, -5, 1, 3);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/qmulr.c b/libguile/lightning/tests/qmulr.c
new file mode 100644
index 000000000..7e3d4b0e8
--- /dev/null
+++ b/libguile/lightning/tests/qmulr.c
@@ -0,0 +1,82 @@
+#include "test.h"
+
+static void
+maybe_save(jit_state_t *j, jit_gpr_t reg)
+{
+ if (jit_class(reg.bits) & jit_class_sav)
+ jit_pushr(j, reg);
+}
+
+static void
+maybe_restore(jit_state_t *j, jit_gpr_t reg)
+{
+ if (jit_class(reg.bits) & jit_class_sav)
+ jit_popr(j, reg);
+}
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = {
+ JIT_ARG_ABI_POINTER, JIT_ARG_ABI_POINTER,
+ JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX
+ };
+ jit_arg_t args[4];
+ const jit_anyreg_t regs[] = {
+ { .gpr=JIT_R0 }, { .gpr=JIT_R1 },
+ { .gpr=JIT_R2 }, { .gpr=JIT_V0 }
+ };
+
+ maybe_save(j, JIT_V0);
+ maybe_save(j, JIT_V1);
+ maybe_save(j, JIT_V2);
+
+ jit_receive(j, 4, abi, args);
+ jit_load_args(j, 4, abi, args, regs);
+
+ jit_qmulr(j, JIT_V1, JIT_V2, JIT_R2, JIT_V0);
+ jit_str(j, JIT_R0, JIT_V1);
+ jit_str(j, JIT_R1, JIT_V2);
+
+ maybe_restore(j, JIT_V2);
+ maybe_restore(j, JIT_V1);
+ maybe_restore(j, JIT_V0);
+
+ jit_ret(j);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ void (*f)(intmax_t*, intmax_t*, intmax_t, intmax_t) = ret;
+
+#define QMUL(a, b, c, d) \
+ do { \
+ intmax_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \
+ } while (0)
+
+ QMUL(-2, -1, 2, 0);
+ QMUL(0, -1, 0, 0);
+ QMUL(-1, 0, 0, 0);
+ QMUL(1, -1, -1, -1);
+#if __WORDSIZE == 32
+ QMUL(0x7ffff, 0x7ffff, 0xfff00001, 0x3f);
+ QMUL(0x80000000, -2, 0, 1);
+ QMUL(0x80000000, 2, 0, -1);
+ QMUL(0x80000001, 3, 0x80000003, -2);
+ QMUL(0x80000001, -3, 0x7ffffffd, 1);
+#else
+ QMUL(0x7ffffffff, 0x7ffffffff, 0xfffffff000000001, 0x3f);
+ QMUL(0x8000000000000000, -2, 0, 1);
+ QMUL(0x8000000000000000, 2, 0, -1);
+ QMUL(0x8000000000000001, 3, 0x8000000000000003, -2);
+ QMUL(0x8000000000000001, -3, 0x7ffffffffffffffd, 1);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/qmulr_u.c b/libguile/lightning/tests/qmulr_u.c
new file mode 100644
index 000000000..6ac5cd057
--- /dev/null
+++ b/libguile/lightning/tests/qmulr_u.c
@@ -0,0 +1,70 @@
+#include "test.h"
+
+static void
+maybe_save(jit_state_t *j, jit_gpr_t reg)
+{
+ if (jit_class(reg.bits) & jit_class_sav)
+ jit_pushr(j, reg);
+}
+
+static void
+maybe_restore(jit_state_t *j, jit_gpr_t reg)
+{
+ if (jit_class(reg.bits) & jit_class_sav)
+ jit_popr(j, reg);
+}
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = {
+ JIT_ARG_ABI_POINTER, JIT_ARG_ABI_POINTER,
+ JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX
+ };
+ jit_arg_t args[4];
+ const jit_anyreg_t regs[] = {
+ { .gpr=JIT_R0 }, { .gpr=JIT_R1 },
+ { .gpr=JIT_R2 }, { .gpr=JIT_V0 }
+ };
+
+ maybe_save(j, JIT_V0);
+ maybe_save(j, JIT_V1);
+ maybe_save(j, JIT_V2);
+
+ jit_receive(j, 4, abi, args);
+ jit_load_args(j, 4, abi, args, regs);
+
+ jit_qmulr_u(j, JIT_V1, JIT_V2, JIT_R2, JIT_V0);
+ jit_str(j, JIT_R0, JIT_V1);
+ jit_str(j, JIT_R1, JIT_V2);
+
+ maybe_restore(j, JIT_V2);
+ maybe_restore(j, JIT_V1);
+ maybe_restore(j, JIT_V0);
+
+ jit_ret(j);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ void (*f)(intmax_t*, intmax_t*, intmax_t, intmax_t) = ret;
+
+#define UQMUL(a, b, c, d) \
+ do { \
+ intmax_t C = 0, D = 0; f(&C, &D, a, b); ASSERT(C == c); ASSERT(D == d); \
+ } while (0)
+
+#if __WORDSIZE == 32
+ UQMUL(0xffffff, 0xffffff, 0xfe000001, 0xffff);
+#else
+ UQMUL(0xffffffffff, 0xffffffffff, 0xfffffe0000000001, 0xffff);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/remr.c b/libguile/lightning/tests/remr.c
new file mode 100644
index 000000000..a06e2407f
--- /dev/null
+++ b/libguile/lightning/tests/remr.c
@@ -0,0 +1,63 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_remr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff, 1) == 0);
+ ASSERT(f(1, 0x7fffffff) == 1);
+ ASSERT(f(0x80000000, 1) == 0);
+ ASSERT(f(1, 0x80000000) == 1);
+ ASSERT(f(0x7fffffff, 2) == 1);
+ ASSERT(f(2, 0x7fffffff) == 2);
+ ASSERT(f(0x80000000, 2) == 0);
+ ASSERT(f(2, 0x80000000) == 2);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0x7fffffff);
+ ASSERT(f(0, 0x7fffffff) == 0);
+ ASSERT(f(0xffffffff, 0xffffffff) == 0);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x80000000, 0x7fffffff) == 0xffffffff);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 0xffffffff);
+#else
+ ASSERT(f(0x80000000, 0x7fffffff) == 1);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0x7fffffff);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 1);
+ ASSERT(f(0x7fffffffffffffff, 1) == 0);
+ ASSERT(f(1, 0x7fffffffffffffff) == 1);
+ ASSERT(f(0x8000000000000000, 1) == 0);
+ ASSERT(f(1, 0x8000000000000000) == 1);
+ ASSERT(f(0x7fffffffffffffff, 2) == 1);
+ ASSERT(f(2, 0x7fffffffffffffff) == 2);
+ ASSERT(f(0x8000000000000000, 2) == 0);
+ ASSERT(f(2, 0x8000000000000000) == 2);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == 0x7fffffffffffffff);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == 0xffffffffffffffff);
+ ASSERT(f(0x7fffffffffffffff, 0xffffffffffffffff) == 0);
+ ASSERT(f(0xffffffffffffffff, 0x7fffffffffffffff) == 0xffffffffffffffff);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/remr_u.c b/libguile/lightning/tests/remr_u.c
new file mode 100644
index 000000000..025018142
--- /dev/null
+++ b/libguile/lightning/tests/remr_u.c
@@ -0,0 +1,59 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_remr_u(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff, 1) == 0);
+ ASSERT(f(1, 0x7fffffff) == 1);
+ ASSERT(f(0x80000000, 1) == 0);
+ ASSERT(f(1, 0x80000000) == 1);
+ ASSERT(f(0x7fffffff, 2) == 1);
+ ASSERT(f(2, 0x7fffffff) == 2);
+ ASSERT(f(0x80000000, 2) == 0);
+ ASSERT(f(2, 0x80000000) == 2);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0x7fffffff);
+ ASSERT(f(0x80000000, 0x7fffffff) == 1);
+ ASSERT(f(0, 0x7fffffff) == 0);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0x7fffffff);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 1);
+ ASSERT(f(0xffffffff, 0xffffffff) == 0);
+
+#if __WORDSIZE != 32
+ ASSERT(f(0x7fffffffffffffff, 1) == 0);
+ ASSERT(f(1, 0x7fffffffffffffff) == 1);
+ ASSERT(f(0x8000000000000000, 1) == 0);
+ ASSERT(f(1, 0x8000000000000000) == 1);
+ ASSERT(f(0x7fffffffffffffff, 2) == 1);
+ ASSERT(f(2, 0x7fffffffffffffff) == 2);
+ ASSERT(f(0x8000000000000000, 2) == 0);
+ ASSERT(f(2, 0x8000000000000000) == 2);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == 0x7fffffffffffffff);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == 1);
+ ASSERT(f(0x7fffffffffffffff, 0xffffffffffffffff) == 0x7fffffffffffffff);
+ ASSERT(f(0xffffffffffffffff, 0x7fffffffffffffff) == 1);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/rshi.c b/libguile/lightning/tests/rshi.c
new file mode 100644
index 000000000..0f2cdfda7
--- /dev/null
+++ b/libguile/lightning/tests/rshi.c
@@ -0,0 +1,32 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_rshi(j, JIT_R0, JIT_R0, 31);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x80000000) == -1);
+#else
+ ASSERT(f(0x80000000) == 1);
+ ASSERT(f(0x8000000000000000) == 0xffffffff00000000);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/rshi_u.c b/libguile/lightning/tests/rshi_u.c
new file mode 100644
index 000000000..141c41c09
--- /dev/null
+++ b/libguile/lightning/tests/rshi_u.c
@@ -0,0 +1,32 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_rshi_u(j, JIT_R0, JIT_R0, 31);
+ jit_retr(j, JIT_R0);
+
+ intmax_t (*f)(intmax_t) = jit_end(j, NULL);
+
+#if __WORDSIZE == 32
+ ASSERT(f(0x80000000) == 1);
+#else
+ ASSERT(f(0x80000000) == 1);
+ ASSERT(f(0x8000000000000000) == 0x100000000);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/rshr.c b/libguile/lightning/tests/rshr.c
new file mode 100644
index 000000000..ef702b630
--- /dev/null
+++ b/libguile/lightning/tests/rshr.c
@@ -0,0 +1,66 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_rshr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0xfe, 1) == 0x7f);
+ ASSERT(f(0x1fffc, 2) == 0x7fff);
+ ASSERT(f(0x40000000, 30) == 1);
+ ASSERT(f(0x20000000, 29) == 1);
+ ASSERT(f(0x10000000, 28) == 1);
+ ASSERT(f(0x810000, 16) == 0x81);
+ ASSERT(f(0x20000, 17) == 1);
+ ASSERT(f(0x40000, 18) == 1);
+ ASSERT(f(0x7f8000, 15) == 0xff);
+ ASSERT(f(0x1000000, 24) == 1);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+#if __WORDSIZE == 32
+ ASSERT(f(0xfffffff8, 3) == 0xffffffff);
+ ASSERT(f(0x80000000, 31) == 0xffffffff);
+ ASSERT(f(0xffffff00, 8) == 0xffffffff);
+#else
+ ASSERT(f(0x3fffffff8, 3) == 0x7fffffff);
+ ASSERT(f(0xffffffc080000000, 31) == 0xffffffffffffff81);
+ ASSERT(f(0xffffff00, 8) == 0xffffff);
+ ASSERT(f(0xfe00000000, 33) == 0x7f);
+ ASSERT(f(0x1ffffc00000000, 34) == 0x7ffff);
+ ASSERT(f(0xfffffff800000000, 29) == 0xffffffffffffffc0);
+ ASSERT(f(0x8000000000000000, 63) == 0xffffffffffffffff);
+ ASSERT(f(0x4000000000000000, 62) == 1);
+ ASSERT(f(0x2000000000000000, 61) == 1);
+ ASSERT(f(0x1000000000000000, 60) == 1);
+ ASSERT(f(0x81000000000000, 48) == 0x81);
+ ASSERT(f(0x2000000000000, 49) == 1);
+ ASSERT(f(0x10000000000, 40) == 1);
+ ASSERT(f(0x7f800000000000, 47) == 0xff);
+ ASSERT(f(0x100000000000000, 56) == 1);
+ ASSERT(f(0xffffff0000000000, 40) == 0xffffffffffffffff);
+ ASSERT(f(0xfffffffe00000000, 33) == 0xffffffffffffffff);
+ ASSERT(f(0x8000000000000001, 63) == 0xffffffffffffffff);
+ ASSERT(f(0x1000000000000, 48) == 1);
+ ASSERT(f(0xffff800000000000, 47) == 0xffffffffffffffff);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/rshr_u.c b/libguile/lightning/tests/rshr_u.c
new file mode 100644
index 000000000..268117fe5
--- /dev/null
+++ b/libguile/lightning/tests/rshr_u.c
@@ -0,0 +1,65 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_rshr_u(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0xfe, 1) == 0x7f);
+ ASSERT(f(0x1fffc, 2) == 0x7fff);
+ ASSERT(f(0x80000000, 31) == 1);
+ ASSERT(f(0x40000000, 30) == 1);
+ ASSERT(f(0x20000000, 29) == 1);
+ ASSERT(f(0x10000000, 28) == 1);
+ ASSERT(f(0x810000, 16) == 0x81);
+ ASSERT(f(0x20000, 17) == 1);
+ ASSERT(f(0x40000, 18) == 1);
+ ASSERT(f(0x7f8000, 15) == 0xff);
+ ASSERT(f(0x1000000, 24) == 1);
+ ASSERT(f(0xffffff00, 8) == 0xffffff);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+#if __WORDSIZE == 32
+ ASSERT(f(0xfffffff8, 3) == 0x1fffffff);
+#else
+ ASSERT(f(0x3fffffff8, 3) == 0x7fffffff);
+ ASSERT(f(0xffffffc080000000, 31) == 0x1ffffff81);
+ ASSERT(f(0xfe00000000, 33) == 0x7f);
+ ASSERT(f(0x1ffffc00000000, 34) == 0x7ffff);
+ ASSERT(f(0xfffffff800000000, 29) == 0x7ffffffc0);
+ ASSERT(f(0x8000000000000000, 63) == 1);
+ ASSERT(f(0x4000000000000000, 62) == 1);
+ ASSERT(f(0x2000000000000000, 61) == 1);
+ ASSERT(f(0x1000000000000000, 60) == 1);
+ ASSERT(f(0x81000000000000, 48) == 0x81);
+ ASSERT(f(0x2000000000000, 49) == 1);
+ ASSERT(f(0x10000000000, 40) == 1);
+ ASSERT(f(0x7f800000000000, 47) == 0xff);
+ ASSERT(f(0x100000000000000, 56) == 1);
+ ASSERT(f(0xffffff0000000000, 40) == 0xffffff);
+ ASSERT(f(0xfffffffe00000000, 33) == 0x7fffffff);
+ ASSERT(f(0x8000000000000001, 63) == 1);
+ ASSERT(f(0x1000000000000, 48) == 1);
+ ASSERT(f(0xffff800000000000, 47) == 0x1ffff);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/sqrtr_d.c b/libguile/lightning/tests/sqrtr_d.c
new file mode 100644
index 000000000..cb17b56ac
--- /dev/null
+++ b/libguile/lightning/tests/sqrtr_d.c
@@ -0,0 +1,29 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_sqrtr_d(j, JIT_F0, JIT_F0);
+ jit_retr_d(j, JIT_F0);
+
+ double (*f)(double) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == 0.0);
+ ASSERT(f(4.0) == 2.0);
+ ASSERT(f(-4.0) != f(-4.0)); // nan
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/sqrtr_f.c b/libguile/lightning/tests/sqrtr_f.c
new file mode 100644
index 000000000..ffa9211af
--- /dev/null
+++ b/libguile/lightning/tests/sqrtr_f.c
@@ -0,0 +1,29 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_sqrtr_f(j, JIT_F0, JIT_F0);
+ jit_retr_f(j, JIT_F0);
+
+ float (*f)(float) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == 0.0);
+ ASSERT(f(4.0) == 2.0);
+ ASSERT(f(-4.0) != f(-4.0)); // nan
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/sti_c.c b/libguile/lightning/tests/sti_c.c
new file mode 100644
index 000000000..10b7b6a91
--- /dev/null
+++ b/libguile/lightning/tests/sti_c.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static uint8_t data[] = { 0x12, 0x00, 0x34 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INT8 };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_sti_c(j, &data[1], JIT_R1);
+ jit_ret(j);
+
+ void (*f)(int8_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x12);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x34);
+ f(-1);
+ ASSERT(data[0] == 0x12);
+ ASSERT(data[1] == 0xff);
+ ASSERT(data[2] == 0x34);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/sti_d.c b/libguile/lightning/tests/sti_d.c
new file mode 100644
index 000000000..2c51827f5
--- /dev/null
+++ b/libguile/lightning/tests/sti_d.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static double data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_sti_d(j, &data[1], JIT_F0);
+ jit_ret(j);
+
+ void (*f)(double) = jit_end(j, NULL);
+
+ ASSERT(data[0] == -1.0);
+ ASSERT(data[1] == 0.0);
+ ASSERT(data[2] == 0.5);
+ f(42.5);
+ ASSERT(data[0] == -1.0);
+ ASSERT(data[1] == 42.5);
+ ASSERT(data[2] == 0.5);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/sti_f.c b/libguile/lightning/tests/sti_f.c
new file mode 100644
index 000000000..1e3674a4f
--- /dev/null
+++ b/libguile/lightning/tests/sti_f.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static float data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_sti_f(j, &data[1], JIT_F0);
+ jit_ret(j);
+
+ void (*f)(float) = jit_end(j, NULL);
+
+ ASSERT(data[0] == -1.0f);
+ ASSERT(data[1] == 0.0f);
+ ASSERT(data[2] == 0.5f);
+ f(42.5f);
+ ASSERT(data[0] == -1.0f);
+ ASSERT(data[1] == 42.5f);
+ ASSERT(data[2] == 0.5f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/sti_i.c b/libguile/lightning/tests/sti_i.c
new file mode 100644
index 000000000..b0e6d83f7
--- /dev/null
+++ b/libguile/lightning/tests/sti_i.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static uint32_t data[] = { 0x12121212, 0x00000000, 0x34343434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INT32 };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_sti_i(j, &data[1], JIT_R1);
+ jit_ret(j);
+
+ void (*f)(int32_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x12121212);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x34343434);
+ f(-1);
+ ASSERT(data[0] == 0x12121212);
+ ASSERT(data[1] == 0xffffffff);
+ ASSERT(data[2] == 0x34343434);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/sti_l.c b/libguile/lightning/tests/sti_l.c
new file mode 100644
index 000000000..e997b014f
--- /dev/null
+++ b/libguile/lightning/tests/sti_l.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INT64 };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_sti_l(j, &data[1], JIT_R1);
+ jit_ret(j);
+
+ void (*f)(int64_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x1212121212121212);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x3434343434343434);
+ f(-1);
+ ASSERT(data[0] == 0x1212121212121212);
+ ASSERT(data[1] == 0xffffffffffffffff);
+ ASSERT(data[2] == 0x3434343434343434);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/sti_s.c b/libguile/lightning/tests/sti_s.c
new file mode 100644
index 000000000..95cfd3396
--- /dev/null
+++ b/libguile/lightning/tests/sti_s.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static uint16_t data[] = { 0x1212, 0x0000, 0x3434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INT16 };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R1 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_sti_s(j, &data[1], JIT_R1);
+ jit_ret(j);
+
+ void (*f)(int16_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x1212);
+ ASSERT(data[1] == 0);
+ ASSERT(data[2] == 0x3434);
+ f(-1);
+ ASSERT(data[0] == 0x1212);
+ ASSERT(data[1] == 0xffff);
+ ASSERT(data[2] == 0x3434);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/str_c.c b/libguile/lightning/tests/str_c.c
new file mode 100644
index 000000000..eb04a85df
--- /dev/null
+++ b/libguile/lightning/tests/str_c.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static uint8_t data[] = { 0x12, 0x00, 0x34 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INT8 };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_str_c(j, JIT_R0, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(void*, int8_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x12);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x34);
+ f(&data[1], -1);
+ ASSERT(data[0] == 0x12);
+ ASSERT(data[1] == 0xff);
+ ASSERT(data[2] == 0x34);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/str_d.c b/libguile/lightning/tests/str_d.c
new file mode 100644
index 000000000..04e5aed57
--- /dev/null
+++ b/libguile/lightning/tests/str_d.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static double data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .fpr=JIT_F0 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_str_d(j, JIT_R0, JIT_F0);
+ jit_ret(j);
+
+ void (*f)(void*, double) = jit_end(j, NULL);
+
+ ASSERT(data[0] == -1.0);
+ ASSERT(data[1] == 0.0);
+ ASSERT(data[2] == 0.5);
+ f(&data[1], 42.5);
+ ASSERT(data[0] == -1.0);
+ ASSERT(data[1] == 42.5);
+ ASSERT(data[2] == 0.5);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/str_f.c b/libguile/lightning/tests/str_f.c
new file mode 100644
index 000000000..167fac038
--- /dev/null
+++ b/libguile/lightning/tests/str_f.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static float data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .fpr=JIT_F0 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_str_f(j, JIT_R0, JIT_F0);
+ jit_ret(j);
+
+ void (*f)(void*, float) = jit_end(j, NULL);
+
+ ASSERT(data[0] == -1.0f);
+ ASSERT(data[1] == 0.0f);
+ ASSERT(data[2] == 0.5f);
+ f(&data[1], 42.5f);
+ ASSERT(data[0] == -1.0f);
+ ASSERT(data[1] == 42.5f);
+ ASSERT(data[2] == 0.5f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/str_i.c b/libguile/lightning/tests/str_i.c
new file mode 100644
index 000000000..7dd6d8c78
--- /dev/null
+++ b/libguile/lightning/tests/str_i.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static uint32_t data[] = { 0x12121212, 0x00000000, 0x34343434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INT32 };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_str_i(j, JIT_R0, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(void*, int32_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x12121212);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x34343434);
+ f(&data[1], -1);
+ ASSERT(data[0] == 0x12121212);
+ ASSERT(data[1] == 0xffffffff);
+ ASSERT(data[2] == 0x34343434);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/str_l.c b/libguile/lightning/tests/str_l.c
new file mode 100644
index 000000000..8a1b905ea
--- /dev/null
+++ b/libguile/lightning/tests/str_l.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INT64 };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_str_l(j, JIT_R0, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(void*, int64_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x1212121212121212);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x3434343434343434);
+ f(&data[1], -1);
+ ASSERT(data[0] == 0x1212121212121212);
+ ASSERT(data[1] == 0xffffffffffffffff);
+ ASSERT(data[2] == 0x3434343434343434);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/str_s.c b/libguile/lightning/tests/str_s.c
new file mode 100644
index 000000000..97932ad31
--- /dev/null
+++ b/libguile/lightning/tests/str_s.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static uint16_t data[] = { 0x1212, 0x0000, 0x3434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INT16 };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_str_s(j, JIT_R0, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(void*, int16_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x1212);
+ ASSERT(data[1] == 0);
+ ASSERT(data[2] == 0x3434);
+ f(&data[1], -1);
+ ASSERT(data[0] == 0x1212);
+ ASSERT(data[1] == 0xffff);
+ ASSERT(data[2] == 0x3434);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxi_c.c b/libguile/lightning/tests/stxi_c.c
new file mode 100644
index 000000000..1a877434f
--- /dev/null
+++ b/libguile/lightning/tests/stxi_c.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static uint8_t data[] = { 0x12, 0x00, 0x34 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INT8 };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R2 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_stxi_c(j, (uintptr_t)data, JIT_R2, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(intmax_t, int8_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x12);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x34);
+ f(1, -1);
+ ASSERT(data[0] == 0x12);
+ ASSERT(data[1] == 0xff);
+ ASSERT(data[2] == 0x34);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxi_d.c b/libguile/lightning/tests/stxi_d.c
new file mode 100644
index 000000000..a9de3d23d
--- /dev/null
+++ b/libguile/lightning/tests/stxi_d.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static double data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R2 }, { .fpr=JIT_F0 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_stxi_d(j, (uintptr_t)data, JIT_R2, JIT_F0);
+ jit_ret(j);
+
+ void (*f)(intmax_t, double) = jit_end(j, NULL);
+
+ ASSERT(data[0] == -1.0);
+ ASSERT(data[1] == 0.0);
+ ASSERT(data[2] == 0.5);
+ f(8, 42.5);
+ ASSERT(data[0] == -1.0);
+ ASSERT(data[1] == 42.5);
+ ASSERT(data[2] == 0.5);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxi_f.c b/libguile/lightning/tests/stxi_f.c
new file mode 100644
index 000000000..a348249ea
--- /dev/null
+++ b/libguile/lightning/tests/stxi_f.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static float data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R2 }, { .fpr=JIT_F0 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_stxi_f(j, (uintptr_t)data, JIT_R2, JIT_F0);
+ jit_ret(j);
+
+ void (*f)(intmax_t, float) = jit_end(j, NULL);
+
+ ASSERT(data[0] == -1.0f);
+ ASSERT(data[1] == 0.0f);
+ ASSERT(data[2] == 0.5f);
+ f(4, 42.5f);
+ ASSERT(data[0] == -1.0f);
+ ASSERT(data[1] == 42.5f);
+ ASSERT(data[2] == 0.5f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxi_i.c b/libguile/lightning/tests/stxi_i.c
new file mode 100644
index 000000000..c39adc2cd
--- /dev/null
+++ b/libguile/lightning/tests/stxi_i.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static uint32_t data[] = { 0x12121212, 0x00000000, 0x34343434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INT32 };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R2 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_stxi_i(j, (uintptr_t)data, JIT_R2, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(intmax_t, int32_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x12121212);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x34343434);
+ f(4, -1);
+ ASSERT(data[0] == 0x12121212);
+ ASSERT(data[1] == 0xffffffff);
+ ASSERT(data[2] == 0x34343434);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxi_l.c b/libguile/lightning/tests/stxi_l.c
new file mode 100644
index 000000000..b280c4d72
--- /dev/null
+++ b/libguile/lightning/tests/stxi_l.c
@@ -0,0 +1,39 @@
+#include "test.h"
+
+static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INT64 };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R2 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_stxi_l(j, (uintptr_t)data, JIT_R2, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(intmax_t, int64_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x1212121212121212);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x3434343434343434);
+ f(8, -1);
+ ASSERT(data[0] == 0x1212121212121212);
+ ASSERT(data[1] == 0xffffffffffffffff);
+ ASSERT(data[2] == 0x3434343434343434);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxi_s.c b/libguile/lightning/tests/stxi_s.c
new file mode 100644
index 000000000..09af31ea6
--- /dev/null
+++ b/libguile/lightning/tests/stxi_s.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static uint16_t data[] = { 0x1212, 0x0000, 0x3434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INT16 };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R2 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_stxi_s(j, (uintptr_t)data, JIT_R2, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(intmax_t, int16_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x1212);
+ ASSERT(data[1] == 0);
+ ASSERT(data[2] == 0x3434);
+ f(2, -1);
+ ASSERT(data[0] == 0x1212);
+ ASSERT(data[1] == 0xffff);
+ ASSERT(data[2] == 0x3434);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxr_c.c b/libguile/lightning/tests/stxr_c.c
new file mode 100644
index 000000000..14e40c787
--- /dev/null
+++ b/libguile/lightning/tests/stxr_c.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static uint8_t data[] = { 0x12, 0x00, 0x34 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INT8 };
+ jit_arg_t args[3];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R0 }, { .gpr=JIT_R2 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 3, abi, args);
+ jit_load_args(j, 3, abi, args, regs);
+
+ jit_stxr_c(j, JIT_R0, JIT_R2, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(void*, intmax_t, int8_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x12);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x34);
+ f(data, 1, -1);
+ ASSERT(data[0] == 0x12);
+ ASSERT(data[1] == 0xff);
+ ASSERT(data[2] == 0x34);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxr_d.c b/libguile/lightning/tests/stxr_d.c
new file mode 100644
index 000000000..8f1d957d7
--- /dev/null
+++ b/libguile/lightning/tests/stxr_d.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static double data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[3];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R0 }, { .gpr=JIT_R2 }, { .fpr=JIT_F0 } };
+
+ jit_receive(j, 3, abi, args);
+ jit_load_args(j, 3, abi, args, regs);
+
+ jit_stxr_d(j, JIT_R0, JIT_R2, JIT_F0);
+ jit_ret(j);
+
+ void (*f)(void*, intmax_t, double) = jit_end(j, NULL);
+
+ ASSERT(data[0] == -1.0);
+ ASSERT(data[1] == 0.0);
+ ASSERT(data[2] == 0.5);
+ f(data, 8, 42.5);
+ ASSERT(data[0] == -1.0);
+ ASSERT(data[1] == 42.5);
+ ASSERT(data[2] == 0.5);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxr_f.c b/libguile/lightning/tests/stxr_f.c
new file mode 100644
index 000000000..7de57715c
--- /dev/null
+++ b/libguile/lightning/tests/stxr_f.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static float data[] = { -1.0, 0.0, 0.5 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[3];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R0 }, { .gpr=JIT_R2 }, { .fpr=JIT_F0 } };
+
+ jit_receive(j, 3, abi, args);
+ jit_load_args(j, 3, abi, args, regs);
+
+ jit_stxr_f(j, JIT_R0, JIT_R2, JIT_F0);
+ jit_ret(j);
+
+ void (*f)(void*, intmax_t, float) = jit_end(j, NULL);
+
+ ASSERT(data[0] == -1.0f);
+ ASSERT(data[1] == 0.0f);
+ ASSERT(data[2] == 0.5f);
+ f(data, 4, 42.5f);
+ ASSERT(data[0] == -1.0f);
+ ASSERT(data[1] == 42.5f);
+ ASSERT(data[2] == 0.5f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxr_i.c b/libguile/lightning/tests/stxr_i.c
new file mode 100644
index 000000000..b613ec00a
--- /dev/null
+++ b/libguile/lightning/tests/stxr_i.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static uint32_t data[] = { 0x12121212, 0x00000000, 0x34343434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INT32 };
+ jit_arg_t args[3];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R0 }, { .gpr=JIT_R2 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 3, abi, args);
+ jit_load_args(j, 3, abi, args, regs);
+
+ jit_stxr_i(j, JIT_R0, JIT_R2, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(void*, intmax_t, int32_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x12121212);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x34343434);
+ f(data, 4, -1);
+ ASSERT(data[0] == 0x12121212);
+ ASSERT(data[1] == 0xffffffff);
+ ASSERT(data[2] == 0x34343434);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxr_l.c b/libguile/lightning/tests/stxr_l.c
new file mode 100644
index 000000000..0fd239cc7
--- /dev/null
+++ b/libguile/lightning/tests/stxr_l.c
@@ -0,0 +1,39 @@
+#include "test.h"
+
+static uint64_t data[] = { 0x1212121212121212, 0, 0x3434343434343434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INT64 };
+ jit_arg_t args[3];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R0 }, { .gpr=JIT_R2 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 3, abi, args);
+ jit_load_args(j, 3, abi, args, regs);
+
+ jit_stxr_l(j, JIT_R0, JIT_R2, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(void*, intmax_t, int64_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x1212121212121212);
+ ASSERT(data[1] == 0x00);
+ ASSERT(data[2] == 0x3434343434343434);
+ f(data, 8, -1);
+ ASSERT(data[0] == 0x1212121212121212);
+ ASSERT(data[1] == 0xffffffffffffffff);
+ ASSERT(data[2] == 0x3434343434343434);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/stxr_s.c b/libguile/lightning/tests/stxr_s.c
new file mode 100644
index 000000000..926da5694
--- /dev/null
+++ b/libguile/lightning/tests/stxr_s.c
@@ -0,0 +1,37 @@
+#include "test.h"
+
+static uint16_t data[] = { 0x1212, 0x0000, 0x3434 };
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] =
+ { JIT_ARG_ABI_POINTER, JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INT16 };
+ jit_arg_t args[3];
+ const jit_anyreg_t regs[] =
+ { { .gpr=JIT_R0 }, { .gpr=JIT_R2 }, { .gpr=JIT_R1 } };
+
+ jit_receive(j, 3, abi, args);
+ jit_load_args(j, 3, abi, args, regs);
+
+ jit_stxr_s(j, JIT_R0, JIT_R2, JIT_R1);
+ jit_ret(j);
+
+ void (*f)(void*, intmax_t, int16_t) = jit_end(j, NULL);
+
+ ASSERT(data[0] == 0x1212);
+ ASSERT(data[1] == 0);
+ ASSERT(data[2] == 0x3434);
+ f(data, 2, -1);
+ ASSERT(data[0] == 0x1212);
+ ASSERT(data[1] == 0xffff);
+ ASSERT(data[2] == 0x3434);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/subr.c b/libguile/lightning/tests/subr.c
new file mode 100644
index 000000000..a375dff93
--- /dev/null
+++ b/libguile/lightning/tests/subr.c
@@ -0,0 +1,29 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_subr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ int (*f)(int, int) = ret;
+ ASSERT(f(42, 69) == -27);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/subr_d.c b/libguile/lightning/tests/subr_d.c
new file mode 100644
index 000000000..94c5ea477
--- /dev/null
+++ b/libguile/lightning/tests/subr_d.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE, JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_subr_d(j, JIT_F0, JIT_F0, JIT_F1);
+ jit_retr_d(j, JIT_F0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ double (*f)(double, double) = ret;
+ ASSERT(f(42., 69.) == -27.);
+ ASSERT(f(42., 69.5) == -27.5);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/subr_f.c b/libguile/lightning/tests/subr_f.c
new file mode 100644
index 000000000..fd6b37777
--- /dev/null
+++ b/libguile/lightning/tests/subr_f.c
@@ -0,0 +1,30 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT, JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 }, { .fpr=JIT_F1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_subr_f(j, JIT_F0, JIT_F0, JIT_F1);
+ jit_retr_f(j, JIT_F0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ float (*f)(float, float) = ret;
+ ASSERT(f(42.f, 69.f) == -27.f);
+ ASSERT(f(42.0f, 69.5f) == -27.5f);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/subx.c b/libguile/lightning/tests/subx.c
new file mode 100644
index 000000000..f28739965
--- /dev/null
+++ b/libguile/lightning/tests/subx.c
@@ -0,0 +1,65 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+ jit_movi(j, JIT_R2, 0);
+ jit_subcr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_subxi(j, JIT_R2, JIT_R2, 0);
+ jit_retr(j, JIT_R2);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0, 0) == 0);
+
+#if __WORDSIZE == 32
+ /* carry */
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0xffffffff);
+ /* overflow */
+ ASSERT(f(0x80000000, 1) == 0);
+ /* carry */
+ ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff);
+ /* overflow */
+ ASSERT(f(0x80000000, 0x7fffffff) == 0);
+ /* carry+overflow */
+ ASSERT(f(1, 0x80000000) == 0xffffffff);
+#else
+ /* carry */
+ ASSERT(f(0x7fffffff, 0xffffffff) == -1);
+ /* nothing */
+ ASSERT(f(0x80000000, 1) == 0);
+ /* carry */
+ ASSERT(f(0x7fffffff, 0x80000000) == -1);
+ /* nothing */
+ ASSERT(f(0x80000000, 0x7fffffff) == 0);
+ /* carry */
+ ASSERT(f(1, 0x80000000) == -1);
+ /* carry */
+ ASSERT(f(0x7fffffffffffffff, 0xffffffffffffffff) == -1);
+ /* overflow */
+ ASSERT(f(0x8000000000000000, 1) == 0);
+ /* carry */
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == -1);
+ /* overflow */
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == 0);
+ /* carry+overflow */
+ ASSERT(f(1, 0x8000000000000000) == -1);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/test.h b/libguile/lightning/tests/test.h
new file mode 100644
index 000000000..bc30507ca
--- /dev/null
+++ b/libguile/lightning/tests/test.h
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+
+#include <jit.h>
+
+#define ASSERT(x) \
+ do { \
+ if (!(x)) { \
+ fprintf(stderr, "%s:%d: assertion failed: " #x "\n", \
+ __FILE__, __LINE__); \
+ abort(); \
+ } \
+ } while (0)
+
+static inline int
+main_helper (int argc, char *argv[],
+ void (*run_test)(jit_state_t*, uint8_t*, size_t))
+{
+ ASSERT(init_jit());
+ jit_state_t *j = jit_new_state();
+ ASSERT(j);
+
+ const size_t arena_size = 4096;
+ char *arena_base = mmap (NULL, arena_size,
+ PROT_EXEC | PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+ if (arena_base == MAP_FAILED)
+ {
+ perror ("allocating JIT code buffer failed");
+ return 1;
+ }
+
+ run_test(j, (uint8_t*)arena_base, arena_size);
+
+ jit_destroy_state(j);
+
+ munmap(arena_base, arena_size);
+
+ return 0;
+}
diff --git a/libguile/lightning/tests/truncr_d_i.c b/libguile/lightning/tests/truncr_d_i.c
new file mode 100644
index 000000000..c703ae8ba
--- /dev/null
+++ b/libguile/lightning/tests/truncr_d_i.c
@@ -0,0 +1,34 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_truncr_d_i(j, JIT_R0, JIT_F0);
+ jit_retr(j, JIT_R0);
+
+ int (*f)(double) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == 0);
+ ASSERT(f(-0.0) == 0);
+ ASSERT(f(0.5) == 0);
+ ASSERT(f(-0.5) == 0);
+ ASSERT(f(1.5) == 1);
+ ASSERT(f(-1.5) == -1);
+ ASSERT(f(2.5) == 2);
+ ASSERT(f(-2.5) == -2);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/truncr_d_l.c b/libguile/lightning/tests/truncr_d_l.c
new file mode 100644
index 000000000..752a76fa0
--- /dev/null
+++ b/libguile/lightning/tests/truncr_d_l.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_DOUBLE };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_truncr_d_l(j, JIT_R0, JIT_F0);
+ jit_retr(j, JIT_R0);
+
+ int64_t (*f)(double) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == 0);
+ ASSERT(f(-0.0) == 0);
+ ASSERT(f(0.5) == 0);
+ ASSERT(f(-0.5) == 0);
+ ASSERT(f(1.5) == 1);
+ ASSERT(f(-1.5) == -1);
+ ASSERT(f(2.5) == 2);
+ ASSERT(f(-2.5) == -2);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/truncr_f_i.c b/libguile/lightning/tests/truncr_f_i.c
new file mode 100644
index 000000000..32fd71fdf
--- /dev/null
+++ b/libguile/lightning/tests/truncr_f_i.c
@@ -0,0 +1,34 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_truncr_f_i(j, JIT_R0, JIT_F0);
+ jit_retr(j, JIT_R0);
+
+ int (*f)(float) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == 0);
+ ASSERT(f(-0.0) == 0);
+ ASSERT(f(0.5) == 0);
+ ASSERT(f(-0.5) == 0);
+ ASSERT(f(1.5) == 1);
+ ASSERT(f(-1.5) == -1);
+ ASSERT(f(2.5) == 2);
+ ASSERT(f(-2.5) == -2);
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/truncr_f_l.c b/libguile/lightning/tests/truncr_f_l.c
new file mode 100644
index 000000000..af3a1168e
--- /dev/null
+++ b/libguile/lightning/tests/truncr_f_l.c
@@ -0,0 +1,36 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+#if __WORDSIZE > 32
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_FLOAT };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .fpr=JIT_F0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_truncr_f_l(j, JIT_R0, JIT_F0);
+ jit_retr(j, JIT_R0);
+
+ int64_t (*f)(float) = jit_end(j, NULL);
+
+ ASSERT(f(0.0) == 0);
+ ASSERT(f(-0.0) == 0);
+ ASSERT(f(0.5) == 0);
+ ASSERT(f(-0.5) == 0);
+ ASSERT(f(1.5) == 1);
+ ASSERT(f(-1.5) == -1);
+ ASSERT(f(2.5) == 2);
+ ASSERT(f(-2.5) == -2);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/xori.c b/libguile/lightning/tests/xori.c
new file mode 100644
index 000000000..59859fc29
--- /dev/null
+++ b/libguile/lightning/tests/xori.c
@@ -0,0 +1,35 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[1];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 } };
+
+ jit_receive(j, 1, abi, args);
+ jit_load_args(j, 1, abi, args, regs);
+
+ jit_xori(j, JIT_R0, JIT_R0, 1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff) == 0x7ffffffe);
+ ASSERT(f(0x80000000) == 0x80000001);
+#if __WORDSIZE == 64
+ ASSERT(f(0x7fffffffffffffff) == 0x7ffffffffffffffe);
+ ASSERT(f(0x8000000000000000) == 0x8000000000000001);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}
diff --git a/libguile/lightning/tests/xorr.c b/libguile/lightning/tests/xorr.c
new file mode 100644
index 000000000..1be654b09
--- /dev/null
+++ b/libguile/lightning/tests/xorr.c
@@ -0,0 +1,51 @@
+#include "test.h"
+
+static void
+run_test(jit_state_t *j, uint8_t *arena_base, size_t arena_size)
+{
+ jit_begin(j, arena_base, arena_size);
+
+ const jit_arg_abi_t abi[] = { JIT_ARG_ABI_INTMAX, JIT_ARG_ABI_INTMAX };
+ jit_arg_t args[2];
+ const jit_anyreg_t regs[] = { { .gpr=JIT_R0 }, { .gpr=JIT_R1 }};
+
+ jit_receive(j, 2, abi, args);
+ jit_load_args(j, 2, abi, args, regs);
+
+ jit_xorr(j, JIT_R0, JIT_R0, JIT_R1);
+ jit_retr(j, JIT_R0);
+
+ size_t size = 0;
+ void* ret = jit_end(j, &size);
+
+ intmax_t (*f)(intmax_t, intmax_t) = ret;
+
+ ASSERT(f(0x7fffffff, 1) == 0x7ffffffe);
+ ASSERT(f(1, 0x7fffffff) == 0x7ffffffe);
+ ASSERT(f(0x80000000, 1) == 0x80000001);
+ ASSERT(f(1, 0x80000000) == 0x80000001);
+ ASSERT(f(0x7fffffff, 0x80000000) == 0xffffffff);
+ ASSERT(f(0x80000000, 0x7fffffff) == 0xffffffff);
+ ASSERT(f(0x7fffffff, 0xffffffff) == 0x80000000);
+ ASSERT(f(0xffffffff, 0x7fffffff) == 0x80000000);
+ ASSERT(f(0xffffffff, 0xffffffff) == 0);
+ ASSERT(f(0x7fffffff, 0) == 0x7fffffff);
+ ASSERT(f(0, 0x7fffffff) == 0x7fffffff);
+#if __WORDSIZE == 64
+ ASSERT(f(0x7fffffffffffffff, 1) == 0x7ffffffffffffffe);
+ ASSERT(f(1, 0x7fffffffffffffff) == 0x7ffffffffffffffe);
+ ASSERT(f(0x8000000000000000, 1) == 0x8000000000000001);
+ ASSERT(f(1, 0x8000000000000000) == 0x8000000000000001);
+ ASSERT(f(0x7fffffffffffffff, 0x8000000000000000) == 0xffffffffffffffff);
+ ASSERT(f(0x8000000000000000, 0x7fffffffffffffff) == 0xffffffffffffffff);
+ ASSERT(f(0x7fffffffffffffff, 0xffffffffffffffff) == 0x8000000000000000);
+ ASSERT(f(0xffffffffffffffff, 0x7fffffffffffffff) == 0x8000000000000000);
+ ASSERT(f(0xffffffffffffffff, 0xffffffffffffffff) == 0);
+#endif
+}
+
+int
+main (int argc, char *argv[])
+{
+ return main_helper(argc, argv, run_test);
+}