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 +-*- 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 + 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 - - * 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 - - * 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 - - * lib/lightning.c: Avoid deep recursions when computing live - register ranges. - -2018-01-31 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: Correct base - aarch64 varargs code. - -2015-05-24 Paulo Andrade - - * check/lightning.c: Clearly run check if clang is the system - compiler. - -2015-05-20 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * lib/jit_ia64.c: Implement inline assembly cache flush, - required on multiprocessor systems. - -2015-05-06 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * configure.ac, lib/jit_disasm.c: Rewrite workaround - to apparent problem to initialize powerpc disassembler. - -2015-01-15 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Correct some endianess issues - on the powerpc le backend. - -2014-12-26 Paulo Andrade - - * 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 - - * lib/jit_arm.c: Better check for need to flush constants - before the pool being no longer reachable. - -2014-12-25 Paulo Andrade - - * 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 - - * 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 - - * lib/jit_names.c: Add missing rsbi_f and rsbi_d strings. - -2014-12-21 Paulo Andrade - - * 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 - - * lib/jit_arm.c: Correct check to guard overflow of index - of constants from program counter. - -2014-11-24 Paulo Andrade - - * 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 - - * include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c, - lib/jit_ppc.c: Add initial powerpc le support. - -2014-11-20 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * lib/jit_x86-cpu.c: Correct a register allocation leak in - _bmsi and _bmci. - -2014-10-25 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * include/lightning.h, lib/jit_size.c, size.c: Use a - symbolic value for the last IR code. - -2014-10-12 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * doc/body.texi: Add a proper info menu entry for - GNU lightning. - - * doc/version.texi: Regenerate. - -2014-08-16 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * lib/lightning.c: Change the correct live bitmask of - return registers after a function call in jit_update. - -2014-08-10 Paulo Andrade - - * lib/lightning.c: Change assertions to have an int - result and correct a bad bit mask assertion. - -2014-08-10 Paulo Andrade - - * lib/jit_aarch64.c: Correct bad setup for assertion - of consistency before a patch. - -2014-08-10 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * lib/jit_x86-x87.c: Correct wrong optimization when - loading the log(2) constant. - -2013-12-03 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * include/lightning/jit_mips.h: Add proper mips abi detection. - -2013-09-30 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * lib/jit_arm.c: Correct build when disassembler is - disabled. - -2013-09-25 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * lib/jit_s390x-cpu.c: Spill/reload correct callee save - float registers. - -2013-09-10 Paulo Andrade - - * 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 - - * lib/jit_ia64-cpu.c: Correct incorrect logic when restoring - the value of the "r2" callee save register. - -2013-08-29 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * lib/jit_s390x-cpu.c: Correct code checking if immediate - fits instruction, but using the negated value. - -2013-07-28 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * lib/jit_aarch64.c: Remove unused macros left from cut&paste - of jit_arm.c. - -2013-07-16 Paulo Andrade - - * 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 - - * NEWS, THANKS, configure.ac, doc/version.texi: Update for - the 1.99a second alpha release. - -2013-06-25 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * check/lightning.c: Add missing ppc preprocessor definition. - -2013-03-06 Paulo Andrade - - * 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 - - * 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 - - * lib/lightning.c: Make data and code buffer readonly. - -2013-02-20 Paulo Andrade - - * 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 - - * doc/body.texi: Add back the SPARC code generation example. - -2013-02-19 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - *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 - - * 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 - - * 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 - - * 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 - - * lib/jit_x86-cpu.c: Correct undefined behavior code. - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143 - -2013-01-29 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * lib/jit_mips-fpu.c: Correct wrong register order in stxr_{f,d} - in the mips backend. - -2012-12-05 Paulo Andrade - - * lib/jit_arm-vfp.c: Correct regression found in armv7l with - latest test cases. - -2012-12-05 Paulo Andrade - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * check/Makefile.am: Add proper "make clean" rule and missing - check.sh to EXTRA_DIST. - -2012-12-02 Paulo Andrade - - * .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 - - * 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 - - * 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 , 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 - * .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 - - * 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 - - * 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 - - * 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 - - * lightning/i386/fp-64.h: Fix jp in jit_bner_{f,d}. - -2010-08-18 Paolo Bonzini - - * lightning/i386/fp-32.h: Fix -D_ASM_SAFETY compilation. - Reported by Paulo César Pereira de Andrade. - -2010-08-15 Paolo Bonzini - - * tests/ldst.c: Update. - * tests/Makefile.am: Use -ffloat-store to compile it. - -2010-08-15 Paolo Bonzini - - * 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 - - * 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 - - * tests/Makefile.am: Add ldst test. - * tests/Makefile.in: Regenerate. - * tests/ldst.c: New. - * tests/ldst.ok: New. - -2010-07-28 Paolo Bonzini - - * 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 - - * lightning/i386/core-32.h (jit_replace): Move here (removed - 2009-03-01). - -2010-07-19 Paolo Bonzini - - * 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 - - * 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 - - * lightning/i386/core.h: Rewrite shift-handling macros. - * lightning/fp-common.h: Fix jit_extr_{f_d,d_f}. - -2009-02-17 Mike Spivey - - * lightning/i386/core.h: Fix blunder in operand order. - -2009-02-17 Paolo Bonzini - - * lightning/i386/fp-32.h: Another fix to jit_fp_btest. - -2009-02-17 Paolo Bonzini - - * 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 - - * lightning/ppc/funcs.h (jit_flush_code): Subtract 1 from end. - Reported by Eli Barzilay and Matthew Flatt. - -2008-08-23 Nix - - * lightning/i386/Makefile.frag: fp-32.h and fp-64.h are target files. - -2008-07-02 Laurent Michel - - * 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 - - * lightning/i386/asm-64.h: Forward IMULQir to IMULQirr, - fix REXQ order for IMULQirr. - -2008-06-17 Paolo Bonzini - - * lightning/i386/core.h: Fix _rN vs. _rR. - -2008-06-16 Paolo Bonzini - - * 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 - - * lightning/i386/core-64.h: Rewrite argument passing to - support up to 6 arguments and generate less code. - -2008-06-14 Laurent Michel - - * 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 - - * lightning/i386/core-64.h: Add (void) casts for C++ compatibility. - * lightning/i386/asm.h: Likewise. - -2008-06-12 Paolo Bonzini - - * 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 - - * 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 - - * lightning/i386/core-32.h: Use MOVLir instead of jit_movi_l - to implement jit_movi_p. - -2008-06-11 Paolo Bonzini - - * 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 - - * lightning/i386/core-i386.h: Fix C++ incompatibility. - -2008-06-10 Laurent Michel - - * lightning/i386/core-i386.h: Fix jit_replace8 for - case when one of the operands is _EAX. - -2008-05-19 Paolo Bonzini - - * tests/run-test: Avoid CRLF issues on mingw. - -2008-03-21 Paolo Bonzini - - * 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 - - * lightning/i386/core-64.h: Fix uses of jit_qop_. - -2008-03-19 Paolo Bonzini - - * lightning/i386/core-64.h: Add boolean operations. - -2008-03-19 Paolo Bonzini - - * lightning/i386/asm-64.h: Add LEAQmr. - -2008-03-19 Paolo Bonzini - - * lightning/i386/core-64.h: Misc bugfixes. - -2008-03-19 Paolo Bonzini - - * 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 - - * lightning/asm-common.h: Add _s32P. - -2008-03-19 Paolo Bonzini - - * lightning/i386/core-64.h: Implement long mul/div/mod. - -2008-03-19 Paolo Bonzini - - * lightning/i386/asm-i386.h: Cast memory address to long for JCCim. - -2008-03-15 Paolo Bonzini - - * lightning/asm-common.h: Add underscores around __unused__ - attribute. - -2008-03-15 Paolo Bonzini - - * lightning/ppc/core.h: Avoid some "value computed is not used" - warnings. - * lightnings/tests/allocai.c: Silence other warnings. - -2008-03-14 Paolo Bonzini - - * lightningize.in: Fix some problems (not all). - -2008-03-14 Paolo Bonzini - - * lightning/i386/core-32.h: Avoid some "value computed is not used" - warnings; reported by Sam Steingold. - -2008-03-08 Paolo Bonzini - - * lightning/i386/core-32.h: Fix stxr_c(_EAX, _EBX, _ESI). - -2008-02-13 Paolo Bonzini - - * lightning/i386/asm-32.h: Avoid redefinition of _r1, reported by - Sam Steingold. - * lightning/i386/asm-64.h: Likewise. - -2008-02-08 Paolo Bonzini - - * lightning/i386/asm-i386.h: Don't define _VOID, reported - by Reini Urban. - -2008-02-03 Paolo Bonzini - - * build-aux/lightning.m4: Add --with-lightning-prefix option, suggested - by Sam Steingold. - -2008-01-14 Paolo Bonzini - - * lightning/i386/core-64.h: Use CALLsr, not CALLLsr. - -2008-01-13 Paolo Bonzini - - * 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 - - * 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 - - * 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 - - * opcode/Makefile.am: Fix AM_CPPFLAGS. - -2007-08-12 Paolo Bonzini - - * 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 - - * 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 - - * lightning/Makefile.am: Add clean-local target. - -2006-12-02 Paolo Bonzini - - * 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 - - * 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 - - * 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 - - * lightning/i386/asm-i386.h: Add an underscore to macros without - a parameter. - -2006-11-20 Paolo Bonzini - - * 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 - - * 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 - - * 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 - Ludovic Courtes - - * 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 - - * 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 - - * tests/rpn.c: Remove pushr/popr. - -2006-11-04 Paolo Bonzini - - * 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 - - * lightning/sparc/core.h: Implement jit_allocai. - * tests/allocai.c: New. - * tests/Makefile.am: Point to new tests. - -2006-11-03 Paolo Bonzini - - * lightning/ppc/core.h: Fix jit_bms using BNE rather than BGT. - "AND." does signed comparisons. - -2006-10-31 Paolo Bonzini - - * 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 - - * 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 - Ludovic Courtes - - * 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 - - * lightning/Makefile.am: Use "ln -sf". - * lightning/core-common.h: Define jit_negr_l if necessary. - -2006-10-30 Paolo Bonzini - - * lightning/i386/asm.h (MOVS*, MOVZ*): Use correct _r[124] macros. - -2006-10-29 Paolo Bonzini - - * 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 - - * 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 - - * 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 - - * 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 - - * lightning/i386/i386.h (jit_flush_code): Fix syntax error. :-( - -2006-07-06 Paolo Bonzini - Ludovic Courtes - - * 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 - Ludovic Courtes - - * 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 - - * lightning/i386/asm.h: Fix test for extending the mprotect area - towards lower addresses. - -2006-05-16 Bruno Haible - - * lightning/asm-common.h: Don't use __func__ nor __FUNCTION__ if - not compiling with GNU C. - -2006-02-16 Paolo Bonzini - - * lightning/ppc/core.h: Fix jit_ldxi_* with big displacement. - -2006-01-23 Paolo Bonzini - - * configure.ac: Fix comments in config.h.in. - -2005-11-25 Paolo Bonzini - - * lightning/sparc/fp.h: Fix header comment. - * lightning/ppc/fp.h: Fix header comment. - -2005-04-27 Paolo Bonzini - - * lightning/i386/asm.h (JCm, JCSm, JNCm, JNCSm): New. - -2004-11-26 Paolo Bonzini - - * lightning/ppc/funcs.h (_jit_epilog): Remove unused variable. - -2004-11-13 Paolo Bonzini - - * lightning/i386/funcs.h [__linux__]: Include sys/mman.h. - -2004-11-09 Paolo Bonzini - - * 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 - - * lightning/ppc/testfp.c: Always flush code before - testing it. - -2004-11-08 Paolo Bonzini - - * lightning/ppc/fp.h: Do not clobber f31. - -2004-11-08 Paolo Bonzini - - * 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 - - * lightning/i386/fp.h: Fix bugs in conditional branches. - -2004-10-10 Paolo Bonzini - - * lightning/i386/funcs.h: Fix pasto in jit_flush_code. - -2004-10-08 Paolo Bonzini - - * lightning/ppc/fp.h: Optimized conditional branches. - -2004-09-20 Paolo Bonzini - - * lightning/ppc/asm.h: Fix more typos. - -2004-09-20 Paolo Bonzini - - * lightning/ppc/asm.h: Fix typos, replace `26' with JIT_AUX. - -2004-09-20 Paolo Bonzini - - * lightning/ppc/fp.h: Added conditional branches. - -2004-09-18 Laurent Michel - - * 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 - - * lightning/ppc/funcs.h: Fix typo. - -2004-09-06 Paolo Bonzini - - * 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 - - * lightning/sparc/core.h: Add another V register, - move R0 to %o7. - -2004-07-15 Paolo Bonzini - - * lightning/i386/funcs.h: Implement jit_flush_code, - in order to support Fedora's exec-shield. - -2004-07-14 Paolo Bonzini - - * 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 - - * lightning/ppc/funcs.h: Adjust offset of LR into - stack frame if running under the Darwin ABI. - -2004-07-13 Paolo Bonzini - - * lightning/i386/fp.h: Rename jit_exti_d to jit_extr_i_d. - -2004-07-13 Paolo Bonzini - - * 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 - - * doc/porting.texi: Add missing macros. - -2004-07-12 Paolo Bonzini - - * 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 - - * 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 - - * 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 - - * lightning/i386/fp.h: Change "and" to "_and" - to satisfy C++ compilers. - -2004-04-14 Paolo Bonzini - - * 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 - - * 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 - - * 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 - - * 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 - - 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 - - * 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 - - * 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 - - * 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 - - * tests/rpnfp.c: new example, suggested by Basile - Starynkevitch. - * tests/rpnfp.ok: new example. - -2003-12-12 Paolo Bonzini - - * tests/add.c: new test, suggested by Steve Dekorte. - * tests/add.c: new test. - -2003-11-14 Paolo Bonzini - John Redford - - * 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 - - * lightning/i386/core.h: use JITSORRY in jit_replace - * lightning/asm-common.h: define JITSORRY - -2003-05-14 Paolo Bonzini - - * 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 - - * tests/printf2.c: new test - -2001-05-03 Paolo Bonzini - - * tests/printf.c: made the message platform independent - -2001-01-19 Paolo Bonzini - - * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * lib/lightning.c: Avoid deep recursions when computing live + register ranges. + +2018-01-31 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: Correct base + aarch64 varargs code. + +2015-05-24 Paulo Andrade + + * check/lightning.c: Clearly run check if clang is the system + compiler. + +2015-05-20 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * lib/jit_ia64.c: Implement inline assembly cache flush, + required on multiprocessor systems. + +2015-05-06 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * configure.ac, lib/jit_disasm.c: Rewrite workaround + to apparent problem to initialize powerpc disassembler. + +2015-01-15 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * lib/jit_ppc-cpu.c, lib/jit_ppc.c: Correct some endianess issues + on the powerpc le backend. + +2014-12-26 Paulo Andrade + + * 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 + + * lib/jit_arm.c: Better check for need to flush constants + before the pool being no longer reachable. + +2014-12-25 Paulo Andrade + + * 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 + + * 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 + + * lib/jit_names.c: Add missing rsbi_f and rsbi_d strings. + +2014-12-21 Paulo Andrade + + * 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 + + * lib/jit_arm.c: Correct check to guard overflow of index + of constants from program counter. + +2014-11-24 Paulo Andrade + + * 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 + + * include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c, + lib/jit_ppc.c: Add initial powerpc le support. + +2014-11-20 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * lib/jit_x86-cpu.c: Correct a register allocation leak in + _bmsi and _bmci. + +2014-10-25 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * include/lightning.h, lib/jit_size.c, size.c: Use a + symbolic value for the last IR code. + +2014-10-12 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * doc/body.texi: Add a proper info menu entry for + GNU lightning. + + * doc/version.texi: Regenerate. + +2014-08-16 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * lib/lightning.c: Change the correct live bitmask of + return registers after a function call in jit_update. + +2014-08-10 Paulo Andrade + + * lib/lightning.c: Change assertions to have an int + result and correct a bad bit mask assertion. + +2014-08-10 Paulo Andrade + + * lib/jit_aarch64.c: Correct bad setup for assertion + of consistency before a patch. + +2014-08-10 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * lib/jit_x86-x87.c: Correct wrong optimization when + loading the log(2) constant. + +2013-12-03 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * include/lightning/jit_mips.h: Add proper mips abi detection. + +2013-09-30 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * lib/jit_arm.c: Correct build when disassembler is + disabled. + +2013-09-25 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * lib/jit_s390x-cpu.c: Spill/reload correct callee save + float registers. + +2013-09-10 Paulo Andrade + + * 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 + + * lib/jit_ia64-cpu.c: Correct incorrect logic when restoring + the value of the "r2" callee save register. + +2013-08-29 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * lib/jit_s390x-cpu.c: Correct code checking if immediate + fits instruction, but using the negated value. + +2013-07-28 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * lib/jit_aarch64.c: Remove unused macros left from cut&paste + of jit_arm.c. + +2013-07-16 Paulo Andrade + + * 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 + + * NEWS, THANKS, configure.ac, doc/version.texi: Update for + the 1.99a second alpha release. + +2013-06-25 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * check/lightning.c: Add missing ppc preprocessor definition. + +2013-03-06 Paulo Andrade + + * 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 + + * 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 + + * lib/lightning.c: Make data and code buffer readonly. + +2013-02-20 Paulo Andrade + + * 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 + + * doc/body.texi: Add back the SPARC code generation example. + +2013-02-19 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + *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 + + * 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 + + * 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 + + * 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 + + * lib/jit_x86-cpu.c: Correct undefined behavior code. + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143 + +2013-01-29 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * lib/jit_mips-fpu.c: Correct wrong register order in stxr_{f,d} + in the mips backend. + +2012-12-05 Paulo Andrade + + * lib/jit_arm-vfp.c: Correct regression found in armv7l with + latest test cases. + +2012-12-05 Paulo Andrade + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * check/Makefile.am: Add proper "make clean" rule and missing + check.sh to EXTRA_DIST. + +2012-12-02 Paulo Andrade + + * .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 + + * 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 + + * 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 , 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 + * .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 + + * 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 + + * 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 + + * 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 + + * lightning/i386/fp-64.h: Fix jp in jit_bner_{f,d}. + +2010-08-18 Paolo Bonzini + + * lightning/i386/fp-32.h: Fix -D_ASM_SAFETY compilation. + Reported by Paulo César Pereira de Andrade. + +2010-08-15 Paolo Bonzini + + * tests/ldst.c: Update. + * tests/Makefile.am: Use -ffloat-store to compile it. + +2010-08-15 Paolo Bonzini + + * 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 + + * 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 + + * tests/Makefile.am: Add ldst test. + * tests/Makefile.in: Regenerate. + * tests/ldst.c: New. + * tests/ldst.ok: New. + +2010-07-28 Paolo Bonzini + + * 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 + + * lightning/i386/core-32.h (jit_replace): Move here (removed + 2009-03-01). + +2010-07-19 Paolo Bonzini + + * 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 + + * 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 + + * lightning/i386/core.h: Rewrite shift-handling macros. + * lightning/fp-common.h: Fix jit_extr_{f_d,d_f}. + +2009-02-17 Mike Spivey + + * lightning/i386/core.h: Fix blunder in operand order. + +2009-02-17 Paolo Bonzini + + * lightning/i386/fp-32.h: Another fix to jit_fp_btest. + +2009-02-17 Paolo Bonzini + + * 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 + + * lightning/ppc/funcs.h (jit_flush_code): Subtract 1 from end. + Reported by Eli Barzilay and Matthew Flatt. + +2008-08-23 Nix + + * lightning/i386/Makefile.frag: fp-32.h and fp-64.h are target files. + +2008-07-02 Laurent Michel + + * 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 + + * lightning/i386/asm-64.h: Forward IMULQir to IMULQirr, + fix REXQ order for IMULQirr. + +2008-06-17 Paolo Bonzini + + * lightning/i386/core.h: Fix _rN vs. _rR. + +2008-06-16 Paolo Bonzini + + * 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 + + * lightning/i386/core-64.h: Rewrite argument passing to + support up to 6 arguments and generate less code. + +2008-06-14 Laurent Michel + + * 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 + + * lightning/i386/core-64.h: Add (void) casts for C++ compatibility. + * lightning/i386/asm.h: Likewise. + +2008-06-12 Paolo Bonzini + + * 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 + + * 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 + + * lightning/i386/core-32.h: Use MOVLir instead of jit_movi_l + to implement jit_movi_p. + +2008-06-11 Paolo Bonzini + + * 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 + + * lightning/i386/core-i386.h: Fix C++ incompatibility. + +2008-06-10 Laurent Michel + + * lightning/i386/core-i386.h: Fix jit_replace8 for + case when one of the operands is _EAX. + +2008-05-19 Paolo Bonzini + + * tests/run-test: Avoid CRLF issues on mingw. + +2008-03-21 Paolo Bonzini + + * 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 + + * lightning/i386/core-64.h: Fix uses of jit_qop_. + +2008-03-19 Paolo Bonzini + + * lightning/i386/core-64.h: Add boolean operations. + +2008-03-19 Paolo Bonzini + + * lightning/i386/asm-64.h: Add LEAQmr. + +2008-03-19 Paolo Bonzini + + * lightning/i386/core-64.h: Misc bugfixes. + +2008-03-19 Paolo Bonzini + + * 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 + + * lightning/asm-common.h: Add _s32P. + +2008-03-19 Paolo Bonzini + + * lightning/i386/core-64.h: Implement long mul/div/mod. + +2008-03-19 Paolo Bonzini + + * lightning/i386/asm-i386.h: Cast memory address to long for JCCim. + +2008-03-15 Paolo Bonzini + + * lightning/asm-common.h: Add underscores around __unused__ + attribute. + +2008-03-15 Paolo Bonzini + + * lightning/ppc/core.h: Avoid some "value computed is not used" + warnings. + * lightnings/tests/allocai.c: Silence other warnings. + +2008-03-14 Paolo Bonzini + + * lightningize.in: Fix some problems (not all). + +2008-03-14 Paolo Bonzini + + * lightning/i386/core-32.h: Avoid some "value computed is not used" + warnings; reported by Sam Steingold. + +2008-03-08 Paolo Bonzini + + * lightning/i386/core-32.h: Fix stxr_c(_EAX, _EBX, _ESI). + +2008-02-13 Paolo Bonzini + + * lightning/i386/asm-32.h: Avoid redefinition of _r1, reported by + Sam Steingold. + * lightning/i386/asm-64.h: Likewise. + +2008-02-08 Paolo Bonzini + + * lightning/i386/asm-i386.h: Don't define _VOID, reported + by Reini Urban. + +2008-02-03 Paolo Bonzini + + * build-aux/lightning.m4: Add --with-lightning-prefix option, suggested + by Sam Steingold. + +2008-01-14 Paolo Bonzini + + * lightning/i386/core-64.h: Use CALLsr, not CALLLsr. + +2008-01-13 Paolo Bonzini + + * 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 + + * 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 + + * 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 + + * opcode/Makefile.am: Fix AM_CPPFLAGS. + +2007-08-12 Paolo Bonzini + + * 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 + + * 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 + + * lightning/Makefile.am: Add clean-local target. + +2006-12-02 Paolo Bonzini + + * 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 + + * 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 + + * 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 + + * lightning/i386/asm-i386.h: Add an underscore to macros without + a parameter. + +2006-11-20 Paolo Bonzini + + * 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 + + * 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 + + * 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 + Ludovic Courtes + + * 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 + + * 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 + + * tests/rpn.c: Remove pushr/popr. + +2006-11-04 Paolo Bonzini + + * 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 + + * lightning/sparc/core.h: Implement jit_allocai. + * tests/allocai.c: New. + * tests/Makefile.am: Point to new tests. + +2006-11-03 Paolo Bonzini + + * lightning/ppc/core.h: Fix jit_bms using BNE rather than BGT. + "AND." does signed comparisons. + +2006-10-31 Paolo Bonzini + + * 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 + + * 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 + Ludovic Courtes + + * 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 + + * lightning/Makefile.am: Use "ln -sf". + * lightning/core-common.h: Define jit_negr_l if necessary. + +2006-10-30 Paolo Bonzini + + * lightning/i386/asm.h (MOVS*, MOVZ*): Use correct _r[124] macros. + +2006-10-29 Paolo Bonzini + + * 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 + + * 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 + + * 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 + + * 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 + + * lightning/i386/i386.h (jit_flush_code): Fix syntax error. :-( + +2006-07-06 Paolo Bonzini + Ludovic Courtes + + * 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 + Ludovic Courtes + + * 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 + + * lightning/i386/asm.h: Fix test for extending the mprotect area + towards lower addresses. + +2006-05-16 Bruno Haible + + * lightning/asm-common.h: Don't use __func__ nor __FUNCTION__ if + not compiling with GNU C. + +2006-02-16 Paolo Bonzini + + * lightning/ppc/core.h: Fix jit_ldxi_* with big displacement. + +2006-01-23 Paolo Bonzini + + * configure.ac: Fix comments in config.h.in. + +2005-11-25 Paolo Bonzini + + * lightning/sparc/fp.h: Fix header comment. + * lightning/ppc/fp.h: Fix header comment. + +2005-04-27 Paolo Bonzini + + * lightning/i386/asm.h (JCm, JCSm, JNCm, JNCSm): New. + +2004-11-26 Paolo Bonzini + + * lightning/ppc/funcs.h (_jit_epilog): Remove unused variable. + +2004-11-13 Paolo Bonzini + + * lightning/i386/funcs.h [__linux__]: Include sys/mman.h. + +2004-11-09 Paolo Bonzini + + * 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 + + * lightning/ppc/testfp.c: Always flush code before + testing it. + +2004-11-08 Paolo Bonzini + + * lightning/ppc/fp.h: Do not clobber f31. + +2004-11-08 Paolo Bonzini + + * 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 + + * lightning/i386/fp.h: Fix bugs in conditional branches. + +2004-10-10 Paolo Bonzini + + * lightning/i386/funcs.h: Fix pasto in jit_flush_code. + +2004-10-08 Paolo Bonzini + + * lightning/ppc/fp.h: Optimized conditional branches. + +2004-09-20 Paolo Bonzini + + * lightning/ppc/asm.h: Fix more typos. + +2004-09-20 Paolo Bonzini + + * lightning/ppc/asm.h: Fix typos, replace `26' with JIT_AUX. + +2004-09-20 Paolo Bonzini + + * lightning/ppc/fp.h: Added conditional branches. + +2004-09-18 Laurent Michel + + * 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 + + * lightning/ppc/funcs.h: Fix typo. + +2004-09-06 Paolo Bonzini + + * 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 + + * lightning/sparc/core.h: Add another V register, + move R0 to %o7. + +2004-07-15 Paolo Bonzini + + * lightning/i386/funcs.h: Implement jit_flush_code, + in order to support Fedora's exec-shield. + +2004-07-14 Paolo Bonzini + + * 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 + + * lightning/ppc/funcs.h: Adjust offset of LR into + stack frame if running under the Darwin ABI. + +2004-07-13 Paolo Bonzini + + * lightning/i386/fp.h: Rename jit_exti_d to jit_extr_i_d. + +2004-07-13 Paolo Bonzini + + * 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 + + * doc/porting.texi: Add missing macros. + +2004-07-12 Paolo Bonzini + + * 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 + + * 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 + + * 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 + + * lightning/i386/fp.h: Change "and" to "_and" + to satisfy C++ compilers. + +2004-04-14 Paolo Bonzini + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + * 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 + + * 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 + + * tests/rpnfp.c: new example, suggested by Basile + Starynkevitch. + * tests/rpnfp.ok: new example. + +2003-12-12 Paolo Bonzini + + * tests/add.c: new test, suggested by Steve Dekorte. + * tests/add.c: new test. + +2003-11-14 Paolo Bonzini + John Redford + + * 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 + + * lightning/i386/core.h: use JITSORRY in jit_replace + * lightning/asm-common.h: define JITSORRY + +2003-05-14 Paolo Bonzini + + * 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 + + * tests/printf2.c: new test + +2001-05-03 Paolo Bonzini + + * tests/printf.c: made the message platform independent + +2001-01-19 Paolo Bonzini + + * 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 -#include -#include -#include - -#if defined(__hpux) && defined(__hppa__) -# include -#endif -#if defined(__alpha__) && defined(__osf__) -# include -#endif - -#ifdef STDC_HEADERS -# include -#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 -#elif defined(__mips__) -# include -#elif defined(__arm__) -# include -#elif defined(__ppc__) || defined(__powerpc__) -# include -#elif defined(__sparc__) -# include -#elif defined(__ia64__) -# include -#elif defined(__hppa__) -# include -#elif defined(__aarch64__) -# include -#elif defined(__s390__) || defined(__s390x__) -# include -#elif defined(__alpha__) -# include -#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 -#include -#include - -#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 +#include +#include +#include +#include + +#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 similarity index 79% rename from libguile/lightning/lib/jit_aarch64-cpu.c rename to 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 similarity index 71% rename from libguile/lightning/lib/jit_aarch64-fpu.c rename to 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 similarity index 92% rename from libguile/lightning/lib/jit_aarch64.c rename to 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; + int32_t gpoff; + int32_t fpoff; - jit_int64_t x0; - jit_int64_t x1; - jit_int64_t x2; - jit_int64_t x3; - jit_int64_t x4; - jit_int64_t x5; - jit_int64_t x6; - jit_int64_t x7; + int64_t x0; + int64_t x1; + int64_t x2; + int64_t x3; + int64_t x4; + int64_t x5; + int64_t x6; + int64_t x7; jit_qreg_t q0; jit_qreg_t q1; @@ -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 similarity index 100% rename from libguile/lightning/include/lightning/jit_aarch64.h rename to libguile/lightning/jit/aarch64.h diff --git a/libguile/lightning/lib/jit_alpha-cpu.c b/libguile/lightning/jit/alpha-cpu.c similarity index 74% rename from libguile/lightning/lib/jit_alpha-cpu.c rename to 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 similarity index 75% rename from libguile/lightning/lib/jit_alpha-fpu.c rename to 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 similarity index 92% rename from libguile/lightning/lib/jit_alpha.c rename to 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 similarity index 100% rename from libguile/lightning/include/lightning/jit_alpha.h rename to libguile/lightning/jit/alpha.h diff --git a/libguile/lightning/lib/jit_arm-cpu.c b/libguile/lightning/jit/arm-cpu.c similarity index 87% rename from libguile/lightning/lib/jit_arm-cpu.c rename to 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 similarity index 87% rename from libguile/lightning/lib/jit_arm-swf.c rename to 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 similarity index 83% rename from libguile/lightning/lib/jit_arm-vfp.c rename to 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 similarity index 94% rename from libguile/lightning/lib/jit_arm.c rename to 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 similarity index 91% rename from libguile/lightning/include/lightning/jit_arm.h rename to 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 +#include +#include +#include +#include + +#if defined(__hpux) && defined(__hppa__) +# include +#endif +#if defined(__alpha__) && defined(__osf__) +# include +#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 similarity index 75% rename from libguile/lightning/lib/jit_hppa-cpu.c rename to 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 similarity index 80% rename from libguile/lightning/lib/jit_hppa-fpu.c rename to 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 similarity index 94% rename from libguile/lightning/lib/jit_hppa.c rename to 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 -#include - #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 similarity index 100% rename from libguile/lightning/include/lightning/jit_hppa.h rename to libguile/lightning/jit/hppa.h diff --git a/libguile/lightning/lib/jit_ia64-cpu.c b/libguile/lightning/jit/ia64-cpu.c similarity index 86% rename from libguile/lightning/lib/jit_ia64-cpu.c rename to 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 similarity index 77% rename from libguile/lightning/lib/jit_ia64-fpu.c rename to 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 similarity index 94% rename from libguile/lightning/lib/jit_ia64.c rename to 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 -#include - #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 similarity index 100% rename from libguile/lightning/include/lightning/jit_ia64.h rename to 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 +#include +#include +#include +#include + +#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 similarity index 71% rename from libguile/lightning/lib/jit_mips-cpu.c rename to 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 similarity index 68% rename from libguile/lightning/lib/jit_mips-fpu.c rename to 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 similarity index 93% rename from libguile/lightning/lib/jit_mips.c rename to 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 similarity index 100% rename from libguile/lightning/include/lightning/jit_mips.h rename to libguile/lightning/jit/mips.h diff --git a/libguile/lightning/lib/jit_ppc-cpu.c b/libguile/lightning/jit/ppc-cpu.c similarity index 77% rename from libguile/lightning/lib/jit_ppc-cpu.c rename to 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 similarity index 67% rename from libguile/lightning/lib/jit_ppc-fpu.c rename to 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 similarity index 93% rename from libguile/lightning/lib/jit_ppc.c rename to 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 similarity index 100% rename from libguile/lightning/include/lightning/jit_ppc.h rename to libguile/lightning/jit/ppc.h diff --git a/libguile/lightning/lib/jit_s390-cpu.c b/libguile/lightning/jit/s390-cpu.c similarity index 81% rename from libguile/lightning/lib/jit_s390-cpu.c rename to 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 similarity index 81% rename from libguile/lightning/lib/jit_s390-fpu.c rename to 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 similarity index 92% rename from libguile/lightning/lib/jit_s390.c rename to 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 -#include - #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 similarity index 100% rename from libguile/lightning/include/lightning/jit_s390.h rename to libguile/lightning/jit/s390.h diff --git a/libguile/lightning/lib/jit_sparc-cpu.c b/libguile/lightning/jit/sparc-cpu.c similarity index 80% rename from libguile/lightning/lib/jit_sparc-cpu.c rename to 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 similarity index 82% rename from libguile/lightning/lib/jit_sparc-fpu.c rename to 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 similarity index 94% rename from libguile/lightning/lib/jit_sparc.c rename to 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 similarity index 100% rename from libguile/lightning/include/lightning/jit_sparc.h rename to 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 similarity index 70% rename from libguile/lightning/lib/jit_x86-x87.c rename to 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, "" }, +}; + +#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; jargc = 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 -#include -#include - -/* - * 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 -#include - -/* - * 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 *)¬e->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 *)¬e->lines, 16 * sizeof(jit_line_t)); - else if ((note->length & 15) == 15) - jit_realloc((jit_pointer_t *)¬e->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 -#include - -#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 -#include - -#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 -#include - -/* - * 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 -#include - -#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, "" }, -}; - -/* - * 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 -#include -#include -#if defined(__sgi) -# include -#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(®mask, _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(®mask, node->u.q.l)) { - if (live || !jump) - jit_regset_clrbit(®mask, node->u.q.l); - if (live) - jit_regset_setbit(®live, node->u.q.l); - } - if (!(node->u.q.h & jit_regno_patch) && - jit_regset_tstbit(®mask, node->u.q.h)) { - if (live || !jump) - jit_regset_clrbit(®mask, node->u.q.h); - if (live) - jit_regset_setbit(®live, node->u.q.h); - } - } - else { - if (!(node->u.w & jit_regno_patch) && - jit_regset_tstbit(®mask, node->u.w)) { - if (live || !jump) - jit_regset_clrbit(®mask, node->u.w); - if (live) - jit_regset_setbit(®live, node->u.w); - } - } - } - if ((value & jit_cc_a1_reg) && - !(node->v.w & jit_regno_patch) && - jit_regset_tstbit(®mask, node->v.w)) { - live = !(value & jit_cc_a1_chg); - if (live || !jump) - jit_regset_clrbit(®mask, node->v.w); - if (live) - jit_regset_setbit(®live, node->v.w); - } - if ((value & jit_cc_a2_reg) && - !(node->w.w & jit_regno_patch) && - jit_regset_tstbit(®mask, node->w.w)) { - live = !(value & jit_cc_a2_chg); - if (live || !jump) - jit_regset_clrbit(®mask, node->w.w); - if (live) - jit_regset_setbit(®live, 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: - *