mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-05 03:30:24 +02:00
Allow a backend to have multiple temporary registers
This commit is contained in:
parent
5b8262e804
commit
09e71475f4
3 changed files with 25 additions and 17 deletions
|
@ -121,8 +121,8 @@ jit_fpr_is_callee_save (jit_fpr_t reg)
|
|||
#define JIT_R14 _X14
|
||||
#define JIT_R15 _X15
|
||||
#define JIT_R16 _X16
|
||||
#define JIT_R17 _X17
|
||||
#define JIT_RTMP _X18
|
||||
#define JIT_TMP0 _X17
|
||||
#define JIT_TMP1 _X18
|
||||
#define JIT_V0 _X19
|
||||
#define JIT_V1 _X20
|
||||
#define JIT_V2 _X21
|
||||
|
|
|
@ -332,35 +332,43 @@ jit_align(jit_state_t *_jit, unsigned align)
|
|||
static jit_gpr_t
|
||||
get_temp_gpr(jit_state_t *_jit)
|
||||
{
|
||||
ASSERT(!_jit->temp_gpr_saved);
|
||||
_jit->temp_gpr_saved = 1;
|
||||
#ifdef JIT_RTMP
|
||||
return JIT_RTMP;
|
||||
#else
|
||||
return JIT_VTMP;
|
||||
switch(_jit->temp_gpr_saved++)
|
||||
{
|
||||
case 0:
|
||||
return JIT_TMP0;
|
||||
#ifdef JIT_TMP1
|
||||
case 1:
|
||||
return JIT_TMP1;
|
||||
#endif
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
static jit_fpr_t
|
||||
get_temp_fpr(jit_state_t *_jit)
|
||||
{
|
||||
ASSERT(!_jit->temp_fpr_saved);
|
||||
_jit->temp_fpr_saved = 1;
|
||||
return JIT_FTMP;
|
||||
switch(_jit->temp_gpr_saved++)
|
||||
{
|
||||
case 0:
|
||||
return JIT_FTMP;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
unget_temp_fpr(jit_state_t *_jit)
|
||||
{
|
||||
ASSERT(_jit->temp_fpr_saved);
|
||||
_jit->temp_fpr_saved = 0;
|
||||
_jit->temp_fpr_saved--;
|
||||
}
|
||||
|
||||
static void
|
||||
unget_temp_gpr(jit_state_t *_jit)
|
||||
{
|
||||
ASSERT(_jit->temp_gpr_saved);
|
||||
_jit->temp_gpr_saved = 0;
|
||||
_jit->temp_gpr_saved--;
|
||||
}
|
||||
|
||||
static inline void emit_u8(jit_state_t *_jit, uint8_t u8) {
|
||||
|
|
|
@ -129,7 +129,7 @@ jit_fpr_is_callee_save (jit_fpr_t reg)
|
|||
# define JIT_V0 _RBP
|
||||
# define JIT_V1 _RSI
|
||||
# define JIT_V2 _RDI
|
||||
# define JIT_TMP _RBX
|
||||
# define JIT_TMP0 _RBX
|
||||
# define JIT_F0 _XMM0
|
||||
# define JIT_F1 _XMM1
|
||||
# define JIT_F2 _XMM2
|
||||
|
@ -138,7 +138,7 @@ jit_fpr_is_callee_save (jit_fpr_t reg)
|
|||
# define JIT_F5 _XMM5
|
||||
# define JIT_F6 _XMM6
|
||||
# define JIT_FTMP _XMM7
|
||||
# define JIT_PLATFORM_CALLEE_SAVE_GPRS JIT_TMP
|
||||
# define JIT_PLATFORM_CALLEE_SAVE_GPRS JIT_TMP0
|
||||
#elif __CYGWIN__
|
||||
# define JIT_R0 _RAX
|
||||
# define JIT_R1 _RCX
|
||||
|
@ -146,7 +146,7 @@ jit_fpr_is_callee_save (jit_fpr_t reg)
|
|||
# define JIT_R3 _R8
|
||||
# define JIT_R4 _R9
|
||||
# define JIT_R5 _R10
|
||||
# define JIT_RTMP _R11
|
||||
# define JIT_TMP0 _R11
|
||||
# define JIT_V0 _RBX
|
||||
# define JIT_V1 _RSI
|
||||
# define JIT_V2 _RDI
|
||||
|
@ -180,7 +180,7 @@ jit_fpr_is_callee_save (jit_fpr_t reg)
|
|||
# define JIT_R5 _R8
|
||||
# define JIT_R6 _R9
|
||||
# define JIT_R7 _R10
|
||||
# define JIT_RTMP _R11
|
||||
# define JIT_TMP0 _R11
|
||||
# define JIT_V0 _RBX
|
||||
# define JIT_V1 _R12
|
||||
# define JIT_V2 _R13
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue