mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 04:10:18 +02:00
*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.
20 lines
893 B
Text
20 lines
893 B
Text
* Update documentation to match new implementation.
|
|
|
|
* Make an sparc port to not remove previous functionality.
|
|
|
|
* Add two new base instructions to help dynamically typed
|
|
languages, that use two result registers and two argument
|
|
registers, implementing multiplication and quotient+remainder
|
|
return from division. Alternatively, can add branch codes
|
|
for multiplication that overflows (and reverse for no
|
|
overflow) and division with zero remainder or non zero
|
|
remainder.
|
|
Suggested names for now are "qmul" and "qdiv", with "r"
|
|
and "i" variants, and possibly unsigned version. Branches
|
|
would use "bo" and "bx" prefix.
|
|
|
|
* Validate that divrem in jit_x86-cpu.c is not modifying
|
|
the non result arguments. This is not verified by clobber.tst,
|
|
as it only checks registers not involved in the operation
|
|
(because it does not know about values being set as input
|
|
for the the operation).
|