mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
4018 lines
146 KiB
Text
4018 lines
146 KiB
Text
2018-04-20 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_private.h: Add new register classes to
|
|
flag float registers and double only registers, required for sparc64
|
|
where only low 32 bit fpr registers can be used for single precision
|
|
operations.
|
|
Add new 128 bit jit_regset_t type for sparc64 register set.
|
|
|
|
* include/lightning/jit_sparc.h, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c,
|
|
lib/jit_sparc-sz.c, lib/jit_sparc.c: Update for 64 bits sparc.
|
|
|
|
* lib/lightning.c: Update for new jit_regset_t required for sparc64.
|
|
|
|
2018-02-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c, include/lightning.h: Add the new jit_va_push
|
|
interface. That should be called when passing a va_list to a C
|
|
function. This is required because on Alpha a va_list is passed
|
|
by value, and lightning does not know about data types, so, cannot
|
|
understand it is pushing a va_list as argument.
|
|
|
|
* lib/jit_names.c, lib/lightning.c: Minor changes for the new
|
|
jit_code_va_push.
|
|
|
|
* check/cva_list.c: Update only test case using jit_va_push, to
|
|
pass a va_list to a C function.
|
|
|
|
doc/body.texi: Better documentation of the varargs interface.
|
|
|
|
* jit_alpha.c, jit_alpha-cpu.c: Update to properly push a
|
|
C va_list and correctly calculate varargs offset.
|
|
|
|
* lib/jit_aarch64-sz.c, lib/jit_aarch64.c, lib/jit_alpha-sz.c,
|
|
lib/jit_arm-sz.c, lib/jit_arm.c, lib/jit_hppa-sz.c, lib/jit_hppa.c,
|
|
lib/jit_ia64-sz.c, lib/jit_ia64.c, lib/jit_mips-sz.c, lib/jit_mips.c,
|
|
lib/jit_ppc-sz.c, lib/jit_ppc.c, lib/jit_s390-sz.c, lib/jit_s390.c,
|
|
lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-sz.c, lib/jit_x86.c:
|
|
Update for the new jit_va_push interface.
|
|
|
|
2018-02-22 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_alpha-cpu.c: Always set t12 to the address of the
|
|
current function, to properly work on all systems. Previously
|
|
the shortcut did only work on Tru64. For Linux and glibc the
|
|
change is required.
|
|
|
|
2018-02-22 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
|
|
lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c:
|
|
Correct wrong logic in usage of jit_live in jit_retr. The
|
|
problem is that if a temporary is required during epilog,
|
|
the return register might be allocated, so, jit_live must always
|
|
be used.
|
|
|
|
2018-01-31 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Avoid deep recursions when computing live
|
|
register ranges.
|
|
|
|
2018-01-31 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_mips-cpu.c: Correct frame size and varargs
|
|
initialization for the n32 abi.
|
|
* lib/jit_mips.c, lib/jit_mips-fpu.c: Correct 32 bit abis
|
|
in big-endian.
|
|
|
|
2017-09-13 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac: Add check for binutils 2.29 prototype to the
|
|
disassembler function.
|
|
* lib/jit_disasm.c: Adapt for binutils 2.29 change.
|
|
|
|
2017-06-09 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_private.h, lib/lightning.c: Add a
|
|
second pass from start when computing register live ranges.
|
|
This should be used temporarily, and is required for certain
|
|
loop constructs, with several consecutive blocks not referencing
|
|
a live register.
|
|
|
|
2016-05-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Correct wrong movr simplification,
|
|
remove no longer needed code to set return registers live
|
|
and update live register set when reaching a label boundary,
|
|
but do not descend if the block has been already visited.
|
|
The later need some tuning for complex code generation, where
|
|
it will still have issues.
|
|
|
|
2015-11-30 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Change documentation to no longer say
|
|
it is a variant of the Fibonacci sequence, and document
|
|
a proper implementation.
|
|
Thanks to Jon Arintok for pointing out that the Fibonacci
|
|
sequence generation was incorrect. It was documented, but
|
|
still confusing.
|
|
|
|
* check/fib.tst, check/fib.ok, check/bp.tst, check/bp.ok,
|
|
doc/ifib.c, doc/rbif.c: Implement a proper Fibonacci
|
|
sequence implementation.
|
|
|
|
2015-07-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_mips-cpu.c: Correct definition of htonr_ul.
|
|
Correct prolog/epilog/va* routines to work on o64 abi.
|
|
|
|
* lib/jit_mips-fpu.c: Correct load of double literal
|
|
argument when not using a data buffer.
|
|
Remove alignment correction in vaarg_d if using the
|
|
new mips abi.
|
|
|
|
* lib/jit_mips.c: Correct code to allow creating variadic
|
|
jit functions when using the new mips abi.
|
|
|
|
* lib/jit_rewind.c: Minor adjust for rewind when using
|
|
the new mips abi, if there are varargs arguments in
|
|
registers.
|
|
|
|
2015-06-06 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64-cpu.c: Search backward for the last output
|
|
register used, otherwise would stop too early if a float
|
|
argument used the slot.
|
|
Correct offset of first va_list argument, and use proper
|
|
va_list abi.
|
|
|
|
* lib/jit_ia64-fpu.c: Add new functions to move a gpr
|
|
to a fpr register, to counterpart the ones that move a
|
|
fpr to a gpr. These are required to properly implement
|
|
jit_getarg*_{f,d} on complex prototypes, or variadic
|
|
jit functions.
|
|
|
|
* lib/jit_ia64-sz.c: Update for support to jit variadic
|
|
functions.
|
|
|
|
* lib/jit_ia64.c: Implement proper abi for variadic
|
|
jit functions.
|
|
|
|
2015-06-04 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_rewind.c: New file implementing generic functions
|
|
to "rewind", or rewrite IR code sequences.
|
|
|
|
* include/lightning.h: Add several new codes, that previously
|
|
were a function call, that would synthesize the operation.
|
|
Now, there is a code for the operation, and a new flag to
|
|
know an operation is synthesized.
|
|
|
|
* include/lightning/jit_private.h: Add several new macros to
|
|
help construct synthesized IR code sequences.
|
|
|
|
* lib/Makefile.am: Update for lib/jit_rewind.c.
|
|
|
|
* lib/jit_disasm.c: Update for a small rework on jit_node_t,
|
|
so that --enable-devel-disassembler does not need a change
|
|
in the layout of jit_node_t.
|
|
|
|
* lib/jit_names.c: Update for the new codes.
|
|
|
|
* lib/jit_print.c: Update to print more readable output, and
|
|
flag synthesized IR code sequences.
|
|
|
|
* lib/jit_aarch64-sz.c, lib/jit_aarch64.c,
|
|
lib/jit_arm-sz.c, lib/jit_arm.c, lib/jit_x86-sz.c,
|
|
lib/jit_x86.c: Update for new synthesized IR code sequences.
|
|
|
|
* lib/jit_ppc-cpu.c, lib/jit_ppc-fpu., lib/jit_ppc-sz.c,
|
|
lib/jit_ppc.c, lib/jit_mips-cpu.c, lib/jit_mips-fpu.c,
|
|
lib/jit_mips-sz.c, lib/jit_mips.c, lib/jit_s390-fpu.c,
|
|
lib/jit_s390-sz.c, lib/jit_s390.c: Update for new synthesized
|
|
IR code sequences and correct bugs in the initial varargs
|
|
implementation support.
|
|
|
|
* lib/jit_alpha-sz.c, lib/jit_alpha.c, lib/jit_hppa-sz.c,
|
|
lib/jit_hppa.c, lib/jit_ia64-sz.c, lib/jit_ia64.c,
|
|
lib/jit_sparc-sz.c, lib/jit_sparc.c: Add generic, untested
|
|
support for the new synthesized IR code sequences. Known
|
|
most likely broken right now, and should be corrected once
|
|
access to these hosts is available.
|
|
|
|
* lib/lightning.c: Update for new IR codes, and add support
|
|
for not yet existing instructions that change third argument.
|
|
|
|
* size.c: Change to use different tables for LE and BE PowerPC.
|
|
Correct a wrong endif for x32.
|
|
|
|
2015-05-25 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/cva_list.c: New file implementing a test to ensure
|
|
the value returned by jit_va_start is a valid C va_list.
|
|
|
|
* check/va_list.ok: New simple helper file, as now the
|
|
va_list.tst test is enabled.
|
|
|
|
* check/va_list.tst: Rewritten for an extensive variadic
|
|
jit functions test.
|
|
|
|
* check/Makefile.am: Update for the new tests.
|
|
|
|
* lib/jit_arm-cpu.c, lib/jit_arm-swf.c, lib/jit_arm-vfp.c,
|
|
lib/jit_arm.c: Correct broken software float in a previous
|
|
commit. Note that the hard float abi implementation is known
|
|
broken at this time, for special cases involving variadic
|
|
functions, and should be corrected next.
|
|
|
|
lib/jit_x86-cpu.c, lib/jit_x86-sz.c, lib/jit_x86.c: Correct
|
|
the jit_va_list_t semantics to match C va_list.
|
|
|
|
2015-05-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/Makefile.am: Bump library major. This is a preparation
|
|
for a rework that was due for quite some time, but that is
|
|
now required to properly implement variadic jit functions.
|
|
The rework is mainly required to know at prolog parsing, if
|
|
a function is variadic or not. This will benefit a few
|
|
backends, and is mandatory for the hard float arm abi.
|
|
The rework was already planned for quite some time, to
|
|
be able to use a variable stack framesize, and for leaf
|
|
functions optimization where applicable.
|
|
The change will be source compatible, but will change
|
|
some internals, and jit_code_t values, as some new will
|
|
be added.
|
|
The only behavior change is that, jit_arg_register_p may
|
|
change return value on hard float arm abi, if called before
|
|
or after jit_ellipsis. Common sense anyway, would say to
|
|
make that call after jit_ellipsis, but documentation
|
|
should be updated for it.
|
|
|
|
2015-05-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: Correct base
|
|
aarch64 varargs code.
|
|
|
|
2015-05-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c: Clearly run check if clang is the system
|
|
compiler.
|
|
|
|
2015-05-20 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c, lib/jit_sparc.c:
|
|
Add base support to jit vararg functions to the sparc backend.
|
|
|
|
2015-05-20 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c, lib/jit_alpha.c:
|
|
Add base support to jit vararg functions to the alpha backend.
|
|
|
|
2015-05-19 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c, lib/jit_hppa.c:
|
|
Add base support to jit vararg functions to the hppa backend.
|
|
|
|
2015-05-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, lib/jit_ia64.c:
|
|
Add base support to jit vararg functions to the ia64 backend.
|
|
|
|
2015-05-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64-fpu.c, lib/jit_ia64.c: Correct movi_d_w
|
|
and movi_f_w implementation to work when not using a
|
|
data buffer. This causes the check varargs.tst to
|
|
work when passing "-d" to the lightning test tool.
|
|
|
|
2015-05-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64.c: Implement inline assembly cache flush,
|
|
required on multiprocessor systems.
|
|
|
|
2015-05-06 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips.c:
|
|
Add base support to jit vararg functions to the mips backend.
|
|
Currently only supported on the o32 abi, until access to a
|
|
n32 system is arranged.
|
|
|
|
2015-05-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c:
|
|
Add base support to jit vararg functions to the PowerPC backend.
|
|
|
|
2015-05-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_s390-cpu.c, lib/jit_s390-fpu.c, lib/jit_s390.c:
|
|
Add base support to jit vararg functions to the s390 backend.
|
|
|
|
2015-05-01 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm-cpu.c, lib/jit_arm-swf.c, lib/jit_arm-vfp.c,
|
|
lib/jit_arm.c: Add base support to jit vararg
|
|
functions to the arm backend.
|
|
|
|
2015-04-30 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c,
|
|
lib/jit_aarch64.c: Add base support to jit vararg
|
|
functions to the aarch64 backend.
|
|
|
|
2015-04-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h,
|
|
lib/jit_names.c, lib/lightning.c: Add initial support
|
|
for the new jit_va_start, jit_va_arg, jit_va_arg_d, and
|
|
jit_va_end interfaces. The jit_va_start call is supposed
|
|
to return a va_list compatible pointer, but not yet
|
|
decided if it will be "declared" stdarg compatible,
|
|
as for now only x86 support has been added (and should
|
|
be compatible), but issues may arise on other backends.
|
|
|
|
* check/lightning.c: Add wrappers to call the new jit_va_*
|
|
interfaces.
|
|
|
|
* lib/jit_x86-cpu.c, lib/jit_x86.c: Implement the new
|
|
jit_va_* for x86.
|
|
|
|
* lib/jit_x86-sz.c: Add fields, but not yet fully updated,
|
|
as this is an intermediate commit.
|
|
|
|
* lib/jit_aarch64-sz.c, lib/jit_aarch64.c,
|
|
lib/jit_alpha-sz.c, lib/jit_alpha.c,
|
|
lib/jit_arm-sz.c, lib/jit_arm.c,
|
|
lib/jit_hppa-sz.c, lib/jit_hppa.c,
|
|
lib/jit_ia64-sz.c, lib/jit_ia64.c,
|
|
lib/jit_mips-sz.c, lib/jit_mips.c,
|
|
lib/jit_ppc-sz.c, lib/jit_ppc.c,
|
|
lib/jit_s390-sz.c, lib/jit_s390.c,
|
|
lib/jit_sparc-sz.c, lib/jit_sparc.c: Prepare for the
|
|
new jit_va_* interfaces. Not yet implemented, and will
|
|
cause an assertion if used.
|
|
|
|
* check/va_list.tst: Simple early test case, that works
|
|
on x86_64, x32, ix86, cygwin, and cygwin64.
|
|
|
|
2015-02-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h,
|
|
lib/jit_aarch64-cpu.c, lib/jit_aarch64.c,
|
|
lib/jit_alpha-cpu.c, lib/jit_alpha.c,
|
|
lib/jit_arm-cpu.c, lib/jit_arm.c,
|
|
lib/jit_hppa-cpu.c, lib/jit_hppa.c,
|
|
lib/jit_ia64-cpu.c, lib/jit_ia64.c,
|
|
lib/jit_mips-cpu.c, lib/jit_mips.c,
|
|
lib/jit_ppc-cpu.c, lib/jit_ppc.c,
|
|
lib/jit_s390-cpu.c, lib/jit_s390.c,
|
|
lib/jit_sparc-cpu.c, lib/jit_sparc.c,
|
|
lib/jit_x86-cpu.c, lib/jit_x86.c: Implement the new
|
|
jit_allocar(offs, size) interface, that receives
|
|
two integer registers arguments, allocates space
|
|
dynamically in the stack, returns the offset in
|
|
the first argument, and uses the second argument
|
|
for the size in bytes of the memory to be allocated.
|
|
|
|
* check/allocar.ok, check/allocar.tst: New files
|
|
implementing test cases for the new jit_allocar
|
|
interface.
|
|
|
|
* check/Makefile.am, check/lightning.c: Update for
|
|
the new test case and interface.
|
|
|
|
* doc/body.texi: Add documentation of the new
|
|
interface.
|
|
|
|
2015-02-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_x86.h, lib/jit_x86-cpu.c,
|
|
lib/jit_x86-x87.c: No longer make st(7) available.
|
|
Need to keep one x87 slots empty to avoid exceptions.
|
|
This has the side effect of no longer needing the
|
|
hackish emms instruction before a function call.
|
|
|
|
2015-02-16 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Remove the jit_regno_patch bitfield
|
|
register fields before actual emit, as it is only really
|
|
used before emit, otherwise, on special conditions it
|
|
may consider live registers as dead during code emit.
|
|
|
|
2015-02-15 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
|
|
Correct encoding of ldxr* stxr* in the x32 abi. If the
|
|
displacement register is negative, it would generate
|
|
a 64 bit instruction with a 32 bit unsigned displacement.
|
|
|
|
* check/ranger.tst, check/ranger.ok: New files, implementing
|
|
a test case for negative loads and stores. This is range.tst
|
|
converted to use registers instead of immediate offsets.
|
|
|
|
check/Makefile.am: Update for the new test case.
|
|
|
|
2015-02-07 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_size.c: Preventively use at least 144 bytes
|
|
if JIT_INSTR_MAX is less than it. The logic is not
|
|
guaranteed to be 100% precise, it is mostly heuristics
|
|
to allocate a buffer with as close as possible size,
|
|
but a wrong value may cause code generation to write
|
|
past the end of the buffer.
|
|
|
|
2015-02-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Correct the reason the bug in
|
|
simplify_stxi was not triggered before, it was due to
|
|
incorrectly resetting the value->code field, what was
|
|
causing it to never properly optimize:
|
|
stxi Im0 Rb0 Rt0
|
|
ldxi Rt1 Rb1 Im1
|
|
when Rb0 == Rb1, Rt0 == Rt1 and Im0 == Im1
|
|
There was another possible issue, that has been also
|
|
addressed in this commit, that would be the case of
|
|
Rbn == Rtn, where no redundancy removal is possible.
|
|
|
|
2015-02-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Correct wrong check in simplify_stxi.
|
|
The test was incorrectly comparing the target register
|
|
and the displacement offset. This was a time bomb bug,
|
|
that would trigger in code like:
|
|
stxi Im0 Rb0 Rt0
|
|
stxi Im1 Rb1 Rt1
|
|
if Rb0 == Rb1 && Rt0 == Rt1 && Im0 == Rt1, that is,
|
|
the wrong check was Im0 == Rt1, instead of the supposed
|
|
Im0 == Imm1 (that was what the code mean't to do). It
|
|
was removing the second stxi assuming it was redundantly
|
|
generated; as that is not uncommon pattern on
|
|
translators generating jit.
|
|
|
|
2015-02-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac, include/lightning/jit_private.h,
|
|
lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
|
|
lib/jit_disasm.c, lib/jit_hppa.c, lib/jit_ia64.c,
|
|
lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c,
|
|
lib/jit_s390.c, lib/jit_sparc.c, lib/jit_x86.c: Add a new
|
|
--enable-devel-disassembler option, that should be used
|
|
during development, or lightning debug. This option
|
|
intermixes previous jit_print and jit_disassemble
|
|
output, making it easier to visualize what lightning
|
|
call was used, and what code was generated.
|
|
|
|
2015-01-31 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm-cpu.c, lib/jit_arm.c: Only limit to 24 bit
|
|
displacement non conditional jump in the same jit_state_t.
|
|
|
|
2015-01-19 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Reorder documentation, making jit_frame
|
|
and jit_tramp the lightning response to the need of
|
|
trampolines, continuations and tail call optimizations.
|
|
A pseudo code example of a factorial function was added.
|
|
Also added a section for description of the available
|
|
predicates.
|
|
|
|
* doc/fact.c: New file, implementing a simple example of
|
|
a translation of a trivial, recursive, tail call optimization
|
|
into lightning calls. This is the conversion to functional C
|
|
code of the example in doc/body.texi.
|
|
|
|
* doc/Makefile.am: Update for the next test case.
|
|
|
|
2015-01-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/jit_aarch64.c,
|
|
lib/jit_alpha.c, lib/jit_arm-vfp.c, lib/jit_arm.c,
|
|
lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c,
|
|
lib/jit_ppc.c, lib/jit_s390.c, lib/jit_sparc.c,
|
|
lib/jit_x86.c: Add the new jit_arg_register_p predicate.
|
|
The predicate is expected to be used to know if an
|
|
argument is in a register, what would need special
|
|
handling if code that can overwrite non callee save
|
|
registers is executed.
|
|
|
|
* check/carg.c: New test case to check consistency and
|
|
expected usage of jit_arg_register_p.
|
|
|
|
* check/Makefile.am: Update for new test case.
|
|
|
|
2015-01-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_aarch64.h,
|
|
include/lightning/jit_alpha.h,
|
|
include/lightning/jit_arm.h,
|
|
include/lightning/jit_hppa.h,
|
|
include/lightning/jit_mips.h,
|
|
include/lightning/jit_ppc.h,
|
|
include/lightning/jit_s390.h,
|
|
include/lightning/jit_sparc.h,
|
|
include/lightning/jit_x86.h,
|
|
lib/jit_aarch64.c, lib/jit_alpha.c,
|
|
lib/jit_arm.c, lib/jit_hppa.c,
|
|
lib/jit_ia64.c, lib/jit_mips.c,
|
|
lib/jit_ppc.c, lib/jit_s390.c,
|
|
lib/jit_sparc.c, lib/jit_x86.c: Remove jit_arg_reg_p and
|
|
jit_arg_f_reg_p from a public header, and define it only
|
|
on port specific files where an integer offset is used
|
|
to qualify an argument identifier. Exported code expects
|
|
an opaque pointer (but of jit_node_t* type) to "qualify"
|
|
an argument identifier.
|
|
This patch, and the code review/simplification done during
|
|
it also corrected some bugs:
|
|
o Inconsistent jit_arg_d value of double argument after 3
|
|
integer arguments in arm for jit_functions; tested, C
|
|
functions were being properly called.
|
|
o Inconsistent use of getarg_{f,d} and putarg*_{f,d} on
|
|
s390 (32-bit) that happened to not have a proper test
|
|
case, as it would only happen for jit functions, and
|
|
tested, called C functions had proper arguments.
|
|
o Corrected a "last minute" correction that did not go
|
|
to the committed version, and would not compile on hppa,
|
|
due to bad _jit_putargi_d prototype definition.
|
|
|
|
2015-01-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Correct wrong/outdated information for
|
|
hton*, pusharg* and ret*, and add missing documentation
|
|
for rsb*, qmul*, qdvi* and putarg*.
|
|
|
|
2015-01-15 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac, lib/jit_disasm.c: Rewrite workaround
|
|
to apparent problem to initialize powerpc disassembler.
|
|
|
|
2015-01-15 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/jit_aarch64.c,
|
|
lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c,
|
|
lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
|
|
lib/jit_s390.c, lib/jit_sparc.c, lib/jit_x86.c:
|
|
Implement jit_putarg*. It works as a mix of jit_getarg*
|
|
and jit_pusharg*, in the way that the first argument is
|
|
a register or immediate, and the second is a pointer
|
|
returned by jit_arg*. The use of the interface is to change
|
|
values of arguments to the current jit function.
|
|
|
|
* check/put.ok, check/put.tst: New test cases exercising
|
|
the new jit_putarg* interface.
|
|
|
|
* check/Makefile.am, check/lightning.c: Update for the
|
|
new test case and interface.
|
|
|
|
2015-01-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_s390.h, lib/jit_s390-cpu.c,
|
|
lib/jit_s390-fpu.c, lib/jit_s390-sz.c, lib/jit_s390.c:
|
|
Renamed s390x* files to s390*.
|
|
|
|
* check/float.tst, check/lightning.c, configure.ac,
|
|
include/lightning.h, include/lightning/Makefile.am,
|
|
lib/Makefile.am, lib/jit_s390.c, lib/jit_size.c,
|
|
lib/lightning.c: Update for renamed files.
|
|
|
|
2015-01-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h,
|
|
include/lightning/jit_s390x.h, lib/jit_disasm.c,
|
|
lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x-sz.c,
|
|
lib/jit_s390x.c, lib/jit_size.c, lib/lightning.c:
|
|
Add support for generating jit for s390 32 bit. This change
|
|
also removed %f15 from the list of temporaries fpr registers;
|
|
it was not being used, but if were, it would corrupt the
|
|
stack frame because the spill address would overwrite grp
|
|
offsets.
|
|
|
|
2014-12-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ppc-cpu.c, lib/jit_ppc.c: Correct some endianess issues
|
|
on the powerpc le backend.
|
|
|
|
2014-12-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ppc-cpu.c: Add mcrxr instruction emulation,
|
|
as this instruction has been phased out, and should be
|
|
implemented as a kernel trap.
|
|
|
|
2014-12-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm.c: Better check for need to flush constants
|
|
before the pool being no longer reachable.
|
|
|
|
2014-12-25 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h: Split jit_htonr in the new 3 interfaces
|
|
jit_htonr_us, jit_htonr_ui and jit_htonr_ul, the later only
|
|
available on 64 bit. The plain/untyped jit_htonr macro call
|
|
maps to the wordsize one.
|
|
* lib/jit_aarch64-cpu.c, lib/jit_aarch64-sz.c, lib/jit_aarch64.c,
|
|
lib/jit_alpha-cpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c,
|
|
lib/jit_arm-cpu.c, lib/jit_arm-sz.c, lib/jit_arm.c,
|
|
lib/jit_hppa-cpu.c, lib/jit_hppa-sz.c, lib/jit_hppa.c,
|
|
lib/jit_ia64-cpu.c, lib/jit_ia64-sz.c, lib/jit_ia64.c,
|
|
lib/jit_mips-cpu.c, lib/jit_mips-sz.c, lib/jit_mips.c,
|
|
lib/jit_ppc-cpu.c, lib/jit_ppc-sz.c, lib/jit_ppc.c,
|
|
lib/jit_s390x-cpu.c, lib/jit_s390x-sz.c, lib/jit_s390x.c,
|
|
lib/jit_sparc-cpu.c, lib/jit_sparc-sz.c, lib/jit_sparc.c,
|
|
lib/jit_x86-cpu.c, lib/jit_x86-sz.c, lib/jit_x86.c:
|
|
Update backends for the new jit_htonr*.
|
|
* check/lightning.c, lib/jit_names.c, lib/lightning.c:
|
|
Update for the new jit_htonr* interfaces.
|
|
* check/Makefile.am: Update for new test cases.
|
|
* check/hton.ok, check/hton.tst: New test cases.
|
|
|
|
2014-12-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_private.h, include/lightning/jit_x86.h,
|
|
lib/jit_disasm.c, lib/jit_x86-cpu.c, lib/jit_x86-sse.c,
|
|
lib/jit_x86-sz.c, lib/jit_x86-x87.c, lib/jit_x86.c,
|
|
size.c: Implement support for the x32 abi. Built and
|
|
tested on Gentoo default/linux/amd64/13.0/x32 profile.
|
|
|
|
2014-12-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_names.c: Add missing rsbi_f and rsbi_d strings.
|
|
|
|
2014-12-21 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm.c: Call __clear_cache for every page.
|
|
This should only be required for older boards or
|
|
toolchain setup, but has been reported to be required
|
|
for lightning at some point.
|
|
|
|
2014-12-21 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm.c: Correct check to guard overflow of index
|
|
of constants from program counter.
|
|
|
|
2014-11-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Remove an optimization to calee save
|
|
registers that may incorrectly remove a jit_movr under
|
|
special conditions.
|
|
|
|
2014-11-20 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c,
|
|
lib/jit_ppc.c: Add initial powerpc le support.
|
|
|
|
2014-11-20 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_disasm.c: Change thumb or arm disassemble based on
|
|
jit code before disassembly.
|
|
|
|
* lib/jit_arm-cpu.c: Correct reversed arguments to LDRD and
|
|
STRD instructions, and correct checking for support of those.
|
|
|
|
* lib/jit_arm-swf.c: Correct wrong use of LDRD and STRD and
|
|
only use those if the register is even.
|
|
|
|
* check/check.arm.swf.sh, check/check.arm4.swf.sh: New files
|
|
to test LDRD and STRD, as well as the alternate code path
|
|
when those are not available, in the .arm4. test case.
|
|
|
|
* check/Makefile.am: Update for the new test cases.
|
|
|
|
2014-11-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_private.h, lib/jit_aarch64.c,
|
|
lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c,
|
|
lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
|
|
lib/jit_s390x.c, lib/jit_sparc.c, lib/jit_x86.c:
|
|
Implement a private jit_flush call, that flushes
|
|
the cache, if applicable, aligning down to the
|
|
previous and up to the next page boundary.
|
|
|
|
2014-11-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/ctramp.c: New file. It just repeats the test
|
|
of tramp.tst, but using two jit_state_t, what should
|
|
test possible issues with two contexts, and also validate
|
|
jit_tramp works on backends with function descriptions.
|
|
|
|
* check/Makefile.am: Update for new test case.
|
|
|
|
2014-11-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_mips.h: Do not make the t9 register
|
|
JIT_R11 (or JIT_R7 for n32 or n64 abi) available. Previously
|
|
it cause problems if one expects it to not be changed in a
|
|
function call. For example, calling a jit function, where it
|
|
really does not need to be changed.
|
|
|
|
2014-10-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
|
|
lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
|
|
lib/jit_s390x.c, lib/jit_sparc.c, lib/jit_x86.c: Add an
|
|
assertion to all code generation "drivers" to ensure
|
|
_jitc->regarg is empty or in an expected state, after
|
|
translation of a lightning instruction to native code.
|
|
This change was a brute force test to find out other cases
|
|
of a temporary not being release (like was happening with
|
|
_bmsi and _bmci on x86), but no other case was found,
|
|
after running make check, with assertions enabled, on all
|
|
backends.
|
|
|
|
2014-10-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-cpu.c: Correct a register allocation leak in
|
|
_bmsi and _bmci.
|
|
|
|
2014-10-25 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_disasm.c: Do not cause an fatal error if init_jit
|
|
fails in the jit_init_debug call.
|
|
|
|
2014-10-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64.c, lib/jit_ppc.c: Correct handling of function
|
|
descriptor when first prolog is a jit_tramp prolog. The
|
|
test case was using the same jit_context_t, so was not
|
|
triggering this condition.
|
|
|
|
* lib/jit_ppc-cpu.c: Properly handle jump displacements that
|
|
do not fit on 24 powerpc. This required changing from previous
|
|
"mtlr reg, blr" to "mtctr reg, bctr" to properly handle
|
|
the logic to "hide" function descriptors, but that would
|
|
also be required as the proper jit_jmpr when/if implementing
|
|
optimizations to leaf functions (was working with blr because
|
|
it is saved/reloaded in prolog/epilog).
|
|
|
|
2014-10-21 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/lightning.c: Add three predicates
|
|
to query information about labels. jit_forward_p(label)
|
|
will return non zero if the label is "forward", that is
|
|
need a call to jit_link(label), jit_indirect_p(label)
|
|
that returns non zero if the label was created with the
|
|
jit_indirect() call, and jit_target_p(label) that will
|
|
return non zero if there is at least one jump patched
|
|
to land at that label.
|
|
|
|
2014-10-18 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/range.ok, check/range.tst: New test case designed
|
|
to catch incorrect code generation, usually due to incorrect
|
|
test of immediate size. The test checks a large amount of
|
|
encodings in "power of two" boundaries. This test exorcises
|
|
a significant amount of code paths that was previously not
|
|
tested.
|
|
|
|
* check/Makefile.am: Add range test to make check target.
|
|
|
|
* lib/jit_aarch64-cpu.c: Correct wrong address calculation
|
|
for stxi_c, stxi_s, stxi_i and stxi_l when the offset is
|
|
too large.
|
|
|
|
* lib/jit_mips-fpu.c: Correct wrong size test to check if
|
|
an immediate can be encoded in a float or double store.
|
|
|
|
* lib/jit_s390x-cpu.c: Correct inverted encoding to stxi_s
|
|
when the offset cannot be encoded, and fallbacks to an
|
|
alternate encoding in 2 instructions.
|
|
|
|
2014-10-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/alu_rsb.ok, check/alu_rsb.tst: New files implementing
|
|
tests for jit_rsb*.
|
|
|
|
* check/Makefile.am, check/lightning.c, include/lightning.h,
|
|
lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c, lib/jit_aarch64-sz.c,
|
|
lib/jit_aarch64.c, lib/jit_alpha-cpu.c, lib/jit_alpha-fpu.c,
|
|
lib/jit_alpha-sz.c, lib/jit_alpha.c, lib/jit_arm-cpu.c,
|
|
lib/jit_arm-swf.c, lib/jit_arm-sz.c, lib/jit_arm-vfp.c,
|
|
lib/jit_arm.c, lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c,
|
|
lib/jit_hppa-sz.c, lib/jit_hppa.c, lib/jit_ia64-cpu.c,
|
|
lib/jit_ia64-fpu.c, lib/jit_ia64-sz.c, lib/jit_ia64.c,
|
|
lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips-sz.c,
|
|
lib/jit_mips.c, lib/jit_names.c, lib/jit_ppc-cpu.c,
|
|
lib/jit_ppc-fpu.c, lib/jit_ppc-sz.c, lib/jit_ppc.c,
|
|
lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c, lib/jit_s390x-sz.c,
|
|
lib/jit_s390x.c, lib/jit_sparc-cpu.c, lib/jit_sparc-fpu.c,
|
|
lib/jit_sparc-sz.c, lib/jit_sparc.c, lib/jit_x86-cpu.c,
|
|
lib/jit_x86-sse.c, lib/jit_x86-sz.c, lib/jit_x86-x87.c,
|
|
lib/jit_x86.c, lib/lightning.c: Implement jit_rsb*. This
|
|
was a missing lightning 1.x interface, that on most
|
|
backends is synthesized, but on a few backends (hppa and ia64),
|
|
it can generate better code as on those there is, or the
|
|
only instruction with an immediate is in "rsb" format
|
|
(left operand).
|
|
|
|
2014-10-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_names.c: New file with single definition of string
|
|
representation of lightning IR codes.
|
|
|
|
* size.c: Modified to append the code name in a C comment
|
|
after the maximum instruction size.
|
|
|
|
* lib/jit_print.c: Minor change to not duplicate jit_names.c
|
|
contents.
|
|
|
|
* lib/jit_aarch64-sz.c, lib/jit_alpha-sz.c, lib/jit_arm-sz.c,
|
|
lib/jit_hppa-sz.c, lib/jit_ia64-sz.c, lib/jit_mips-sz.c,
|
|
lib/jit_ppc-sz.c, lib/jit_s390x-sz.c, lib/jit_sparc-sz.c,
|
|
lib/jit_x86-sz.c: Rewritten to add string representation of
|
|
IR codes in a C comment.
|
|
|
|
2014-10-14 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64-cpu.c, lib/jit_alpha-cpu.c, lib/jit_arm-cpu.c,
|
|
lib/jit_hppa-cpu.c, lib/jit_mips-cpu.c, lib/jit_ppc-cpu.c,
|
|
lib/jit_sparc-cpu.c: Implement or correct the internal
|
|
nop(count) call that receives an argument that tells the
|
|
modulo bytes to align the code for the next instruction.
|
|
|
|
* include/lightning.h, lib/lightning.c, lib/jit_aarch64.c,
|
|
lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c, lib/jit_ia64.c,
|
|
lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c, lib/jit_sparc.c,
|
|
lib/jit_x86.c: Implement the new jit_align() call that receive
|
|
an argument, that tells the modulo, in bytes, to align the
|
|
next instruction. In most backends the only value that makes
|
|
a difference is a value that matches sizeof(void*), as all
|
|
other values usually are already automatically aligned in
|
|
labels, but not guaranteed to be aligned at word size bytes.
|
|
|
|
* check/align.ok, check/align.tst: New files, implementing
|
|
a simple test for the new jit_align() interface.
|
|
|
|
* check/Makefile.am, check/lightning.c, lib/jit_aarch64-sz.c,
|
|
lib/jit_alpha-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c,
|
|
lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c,
|
|
lib/jit_print.c, lib/jit_s390x-sz.c, lib/jit_sparc-sz.c,
|
|
lib/jit_x86-sz.c: Update for the new jit_code_align code and
|
|
the jit_align() interface.
|
|
|
|
2014-10-13 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/jit_size.c, size.c: Use a
|
|
symbolic value for the last IR code.
|
|
|
|
2014-10-12 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h,
|
|
lib/jit_aarch64-cpu.c, lib/jit_alpha-cpu.c, lib/jit_arm-cpu.c,
|
|
lib/jit_hppa-cpu.c, lib/jit_ia64-cpu.c, lib/jit_mips-cpu.c,
|
|
lib/jit_ppc-cpu.c, lib/jit_s390x-cpu.c, lib/jit_sparc-cpu.c,
|
|
lib/jit_x86-cpu.c, lib/lightning.c: Implement the new
|
|
jit_frame and jit_tramp interfaces, that allow writing
|
|
trampoline like calls, where a single dispatcher jit buffer
|
|
is written, and later other jit buffers are created, with
|
|
the same stack frame layout as the dispatcher. This is the
|
|
logic that GNU Smalltalk used in lightning 1.x, and is required
|
|
to make a sane port for lighting 2.x.
|
|
|
|
* jit_ia64-cpu.c: Implement support for jit_frame and jit_tramp,
|
|
and also correct wrong encoding for B4 instructions, that
|
|
implement jmpr, as well as correct reverse logic in _jmpr,
|
|
that was moving the branch register to the jump register,
|
|
and not vice-versa.
|
|
Also, if a stack frame is to be assumed, always assume it may
|
|
call a function with up to 8 arguments, regardless of the
|
|
hint frame argument.
|
|
|
|
* lib/jit_arm.c: Add a new must_align_p() interface to ensure
|
|
function prologs are always aligned. This condition was
|
|
previously always true, somewhat by accident, but with
|
|
jit_tramp it is not guaranteed.
|
|
|
|
* jit_ia64-cpu.c: lib/jit_ppc.c: Add minor special handling
|
|
required to implement jit_tramp, where a function descriptor
|
|
should not be added before a prolog, as jit_tramp means omit
|
|
prolog.
|
|
|
|
* check/lightning.c: Update test driver for the new interfaces.
|
|
|
|
* check/Makefile.am, check/tramp.tst, check/tramp.ok: Add
|
|
a simple test and example of the jit_frame and jit_tramp
|
|
usage implementing a simple Fibonacci function using a
|
|
simulation of an interpreter stack and how it would handle
|
|
state in language specific variables.
|
|
|
|
* doc/body.texi: Add documentation for jit_frame and
|
|
jit_tramp.
|
|
|
|
2014-09-29 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64.c, lib/jit_alpha.c, lib/jit_arm.c,
|
|
lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_mips.c,
|
|
lib/jit_ppc.c, lib/jit_s390x.c, lib/jit_sparc.c,
|
|
lib/jit_x86.c, lib/lightning.c: Allow jit_jmpi on a
|
|
target that is not a node. This may lead to hard to
|
|
debug code generation, but is a required feature for
|
|
certain generators, like the ones that used lightning
|
|
1.2x. Note that previously, but not really well
|
|
documented, it was instructed to use:
|
|
jit_movi(rn, addr); jit_jmpr(rn);
|
|
but now, plain:
|
|
jit_patch_abs(jit_jmpi(), addr);
|
|
should also work.
|
|
|
|
2014-09-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-sz.c: Generate information about instruction
|
|
lengths for more precise calculation of buffer size on
|
|
Windows x64. This change is specially important because
|
|
the maximum instruction length is larger than other
|
|
systems, what could cause an out of bounds write on
|
|
special conditions without this update.
|
|
|
|
2014-09-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c: Add workaround to conflicting global
|
|
optind variable in cygwin binutils that have an internal
|
|
getopt* implementation.
|
|
|
|
* lib/jit_x86-cpu.c: Add a simple define ffsl ffs if building
|
|
for 32 bit and there is no ffsl function.
|
|
|
|
2014-09-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c: Add a hopefully temporary kludge to not use
|
|
sprintf and sscanf returned by dlsym. This is required to pass
|
|
the varargs test.
|
|
|
|
* include/lightning/jit_private.h: Use symbolic name for first
|
|
integer register argument, as this is different in sysv and
|
|
win64 abi.
|
|
|
|
* include/lightning/jit_x86.h: Add conditionals and definitions
|
|
for Windows x64 (under __CYGWIN__ preprocessor conditional).
|
|
|
|
* lib/jit_x86-cpu.c: Correct one instruction encoding bug, that
|
|
was working by accident. Only use rax to rdx for some byte
|
|
operations to work on compatibility mode (that is, to generate
|
|
the proper encoding, instead of actually generating encoding
|
|
for high byte registers, e.g. %bh).
|
|
Add proper prolog and epilog for windows x64.
|
|
|
|
* lib/jit_x86-sse.c: Correct a swapped rex prefix for float
|
|
operations.
|
|
|
|
* lib/jit_x86.c: Adjust to support Windows x64 abi.
|
|
|
|
* check/check.x87.nodata.sh: New file, previously used but that
|
|
was missing git.
|
|
|
|
2014-09-07 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Mark all registers advertised as live, as
|
|
per jit_callee_save_p as live whenever reaching a jump that
|
|
cannot be tracked. This is a rethink of the previous commit,
|
|
and is a better approach, otherwise there would not be much
|
|
sense on relying on jit_callee_save_p if it could not be
|
|
trusted.
|
|
|
|
* check/jmpr.tst, check/jmpr.ok: New files implementing a very
|
|
simple test case, that would actually cause an assertion on
|
|
code before the change to only mark as live when reaching a
|
|
jump that could not tracked, the actually advertised as callee
|
|
save registers.
|
|
|
|
check/Makefile.am: Update for new jmpr test case.
|
|
|
|
2014-09-01 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Do not mark all registers in unknown state
|
|
as live on jit_jmpr, or jit_jmpi to an absolute address. Instead,
|
|
treat it as a function call, and only consider JIT_Vn registers
|
|
as possibly live.
|
|
|
|
2014-08-29 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Add a proper info menu entry for
|
|
GNU lightning.
|
|
|
|
* doc/version.texi: Regenerate.
|
|
|
|
2014-08-16 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64-cpu.c, lib/jit_aarch64-fpu.c,
|
|
lib/jit_arm-cpu.c, lib/jit_arm-vfp.c,
|
|
lib/jit_hppa-cpu.c, lib/jit_hppa-fpu.c,
|
|
lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c,
|
|
lib/jit_mips-cpu.c, lib/jit_mips-fpu.c,
|
|
lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c,
|
|
lib/jit_s390x-cpu.c, lib/jit_s390x-fpu.c,
|
|
lib/jit_s390x.c, lib/jit_sparc-cpu.c,
|
|
lib/jit_x86-cpu.c, lib/jit_x86-sse.c,
|
|
lib/jit_x86-x87.c: Review generation of all branch
|
|
instructions and always adds the jit_class_nospill
|
|
bitfield for temporary registers that cannot be spilled
|
|
because the reload would be after a conditional jump; the
|
|
patch only adds an extra assertion. These conditions do
|
|
not happen on documented lightning usage, but can happen
|
|
if one uses the not exported jit_get_reg and jit_unget_reg
|
|
calls and cause enough register starvation.
|
|
|
|
2014-08-16 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_alpha.c: Correct wrong bitmask of most argument
|
|
float register arguments, that were being set as callee
|
|
save instead of argument registers class.
|
|
|
|
2014-08-16 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm-sz.c: Regenerate table of known maximum
|
|
instruction sizes for the software float fallback,
|
|
that implements "virtual" float registers in the stack
|
|
and operations as calls to libgcc.
|
|
|
|
* size.c: Correct typo in the generated jit_arm-sz.c file.
|
|
|
|
2014-08-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_alpha.h, lib/jit_alpha-cpu.c,
|
|
lib/jit_alpha-fpu.c, lib/jit_alpha-sz.c, lib/jit_alpha.c:
|
|
New files implementing a lightning Alpha port. Thanks
|
|
to Trent Nelson and snakebit.net staff for providing access
|
|
to an Alpha system.
|
|
|
|
* check/float.tst, check/lightning.c, configure.ac,
|
|
include/lightning.h, include/lightning/Makefile.am,
|
|
include/lightning/jit_private.h, lib/Makefile.am,
|
|
lib/jit_disasm.c, lib/jit_size.c, lib/lightning.c:
|
|
Minor changes to adapt for the new Alpha port.
|
|
|
|
2014-08-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Always mark JIT_RET and JIT_FRET as
|
|
live in a function epilog. This is required because
|
|
on some ports a complex sequence, allocating one or more
|
|
registers, may be required to jump from a ret* to the
|
|
epilog, and the lightning api does not have annotations
|
|
to know if a function returns a value, or the type of
|
|
the return value.
|
|
|
|
2014-08-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Change the correct live bitmask of
|
|
return registers after a function call in jit_update.
|
|
|
|
2014-08-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Change assertions to have an int
|
|
result and correct a bad bit mask assertion.
|
|
|
|
2014-08-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64.c: Correct bad setup for assertion
|
|
of consistency before a patch.
|
|
|
|
2014-08-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_mips-cpu.c: Correct typo in the jit_bmsr
|
|
implementation that was using the wrong test result
|
|
register.
|
|
|
|
2014-07-28 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_memory.c: Do not call free on NULL pointers.
|
|
|
|
* include/lightning/jit_private.h, lib/jit_note.c,
|
|
lib/lightning.c: Add a wrapper to memcpy and memmove
|
|
to not actually call those functions with a zero size
|
|
argument, and likely also a null src or dst.
|
|
|
|
2014-07-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_private.h, lib/jit_disasm.c,
|
|
lib/lightning.c: Remove the global jit_progname variable.
|
|
It was being only used in jit_init_debug, that is called
|
|
from init_jit, so, just pass an argument.
|
|
|
|
2014-07-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Add note that jit_set_memory_functions
|
|
should be called before init_jit, because init_jit
|
|
itself may call the memory wrappers.
|
|
|
|
2014-04-22 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm.c: Do not get confused with default settings
|
|
if /proc is not mounted on Linux specific code path.
|
|
|
|
2014-04-09 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
|
|
include/lightning/jit_hppa.h, include/lightning/jit_ia64.h,
|
|
include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
|
|
include/lightning/jit_private.h, include/lightning/jit_s390x.h,
|
|
include/lightning/jit_sparc.h, include/lightning/jit_x86.h:
|
|
Do not add jit_regset_t, JIT_RA0, and JIT_FA0 to the installed
|
|
header file. These types and definitions are supposed to be
|
|
only used internally.
|
|
|
|
2014-04-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm-cpu.c: Only adjust stack pointer in prolog if
|
|
need stack space, that is, do not emit a nop instruction
|
|
subtracting zero from the stack pointer.
|
|
|
|
2014-04-04 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_disasm.c: Correct a crash in the doc/printf example
|
|
on arm due to releasing the data_info information in
|
|
jit_clear_state. This is a special case for arm only, and
|
|
actually, only armv5 or older uses the data_info buffer,
|
|
or when forcing arm instruction set mode besides thumb
|
|
available.
|
|
|
|
2014-12-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Write detailed description and examples for
|
|
jit_get_memory_functions, jit_set_memory_functions,
|
|
jit_get_code, jit_set_code, jit_get_data and jit_set_data.
|
|
|
|
2014-12-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h,
|
|
lib/lightning.c: Implement the new jit_set_data() interface,
|
|
and the new jit_get_data() helper. Like jit_set_code(),
|
|
jit_realize() should be called before jit_set_data().
|
|
The most common usage should be jit_set_data(JIT_DISABLE_DATA
|
|
| JIT_DISABLE_NOTE), to force synthesize any float/double
|
|
constant in the stack and not generate any debug information.
|
|
|
|
* lib/jit_note.c: Minor change to debug note generation as
|
|
now it uses an alternate temporary data buffer during constants
|
|
and debug generation to accommodate the possibility of the user
|
|
setting an alternate data buffer.
|
|
|
|
* lib/jit_hppa-fpu.c, lib/jit_s390x.c, lib/jit_s390x-cpu.c,
|
|
lib/jit_s390x-fpu.c, lib/jit_sparc.c, lib/jit_sparc-fpu.c,
|
|
lib/jit_x86-sse.c, lib/jit_x86-x87.c: Implement jit_set_data.
|
|
|
|
* lib/jit_hppa-sz.c, lib/jit_sparc-sz.c, lib/jit_x86-sz.c,
|
|
lib/jit_s390x-sz.c: Update for several instructions that now
|
|
have a different maximum length due to jit_set_data.
|
|
|
|
* lib/jit_mips-fpu.c: Implement jit_set_data, but missing
|
|
validation on n32 and n64 abis (and/or big endian).
|
|
|
|
* lib/jit_mips-sz.c: Update for changes in o32.
|
|
|
|
* lib/jit_ppc-fpu.c: Implement jit_set_data, but missing
|
|
validation on Darwin PPC.
|
|
|
|
* lib/jit_ppc-sz.c: Update for changes in powerpc 32 and
|
|
64 bit.
|
|
|
|
* lib/jit_ia64-fpu.c: Implement untested jit_set_data.
|
|
|
|
* TODO: Add note to list ports that were not tested for the
|
|
new jit_set_data() feature, due to no longer having access
|
|
to them.
|
|
|
|
* check/nodata.c: New file implementing a simple test exercising
|
|
several different conditions created by jit_set_data().
|
|
|
|
* check/check.nodata.sh: New file implementing a wrapper
|
|
over the existing *.tst files, that runs all tests without
|
|
using a data buffer for constants; only meaningful (and
|
|
enabled) on architectures that used to store float/double
|
|
constants on a read only data buffer.
|
|
|
|
* configure.ac, check/Makefile.am: Update for the new test
|
|
cases.
|
|
|
|
* check/lightning.c: Implement the new "-d" option that
|
|
sets an internal flag to call jit_set_data() disable
|
|
constants and debug, that is, using only a pure code
|
|
buffer.
|
|
|
|
2014-11-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h,
|
|
lib/lightning.c: Implement the new jit_set_code() interface,
|
|
that allows instructing lightning to use an alternate code
|
|
buffer. The new jit_realize() function should be called
|
|
before jit_set_code(), and usually call jit_get_code()
|
|
to query the amount of bytes expected to be required for
|
|
the code.
|
|
|
|
* lib/jit_size.c: Minor update to have less chances of
|
|
miscalculating the code buffer by starting the counter
|
|
with the size of the longest instruction instead of zero,
|
|
as code emit fails if at any moment less than the longest
|
|
instruction bytes are available.
|
|
|
|
* check/setcode.c: New file implementing some basic tests
|
|
of the new jit_set_code() interface.
|
|
|
|
* check/Makefile.am: Update for newer test case.
|
|
|
|
2014-06-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/lightning.c: Add the new
|
|
jit_indirect() call, that returns a special label node,
|
|
and tells lightning that the label may be the target of
|
|
an indirect jump.
|
|
|
|
* doc/body.texi: Document the new jit_indirect() call, and
|
|
add examples of different ways to create labels and branches.
|
|
|
|
2014-23-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86.c: Rewrite previous patch to inline save/restore
|
|
because clobbering %ebx in x86 is treated as an error
|
|
(jit_x86.c:239:5: error: PIC register clobbered by 'ebx' in 'asm').
|
|
|
|
2014-19-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86.c: Rewrite incorrect inline assembly that could
|
|
truncate a variable in a callee save register. Now it simply
|
|
tells gcc that the register is clobbered, instead of using a
|
|
*32 bit* swap with a temporary variable. The problem only
|
|
happens when compiling with optimization.
|
|
|
|
2014-19-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
|
|
include/lightning/jit_hppa.h, include/lightning/jit_ia64.h,
|
|
include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
|
|
include/lightning/jit_s390x.h, include/lightning/jit_sparc.h,
|
|
include/lightning/jit_x86.h: Change jit_regset_t to an
|
|
unsigned type, to allow safe right shift.
|
|
|
|
* lib/lightning.c: Rewrite jit_regset_scan1 to allow easier
|
|
compiler optimization.
|
|
|
|
2013-12-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-x87.c: Correct wrong optimization when
|
|
loading the log(2) constant.
|
|
|
|
2013-12-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-cpu.c: Use the emms instruction before
|
|
calling any function. This is particularly important
|
|
when using c99 complex functions as it can easily
|
|
overflow the x87 stack due to the way lightning uses
|
|
the x87 stack as a flat register file.
|
|
|
|
2013-12-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-x87.c: Correct wrong code generation due
|
|
to comparing the base and not the value register with
|
|
%st(0) in stxi_f.
|
|
|
|
2013-12-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-x87.c, lib/jit_x86.c: Use 8 bytes aligned
|
|
stack offset for float/double x87 to/from sse move.
|
|
|
|
2013-11-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac, lib/jit_arm-swf.c, lib/jit_arm.c: Add
|
|
changes that should at least allow building lightning
|
|
on Apple iOS7.
|
|
|
|
2013-10-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ppc-cpu.c: Correct wrong shortcut for ldxi_l with
|
|
a zero offset, that was calling ldr_i instead of ldr_l.
|
|
|
|
2013-10-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_arm.h, lib/jit_arm-cpu.c: Do not use
|
|
by default load/store instructions that map to ldrt/strt.
|
|
There is already the long displacement version for positive
|
|
offsets, and when using a (shorter) negative offset it does
|
|
not map to ldrt/strt. At least on qemu strt may cause
|
|
reproducible, but unexpected SIGILL.
|
|
|
|
2013-10-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm-vfp.c: Correct wrong load/store offset
|
|
calculation when the displacement is constant but too
|
|
large to use an instruction with an immediate offset.
|
|
|
|
2013-10-07 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/self.c: Extend tests to validate jit_callee_save_p
|
|
does not cause an assertion on valid arguments, and test
|
|
extra registers defined on some backends.
|
|
|
|
* configure.ac: Do not ignore environment CFLAGS when
|
|
checking if need to test runtime configurable options,
|
|
like use x87 when sse2 is available, arm instruction set
|
|
instead of thumb, etc.
|
|
|
|
* include/lightning/jit_arm.h: Correct wrong jit_f macro
|
|
definition.
|
|
|
|
* include/lightning/jit_ia64.h, include/lightning/jit_ppc.h:
|
|
Correct wrong jit_r macro definition.
|
|
|
|
* lib/jit_x86-x87.c, lib/jit_x86.c: Actually use the
|
|
reserved stack space for integer to/from float conversion.
|
|
The stack space was also changed to ensure it is 8 bytes
|
|
aligned. Also, for Solaris x86 in 32 bit mode, an alternate
|
|
truncr_d was implemented because for some reason it is
|
|
failing with SIGILL if using the "fisttpl" instructions,
|
|
that must be available on p6 or newer, but for the sake of
|
|
making all tests pass, implement a 486 or newer sequence
|
|
if "sun" is defined.
|
|
|
|
2013-10-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
|
|
lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and
|
|
pass all test cases on Irix big endian mips using
|
|
the 64 bit abi.
|
|
|
|
2013-10-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_mips.h: Add proper mips abi detection.
|
|
|
|
2013-09-30 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_print.c: Do not crash if calling jit_print from
|
|
gdb before actually emitting code.
|
|
|
|
* lib/lightning.c: Correct misplaced check for already
|
|
visited blocks on conditional branches, what was preventing
|
|
proper merge live bit masks of forward blocks.
|
|
|
|
2013-09-30 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-cpu.c: Correct not properly tested case of using
|
|
%r12 as index register, what was causing an invalid assertion.
|
|
%r12 is mapped to the "extra" JIT_R3 register, and test cases
|
|
only test "standard" lightning registers.
|
|
|
|
2013-09-28 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64.c: Minor change to force collecting the maximum
|
|
instruction length in the --enable-devel-get-jit-size build
|
|
mode. The actual generated file did not change because the
|
|
sampling was large enough that it had already collected proper
|
|
information in the previously slightly buggy code (not forcing
|
|
a sync of the instructions that could be combined).
|
|
|
|
2013-09-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm.c: Correct build when disassembler is
|
|
disabled.
|
|
|
|
2013-09-25 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c: Correct some
|
|
off by one range checks (that were only accepting values
|
|
one less than the maximum allowed) and an invalid test
|
|
condition check that was forcing it to always use
|
|
indirect jumps even when reachable with an immediate
|
|
displacement.
|
|
|
|
2013-09-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c,
|
|
lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c,
|
|
lib/jit_s390x-sz.c, lib/jit_size.c, lib/jit_sparc-sz.c,
|
|
lib/jit_x86-sz.c: New files implementing static tables
|
|
with longest known instructions length generated to match
|
|
a lightning instruction. These tables should make it easier
|
|
to make it very unlikely to ever miscalculate, or by too
|
|
much, the size of a code buffer.
|
|
|
|
* lib/jit_size.c: New file that aids to either collect
|
|
jit code size information, or use the information depending
|
|
on build options.
|
|
|
|
* size.c: New helper file that parses input for, and create
|
|
an initial jit_$arch-sz.c file, that needs some minor edit
|
|
for arches with multiple configurations.
|
|
|
|
* configure.ac, Makefile.am: Add the new, devel mode only
|
|
--enable-devel-get-jit-size configure option, that sets
|
|
compile time flags to collect jit code size information,
|
|
that will be used as input for the "noinst size program".
|
|
|
|
* lib/jit_aarch64.c, lib/jit_arm.c, lib/jit_disasm.c,
|
|
lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_memory.c,
|
|
lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c,
|
|
lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c: Minor
|
|
changes for the --enable-devel-get-jit-size build mode,
|
|
as well as the "production build mode" with jit code
|
|
size information.
|
|
|
|
2013-09-14 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/lightning.c: Add the new
|
|
jit_pointer_p interface, that returns a boolean value
|
|
telling if the pointer argument is inside the jit
|
|
code buffer. This is useful to avoid the need to add
|
|
extra labels and calls to jit_address to figure bounds
|
|
of code buffer, and still keep internal data private.
|
|
|
|
2013-09-13 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h,
|
|
lib/jit_note.c: Change the code argument of jit_get_note
|
|
to a jit_pointer_t and make jit_get_note a public interface.
|
|
It was intended so since start, as a way to map an offset
|
|
in the code to a function name, file name and line number
|
|
mapping.
|
|
|
|
2013-09-11 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Correct reversed arguments in example of
|
|
usage in a (possibly) multi threaded, multiple jit_state_t
|
|
environments.
|
|
|
|
* include/lightning/jit_arm.h, include/lightning/jit_private.h,
|
|
lib/jit_arm-cpu.c, lib/jit_arm.c: Make a previously, non
|
|
documented, global state private to the related jit_state_t
|
|
generating code.
|
|
|
|
2013-09-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/self.c, check/self.ok: New files implementing simple
|
|
consistency check assertions. At first validating some macros
|
|
that use values from different sources agree.
|
|
|
|
* check/Makefile.am: Update for the new test case.
|
|
|
|
* include/lightning.h, lib/lightning.c: Add the new
|
|
jit_callee_save_p() call, that is intended to be used when
|
|
writing complex code using lightning, so that one does not
|
|
need to verify what backend is being used, or have access to
|
|
private data, to query if a register is callee save or not;
|
|
on several backends the scratch registers are actually callee
|
|
save.
|
|
|
|
* include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
|
|
include/lightning/jit_hppa.h, include/lightning/jit_mips.h,
|
|
include/lightning/jit_ppc.h, include/lightning/jit_sparc.h,
|
|
include/lightning/jit_x86.h: Add an explicit definition for
|
|
JIT_R3-JIT_Rn, JIT_V3-JIT_Vn and JIT_F6-JIT_Fn when applicable.
|
|
This allows one to write code based on "#if defined(JIT_XN)"
|
|
and therefore, not need to check what is the current backend
|
|
or have access to private data structures. This is particularly
|
|
useful when writing virtual machines with several specialized,
|
|
global registers.
|
|
|
|
* lib/jit_ia64.c: Properly flag the callee save general
|
|
purpose registers as such, so that jit_callee_save_p() works
|
|
as intended.
|
|
|
|
2013-09-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c, configure.ac: Conditionally use the
|
|
code written to workaround a bug in the Hercules emulator,
|
|
as isnan and isinf are not available at least on HP-UX ia64.
|
|
|
|
2013-09-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_s390x-cpu.c: Spill/reload correct callee save
|
|
float registers.
|
|
|
|
2013-09-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_hppa-cpu.c: Correct code to call a function stored
|
|
in a register or a patched function address.
|
|
|
|
2013-09-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64-cpu.c: Correct incorrect logic when restoring
|
|
the value of the "r2" callee save register.
|
|
|
|
2013-08-29 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm-cpu.c, lib/jit_arm.c: Correct wrong test and update
|
|
of the thumb offset information, when checking if needing to
|
|
patch a jump from arm to thumb mode. The problem would happen when
|
|
remapping the code buffer, and the new address being lower than
|
|
the previous one.
|
|
|
|
2013-08-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac: Extend FreeBSD test to also handle NetBSD.
|
|
|
|
* lib/jit_x86-cpu.c: Correct wrongly defined offset type of
|
|
ldxi_ui. Problem detected when building on NetBSD.
|
|
|
|
* lib/lightning.c: Adjust code to handle NetBSD mremap,
|
|
where arguments do not match Linux mremap.
|
|
|
|
2013-08-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ppc.c: Correct C sequence point problem miscalculating
|
|
the actual function address in a function descriptor. Problem
|
|
happens with gcc 4.8.1 at least.
|
|
|
|
2013-08-11 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_s390x-cpu.c: Correct code checking if immediate
|
|
fits instruction, but using the negated value.
|
|
|
|
2013-07-28 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_s390x.h, lib/jit_s390x-cpu.c,
|
|
lib/jit_s390x-fpu.c, lib/jit_s390x.c: New files
|
|
implementing the new s390x port.
|
|
|
|
* configure.ac, include/lightning.h,
|
|
include/lightning/Makefile.am,
|
|
include/lightning/jit_private.h,
|
|
lib/Makefile.am, lib/jit_disasm.c, lib/lightning.c:
|
|
Minor adaptation for the new s390x backend.
|
|
|
|
* check/float.tst: Update for the s390x result of
|
|
truncating +Inf to integer.
|
|
|
|
* check/qalu_mul.tst: Add extra test cases to better test
|
|
high word of signed multiplication as the result is
|
|
adjust from unsigned multiplication on s390x.
|
|
|
|
2013-07-28 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c: Do not assume casting a double NaN or
|
|
Inf to float will produce the expected float NaN or Inf.
|
|
This is not true at least under s390x.
|
|
|
|
2013-07-28 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/check.arm.sh, check/check.sh, check/check.swf.sh,
|
|
check/check.x87.sh: Properly check test programs output,
|
|
not just rely on the test program self testing the results
|
|
and not crashing.
|
|
|
|
2013-07-28 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_aarch64.c: Remove unused macros left from cut&paste
|
|
of jit_arm.c.
|
|
|
|
2013-07-16 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_aarch64.h, lib/jit_aarch64-cpu.c,
|
|
lib/jit_aarch64-fpu.c, lib/jit_aarch64.c: New files
|
|
implementing the new aarch64 port, as a new architecture,
|
|
not as an expansion of the existing armv[4-7] port.
|
|
|
|
* check/lightning.c: Add aarch64 support and a small
|
|
change to recognize character constants as immediate
|
|
values.
|
|
|
|
* check/float.tst: Add aarch64 preprocessor conditionals
|
|
to select proper expected value when converting [+-]Inf
|
|
and NaN to integer.
|
|
|
|
* include/lightning/jit_arm.h, lib/jit_arm.c: Minor changes
|
|
to better match the new aarch64 files.
|
|
|
|
* configure.ac, include/lightning.h,
|
|
include/lightning/Makefile.am, include/lightning/jit_private.h,
|
|
lib/Makefile.am, lib/lightning.c: Minor adjustments
|
|
for the aarch64 port.
|
|
|
|
2013-07-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* NEWS, THANKS, configure.ac, doc/version.texi: Update for
|
|
the 1.99a second alpha release.
|
|
|
|
2013-06-25 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_mips.c: Correct cut&paste error that caused wrong
|
|
stack offset calculation for double arguments in stack in
|
|
the o32 abi.
|
|
Correct typo in the __LITTLE_ENDIAN macro name, that came
|
|
from cut&paste error in the original typo in lib/jit_ppc.c.
|
|
|
|
* lib/jit_ia64.c, lib/jit_ppc.c: Correct typo in the
|
|
__LITTLE_ENDIAN macro name.
|
|
|
|
2013-06-22 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c, configure.ac, include/lightning.h,
|
|
lib/lightning.c: Add tests and quirks to build/detect
|
|
and/or work on Irix.
|
|
|
|
* include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
|
|
lib/jit_mips-fpu.c, lib/jit_mips.c: Adapt code to run
|
|
in big endian mips, using the n32 abi.
|
|
|
|
2013-06-18 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h: Minor extra preprocessor testing
|
|
to "detect" byte order on x86 solaris, that now builds
|
|
and pass all test cases.
|
|
|
|
2013-06-18 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_sparc-cpu.c: Correct compiler warning of value
|
|
used before assignment. The usage is bogus as the api
|
|
requires always patching jumps, but the random value used
|
|
could cause an assertion due to invalid displacement.
|
|
|
|
* lib/jit_sparc.c: Always load and store double arguments
|
|
in stack as 2 float loads or stores, for safety, as unaligned
|
|
access is not allowed in Sparc Solaris.
|
|
|
|
2013-06-14 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac: Force -mlp64 to CFLAGS on HP-UX ia64 port.
|
|
It is the only supported mode, and expects gcc as C compiler.
|
|
|
|
* include/lightning.h, lib/jit_ia64-cpu.c, lib/jit_ia64.c:
|
|
Correct ia64 port to work on HP-UX that runs it in big endian
|
|
mode.
|
|
|
|
2013-06-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_hppa.c: Sanitize the cache synchronization inline
|
|
assembly code that was doing twice the work and redundantly
|
|
flushing the end address every loop iteration.
|
|
|
|
2013-06-09 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac, check/Makefile.am, doc/Makefile.am: Do not
|
|
explicitly link to -ldl, but instead autodetect the library
|
|
with dlopen, dlsym, etc.
|
|
|
|
* check/lightning.c: Add workaround to apparently buggy
|
|
getopt in HP-UX that sets optind to the wrong index, and
|
|
use RTLD_NEXT on HP-UX instead of RTLD_DEFAULT to dlsym
|
|
global symbols.
|
|
|
|
* include/lightning.h: Rework definitions of wordsize and
|
|
byte order to detect proper values on HP-UX.
|
|
|
|
* lib/lightning.c: Minor correction to use MAP_ANONYMOUS
|
|
instead of MAP_ANON on HP-UX.
|
|
|
|
* lib/jit_hppa.c: Float arguments must be passed on integer
|
|
registers on HP-UX, not only for varargs functions.
|
|
Add code to properly clear instruction cache. This was
|
|
not required on Debian hppa port, but may have been working
|
|
by accident.
|
|
|
|
* lib/jit_hppa-cpu.c: Follow pattern of HP-UX binaries and
|
|
use bve,n instead of bv,n to return from functions.
|
|
|
|
* lib/jit_hppa-fpu.c: For some reason "fst? frX,rX,(rY)" did
|
|
not work on the tested computer (HP-UX B.11.23 U 9000/785 HP-UX)
|
|
so the code was changed, at first for __hpux only to add the
|
|
base and offset register and use the instruction with an
|
|
immediate (zero) offset.
|
|
|
|
2013-06-07 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c, lib/jit_disasm.c, lib/jit_ppc-cpu.c,
|
|
lib/jit_ppc-fpu.c, lib/jit_ppc.c, include/lightning.h,
|
|
include/lightning/jit_ppc.h, include/lightning/jit_private.h:
|
|
Adapt code to work on 32 bit AIX ppc using gcc. Most changes
|
|
are basically to adapt the elf64 logic to 32 bit, as it does
|
|
not use the same convention of 32 bit Darwin ppc.
|
|
|
|
* check/stack.tst: Add a fake memcpy function to the test
|
|
case if running under AIX, as it is not available to dlsym.
|
|
|
|
* configure.ac: Check for getopt.h header, not available in
|
|
AIX.
|
|
|
|
2013-06-01 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_hppa.h, lib/jit_hppa-cpu.c,
|
|
lib/jit_hppa-fpu.c, lib/jit_hppa.c: New files implementing
|
|
the hppa port. Built on Debian Linux PA-RISC 2.0, 32 bit.
|
|
|
|
* check/float.tst: Add preprocessor for hppa expected
|
|
values when converting NaN and +-Inf to an integer.
|
|
|
|
* check/ldst.inc: Ensure double load/store tests use an
|
|
8 byte aligned address by default.
|
|
|
|
* lib/lightning.c: Correct a bug found during tests in
|
|
the new port, where qmul* and qdiv* were not properly
|
|
setting one of the result registers as modified in the
|
|
function, what would be a problem if the only "write"
|
|
usage were the qmul* or qdiv*.
|
|
|
|
* check/varargs.tst, check/varargs.ok: Add one extra
|
|
interleaved integer/double test to validate proper code
|
|
generation in the extra case.
|
|
|
|
* check/lightning.c, configure.ac, include/lightning.h,
|
|
include/lightning/Makefile.am,
|
|
include/lightning/jit_private.h, lib/Makefile.am,
|
|
lib/jit_disasm.c: Update for the hppa port.
|
|
|
|
2013-04-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/varargs.tst: Correct misplaced .align directive
|
|
that was causing the double buffer to not be aligned at
|
|
8 bytes.
|
|
* lib/jit_ia64-cpu.c:
|
|
Properly implement abi for excess arguments passed on
|
|
stack.
|
|
Simplify load/store with immediate displacement argument
|
|
with zero value.
|
|
Simplify some calls to "subi" changing to "addi" with
|
|
a negative argument.
|
|
Remove some #if 0'ed code, that could be useful in
|
|
special conditions, but the most useful one would be
|
|
to "optimize" "static" jit functions, but for the sake
|
|
of simplicity, jit functions are implemented in a way
|
|
that can be passed back to C code as C function pointers.
|
|
Add an attribute to prototypes of several unused functions.
|
|
These functions are defined for the sake of implementing all
|
|
Itanium documented instructions, but a significant amount of
|
|
them is not used by lightning.
|
|
* lib/jit_ia64-fpu.c: Simplify load/store with zero immediate
|
|
displacement and add unused attribute for functions not used
|
|
by lightning, but required to provide macros implementing all
|
|
Itanium documented instructions.
|
|
* lib/jit_ia64.c: Update for the properly implemented abi
|
|
for stack arguments.
|
|
* lib/lightning.c: Mark an unused function as such.
|
|
|
|
2013-04-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
lib/jit_ia64-cpu.c:
|
|
Correct immediate range check of integer comparisons when
|
|
inverting arguments.
|
|
Correct gei_u that was not decrementing immediate when
|
|
inverting arguments.
|
|
Correct b?add* and b?sub* that were not properly updating
|
|
the result register.
|
|
|
|
2013-04-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64-cpu.c: Correct wrong mapping of 2 instructions
|
|
in "M-, stop, M-, stop" translation, that was ignoring the
|
|
last stop (implemented as a nop I- stop).
|
|
|
|
* lib/jit_ia64-fpu.c: Properly implement fnorm.s and fnorm.d,
|
|
as well as the proper integer to float or double conversion.
|
|
|
|
2013-04-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64-cpu.c: Correct bogus implementation of ldr_T
|
|
for signed integers, that was using ld1.s, ld2.s and ld4.s.
|
|
The ".s" stands for speculative load, not sign extend.
|
|
|
|
* lib/jit_ia64-fpu.c: Correct bogus implementation of ldxr_T
|
|
for float and double. The third (actually, second) argument
|
|
is indeed added to the base register, but the base register
|
|
is modified. The actual M7 implementation was already correct,
|
|
just the ldxr_f and ldxr_d implementation that was kept in
|
|
a prototype state, misinterpreting what M7 does.
|
|
|
|
2013-04-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64-cpu.c: Correct X2 pattern matching by preventing
|
|
it to attempt to require a stop between the L and the X
|
|
instruction; that is, check the registers and predicates
|
|
before emitting the L instruction, not after.
|
|
|
|
* lib/jit_ia64-fpu.c: Slightly simplify and correct
|
|
divr_f and divrd_d implementation.
|
|
|
|
* check/lightning.c: Add __ia64__ preprocessor define
|
|
on Itanium.
|
|
|
|
* check/alu.inc, check/clobber.tst, check/float.tst: Define
|
|
several macros conditionally to __ia64__. This is required
|
|
because __ia64__ jit generation can use way too many memory,
|
|
due to not implementing instruction reordering to avoid
|
|
as much as possible "stops", what causes way too many nops
|
|
to be generated, as well as the fact that division and
|
|
remainder requires function calls, and float division
|
|
requires significant code to implement.
|
|
|
|
2013-04-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h: Add new backend specific movr_w_d,
|
|
movr_d_w and movi_d_w codes as helpers to ia64 varargs
|
|
functions arguments.
|
|
|
|
* lib/jit_ia64-cpu.c:
|
|
Correct wrong encoding of A5 small integers.
|
|
Correct define of "mux" instruction modifiers.
|
|
Correct ordering of arguments and predicates of cmp_xy
|
|
implementation with immediate arguments; like most other
|
|
codes with an immediate, the immediate is the second, not
|
|
the third argument.
|
|
|
|
* lib/jit_ia64-fpu.c: Actual implementation of the code
|
|
to move to/from gpr to/from fpr, to implement varargs abi.
|
|
|
|
* lib/jit_ia64.c: Make fpr argument registers not allocatable
|
|
as temporaries, no need for the extra checks when there are
|
|
plenty registers.
|
|
|
|
* lib/jit_print.c, lib/lightning.c: Minor updates for the
|
|
new movr_w_d, movr_d_w and movi_d_w codes.
|
|
|
|
2013-04-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c: Correct code to
|
|
also insert a stop to break an instruction group if a
|
|
register is written more than once in the same group.
|
|
This may happen if a register is argument and result of
|
|
some lightning call (not a real instruction). The most
|
|
common case should be code in the pattern:
|
|
movl rn=largenum
|
|
...
|
|
mov rn=smallnum
|
|
where "rn" would end up holding "largenum".
|
|
But the problem possibly could happen in other circumstances.
|
|
|
|
2013-04-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_ia64.h, lib/jit_ia64-cpu.c,
|
|
lib/jit_ia64-fpu.c, lib/jit_ia64.c:
|
|
Relocate JIT_Rn registers to the local registers, as, like
|
|
float registers, div/rem and sqrt are implemented as function
|
|
calls, and may overwrite non saved scratch registers.
|
|
Change patch_at to receive a jit_code_t instead of a
|
|
jit_node_t, so that it is easier to "inline" patches when
|
|
some instruction requires complex code to implement, e.g.
|
|
uneq and ltgt.
|
|
Correct arguments to FMA and FMA like instructions that,
|
|
due to a cut&paste error were passing the wrong argument
|
|
to the related F- implementation function.
|
|
Rewrite ltgt to return the proper result if one (or both)
|
|
of the arguments is unordered.
|
|
|
|
2013-04-26 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_ia64.h, include/lightning/jit_private.h,
|
|
lib/jit_ia64-cpu.c, lib/jit_ia64-fpu.c, lib/jit_ia64.c,
|
|
lib/lightning.c: Rework code to detect need of a "stop" to
|
|
also handle predicates, as if a predicate is written, it
|
|
cannot be read in the same instruction group.
|
|
Use a single jit_regset_t variable for all registers when
|
|
checking need for a stop (increment value by 128 for
|
|
float registers).
|
|
Correct wrong "subi" implementation, as the code executed
|
|
is r0=im-r1, not r0=r1-im.
|
|
Use standard lightning 6 fpr registers, and rework to
|
|
use callee save float registers, that may be spill/reloaded
|
|
in prolog/epilog. This is required because some jit
|
|
instructions implementations need to call functions; currently
|
|
integer div/mod and float sqrt, what may change the value of
|
|
scratch float registers.
|
|
Rework point of "sync" of branches that need to return a
|
|
patch'able address, because the need for a "stop" before a
|
|
predicate read causes all branches to be the instruction
|
|
in slot 0, as there is no template to "stop" and branch
|
|
in the same instruction "bundle".
|
|
|
|
2013-04-25 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_ia64.h, lib/jit_ia64-cpu.c,
|
|
lib/jit_ia64-fpu.c, lib/jit_ia64.c: New files implementing
|
|
the basic infrastructure of an Itanium port. The code
|
|
compiles and can generate jit for basic hello world like
|
|
functions.
|
|
|
|
* check/lightning.c, configure.ac, include/lightning.h,
|
|
include/lightning/Makefile.am, include/lightning/jit_private.h,
|
|
lib/Makefile.am, lib/lightning.c: Update for the Itanium
|
|
port.
|
|
|
|
* lib/jit_mips-cpu.c, lib/jit_mips.c: Correct typo and
|
|
make the jit_carry register local to the jit_state_t.
|
|
This matches code reviewed in the Itanium port, that
|
|
should use the same base logic to handle carry/borrow.
|
|
|
|
2013-04-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_private.h, lib/jit_arm.c,
|
|
lib/jit_mips-cpu.c, lib/jit_mips.c, lib/jit_ppc-cpu.c,
|
|
lib/jit_ppc.c, lib/jit_print.c, lib/jit_sparc-cpu.c,
|
|
lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86.c,
|
|
lib/lightning.c: Change all jit_regset macros to take
|
|
a pointer argument, to avoid structure copies when
|
|
adding a port to an architecture with more than 64
|
|
registers.
|
|
|
|
2013-04-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm.c, lib/jit_ppc.c: Do not rely on __clear_cache
|
|
aligning to the next page boundary the end argument. It may
|
|
actually truncate it.
|
|
|
|
2013-03-29 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_private.h, lib/jit_arm.c, lib/jit_memory.c,
|
|
lib/jit_mips.c, lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c,
|
|
lib/lightning.c: Do not start over jit generation if can grow
|
|
the code buffer with mremap without moving the base pointer.
|
|
|
|
2013-03-29 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_memory.c: Implement a simple memory allocation wrapper
|
|
to allow overriding calls to malloc/calloc/realloc/free, as well
|
|
as ensuring all memory containing pointers is zero or points to
|
|
allocated memory.
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h: Definitions
|
|
for the memory allocation wrapper.
|
|
|
|
* lib/Makefile.am: Update for new jit_memory.c file.
|
|
|
|
* lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips.c, lib/jit_note.c,
|
|
lib/jit_ppc.c, lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c:
|
|
Use the new memory allocation wrapper code.
|
|
|
|
2013-03-22 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac, include/lightning/jit_private.h, lib/lightning.c:
|
|
Remove dependency on gmp. Only a simple bitmap was required, and
|
|
that was not enough reason to force linking to gmp and possible
|
|
complications caused by it.
|
|
|
|
2013-03-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h: Add check for __powerpc__ defined
|
|
in Linux, while Darwin defines __ppc__.
|
|
|
|
* include/lightning/jit_ppc.h: Adjust register definitions
|
|
for Darwin 32 bit and Linux 64 bit ppc usage and/or ABI.
|
|
|
|
* include/lightning/jit_private.h: Add proper check for
|
|
Linux __powerpc__ and an data definition for an workaround
|
|
to properly handle code that starts with a jump to a "main"
|
|
label.
|
|
|
|
* lib/jit_disasm.c: Add extra disassembler initialization
|
|
for __powerpc64__.
|
|
|
|
* lib/jit_ppc-cpu.c: Add extra macros and functions, and
|
|
correct/adapt previous ones to handle powerpc64.
|
|
|
|
* lib/jit_ppc-fpu.c: Adapt for 64 bit wordsize. Basically
|
|
add conversion from/to int32/int64 and proper handling of
|
|
load/store offsets too large for 32 bit.
|
|
|
|
* lib/jit_ppc.c: Add calls to 64 bit codes and adaptation
|
|
for the PowerPC 64 bit Linux ABI.
|
|
|
|
* lib/jit_arm.c, lib/jit_mips.c, lib/jit_sparc, lib/jit_x86.c,
|
|
lib/lightning.c: Correct off by one error when restarting jit
|
|
of a function due to finding too late that needs to spill/reload
|
|
some register. Problem was found by accident on a very special
|
|
condition during PowerPC 64 code adaptation.
|
|
|
|
2013-03-08 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c: Add missing ppc preprocessor definition.
|
|
|
|
2013-03-06 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/float.tst: Comment out the int to negative infinity
|
|
test in mips for the moment because not all Loongson agrees
|
|
on the result.
|
|
|
|
* lib/jit_disasm.c: Add a test instead of an assertion
|
|
when loading symbols for disassembly due to a failure with
|
|
a simple binutils build in Debian mipsel64.
|
|
|
|
2013-03-06 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_private.h, lib/jit_arm-cpu.c,
|
|
lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips-cpu.c,
|
|
lib/jit_mips.c, lib/jit_note.c, lib/jit_ppc-cpu.c,
|
|
lib/jit_ppc.c, lib/jit_print.c, lib/jit_sparc-cpu.c,
|
|
lib/jit_sparc.c, lib/jit_x86-cpu.c, lib/jit_x86.c,
|
|
lib/lightning.c: Add an extra structure for data storage
|
|
during jit generation, and release it after generating
|
|
jit, to reduce a bit memory usage, and also to make it
|
|
easier to understand what data is available during
|
|
jit runtime.
|
|
|
|
2013-03-06 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Make data and code buffer readonly.
|
|
|
|
2013-02-20 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Fool proof validate the examples of what
|
|
an assembly-language programmer would write and correct the
|
|
wrong sparc example.
|
|
|
|
2013-02-19 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Add back the SPARC code generation example.
|
|
|
|
2013-02-19 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c: Remove state flag to work with partial
|
|
sparc port, by just disassembling if there was incomplete
|
|
code generation.
|
|
|
|
* jit_sparc-cpu.c: Correct wrong range check for immediate
|
|
integer constants (off by one bit shift).
|
|
Correct macro implementing equivalent "rd %y, rd" assembly.
|
|
Implement qmul* and qdiv*.
|
|
|
|
* jit_sparc.c: Update for qmul* and qdiv* and remove logic
|
|
to handle incomplete code generation during sparc port.
|
|
|
|
2013-02-18 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/float.tst: Add sparc to list of known NaN and +-Inf
|
|
to integer conversion.
|
|
|
|
* check/lightning.c: Define __sparc__ to preprocessor in
|
|
the sparc backend.
|
|
|
|
* include/lightning/jit_private.h: Correct wrong definition
|
|
of emit_stxi_d, that has lived for a long time, but would
|
|
cause problems whenever needing to spill/reload a float
|
|
register.
|
|
|
|
* include/lightning/jit_sparc.h: Can only use %g2,%g3,%g4
|
|
for scratch variables, as other "global" registers are
|
|
reserved for the system, e.g. libc.
|
|
Reorder float register naming to make it easier to
|
|
access odd float registers, so that generating code for
|
|
pusharg and getarg is easier for the IR.
|
|
|
|
* lib/jit_mips-cpu.c, lib/jit_ppc-cpu.c: Update to match
|
|
new code in jit_sparc-cpu.c. It must call jit_get_reg
|
|
with jit_class_nospill if using the register to move
|
|
an unconditional branch address to it, as the reload
|
|
will not happen (actually could happen in the delay
|
|
slot...)
|
|
|
|
* lib/jit_sparc-cpu.c: Correct wrong macro definition for
|
|
ldxr_s.
|
|
Properly implement div* and implement rem. Div* needs
|
|
to use the y register, and rem* needs to be synthesized.
|
|
Correct b?sub* macro definitions.
|
|
|
|
* lib/jit_sparc-fpu.c: Correct reversed float to/from double
|
|
conversion.
|
|
Correct wrong jit_get_reg call asking for a gpr and then
|
|
using the fpr with that number.
|
|
Correct wrong branch displacement computation for
|
|
conditional branches.
|
|
|
|
* lib/jit_sparc.c: Correct getarg_d and pushargi_d implementation.
|
|
Add rem* entries to the switch converting IR to machine code.
|
|
|
|
* lib/lightning.c: Correct a problem detected when adding
|
|
the jit_class_nospill flag to jit_get_reg, that was caused
|
|
when having a branch to an "epilog" node, what would cause
|
|
the code to think all registers in unknown state were live,
|
|
while in truth, all registers in unknown state in the
|
|
"just after return" point are actually dead.
|
|
|
|
2013-02-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_sparc.h, lib/jit_sparc-cpu.c,
|
|
lib/jit_sparc-fpu.c, lib/jit_sparc.c: New files implementing
|
|
the basic framework of the sparc port.
|
|
|
|
* configure.ac, include/lightning.h, include/lightning/Makefile.am,
|
|
include/lightning/jit_private.h, lib/jit_disasm.c: Update
|
|
for the sparc port framework.
|
|
|
|
* lib/jit_mips.c: Correct reversed retr/reti logic.
|
|
|
|
* lib/jit_ppc.c: Correct misspelled __LITTLE_ENDIAN.
|
|
|
|
* lib/lightning.c: Always do byte hashing in hash_data, because
|
|
the logic to "compress" strings causes large pointers to not
|
|
be guaranteed aligned at 4 byte boundaries.
|
|
Update for the sparc port framework.
|
|
|
|
2013-02-11 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm.c: Correct jit_pushargi_f in the arm hardfp abi.
|
|
Most of the logic uses even numbered register numbers, so that
|
|
a float and a double can be used in the same register, but
|
|
the abi requires packing the float arguments, so jit_pushargi_f
|
|
needs to allocate a temporary register to modify only the
|
|
proper register argument (or be very smart to push two
|
|
immediate arguments if applicable).
|
|
|
|
2013-02-11 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/lightning.c: Implement the new
|
|
jit_clear_state and jit_destroy_state calls. jit_clear_state
|
|
releases all memory not required during jit_execution; that
|
|
is, leaves only the mmap'ed data and code buffers allocated.
|
|
jit_destroy_state releases the mmap'ed buffers as well as
|
|
the jit_state_t object itself, that holds pointers to the
|
|
code and data buffers, as well as annotation pointers (for
|
|
disassembly or backtrace) in the data buffer.
|
|
|
|
* lib/jit_note.c: Correct invalid vector offset access.
|
|
|
|
* check/ccall.c, check/lightning.c, doc/ifib.c, doc/incr.c,
|
|
doc/printf.c, doc/rfib.c, doc/rpn.c: Use the new jit_clear_state
|
|
and jit_destroy_state calls, to demonstrate the new code to
|
|
release all jit memory.
|
|
|
|
* doc/body.texi: Add basic documentation and usage description
|
|
of jit_clear_state and jit_destroy_state.
|
|
|
|
2013-02-11 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_private.h, lib/jit_note.c, lib/lightning.c:
|
|
Store all annotation information in the mmap'ed area reserved for
|
|
read only data. This adds code to not allocate memory for jit_note_t
|
|
objects, and to relocate jit_line_t objects and its contents after
|
|
calculating annotation information. The jit_line_t objects are
|
|
relocated because it is not possible to always calculate before
|
|
hand data layout because note information may be extended or
|
|
redundant entries removed, as well as allowed to be added in
|
|
non sequential order.
|
|
A bug was also corrected in _jit_set_note, that was causing it
|
|
to allocate new jit_line_t objects when not needed. It was still
|
|
working correctly, but allocating way more memory than required.
|
|
|
|
2013-02-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
*include/lightning.h, lib/lightning.c: Add the new jit_live code
|
|
to explicitly mark a register as live. It is required to avoid
|
|
assuming functions always return a value in the gpr and fpr return
|
|
register, and to avoid the need of some very specialized codes
|
|
that vary too much from backend to backend, to instruct the
|
|
optimization code the return register is live.
|
|
|
|
* lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c,
|
|
lib/jit_x86.c: Update for the new jit_live code.
|
|
|
|
* check/ret.ok, check/ret.tst: New files implementing a simple
|
|
test case that would previously fail at least in ix86/x86_64.
|
|
|
|
* check/Makefile.am: Update for new "ret" test case.
|
|
|
|
2013-02-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ppc-cpu.c, lib/jit_ppc.c: Validate and correct
|
|
problems in the qmul and qdiv ppc implementation.
|
|
|
|
2013-02-04 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h,
|
|
lib/jit_arm-cpu.c, lib/jit_arm.c, lib/jit_mips-cpu.c,
|
|
lib/jit_mips.c, lib/jit_ppc-cpu.c, lib/jit_ppc.c,
|
|
lib/jit_x86-cpu.c, lib/jit_x86.c, lib/lightning.c:
|
|
Implement the new qmul and qdiv instructions that return signed
|
|
and unsigned lo/hi multiplication result and div/rem division result.
|
|
These should be useful for jit translation of code that needs to
|
|
know if a multiplication overflows (no branch opcode added) or if
|
|
a division is exact (easy check if remainder is zero).
|
|
|
|
* check/lightning.c, lib/jit_print.c, check/Makefile.am,
|
|
check/all.tst: Update for the new qmul and qdiv instructions.
|
|
|
|
* check/qalu.inc, check/qalu_div.ok, check/qalu_div.tst,
|
|
check/qalu_mul.ok, check/qalu_mul.tst: New files implementing
|
|
simple test cases for qmul and qdiv.
|
|
|
|
2013-01-30 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* doc/body.texi: Correct "jmpi" description that incorrectly
|
|
told it was possible to pass any address as jump target. The
|
|
only way to do that is "movi+jmpr".
|
|
|
|
2013-01-30 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-cpu.c: Correct undefined behavior code.
|
|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56143
|
|
|
|
2013-01-29 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac: Use AC_CONFIG_HEADERS instead of AC_CONFIG_HEADER
|
|
to have HAVE_CONFIG_H defined with latest aclocal.
|
|
|
|
* include/lightning/jit_private.h, lib/lightning.c: Add new
|
|
abstraction to use an heuristic to calculate amount of space
|
|
required for jit generation, and code to reallocate buffer if
|
|
did miscalculate it.
|
|
|
|
* lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_x86.c:
|
|
Update to use new code to estimate and resize of required buffer
|
|
for jit code.
|
|
|
|
* lib/jit_x86-cpu.c: Minor cosmetic change to avoid adding a
|
|
non required rex prefix when calling a function pointer stored
|
|
in a register.
|
|
|
|
2013-01-24 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/Makefile.am: "make debug" target should pass only
|
|
the main test tool program as argument for running gdb
|
|
|
|
* configure.ac: Add the --enable-assertions options.
|
|
|
|
* doc/Makefile.am, doc/body.texi, doc/lightning.texi:
|
|
Major rewrite of the documentation to match the current
|
|
implementation.
|
|
|
|
* doc/version.texi: Automatic date update.
|
|
|
|
* doc/ifib.c, doc/incr.c, doc/printf.c, doc/rfib.c, doc/rpn.c:
|
|
Implementation of the documentation examples, that are also
|
|
compiled during a normal build.
|
|
|
|
* doc/p-lightning.texi, doc/porting.texi, doc/toc.texi,
|
|
doc/u-lightning.texi, doc/using.texi: These files were
|
|
renamed in the documentation rewrite, as the documentation
|
|
was significantly trimmed due to full removal of the porting
|
|
chapters. Better porting documentation should be added but
|
|
for the moment it was just removed the documentation not
|
|
matching the implementation.
|
|
|
|
2013-01-18 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_note.c: Correct bounds check and wrong code keeping
|
|
a pointer that could be changed after a realloc call.
|
|
|
|
2013-01-18 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/3to2.tst, check/add.tst, check/allocai.tst, check/bp.tst,
|
|
check/call.tst, check/ccall.c, check/clobber.tst, check/divi.tst,
|
|
check/fib.tst, check/ldsti.tst, check/ldstr-c.tst, check/ldstr.tst,
|
|
check/ldstxi-c.tst, check/ldstxi.tst, check/ldstxr-c.tst,
|
|
check/ldstxr.tst, check/lightning.c, check/rpn.tst, check/stack.tst,
|
|
check/varargs.tst, include/lightning.h,
|
|
include/lightning/jit_private.h, lib/jit_arm.c, lib/jit_disasm.c,
|
|
lib/jit_mips.c, lib/jit_note.c, lib/jit_ppc.c, lib/jit_print.c,
|
|
lib/jit_x86.c, lib/lightning.c: Extend the "jit_note" abstraction
|
|
with the new "jit_name" call, that receives a string argument, and
|
|
should usually be called to mark boundaries of functions of code
|
|
generating jit (that is, it is not expected that the language
|
|
generating jit map its functions to jit functions).
|
|
|
|
2013-01-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/add.tst, check/allocai.tst, check/bp.tst, check/divi.tst,
|
|
check/fib.tst, check/lightning.c, include/lightning/jit_arm.h,
|
|
include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
|
|
include/lightning/jit_private.h, include/lightning/jit_x86.h:
|
|
Make JIT_RET, JIT_FRET and JIT_SP private. These should not be
|
|
used in any operations due to frequently having special
|
|
constraints (usually JIT_FRET). JIT_FP must be made available
|
|
because it must be used as the base register to access stack
|
|
space allocated with jit_allocai.
|
|
|
|
2013-01-14 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/lightning.c: Add an extra align
|
|
argument to the jit_data call (that should be made private),
|
|
so that it should not align strings at 8 bytes.
|
|
Correct the jit_note call to include the null ending byte
|
|
when adding label/note names to the "jit data section".
|
|
|
|
2013-01-11 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_note.c: New file implementing a simple string+integer
|
|
annotation, that should be used to map filename and line number
|
|
to offsets in the generated jit.
|
|
|
|
* include/lightning.h, lib/lightning.c: Update for the new
|
|
note code.
|
|
Add an extra mandatory argument to init_jit, that is used
|
|
as argument to bfd_openr.
|
|
Change from generic void* to char* the argument to jit_note
|
|
and add an extra integer argument, to map to filename and
|
|
line number.
|
|
|
|
* check/ccall.c, check/lightning.c, include/lightning/jit_private.h,
|
|
lib/jit_arm.c, lib/jit_disasm.c, lib/jit_mips.c, lib/jit_ppc.c,
|
|
lib/jit_print.c, lib/jit_x86.c: lib/Makefile.am: Update for the
|
|
new annotation code.
|
|
|
|
* configure.ac, check/Makefile.am: Update to work with latest
|
|
automake.
|
|
|
|
2013-01-09 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/jit_arm.c, jit_mips-fpu.c,
|
|
lib/jit_mips.c, lib/jit_print.c, lib/jit_x86.c, lib/lightning.c:
|
|
Remove the jit_code_getarg_{f,d} and jit_code_pusharg{i,r}_{f,d}
|
|
calls, replacing them with the new, internal only, jit_movr_w_f,
|
|
jit_mov{r,i}_f_w, jit_movr_ww_d, and jit_mov{i,r}_d_ww, that
|
|
better describe the operation being done, and allow removing
|
|
the hackish code to detect special conditions for arm when
|
|
moving from/to vfp from/to a grp register pair.
|
|
Rename jit_code_retval_{f,d} to jit_code_x86_retval_{f,d} as
|
|
it is specific to 32 bit x86, and used to move abi return
|
|
value in x87 register to a sse register.
|
|
|
|
2013-01-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/cccall.c, check/ccall.ok: New test case to validate
|
|
interleaved calls from/to C code and jit.
|
|
|
|
* check/Makefile.am: Update for the new ccall test case.
|
|
|
|
* include/lightning.h, lib/lightning.c: Add the new jit_address
|
|
call that returns the real/final address of a "note" in the
|
|
generated jit. It requires a jit_node_t as returned by the
|
|
jit_note call, and is only valid after calling jit_emit.
|
|
Add an intermediate solution to properly handle arm
|
|
soft and softfp modes that move a double to an integer register
|
|
pair. Currently it just adds extra tests for the condition,
|
|
but the proper solution should be to have extra lightning
|
|
codes for these conditions, codes which should be only used
|
|
by the backends that need it, and merged with the existing
|
|
jit_pusharg*_{f,d}.
|
|
|
|
* include/lightning/jit_private.h: Add new jit_state_t flag
|
|
to know it finished jit_emit, so that calls to jit_address
|
|
are valid.
|
|
|
|
* lib/jit_mips.c: Correct abi implementation so that the
|
|
new ccall test case pass. Major problem was using
|
|
_jit->function.self.arg{i,f} as boolean values, but that
|
|
would cause lightning.c:patch_registers() to incorrectly
|
|
assume only one register was used as argument when calling
|
|
jit_regarg_p(); _jit->function.self.arg{i,f} must be the
|
|
number of registers used as arguments (in all backends).
|
|
|
|
* lib/jit_x86.c: Add workaround, by marking %rax as used,
|
|
to a special condition, when running out of registers and the
|
|
allocator trying to spill and reload %rax, but %rax was used
|
|
as a pointer to a function, what would cause the reload to
|
|
destroy the return value. This condition can be better
|
|
generalized, but the current solution is good enough.
|
|
|
|
* include/lightning/jit_ppc.h, lib/jit_ppc-cpu.c, lib/jit_ppc.c:
|
|
Rewrite logic to handle arguments, as the original code was
|
|
written based on a SysV pdf about the generic powerpc ABI,
|
|
what did "invent" a new abi for the previous test cases, but
|
|
failed in the new ccall test in Darwin PPC. Now it properly
|
|
handles 13 float registers for arguments, as well as proper
|
|
computation of stack offsets when running out of registers
|
|
for arguments.
|
|
|
|
2013-01-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/float.tst: Correct test case to match ppc also
|
|
converting positive infinity to 0x7fffffff.
|
|
|
|
* lib/jit_arm-swf.c: Correct typos with double underscores.
|
|
|
|
* lib/lightning.c: Correct remaining wrong reverse jump logic.
|
|
|
|
2012-12-29 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Correct both, wrong and confusing logic
|
|
to compute the reverse of a jump. Now it properly matches
|
|
C semantics for "eq" (==) and "ne" (!=) and correct computation
|
|
of reverse of "uneq" as "gt".
|
|
|
|
* check/branch.tst: Update "ne" float branch check that
|
|
previously happened to be wrongly tested with a NaN argument.
|
|
|
|
2012-12-29 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/float.ok, check/float.tst: New test cases implementing
|
|
extensive validation of float comparison and branch code
|
|
generation as well as integer conversion, involving NaN and
|
|
[+-]Inf.
|
|
|
|
* lib/jit_arm-swf.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
|
|
Correct bugs found by new float test case.
|
|
|
|
* lib/jit_x86.c: Correct cut&paste error added in commit to
|
|
convert jit_arg* return value to a jit_node_t*, that would
|
|
cause it to not properly handle double arguments in ix86.
|
|
|
|
* check/Makefile.am: Update for the new test case.
|
|
|
|
2012-12-28 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c, include/lightning.h, lib/jit_arm.c,
|
|
lib/jit_mips.c, lib/jit_ppc.c, lib/jit_print.c, lib/jit_x86.c,
|
|
lib/lightning.c: Change return value of jit_arg{,_f,_d} to
|
|
a jit_node_t* object, that should be used as argument to
|
|
jit_getarg_{c,uc,s,us,i,ui,l,f,d}. This just requires changing
|
|
from jit_int32_t to jit_pointer_t (or jit_node_t*) the "handle"
|
|
for the getarg calls, with the benefit that it makes it easy
|
|
to implement patching of the stack address of non register
|
|
arguments, this way allowing to implement variable size stack
|
|
frames if applicable; useful if there are too many registers and
|
|
jit functions uses only a few callee save registers.
|
|
|
|
2012-12-27 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm.c, lib/jit_mips-cpu.c, lib/jit_mips.c: Correct
|
|
regressions when patching jit_calli for a forward function.
|
|
|
|
* lib/jit_ppc-cpu.c: Correct wrong arguments to ANDI opcode
|
|
in jit_getarg_u{c,s} implementation.
|
|
|
|
2012-12-23 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/call.ok, check/call.tst: New test cases to validate
|
|
simple typed argument and return values in function calls.
|
|
|
|
* check/lightning.c: Properly handle jit_movi of labels for
|
|
backward and forward code labels.
|
|
|
|
* check/Makefile.am: Update for new test case.
|
|
|
|
2012-12-23 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/carry.ok, check/carry.tst: New test case to validate
|
|
carry condition handling.
|
|
|
|
* check/Makefile.am: Update for new test case.
|
|
|
|
2012-12-22 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ppc-cpu.c, lib/jit_ppc.c: Implement logic for
|
|
jit_htonr for big endian, so that ppc (big endian) pass the
|
|
new clobber.tst test case.
|
|
|
|
2012-12-22 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm.c: Correct use of wrong argument offset
|
|
variable in armv7l or float/double argument for varargs
|
|
function in armv7hl.
|
|
Correct jit_getarg* logic in software float mode to
|
|
match expected behavior in other backends, that is, if
|
|
a function is not called, it is safe to use a few lightning
|
|
calls before a next jit_getarg* call, as done in the test
|
|
case check/stack.tst. The proper solution should be to
|
|
extend the parser in lib/lightning.c to check if there is
|
|
some float operation that will call some (libgcc?) function,
|
|
but software float arm should be a very uncommon backend for
|
|
lightning, so, just load the already in place arguments
|
|
saved to stack, assuming the register argument was clobbered
|
|
(what should not be the case most times...).
|
|
|
|
2012-12-22 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/clobber.ok, check/clobber.tst: New test case doing
|
|
extensive validation tests to ensure registers not used in
|
|
a operation are not clobbered.
|
|
|
|
* check/Makefile.am: Update for new test case.
|
|
|
|
2012-12-21 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/lightning.c: Partially rewrite/revert code to compute
|
|
initial register live state at the start of a basic block.
|
|
The original logic was corrupted when adding optimizations
|
|
to do as few computations as possible in jit_update. The
|
|
reglive field must be always a known set of live registers
|
|
at the start of a basic block. The value that was incorrect
|
|
was the regmask field, that must be the set of registers
|
|
that are in unknown state, because they are not known live,
|
|
neither set (or possibly not set) in the basic block, and
|
|
*must* store the state at the start of the basic block.
|
|
|
|
2012-12-20 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_ppc.h: Correct mismatch of JIT_F{1,5}
|
|
with enum codes, that were correct, and returned by jit_f().
|
|
|
|
* lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c: Properly
|
|
implement and better describe values when generating stack
|
|
frames.
|
|
|
|
2012-12-18 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/stack.ok, check/stack.tst: New files to test data
|
|
integrity on a deep chain of stack frames.
|
|
|
|
* lib/jit_arm.c, lib/jit_arm-cpu.c, lib/jit_mips.c,
|
|
lib/jit_mips-cpu.c, lib/jit_ppc.c, lib/jit_ppc-cpu.c,
|
|
lib/jit_x86.c, lib/jit_x86-cpu.c: Calculate _jit->function->stack
|
|
in the emit stage, otherwise it will calculate it wrong if
|
|
need to jit_allocai space to spill registers.
|
|
|
|
* lib/lightning.c: Correct wrong offset when updating the
|
|
"current" jit function pointer in the code that may need to
|
|
allocate stack space to spill registers.
|
|
|
|
* check/lightning.c: Correct off by one data space check.
|
|
|
|
* check/Makefile.am: Update for new test case.
|
|
|
|
2012-12-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/fop_abs.ok, check/fop_abs.tst, check/fop_sqrt.ok,
|
|
check/fop_sqrt.tst: New files implementing simple test cases
|
|
for the extra float operations.
|
|
|
|
* check/Makefile.am: Update for new test cases.
|
|
|
|
* check/alu.inc: Add an extra macro to check for unordered
|
|
equality on tests where it is expected to use NaN as an
|
|
argument.
|
|
|
|
* check/lightning.c: Minor change for proper/common argument
|
|
syntax handling ommiting arguments to options.
|
|
|
|
2012-12-17 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/Makefile.am: Automatically generate pattern list
|
|
of tests with alternate jit generation options. This should
|
|
prevent typos and needing to change multiple places after
|
|
a change.
|
|
|
|
2012-12-14 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/lightning.c: Remove the ".cpu name value" syntax,
|
|
as it was not able to do proper changes before the jit
|
|
internal data structure was initialized. Now it supports
|
|
several getopt options to force using different jit
|
|
generation options, effectively replacing the previous
|
|
syntax.
|
|
|
|
* check/run-test: Add simple extra logic to handle differently
|
|
named test scripts, used to test things like x87 coprocessor
|
|
in ix86, and arm instruction set or software float in armv7l.
|
|
|
|
* configure.ac: Add some AC_RUN_IFELSE calls to figure at
|
|
compile time if can test different code generation options,
|
|
and update Makefile generation accordingly.
|
|
|
|
* check/Makefile.am, lib/jit_arm.c, lib/jit_x86.c: Update to
|
|
properly work with the test tool updating the jit_cpu global
|
|
information.
|
|
|
|
* check/check.arm.sh, check/check.swf.sh, check/check.x87.sh:
|
|
New wrapper files passing -mthumb=0, mvfp=0 and -mx87=1 to
|
|
the test tool, if applicable, so that it can validate alternate
|
|
code generation options on test hosts that support them.
|
|
|
|
2012-12-14 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-x87.c, lib/jit_x86.c: Correct test cases in ix86
|
|
when using the x87 coprocessor instead of sse2+.
|
|
|
|
2012-12-14 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, include/lightning/jit_private.h,
|
|
lib/jit_arm.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_x86.c,
|
|
lib/lightning.c: Make jit_ellipsis implementation not
|
|
backend specific. It is not intended to handle va_list
|
|
like objects at runtime, as jit_arg* and jit_getarg*
|
|
return constant values resolved at parse time, so, effectively
|
|
it is not possible to create printf like jit functions, as
|
|
there is no va_start, va_arg, va_end, etc, abstraction. This
|
|
limitation should be kept for the sake of making new ports
|
|
easier.
|
|
|
|
2012-12-14 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/lightning.c: Add two extra wrapper
|
|
functions to avoid need for excess pointer to/from word casts.
|
|
|
|
* check/lightning.c: Only need for pointer to/from word cast
|
|
now is jit_movi, update accordingly.
|
|
|
|
2012-12-13 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/varargs.ok, check/varargs.tst: New test cases implementing
|
|
simple varargs calls with a large amount of arguments to exercise
|
|
excess arguments on stack.
|
|
|
|
* include/lightning.h: Include config.h if HAVE_CONFIG_H is
|
|
defined.
|
|
|
|
* lib/jit_arm.c: Allocate a fpr register, not a gpr one for
|
|
temporary when pushing varargs arguments in the stack.
|
|
|
|
* lib/jit_arm-swf.c: Correct code changing the wrong offset
|
|
in jit_absr_d and jit_negr_d in software float.
|
|
|
|
* lib/jit_mips.c: Correct calculation of offsets of arguments
|
|
on stack.
|
|
|
|
* lib/jit_ppc.c: Correct bogus logic for "next" offset of arguments
|
|
on stack and adjust for fixed offset of stack arguments.
|
|
|
|
2012-12-12 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning.h, lib/jit_arm.c, lib/jit_mips.c,
|
|
lib/jit_ppc.c, lib/jit_x86.c, lib/lightning.c: Change jit_prepare
|
|
to no longer receive an argument. If receiving an argument, it
|
|
should be an ABI specifier, not a boolean if varargs or not,
|
|
and add the new jit_ellipsis call, to specify where the
|
|
ellipsis is in the C prototype of the function being called.
|
|
Note that currently it is not supported to define varargs
|
|
functions and it will be ignored if calling jit_ellipsis not
|
|
in a prepare/finish* block, but this should be addressed.
|
|
|
|
* check/allocai.tst, check/alu_add.tst, check/alu_and.tst,
|
|
check/alu_com.tst, check/alu_div.tst, check/alu_lsh.tst,
|
|
check/alu_mul.tst, check/alu_neg.tst, check/alu_or.tst,
|
|
check/alu_rem.tst, check/alu_rsh.tst, check/alu_sub.tst,
|
|
check/alu_xor.tst, check/alux_add.tst, check/alux_sub.tst,
|
|
check/bp.tst, check/branch.tst, check/cvt.tst, check/divi.tst,
|
|
check/fib.tst, check/ldsti.tst, check/ldstr-c.tst,
|
|
check/ldstr.tst, check/ldstxi-c.tst, check/ldstxi.tst,
|
|
check/ldstxr-c.tst, check/ldstxr.tst, check/rpn.tst,
|
|
check/lightning.c: Update for the change to jit_prepare and
|
|
addition of jit_ellipsis.
|
|
|
|
2012-12-11 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ppc-cpu.c: Make movr a function that checks arguments
|
|
so that other code can safely assume it is a noop if src and dst
|
|
are the same register.
|
|
Implement rem{r,i}{,_u} as a div{,u}/mul/sub.
|
|
Correct ANDIS, ORIS and XORIS calls to cast the argument to
|
|
unsigned before the shift to avoid an assertion if the argument
|
|
had the topmost bit set.
|
|
Implement lshi, rshi and rshi_u as functions to test for a
|
|
zero argument, that would otherwise trigger an assertion when
|
|
computing the shift value.
|
|
Do a simple implementation of bm{s,c}{r,i} with a temporary,
|
|
"andr" of arguments and jump based on comparison with zero.
|
|
Correct typo in ldxi_c.
|
|
|
|
* lib/jit_ppc-fpu.c: Correct wrong arguments to FDIV* and STF*.
|
|
|
|
* lib/jit_ppc.c: Correct wrong check for 6 instead of 8 integer
|
|
arguments in registers. If calling a varargs function and
|
|
passing a float or double argument, also either store the
|
|
value in the stack or in integer registers, as varargs functions
|
|
do not fetch it from float registers.
|
|
Add "case" for new functions and incorrectly missing ones.
|
|
Call libgcc's __clear_cache, that should know what to do
|
|
if the hardware needs flushing cache before execution.
|
|
|
|
* lib/lightning.c: Do a simple/trivial logic in jit_regset_scan1,
|
|
that should make it easier for the compiler to optimize it, and
|
|
that also corrects the previously wrong code for big endian, and
|
|
that was causing problems in ppc due to not saving all callee save
|
|
registers as it was not "finding" them in the regset due to the
|
|
little endian assumption bug.
|
|
|
|
2012-12-11 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac: Only default to using the builtin disassembler
|
|
if on GNU/Linux. This should be temporary, due to requiring
|
|
/proc/self/exe.
|
|
Correctly check $target_cpu for powerpc.
|
|
|
|
* include/lightning/jit_ppc.h: Correctly implement jit_v_num.
|
|
|
|
* include/lightning/jit_private.h: Declare proper prototype
|
|
for jit_init_debug and jit_finish_debug.
|
|
|
|
* lib/jit_ppc-cpu.c: Remove code to save/restore callee save
|
|
float registers, as it is not required since those float
|
|
registers are not usable currently.
|
|
Change prolog and epilog generation to, at least comparing
|
|
code, match what gcc generates in "gcc -O0", but it is still
|
|
failing in Darwin PPC, apparently due to the __clear_cache
|
|
call not being enough, as frequently it will also fail to
|
|
execute, and the code buffer is all zeroes.
|
|
|
|
* lib/lightning.c: Do not fail in jit_regset_scan1 calls due
|
|
to passing 64 as argument on computers with 64 registers.
|
|
|
|
2012-12-10 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_mips-cpu.c: Correct all current test cases.
|
|
Call the "xori" not the "XORI" macro for jit_xori implementation,
|
|
as the XORI macro handles only 16 bit unsigned values.
|
|
Call the "movr" macro, not the "movi" macro in the special
|
|
case of adding or subtracting zero.
|
|
Use the proper temporary register in the jit_andr implementation.
|
|
|
|
2012-12-09 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/alu.inc, check/alu_add.ok, check/alu_add.tst,
|
|
check/alu_and.ok, check/alu_and.tst, check/alu_com.ok,
|
|
check/alu_com.tst, check/alu_div.ok, check/alu_div.tst,
|
|
check/alu_lsh.ok, check/alu_lsh.tst, check/alu_mul.ok,
|
|
check/alu_mul.tst, check/alu_neg.ok, check/alu_neg.tst,
|
|
check/alu_or.ok, check/alu_or.tst, check/alu_rem.ok,
|
|
check/alu_rem.tst, check/alu_rsh.ok, check/alu_rsh.tst,
|
|
check/alu_sub.ok, check/alu_sub.tst, check/alu_xor.ok,
|
|
check/alu_xor.tst, check/alux_add.ok, check/alux_add.tst,
|
|
check/alux_sub.ok, check/alux_sub.tst, check/branch.ok,
|
|
check/branch.tst: New test cases for arithmetic and branch
|
|
tests.
|
|
|
|
* check/Makefile.am: Update for new test cases.
|
|
|
|
* include/lightning/jit_private.h: Make the jit_reg_free_p
|
|
macro shared by all backends. Previously was added for the
|
|
arm backend, but is useful in the x86_64 backend when checking
|
|
state of "special purpose register".
|
|
Also add the new jit_class_named register class, that must be
|
|
or'ed with the register value if calling jit_get_reg expecting
|
|
an specific value, because the specific register value may be
|
|
zero, that previously was treated as no register requested.
|
|
|
|
* lib/jit_arm-cpu.c: Correct argument order for T2_MVN.
|
|
|
|
* lib/jit_arm-swf.c: Call the proper function for double
|
|
divide. The "software float" implementation just calls
|
|
libgcc functions.
|
|
|
|
* lib/jit_arm.c: Return float/double values in the float
|
|
register if using the hard float ABI.
|
|
|
|
* lib/jit_x86-cpu.c: Change the can_sign_extend_int_p macro
|
|
to not include -0x80000000L, because there is code that
|
|
"abuses" it and thinks it can negate the immediate value
|
|
after calling that macro.
|
|
Correct implementation of jit_subi that had a wrong code
|
|
patch logic doing subtraction with reversed arguments.
|
|
Correct REX prefix calculation in the jit_muli implementation.
|
|
Correct logic to get/unget %*ax and %*dx registers in divremr
|
|
and divremi.
|
|
Correct divremi that was using the symbolic, unique %*ax
|
|
value in on place (not using the _REGNO name suffix).
|
|
Correct cut&paste error causing it to use "xor" instead of
|
|
"or" in one code path of the jit_ori implementation.
|
|
Correct several flaws when clobbering registers and/or when
|
|
one of the arguments was %*cx in the rotshr wrapper function
|
|
implementing most shift operations.
|
|
|
|
* lib/lightning.c: No longer expect that the backend be smart
|
|
enough to know what to do when asking for a named register
|
|
if that register is already an argument or is live. It fails
|
|
if it is an argument, or if register is live, fails if cannot
|
|
spill.
|
|
No longer incorrectly assume that eqr_{f,d} and ltgr_{f,d} are
|
|
safe to inverse value tests in jump thread optimization.
|
|
|
|
2012-12-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/Makefile.am, check/cvt.ok, check/cvt.tst: Add new
|
|
"cvt" test case to test conversion from/to int/float types.
|
|
|
|
* check/lightning.c: Only define truncr_{f,d}_l in 64 bit mode.
|
|
|
|
* include/lightning.h: Correct typo that caused it to define
|
|
jit_truncr_{f,d}_l in 32 bit mode.
|
|
|
|
* lib/jit_arm-cpu.c: Avoid assertion failure in the signed/unsigned
|
|
extend opcodes generation as it shares an interface for 3 argument
|
|
opcode generation.
|
|
|
|
* lib/jit_x86-cpu.c: Correct wrong argument passed to
|
|
jit_unget_reg in the andi implementation and wrong byte
|
|
unsigned extend code generation.
|
|
|
|
* lib/jit_x86-sse.c: Correct conversion from "word" to float or
|
|
double as is dependent on wordsize.
|
|
|
|
2012-12-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/ldstr-c.ok, check/ldstr-c.tst, check/ldstxi-c.ok,
|
|
check/ldstxi-c.tst, check/ldstxr-c.ok, check/ldstxr-c.tst:
|
|
New test case files testing load clobbering the base and/or
|
|
index register;
|
|
|
|
* check/ldst.inc: New file with common definition for all the
|
|
ldst* test cases.
|
|
|
|
check/Makefile.am, check/ldsti.tst, check/ldstr.tst,
|
|
check/ldstxi.tst, check/ldstxr.tst: Update for new common
|
|
definitions file and new register clobber ldst tests.
|
|
|
|
2012-12-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_mips-fpu.c: Correct wrong register order in stxr_{f,d}
|
|
in the mips backend.
|
|
|
|
2012-12-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_arm-vfp.c: Correct regression found in armv7l with
|
|
latest test cases.
|
|
|
|
2012-12-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/ldstxi.tst, check/ldstxr.tst: Correct wrong argument
|
|
order for 32 bit mode tests.
|
|
|
|
* configure.ac: Correct check for ix86 target_cpu.
|
|
|
|
2012-12-05 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/ldstr.ok, check/ldstr.tst, check/ldsti.ok,
|
|
check/ldsti.tst, check/ldstxr.ok, check/ldstxr.tst,
|
|
check/ldstxi.ok, check/ldstxi.tst:
|
|
New test case files exercising a very large amount of
|
|
register combinations to verify load/store implementation.
|
|
|
|
* check/Makefile.am: Update for new test cases.
|
|
|
|
* lib/jit_x86-cpu.c: Correct wrong argument order when
|
|
computing REX prefix for {ld,st}r_T codes;
|
|
|
|
2012-12-04 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_mips-fpu.c, lib/jit_mips.c: Implement missing mips
|
|
jit_sqrtr_{f,d} codes.
|
|
|
|
* check/all.tst, include/lightning.h, lib/jit_print.c: Change
|
|
declaration order and call order in all.tst of {add,sub}c and
|
|
{add,sub}x. *c must be called before to set the carry and *x
|
|
second to use the carry and keep it set. The wrong call order
|
|
was causing all.tst to fail in mips, where a register is
|
|
allocated to keep a global carry state.
|
|
|
|
2012-12-04 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
|
|
lib/jit_mips-fpu.c, lib/jit_mips.c: Correct float/double
|
|
argument handling and make the mips backend pass the initial
|
|
test cases.
|
|
|
|
* include/lightning.h, ib/jit_print.c, lib/lightning.c:
|
|
Add extra enum values for argument handling functions that
|
|
could not be abstracted to the current codes, that is, when
|
|
float values need to move from/to gpr from/to fpr. It would
|
|
be more tempting to add such primitives, but they would have
|
|
wordsize limitations, and it is not expected to add codes
|
|
with one gpr argument for 64 bit and two for 32 bit.
|
|
|
|
* lib/jit_ppc.c: Check _jit->function before calling jit_epilog()
|
|
to avoid a runtime exception.
|
|
|
|
2012-12-04 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* include/lightning/jit_mips.h, lib/jit_mips.c: Update to
|
|
make the mips backend compile in a qemu image.
|
|
|
|
* lib/jit_ppc.c: Minor adaptations to help in having the
|
|
ppc backend compilable.
|
|
|
|
2012-12-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac, include/lightning/jit_private.h, lib/jit_arm-cpu.c,
|
|
lib/jit_arm-swf.c, lib/jit_arm.c, check/Makefile.am: Correct
|
|
implementation of the arm backend port to build and pass the
|
|
current test cases. Tested on armv7 with softfp abi.
|
|
|
|
* lib/jit_disasm.c: Rename and change prototype of static
|
|
disassemble function as in the arm backend it is required
|
|
to access state information stored in the jit_state_t object.
|
|
|
|
* check/3to2.tst, check/add.tst: Correct test case code assuming
|
|
JIT_RO and JIT_RET are the same, and even if they are the same,
|
|
the logic was incorrect because it must always call jit_retval*
|
|
to fetch a function call return before any other instruction.
|
|
The arm backend hash a special condition if jit_retval is not
|
|
called, because "r0" is not JIT_R0, but is JIT_RET and *also*
|
|
the first argument for a called function, so JIT_RET must be
|
|
only used as an argument to jit_retval.
|
|
|
|
2012-12-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/all.tst, check/lightning.c: Only declare or use 64 bit
|
|
interfaces on 64 bit builds.
|
|
|
|
* check/fib.tst: Use simpler logic to not need preprocessor
|
|
conditionals for 32 or 64 bit.
|
|
|
|
* include/lightning.h: Only declare 64 bit macros on a 64 bit
|
|
build. Code using lightning must know about wordsize and the
|
|
jit generation limitations, also, this way it generates a
|
|
compile time failure, not a runtime assertion.
|
|
|
|
* include/lightning/jit_x86.h: Correct typo in macro name.
|
|
|
|
* lib/jit_arm.c, lib/jit_arm-cpu.c, lib/jit_mips.c,
|
|
lib/jit_mips-cpu.c, lib/jit_ppc.c, lib/jit_ppc-cpu.c,
|
|
lib/jit_x86.c, lib/jit_x86-cpu.c: Correct wrong code to get
|
|
current jit function pointer.
|
|
|
|
* lib/lightning.c: Move call to the simplify() optimization
|
|
to after register liveness is known. Previous code did work
|
|
by accident but now with proper test cases the problem was
|
|
noticed.
|
|
|
|
* lib/jit_disasm.c: Always cast bfd_vma to long long when
|
|
passing it as printf argument.
|
|
|
|
2012-12-03 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* configure.ac, check/Makefile.am, check/check.sh,
|
|
doc/Makefile.am, include/lightning/Makefile.am,
|
|
lib/Makefile.am: Correct make distcheck.
|
|
|
|
2012-12-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_ppc.c: Assign copyright ownership to FSF.
|
|
|
|
* lib/jit_x86-cpu.c: Correct integer multiplication that was
|
|
generating code with reversed register arguments.
|
|
|
|
* check/rpn.ok, check/rpn.tst: New test case file.
|
|
|
|
2012-12-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c:
|
|
Actually change copyright owner to FSF as avertised.
|
|
|
|
* lib/jit_arm-cpu.c, lib/jit_arm-swf.c,
|
|
lib/jit_arm-vfp.c, lib/jit_arm.c,
|
|
lib/jit_mips-cpu.c, lib/jit_mips-fpu.c, lib/jit_mips.c,
|
|
lib/jit_ppc-cpu.c, lib/jit_ppc-fpu.c, lib/jit_ppc.c: New
|
|
files implementing initial code different jit backends.
|
|
|
|
* include/lightning/jit_private.h: Add extra field to the
|
|
private jit_patch_t type, required by the arm port.
|
|
|
|
* lib/Makefile.am: Update for the new backend implementation
|
|
files.
|
|
|
|
2012-12-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* check/Makefile.am: Add proper "make clean" rule and missing
|
|
check.sh to EXTRA_DIST.
|
|
|
|
2012-12-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* .gitignore: Update pattern of ignored files.
|
|
|
|
* check/Makefile.am: Add rule to build liblightning.la dependency
|
|
in case of running "make check" before building the library.
|
|
|
|
2012-12-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* lightning/Makefile.am, lightning/asm-common.h,
|
|
lightning/core-common.h, lightning/fp-common.h,
|
|
lightning/funcs-common.h, lightning/i386/Makefile.frag,
|
|
lightning/i386/asm-32.h, lightning/i386/asm-64.h,
|
|
lightning/i386/asm.h, lightning/i386/core-32.h,
|
|
lightning/i386/core-64.h, lightning/i386/core.h,
|
|
lightning/i386/fp-32.h, lightning/i386/fp-64.h,
|
|
lightning/i386/fp.h, lightning/i386/funcs.h,
|
|
lightning/ppc/asm.h, lightning/ppc/core.h,
|
|
lightning/ppc/fp.h, lightning/ppc/funcs.h,
|
|
lightning/sparc/asm.h, lightning/sparc/core.h,
|
|
lightning/sparc/fp.h, lightning/sparc/funcs.h:
|
|
Removed. The core logic is used in the new code, and new mips
|
|
and arm ports will be added. At first, sparc will not be
|
|
supported as it has not yet been ported to the new engine.
|
|
|
|
2012-12-02 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* tests/Makefile.am, tests/3to2.c, tests/3to2.ok, tests/add.c,
|
|
tests/add.ok, tests/allocai.c, tests/allocai.ok, tests/bp.c,
|
|
tests/bp.ok, tests/divi.c, tests/divi.ok, tests/fib.c, tests/fib.ok,
|
|
tests/fibdelay.c, tests/fibdelay.ok, tests/fibit.c, tests/fibit.ok,
|
|
tests/funcfp.c, tests/funcfp.ok, tests/incr.c, tests/incr.ok,
|
|
tests/ldst.c, tests/ldst.ok, tests/ldxi.c, tests/ldxi.ok,
|
|
tests/modi.c, tests/modi.ok, tests/movi.c, tests/movi.ok,
|
|
tests/printf.c, tests/printf.ok, tests/printf2.c, tests/printf2.ok,
|
|
tests/ret.c, tests/ret.ok, tests/rpn.c, tests/rpn.ok, tests/rpnfp.c,
|
|
tests/rpnfp.ok, tests/sete.c, tests/sete.ok, tests/testfp.c,
|
|
tests/testfp.ok, tests-run-test: Removed previous test suite, in
|
|
favor of a newer one in the check subdirectory.
|
|
|
|
* check/3to2.ok, check/3to2.tst, check/add.ok, check/add.tst,
|
|
check/allocai.ok, check/allocai.tst, check/bp.ok, check/bp.tst,
|
|
check/divi.ok, check/divi.tst, check/fib.ok, check/fib.tst:
|
|
New sample input for the new test program, loosely matching
|
|
several of the previous test cases.
|
|
|
|
* check/Makefile.am: New test suite makefile.
|
|
|
|
* check/check.sh, check/run-test: New wrapper files for the
|
|
new test suite.
|
|
|
|
* check/lightning.c: New file. The main driver of the new test
|
|
suite, that compiles to a parser of a very simple assembly like
|
|
language, generates jit and executes it.
|
|
|
|
* check/all.tst: New file. A generic debug and sample test file
|
|
with a directive to prevent it from being executed, and useful to
|
|
read disassembly of all possible instructions, using a fixed set
|
|
of registers.
|
|
|
|
* include/Makefile.am, include/lightning.h,
|
|
include/lightning/Makefile.am, include/lightning/jit_arm.h,
|
|
include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
|
|
include/lightning/jit_private.h, include/lightning/jit_x86.h,
|
|
lib/Makefile.am, lib/jit_disasm.c, lib/jit_print.c,
|
|
lib/jit_x86-cpu.c, lib/jit_x86-sse.c, lib/jit_x86-x87.c,
|
|
lib/jit_x86.c, lib/lightning.c: New files. These files are
|
|
written from scratch, only by <pcpa@gnu.org>, and have now
|
|
copyright assignment to the FSF. This is the core of the new
|
|
lightning rework. Previously it was integrated in code with
|
|
a garbage collector and several custom types like vectors and
|
|
hash tables, so this first code merge with lightning converts
|
|
that code into a library extracting only the jit bits, and at
|
|
first only for x86_64 GNU/Linux.
|
|
|
|
* lightning.h, m4/lightning.m4: Removed. These are no longer
|
|
required in the new lightning code.
|
|
|
|
.gitignore, Makefile.am, configure.ac: Update for the new
|
|
lightning code.
|
|
|
|
2012-12-02 Paulo Andrade <pcpa@gnu.org>
|
|
* .cvsignore: Removed for extra cleanup.
|
|
|
|
* build-aux: Rename directory to m4.
|
|
|
|
* m4: Renamed to "default" name and for consistency with merge
|
|
with code rework to be imported in lightning.
|
|
|
|
* .gitignore, configure.ac, Makefile.am, doc/Makefile.am:
|
|
Update for build-aux to m4 rename.
|
|
|
|
2012-12-01 Paulo Andrade <pcpa@gnu.org>
|
|
|
|
* opcode/Makefile.am, opcode/Makefile.in, opcode/ansidecl.h,
|
|
opcode/bfd.h, opcode/dis-asm.h, opcode/dis-buf.c, opcode/disass.c,
|
|
opcode/i386-dis.c, opcode/i386.h, opcode/ppc-dis.c, opcode/ppc-opc.c,
|
|
opcode/ppc.h, opcode/sparc-dis.c, opcode/sparc-opc.c, opcode/sparc.h,
|
|
opcode/sysdep.h: Removed. Do not bundle GNU binutils files.
|
|
|
|
* aclocal.m4, configure, Makefile.in, config.h.in, doc/Makefile.in,
|
|
lightning/Makefile.in, tests/Makefile.in: Removed. Do not maintain
|
|
autogenerated files that also generate too much diff noise when
|
|
regenerated in git.
|
|
|
|
* build-aux/help2man, build-aux/texinfo.tex, build-aux/texi2dvi:
|
|
Removed. Buildenvironment must have an up to date version from
|
|
upstream installed.
|
|
|
|
* build-aux/config.guess, build-aux/config.sub, build-aux/depcomp,
|
|
build-aux/install-sh build-aux/mdate-sh build-aux/missing: Removed.
|
|
Do not maintain a copy of automake files in git. Release tarballs
|
|
must use an up to date version.
|
|
|
|
* lightningize.in, doc/lightningize.1: Removed. Do not encourage
|
|
bundling lightning in other packages. It should use a system package
|
|
or a proper thirdy part subdirectory.
|
|
|
|
* INSTALL: Removed. Autoreconf removes it and creates a symlink
|
|
when regenerating files, so, avoid conflicts in git and let
|
|
automake create the symlink.
|
|
|
|
* .gitignore: Add INSTALL and autogenerated files.
|
|
|
|
* configure.ac, Makefile.am: Update for removal of opcode subdir,
|
|
auto generated files and lightningize.
|
|
|
|
* tests/Makefile.am, tests/3to2.c, tests/add.c, tests/bp.c,
|
|
tests/fib.c, tests/fibdelay.c, tests/fibit.c, tests/funcfp.c,
|
|
tests/incr.c, tests/printf.c, tests/rpn.c, tests/rpnfp.c,
|
|
tests/sete.c, tests/testfp.c: Update for removal of opcode subdir.
|
|
|
|
* doc/Makefile.am: Update for removal of lightningize.
|
|
|
|
* configure.ac, lightning/ppc/funcs.h, lightning/sparc/funcs.h,
|
|
lightning/i386/fp.h, lightning/i386/core.h, lightning/i386/asm.h,
|
|
tests/3to2.c, tests/add.c, tests/bp.c, tests/fib.c, tests/fibdelay.c,
|
|
tests/fibit.c, tests/funcfp.c, tests/incr.c, tests/printf.c,
|
|
tests/rpn.c, tests/rpnfp.c, tests/sete.c, tests/testfp.c:
|
|
Remove LIGHTNING_CROSS, it is half supported and incomplete.
|
|
|
|
* tests/3to2.c, tests/funcfp.c, tests/rpnfp.c: Remove preprocessor
|
|
check on JIT_FPR. If no hardware registers are available, the backend
|
|
must provide an alternative for software float.
|
|
|
|
* lightning/ppc/core.h, lightning/sparc/core.h, tests/Makefile.am:
|
|
Remove JIT_NEED_PUSH_POP. It is absolutely not trivial to implement
|
|
properly on some backends due to stack alignment constraints, and
|
|
whenever it is required, using jit_allocai and using a properly
|
|
aligned stack vector, or a heap buffer, is better.
|
|
|
|
* tests/push-pop.c, tests/push-pop.ok: Removed due to
|
|
JIT_NEED_PUSH_POP no longer available.
|
|
|
|
2011-02-28 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-64.h: Add jit_add{c,x}{i,r}_l, jit_mulr_{l,ul}_,
|
|
fix jit_mul{i,r}_{l,ul}.
|
|
|
|
2010-08-20 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/fp-64.h: Return patch address from jit_bXYr_{f,d}.
|
|
Reported by Paulo César Pereira de Andrade.
|
|
* lightning/ppc/fp.h: Likewise.
|
|
* lightning/sparc/fp.h: Implement FP branches.
|
|
|
|
2010-08-18 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/fp-64.h: Fix jp in jit_bner_{f,d}.
|
|
|
|
2010-08-18 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/fp-32.h: Fix -D_ASM_SAFETY compilation.
|
|
Reported by Paulo César Pereira de Andrade.
|
|
|
|
2010-08-15 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/ldst.c: Update.
|
|
* tests/Makefile.am: Use -ffloat-store to compile it.
|
|
|
|
2010-08-15 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
|
|
jit_ldxr_s): Move...
|
|
* lightning/i386/core-32.h: ... here.
|
|
* lightning/i386/core-64.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
|
|
Use movsbq and movswq.
|
|
|
|
2010-08-10 Paulo César Pereira de Andrade <pcpa@mandriva.com.br>
|
|
|
|
* lightning/i386/core-32.h (jit_replace): Use MOVLrr, not MOVLir.
|
|
(jit_movbrm): Check index register as well.
|
|
* lightning/i386/fp-64.h: Add jit_extr_f_d and jit_extr_d_f.
|
|
* lightning/fp-common.h: Add jit_extr_f_d and jit_extr_d_f.
|
|
|
|
2010-07-28 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/Makefile.am: Add ldst test.
|
|
* tests/Makefile.in: Regenerate.
|
|
* tests/ldst.c: New.
|
|
* tests/ldst.ok: New.
|
|
|
|
2010-07-28 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* THANKS: Add Paulo Cesar Pereira de Andrade.
|
|
* doc/porting.texi: Fix ordering of arguments in jit_stxi.
|
|
* lightning/i386/core-32.h (jit_replace): Remove cmp argument.
|
|
* lightning/i386/fp-64.h (jit_movi_f): Fix.
|
|
|
|
2010-07-26 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-32.h (jit_replace): Move here (removed
|
|
2009-03-01).
|
|
|
|
2010-07-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* build-aux/lightning.m4: Always set and replace lightning_frag.
|
|
* Makefile.in: Regenerate.
|
|
* aclocal.m4: Regenerate.
|
|
* config.h.in: Regenerate.
|
|
* configure: Regenerate.
|
|
* doc/Makefile.in: Regenerate.
|
|
* doc/lightningize.1: Regenerate.
|
|
* doc/version.texi: Regenerate.
|
|
* lightning/Makefile.in: Regenerate.
|
|
* opcode/Makefile.in: Regenerate.
|
|
* tests/Makefile.in: Regenerate.
|
|
|
|
2009-03-01 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-64.h: Use Mike's macros for x86-64 too.
|
|
* lightning/i386/core.h: Remove jit_replace.
|
|
|
|
2009-02-27 Mike Spivey <mike@comlab.ox.ac.uk>
|
|
|
|
* lightning/i386/core.h: Rewrite shift-handling macros.
|
|
* lightning/fp-common.h: Fix jit_extr_{f_d,d_f}.
|
|
|
|
2009-02-17 Mike Spivey <mike@comlab.ox.ac.uk>
|
|
|
|
* lightning/i386/core.h: Fix blunder in operand order.
|
|
|
|
2009-02-17 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/fp-32.h: Another fix to jit_fp_btest.
|
|
|
|
2009-02-17 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/fp-common.h: Define double branches if missing.
|
|
* lightning/i386/asm.h: Define JC and JNC mnemonics.
|
|
* lightning/i386/fp-32.h: Fix jit_fp_btest. All reported
|
|
by Mike Spivey.
|
|
|
|
2008-10-09 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/funcs.h (jit_flush_code): Subtract 1 from end.
|
|
Reported by Eli Barzilay and Matthew Flatt.
|
|
|
|
2008-08-23 Nix <nix@esperi.org.uk>
|
|
|
|
* lightning/i386/Makefile.frag: fp-32.h and fp-64.h are target files.
|
|
|
|
2008-07-02 Laurent Michel <ldm@engr.uconn.edu>
|
|
|
|
* lightning/ppc/funcs.h (jit_flush_code): modified the computation
|
|
of start/end. The pointer arithmetic was done without casting. It
|
|
prevented compilation with recent gcc versions.
|
|
* lightning/ppc/core.h (jit_pushr_i): The offset for the store was
|
|
incorrect. Should have been 4 bytes below SP (not above).
|
|
* lightning/ppc/core.h (jit_popr_i): The offset for the load was
|
|
incorrect. Should have been 0 (not +8).
|
|
|
|
2008-06-17 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-64.h: Forward IMULQir to IMULQirr,
|
|
fix REXQ order for IMULQirr.
|
|
|
|
2008-06-17 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core.h: Fix _rN vs. _rR.
|
|
|
|
2008-06-16 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core.h: Use jit_save in jit_replace. Move JIT_R
|
|
definition...
|
|
* lightning/i386/core-32.h: ... here; define jit_save so that
|
|
the core.h has no effect on the 32-bit backend.
|
|
* lightning/i386/core-64.h: Place JIT_R1/JIT_R2 in R10/R11,
|
|
place outgoing arguments in the right spot from the beginning,
|
|
define jit_save, fix jit_reg8/jit_reg16.
|
|
|
|
2008-06-15 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-64.h: Rewrite argument passing to
|
|
support up to 6 arguments and generate less code.
|
|
|
|
2008-06-14 Laurent Michel <ldm@thorgal.homelinux.org>
|
|
|
|
* lightning/i386/core-64.h (jit_movi_l): When the operand is 0,
|
|
the XOR should be on a quadword.
|
|
* lightning/i386/core-64.h (jit_prolog): Keep 16-byte stack
|
|
alignment.
|
|
(jit_ret): Always use LEAVE.
|
|
|
|
2008-06-13 Laurent Michel <ldm@thorgal.homelinux.org>
|
|
|
|
* lightning/i386/core-64.h: Add (void) casts for C++ compatibility.
|
|
* lightning/i386/asm.h: Likewise.
|
|
|
|
2008-06-12 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core.h: Move JIT_V definition...
|
|
* lightning/i386/core-32.h: ... here.
|
|
* lightning/i386/core-64.h: ... and here. Avoid dancing between
|
|
RSI/RDI and R12/R13, and place JIT_V1/JIT_V2 in R12/R13.
|
|
|
|
2008-06-11 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* build-aux/lightning.m4: Adjust LIGHTNING_BACKENDS, don't
|
|
use suffix support to distinguish i386/x86_64.
|
|
* lightning/i386/Makefile.frag: Use LIGHTNING_TARGET_FILES
|
|
to distribute *-32.h and *-64.h files now.
|
|
* lightning/i386/asm-i386: Moved to...
|
|
* lightning/i386/asm.h: Include the appropriate subtarget file.
|
|
* lightning/i386/core-i386: Moved to...
|
|
* lightning/i386/core.h: Include the appropriate subtarget file.
|
|
* lightning/i386/fp.h: New, include the appropriate subtarget file.
|
|
* lightning/i386/asm-32: Do not include asm-i386.h.
|
|
* lightning/i386/asm-64.h: Likewise.
|
|
* lightning/i386/core-32: Do not include core-i386.h.
|
|
* lightning/i386/core-64.h: Likewise.
|
|
* lightning/Makefile.am: Adjust for renamed files.
|
|
|
|
* configure.ac: Define LIGHTNING_TARGET here.
|
|
* opcode/disass.c: Change list of valid LIGHTNING_TARGET values.
|
|
|
|
* lightningize.in: Robustify against missing subtarget files.
|
|
|
|
2008-06-11 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-32.h: Use MOVLir instead of jit_movi_l
|
|
to implement jit_movi_p.
|
|
|
|
2008-06-11 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-32.h: Use separate __APPLE__ and SysV
|
|
prolog/ret macros. Subtract 12 bytes in __APPLE__ case to
|
|
keep stack aligned, and always use LEAVE in the epilog.
|
|
|
|
2008-06-11 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-i386.h: Fix C++ incompatibility.
|
|
|
|
2008-06-10 Laurent Michel <ldm@engr.uconn.edu>
|
|
|
|
* lightning/i386/core-i386.h: Fix jit_replace8 for
|
|
case when one of the operands is _EAX.
|
|
|
|
2008-05-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/run-test: Avoid CRLF issues on mingw.
|
|
|
|
2008-03-21 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-64.h: Fix jit_{ld,st}{,x}i_{i,l}.
|
|
Remove jit_ld{,x}i_ul.
|
|
* lightning/core-common.h: Make jit_ld{,x}{i,r}_ul
|
|
always a synonym of the _l variant.
|
|
* doc/porting.texi: Document this.
|
|
|
|
2008-03-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-64.h: Fix uses of jit_qop_.
|
|
|
|
2008-03-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-64.h: Add boolean operations.
|
|
|
|
2008-03-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-64.h: Add LEAQmr.
|
|
|
|
2008-03-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-64.h: Misc bugfixes.
|
|
|
|
2008-03-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-i386.c: Remove jit_ldr_i, jit_ldxr_i.
|
|
* lightning/i386/core-32.h: Add jit_ldr_i, jit_ldxr_i.
|
|
* lightning/i386/core-64.h: Add jit_ld{r,xr,i,xi}_{ui,l,ul};
|
|
move jit_ldr_i, jit_ldxr_i, jit_str_l, jit_stxr_l with others.
|
|
|
|
2008-03-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/asm-common.h: Add _s32P.
|
|
|
|
2008-03-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-64.h: Implement long mul/div/mod.
|
|
|
|
2008-03-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-i386.h: Cast memory address to long for JCCim.
|
|
|
|
2008-03-15 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/asm-common.h: Add underscores around __unused__
|
|
attribute.
|
|
|
|
2008-03-15 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/core.h: Avoid some "value computed is not used"
|
|
warnings.
|
|
* lightnings/tests/allocai.c: Silence other warnings.
|
|
|
|
2008-03-14 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightningize.in: Fix some problems (not all).
|
|
|
|
2008-03-14 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-32.h: Avoid some "value computed is not used"
|
|
warnings; reported by Sam Steingold.
|
|
|
|
2008-03-08 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-32.h: Fix stxr_c(_EAX, _EBX, _ESI).
|
|
|
|
2008-02-13 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-32.h: Avoid redefinition of _r1, reported by
|
|
Sam Steingold.
|
|
* lightning/i386/asm-64.h: Likewise.
|
|
|
|
2008-02-08 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-i386.h: Don't define _VOID, reported
|
|
by Reini Urban.
|
|
|
|
2008-02-03 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* build-aux/lightning.m4: Add --with-lightning-prefix option, suggested
|
|
by Sam Steingold.
|
|
|
|
2008-01-14 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-64.h: Use CALLsr, not CALLLsr.
|
|
|
|
2008-01-13 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-i386.h: Move jit_calli and jit_callr...
|
|
* lightning/i386/core-32.h: ... here.
|
|
* lightning/i386/core-64.h: Redefine them.
|
|
|
|
2008-01-05 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/fp-32.h: Fix sub(a,0,a).
|
|
* lightning/tests/3to2.c: Add new testcases.
|
|
* lightning/tests/3to2.ok: Add new testcases.
|
|
|
|
2008-01-02 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/fp-32.h: Fix sub(a,b,a) with a ~= JIT_FPR0.
|
|
* lightning/tests/3to2.c: New.
|
|
* lightning/tests/3to2.ok: New.
|
|
|
|
2007-11-07 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* opcode/Makefile.am: Fix AM_CPPFLAGS.
|
|
|
|
2007-08-12 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-i386.h: Improve encoding of set* instructions.
|
|
* lightning/i386/core-64.h: Fix jit_bra_l.
|
|
* tests/sete.c: New.
|
|
* tests/sete.ok: New.
|
|
|
|
2007-06-29 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/bp.c: Upgrade to GPL/LGPLv3.
|
|
* lightning/i386/asm-32.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/i386/asm-64.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/i386/core-32.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/i386/core-64.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/i386/fp-64.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/sparc/asm.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/sparc/core.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/sparc/fp.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/sparc/funcs.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/i386/asm-i386.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/i386/core-i386.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/i386/fp-32.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/i386/funcs.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/ppc/asm.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/ppc/core.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/ppc/fp.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/ppc/funcs.h: Upgrade to GPL/LGPLv3.
|
|
* lightning.h: Upgrade to GPL/LGPLv3.
|
|
* tests/add.c: Upgrade to GPL/LGPLv3.
|
|
* tests/fib.c: Upgrade to GPL/LGPLv3.
|
|
* tests/testfp.c: Upgrade to GPL/LGPLv3.
|
|
* tests/fibdelay.c: Upgrade to GPL/LGPLv3.
|
|
* tests/fibit.c: Upgrade to GPL/LGPLv3.
|
|
* tests/funcfp.c: Upgrade to GPL/LGPLv3.
|
|
* tests/incr.c: Upgrade to GPL/LGPLv3.
|
|
* tests/printf.c: Upgrade to GPL/LGPLv3.
|
|
* tests/printf2.c: Upgrade to GPL/LGPLv3.
|
|
* tests/rpn.c: Upgrade to GPL/LGPLv3.
|
|
* tests/rpnfp.c: Upgrade to GPL/LGPLv3.
|
|
* lightning/asm-common.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/core-common.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/fp-common.h: Upgrade to GPL/LGPLv3.
|
|
* lightning/funcs-common.h: Upgrade to GPL/LGPLv3.
|
|
* opcode/dis-buf.c: Upgrade to GPL/LGPLv3.
|
|
* opcode/disass.c: Upgrade to GPL/LGPLv3.
|
|
* opcode/i386-dis.c: Upgrade to GPL/LGPLv3.
|
|
* opcode/sparc-dis.c: Upgrade to GPL/LGPLv3.
|
|
* opcode/sparc-opc.c: Upgrade to GPL/LGPLv3.
|
|
* lightningize.in: Upgrade to GPL/LGPLv3.
|
|
* opcode/bfd.h: Upgrade to GPL/LGPLv3.
|
|
* opcode/i386.h: Upgrade to GPL/LGPLv3.
|
|
* opcode/sparc.h: Upgrade to GPL/LGPLv3.
|
|
|
|
2007-01-26 Thomas Girard <thomas.g.girard@free.fr>
|
|
|
|
* lightning/Makefile.am: Add clean-local target.
|
|
|
|
2006-12-02 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-i386.h: Add CVTTS?2SIL.
|
|
* lightning/i386/asm-64.h: Add CVTTS?2SIQ.
|
|
* lightning/i386/fp-64.h: Use it.
|
|
|
|
* lightning/Makefile.am: Place files in nodist_lightning_HEADERS.
|
|
|
|
2006-11-23 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/core-common.h: Add casts in "*i_p" variants.
|
|
* lightning/i386/asm-32.h: Add _r1.
|
|
* lightning/i386/asm-64.h: Likewise, and add SSE instructions.
|
|
* lightning/i386/asm-i386.h: Merge SSE instructions from Gwenole.
|
|
Use short form for 16-bit AX instructions. Remove _r1
|
|
* lightning/i386/core-64.h: Add FP ABI support in its infancy.
|
|
* lightning/i386/core-i386.h: Move jit_arg_f and jit_arg_d...
|
|
* lightning/i386/core-32.h: ... and jit_prepare_f and jit_prepare_d...
|
|
* lightning/i386/fp-32.h: ... here.
|
|
* lightning/i386/fp-64.h: Write the code.
|
|
* lightning/sparc/fp.h: Fix jit_extr_{f_d,d_f} register order.
|
|
|
|
2006-11-22 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-i386.h: Move x86-64 instructions...
|
|
* lightning/i386/asm-64.h: ... here.
|
|
* lightning/i386/fp-32.h: Fix bugfixes worked around in froofyJIT.
|
|
Add JIT_FPRET.
|
|
* lightning/sparc/fp.h: Likewise.
|
|
* lightning/ppc/fp.h: Likewise.
|
|
* lightning/fp-common.h: Adjust for JIT_FPRET.
|
|
* tests/funcfp.c: Adjust for JIT_FPRET.
|
|
* tests/rpnfp.c: Adjust for JIT_FPRET.
|
|
|
|
2006-11-20 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-i386.h: Add an underscore to macros without
|
|
a parameter.
|
|
|
|
2006-11-20 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core-i386.h: Move jit_movip, jit_check8, jit_reg8,
|
|
jit_reg16, jit_movbrm...
|
|
* lightning/i386/core-32.h: ... here.
|
|
* lightning/i386/core-64.h: Redefine them. Fix other bugs.
|
|
|
|
* tests/printf.c: Do not do a varargs call.
|
|
|
|
2006-11-20 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-i386.h: Check in rewrite from Basilisk II.
|
|
* lightning/i386/asm-32.h: Adjust.
|
|
* lightning/i386/asm-64.h: Adjust.
|
|
* lightning/i386/fp-32.h: Adjust.
|
|
|
|
* lightning/i386/core-32.h: Adjust. Add jit_{ld,ldx,st,stx}i*.
|
|
* lightning/i386/core-64.h: Adjust. Add jit_{ld,ldx,st,stx}i*.
|
|
* lightning/i386/core-i386.h: Adjust. Remove these patterns.
|
|
|
|
2006-11-20 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm-i386.h: Merge 64-bit cleanliness changes from
|
|
mzscheme.
|
|
Add SSE.
|
|
* lightning/i386/asm-64.h: Likewise.
|
|
|
|
2006-11-20 Paolo Bonzini <bonzini@gnu.org>
|
|
Ludovic Courtes <ludo@chbouib.org>
|
|
|
|
* lightning/i386/core-32.h: Disable jit_push and jit_pop if stack not
|
|
needed.
|
|
* lightning/i386/core-64.h: Disable jit_push and jit_pop if stack not
|
|
needed.
|
|
* lightning/sparc/core.h: Merge final implementation of jit_pushr and
|
|
jit_popr.
|
|
* lightning/ppc/core.h: Fix implementation of jit_pushr and jit_popr to
|
|
work (more or less) across function calls.
|
|
|
|
* tests/push-pop.c, tests/push-pop.ok: New test.
|
|
* tests/Makefile.am: Run it.
|
|
|
|
2006-11-20 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/asm-common.h: Make 64-bit safe.
|
|
* lightning/i386/funcs.h: Make 64-bit safe.
|
|
|
|
* lightning/i386/asm-64.h: More merge from mzscheme.
|
|
* lightning/i386/asm-i386.h: More merge from mzscheme.
|
|
* lightning/i386/core-32.h: More merge from mzscheme.
|
|
* lightning/i386/core-64.h: More merge from mzscheme.
|
|
* lightning/i386/core-i386.h: More merge from mzscheme.
|
|
|
|
* tests/rpnfp.c, tests/testfp.c, tests/funcfp.c: Skip if no
|
|
floating-point support.
|
|
|
|
2006-11-04 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/rpn.c: Remove pushr/popr.
|
|
|
|
2006-11-04 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/core.h: Implement jit_allocai, define JIT_FP to be R1.
|
|
* lightning/ppc/funcs.h: Store frame size into _jitl. Store R1 before
|
|
the STMW, so that the offset is unchanged when we patch the STMW.
|
|
* lightning/i386/core.h: Define JIT_FP to be EBP.
|
|
* lightning/i386/core-32.h: Implement jit_allocai, put LEAVE in the
|
|
epilog if jit_allocai was used.
|
|
* lightning/i386/core-64.h: Implement jit_allocai, put LEAVE in the
|
|
epilog if jit_allocai was used.
|
|
|
|
2006-11-04 Ludovic Courtes <ludo@chbouib.org>
|
|
|
|
* lightning/sparc/core.h: Implement jit_allocai.
|
|
* tests/allocai.c: New.
|
|
* tests/Makefile.am: Point to new tests.
|
|
|
|
2006-11-03 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/core.h: Fix jit_bms using BNE rather than BGT.
|
|
"AND." does signed comparisons.
|
|
|
|
2006-10-31 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* doc/porting.texi: Rename JIT_FP to JIT_AP.
|
|
* lightning/core-common.h: Likewise.
|
|
* lightning/i386/core-i386.h: Likewise.
|
|
* lightning/fp-common.h: Provide default versions of jit_getarg_[fd].
|
|
* lightning/i386/fp-32.h: Don't provide jit_getarg_[fd].
|
|
* lightning/ppc/fp.h: Likewise.
|
|
|
|
2006-10-31 Ludovic Courtes <ludo@chbouib.org>
|
|
|
|
* doc/using.texi (The instruction set): Clarified the use of `JIT_RET' and
|
|
documented `jit_retval'.
|
|
* tests/ret.c (generate_function_proxy): After `jit_finish', use
|
|
`jit_retval_i' to move FUNC's return value into the correct register.
|
|
|
|
2006-10-31 Paolo Bonzini <bonzini@gnu.org>
|
|
Ludovic Courtes <ludo@chbouib.org>
|
|
|
|
* tests/divi.c, tests/divi.ok, tests/movi.c, tests/movi.ok: New.
|
|
* tests/ldxi.c: Ensure large pointer is generated.
|
|
* tests/Makefile.am: Point to new tests.
|
|
* lightning.h: Include funcs-common.h before funcs.h.
|
|
* lightning/sparc/core.h: Fix bugs in modi/divi.
|
|
|
|
2006-10-30 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/Makefile.am: Use "ln -sf".
|
|
* lightning/core-common.h: Define jit_negr_l if necessary.
|
|
|
|
2006-10-30 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm.h (MOVS*, MOVZ*): Use correct _r[124] macros.
|
|
|
|
2006-10-29 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* configure.ac: Use lightning.m4 macros.
|
|
* lightning.m4: Refactor to use common code in configure.ac. Move...
|
|
* build-aux/lightning.m4: ... here.
|
|
* lightningize.in: Support suffixes.
|
|
* opcode/disass.in: Adapt to changes in configure.ac.
|
|
|
|
* lightning/ppc/funcs.h: Use __APPLE__ instead of _CALL_DARWIN.
|
|
* lightning/i386/core-32.h: Likewise.
|
|
|
|
2006-10-26 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* configure.ac: Fix compilation test.
|
|
* lightning/Makefile.am: Symlink LIGHTNING_TARGET_FILES in
|
|
non-distribution mode.
|
|
* lightning/i386/Makefile.frag: Use LIGHTNING_TARGET_FILES.
|
|
|
|
2006-10-26 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* configure.ac: Subst cpu.
|
|
* lightning/core-common.h: Make tests pass on i386.
|
|
* lightning/i386/asm-32.h: Make tests pass on i386.
|
|
* lightning/i386/asm-64.h: Make tests pass on i386.
|
|
* lightning/i386/asm-i386.h: Make tests pass on i386.
|
|
* lightning/i386/core-32.h: Make tests pass on i386.
|
|
* lightning/i386/core-64.h: Make tests pass on i386.
|
|
* lightning/i386/core-i386.h: Make tests pass on i386.
|
|
* tests/Makefile.am: Include files from cpu directory.
|
|
|
|
2006-10-26 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm.h: Move to asm-i386.h
|
|
* lightning/i386/asm-32.h: New, from Matthew Flatt.
|
|
* lightning/i386/asm-64.h: New, from Matthew Flatt.
|
|
* lightning/i386/core.h: Move to core-i386.h
|
|
* lightning/i386/core-32.h: New, from Matthew Flatt.
|
|
* lightning/i386/core-64.h: New, from Matthew Flatt.
|
|
* lightning/i386/fp.h: Move to fp-32.h
|
|
* lightning/i386/fp-64.h: New, dummy.
|
|
* lightning/i386/Makefile.frag: New.
|
|
* lightning/Makefile.am: Support per-target Makefile fragments.
|
|
* configure.ac: Support per-target Makefile fragments and CPU suffixes.
|
|
|
|
2006-10-16 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/i386.h (jit_flush_code): Fix syntax error. :-(
|
|
|
|
2006-07-06 Paolo Bonzini <bonzini@gnu.org>
|
|
Ludovic Courtes <ludovic.courtes@laas.fr>
|
|
|
|
* doc/using.texi: Clarify "Using autoconf" section
|
|
and rename it to "Bundling lightning"
|
|
* lightning.m4: Work also if lightning is not bundled.
|
|
|
|
2006-07-06 Paolo Bonzini <bonzini@gnu.org>
|
|
Ludovic Courtes <ludovic.courtes@laas.fr>
|
|
|
|
* lightning/ppc/core.h (_jit_mod): Replace with...
|
|
(_jit_mod_big, _jit_mod_small): ... these.
|
|
(jit_modi_i, jit_modi_ui): Rewrite.
|
|
* tests/modi.c, tests/modi.ok: New tests.
|
|
|
|
2006-05-18 Matthew Flatt <mflatt@cs.utah.edu>
|
|
|
|
* lightning/i386/asm.h: Fix test for extending the mprotect area
|
|
towards lower addresses.
|
|
|
|
2006-05-16 Bruno Haible <bruno@clisp.org>
|
|
|
|
* lightning/asm-common.h: Don't use __func__ nor __FUNCTION__ if
|
|
not compiling with GNU C.
|
|
|
|
2006-02-16 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/core.h: Fix jit_ldxi_* with big displacement.
|
|
|
|
2006-01-23 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* configure.ac: Fix comments in config.h.in.
|
|
|
|
2005-11-25 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/sparc/fp.h: Fix header comment.
|
|
* lightning/ppc/fp.h: Fix header comment.
|
|
|
|
2005-04-27 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/asm.h (JCm, JCSm, JNCm, JNCSm): New.
|
|
|
|
2004-11-26 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/funcs.h (_jit_epilog): Remove unused variable.
|
|
|
|
2004-11-13 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/funcs.h [__linux__]: Include sys/mman.h.
|
|
|
|
2004-11-09 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/sparc/fp.h: Fix fp-to-integer conversions.
|
|
* lightning/ppc/testfp.c: Test fp-to-integer conversions
|
|
of integer numbers.
|
|
* lightning/ppc/testfp.ok: Adjust for the above.
|
|
|
|
2004-11-08 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/testfp.c: Always flush code before
|
|
testing it.
|
|
|
|
2004-11-08 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/fp.h: Do not clobber f31.
|
|
|
|
2004-11-08 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning.h: New name of...
|
|
* lightning-inst.h: ... this file.
|
|
* lightning.h.in: Removed.
|
|
|
|
* opcodes/disass.c: Include config.h.
|
|
* tests/add.c: Include config.h.
|
|
* tests/bp.c: Include config.h.
|
|
* tests/fib.c: Include config.h.
|
|
* tests/fibdelay.c: Include config.h.
|
|
* tests/fibit.c: Include config.h.
|
|
* tests/funcfp.c: Include config.h.
|
|
* tests/incr.c: Include config.h.
|
|
* tests/printf.c: Include config.h.
|
|
* tests/printf2.c: Include config.h.
|
|
* tests/rpn.c: Include config.h.
|
|
* tests/rpnfp.c: Include config.h.
|
|
* tests/testfp.c: Include config.h.
|
|
|
|
2004-10-12 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/fp.h: Fix bugs in conditional branches.
|
|
|
|
2004-10-10 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/funcs.h: Fix pasto in jit_flush_code.
|
|
|
|
2004-10-08 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/fp.h: Optimized conditional branches.
|
|
|
|
2004-09-20 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/asm.h: Fix more typos.
|
|
|
|
2004-09-20 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/asm.h: Fix typos, replace `26' with JIT_AUX.
|
|
|
|
2004-09-20 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/fp.h: Added conditional branches.
|
|
|
|
2004-09-18 Laurent Michel <ldm@thorgal.homelinux.org>
|
|
|
|
* lightning/ppc/fp.h (jit_unler_d, jit_unltr_d, jit_unger_d,
|
|
jit_ungtr_d, jit_ltgt_d, jit_uneq_d): Implemented missing tests
|
|
to fully support testfp.
|
|
(jit_floorr_d_i, jit_ceilr_d_i, jit_roundr_d_i, jit_truncr_d_i):
|
|
New macros.
|
|
* lightning/ppc/asm.h: Added missing opcodes FCTIWZ and MTFSFI.
|
|
* lightning/ppc/funcs.h (_jit_prolog): Fixed minor mistake in
|
|
the initialization of _jitl.nextarg_geti, relying on the
|
|
JIT_AUX macro as well to get the register offset.
|
|
|
|
2004-09-07 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/funcs.h: Fix typo.
|
|
|
|
2004-09-06 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/funcfp.c: Use %g. Remove C99 variable declarations.
|
|
* tests/testfp.c: Don't use __builtin_nan.
|
|
|
|
* lightning/ppc/core.h: Add three V registers.
|
|
* lightning/ppc/funcs.h: Adjust.
|
|
|
|
* lightning/sparc/core.h: Some fixes related to FP argument passing.
|
|
Move R0 to %g2, use %o7 for JIT_BIG2.
|
|
* lightning/sparc/fp.h: Some fixes related to FP argument passing.
|
|
|
|
2004-09-02 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/sparc/core.h: Add another V register,
|
|
move R0 to %o7.
|
|
|
|
2004-07-15 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/funcs.h: Implement jit_flush_code,
|
|
in order to support Fedora's exec-shield.
|
|
|
|
2004-07-14 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/core-common.h: Add more jit_extr_*_* macros.
|
|
* lightning/doc/using.texi: Be clearer about the order
|
|
of arguments in jit_extr_*_*.
|
|
* lightning/doc/porting.texi: Add more jit_extr_*_* macros.
|
|
* lightning/i386/fp.h: Fix typo in jit_extr_i_d.
|
|
|
|
2004-07-14 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/funcs.h: Adjust offset of LR into
|
|
stack frame if running under the Darwin ABI.
|
|
|
|
2004-07-13 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/fp.h: Rename jit_exti_d to jit_extr_i_d.
|
|
|
|
2004-07-13 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/core.h: Fix thinko.
|
|
|
|
* lightning/i386/core.h: Fix jit_lti_ui.
|
|
* lightning/core-common.h: Add missing macros.
|
|
|
|
* lightning/ppc/fp.h: Rename jit_neg_* to jit_negr_*.
|
|
* lightning/i386/fp.h: Rename jit_neg_* to jit_negr_*.
|
|
* lightning/sparc/fp.h: Rename jit_neg_* to jit_negr_*.
|
|
* lightning/fp-common.h: Rename jit_neg_* to jit_negr_*.
|
|
* doc/porting.texi: Add undocumented macros.
|
|
|
|
2004-07-12 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* doc/porting.texi: Add missing macros.
|
|
|
|
2004-07-12 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/funcs.h: Don't generate trampolines.
|
|
Separate prolog and epilog generation.
|
|
* lightning/ppc/core.h: Generate epilog explicitly.
|
|
Don't reserve r31 anymore.
|
|
* lightning/core-common.h: Remove call to jit_setup_code.
|
|
|
|
2004-07-09 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/lightning.h.in: Avoid preprocessor warnings.
|
|
* lightning/lightning-inst.h: Likewise.
|
|
|
|
* lightning/i386/core.h: Define JIT_R, JIT_R_NUM, JIT_V,
|
|
JIT_V_NUM.
|
|
* lightning/ppc/core.h: Likewise.
|
|
* lightning/sparc/core.h: Likewise.
|
|
* lightning/i386/fp.h: Define JIT_FPR, JIT_FPR_NUM.
|
|
* lightning/ppc/fp.h: Likewise.
|
|
* lightning/sparc/fp.h: Likewise.
|
|
* lightning/core-common.h: Define fixed register names.
|
|
* lightning/fp-common.h: Likewise for FP regs.
|
|
|
|
2004-07-09 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/ppc/funcs.h: Fix location where return address
|
|
is stored.
|
|
* lightning/i386/asm.h: Add a trailing _ to opcodes without
|
|
any parameter.
|
|
* lightning/i386/core.h: Adjust for the above.
|
|
|
|
2004-04-15 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/fp.h: Change "and" to "_and"
|
|
to satisfy C++ compilers.
|
|
|
|
2004-04-14 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/sparc/fp.h: Use memcpy to implement jit_movi.
|
|
* lightning/ppc/fp.h: Use memcpy to implement jit_movi.
|
|
Move floating-point opcodes...
|
|
* lightning/ppc/asm.h: ... here.
|
|
|
|
2004-04-14 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/core-common.h: Add jit_finishr.
|
|
* lightning/ppc/core.h: Add jit_callr and jit_finishr.
|
|
* lightning/i386/core.h: Add jit_callr.
|
|
* lightning/sparc/core.h: Add jit_callr. Fix typo.
|
|
|
|
2004-04-14 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core.h: Fix pasto in jit_b*_ui.
|
|
|
|
2004-03-30 Laurent Michel
|
|
|
|
* lightning/ppc: Implement PowerPC floating point
|
|
(ChangeLog entry missing).
|
|
|
|
2004-03-12 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/fp-common.h: Load/store macros are not the
|
|
same for floats and doubles anywhere, but jit_retval may be.
|
|
* lightning/i386/asm.h: Fix = mistaken for == in ESCrri.
|
|
* lightning/i386/core.h: Fix typo in jit_prepare_[fd].
|
|
* lightning/i386/fp.h: Rewritten.
|
|
* tests/testfp.c: Add tests for unordered comparisons.
|
|
* tests/testfp.ok: Add results.
|
|
|
|
2004-03-15 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
Merge changes from Laurent Michel.
|
|
|
|
* lightning/asm-common.h: Add _jit_I_noinc.
|
|
* lightning/core-common.h: Support jit_init,
|
|
jit_setup_code, jit_patch_at. Return patchable IP from
|
|
jit_movi_p.
|
|
* lightning/funcs-common.h: Provide defaults
|
|
for jit_setup_code, jit_start_pfx, jit_end_pfx
|
|
* lightning/i386/core.h: Add jit_patch_at, jit_patch_movi.
|
|
* lightning/ppc/core.h: Likewise.
|
|
* lightning/sparc/core.h: Likewise.
|
|
* lightning/ppc/asm.h: Fix generation of branch destination
|
|
displacements in _FB and _BB
|
|
* lightning/ppc/core.h: Generate trampolines in the user
|
|
area.
|
|
* lightning/ppc/funcs.h: Add a few casts.
|
|
* tests/bc.c: New testcase.
|
|
|
|
* lightning/i386/asm.h: Wrap into #ifndef LIGHTNING_DEBUG.
|
|
* lightning/ppc/asm.h: Wrap into #ifndef LIGHTNING_DEBUG.
|
|
* lightning/sparc/asm.h: Wrap into #ifndef LIGHTNING_DEBUG.
|
|
|
|
|
|
2004-03-09 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/sparc/fp.h: Rewrite. Move macros for
|
|
FP code generation...
|
|
* lightning/sparc/asm.h: ... here.
|
|
* lightning/sparc/core.h: Rename jit_prepare to
|
|
jit_prepare_i, jit_retval to jit_retval_i.
|
|
* lightning/ppc/core.h: Rename jit_prepare to
|
|
jit_prepare_i, jit_retval to jit_retval_i.
|
|
* lightning/i386/core.h: Rename jit_prepare to
|
|
jit_prepare_i, jit_retval to jit_retval_i.
|
|
* lightning/core-common.h: Provide backwards
|
|
compatible synonyms for the above.
|
|
* lightning/fp-common.h: Rewrite.
|
|
* lightning-inst.h: Include fp unconditionally.
|
|
* lightning.h.in: Include fp unconditionally.
|
|
* tests/Makefile.am: Enable fp tests.
|
|
* tests/fib.c: Use jit_retval_i.
|
|
* tests/fibit.c: Cast codeBuffer to char *.
|
|
* tests/funcfp.c: Use new fp macros.
|
|
* tests/printf.c: Use jit_retval_i.
|
|
* tests/rpnfp.c: Use new fp macros.
|
|
* tests/testfp.c: Use new fp macros.
|
|
|
|
2004-03-02 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core.h: generate correct code when
|
|
doing lt/le/ge/etc. on ESI and EDI. Use MOVZX/MOVSX
|
|
where possible.
|
|
* lightning/i386/asm.h: Add macros for MOVZX/MOVSX.
|
|
Move macros for x87 here, and add many of them.
|
|
* lightning/i386/fp.h: Use new macros for x87.
|
|
|
|
2004-02-06 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core.h: avoid generating MOV reg, reg.
|
|
* lightning/sparc/core.h: fix several bugs.
|
|
* lightning/ppc/core.h: fix several bugs.
|
|
* tests/rpn.c: rewritten.
|
|
|
|
2004-01-08 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/rpnfp.c: new example, suggested by Basile
|
|
Starynkevitch.
|
|
* tests/rpnfp.ok: new example.
|
|
|
|
2003-12-12 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/add.c: new test, suggested by Steve Dekorte.
|
|
* tests/add.c: new test.
|
|
|
|
2003-11-14 Paolo Bonzini <bonzini@gnu.org>
|
|
John Redford <eirenik@hotmail.com>
|
|
|
|
* lightning/asm-common.h: change the 'pc' field of _jit to
|
|
be a union of various data types, because ISO C99 doesn't
|
|
permit using ++ on a = cast. Change the incremented casts of
|
|
_jit.pc to be _jit.x.uc_pc, _jit.x.us_pc, etc.
|
|
* all files: change all non-cast instances of _jit.pc to be
|
|
_jit.x.pc.
|
|
* lightning/i386/core.h: remove casts from jit_might.
|
|
|
|
2003-05-25 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core.h: use JITSORRY in jit_replace
|
|
* lightning/asm-common.h: define JITSORRY
|
|
|
|
2003-05-14 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* lightning/i386/core.h: fix missing comma in several
|
|
load/store macros.
|
|
* lightning/core-common.h: fix long/unsigned long/pointer
|
|
jit_pushr/jit_popr.
|
|
* lightning/ppc/funcs.h: correctly align stack pointer
|
|
|
|
No changelogs for the assemblers (lightning directory) until 1.0
|
|
|
|
2003-03-27 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/printf2.c: new test
|
|
|
|
2001-05-03 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* tests/printf.c: made the message platform independent
|
|
|
|
2001-01-19 Paolo Bonzini <bonzini@gnu.org>
|
|
|
|
* configure.in: support cross-assembling
|
|
|
|
* disass/bfd.h, disass/dis-asm.h, disass/dis-buf.c,
|
|
disass/i386-dis.c, disass/i386.h, disass/ppc-dis.c,
|
|
disass/ppc.h, disass/ppc-opc.c, disass/sparc-dis.c,
|
|
disass/sparc.h, disass/sparc-opc.c: new files, from GDB
|
|
|
|
* disass/disass.c, disass/Makefile.am: new files
|
|
|
|
* tests/fib.c, tests/fibit.c, tests/incr.c, tests/printf.c,
|
|
tests/rpn.c, tests/testfp.c, tests/Makefile.am: support
|
|
disassembling
|