mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-21 11:10:21 +02:00
Add support to test different/alternate code generation setups.
* 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.
This commit is contained in:
parent
0e83b52d49
commit
d05538bff6
10 changed files with 322 additions and 75 deletions
|
@ -185,17 +185,22 @@ void
|
|||
_jit_init(jit_state_t *_jit)
|
||||
{
|
||||
jit_int32_t regno;
|
||||
static jit_bool_t first = 1;
|
||||
|
||||
_jit->reglen = jit_size(_rvs) - 1;
|
||||
/* jit_get_cpu() should have been already called, and only once */
|
||||
if (!jit_cpu.vfp) {
|
||||
/* cause register to never be allocated, because simple
|
||||
* software float only allocates stack space for 8 slots */
|
||||
for (regno = _D8; regno < _D7; regno++)
|
||||
_rvs[regno].spec = 0;
|
||||
}
|
||||
if (!jit_cpu.abi) {
|
||||
for (regno = _S15; regno <= _D0; regno++)
|
||||
_rvs[regno].spec &= ~rc(arg);
|
||||
if (first) {
|
||||
/* jit_get_cpu() should have been already called, and only once */
|
||||
if (!jit_cpu.vfp) {
|
||||
/* cause register to never be allocated, because simple
|
||||
* software float only allocates stack space for 8 slots */
|
||||
for (regno = _D8; regno < _D7; regno++)
|
||||
_rvs[regno].spec = 0;
|
||||
}
|
||||
if (!jit_cpu.abi) {
|
||||
for (regno = _S15; regno <= _D0; regno++)
|
||||
_rvs[regno].spec &= ~rc(arg);
|
||||
}
|
||||
first = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue