mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-27 21:40:34 +02:00
Implement the jit_arg_register_p predicate.
* 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.
This commit is contained in:
parent
73e520767f
commit
c8b6c36971
15 changed files with 667 additions and 4 deletions
|
@ -1251,8 +1251,11 @@ _vfp_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
|
|||
jit_int32_t code;
|
||||
u.f = i0;
|
||||
if (jit_fpr_p(r0)) {
|
||||
if ((code = encode_vfp_double(1, 0, u.i, u.i)) != -1 ||
|
||||
(code = encode_vfp_double(1, 1, ~u.i, ~u.i)) != -1)
|
||||
/* float arguments are packed, for others,
|
||||
* lightning only address even registers */
|
||||
if (!(r0 & 1) && (r0 - 16) >= 0 &&
|
||||
((code = encode_vfp_double(1, 0, u.i, u.i)) != -1 ||
|
||||
(code = encode_vfp_double(1, 1, ~u.i, ~u.i)) != -1))
|
||||
VIMM(code, r0);
|
||||
else {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue