[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 02/34: Refactor some bits from x86 to lightening
From: |
Andy Wingo |
Subject: |
[Guile-commits] 02/34: Refactor some bits from x86 to lightening |
Date: |
Mon, 20 May 2019 09:55:50 -0400 (EDT) |
wingo pushed a commit to branch master
in repository guile.
commit fc9b474da6475a9154bfb5ca825e26e34ec03722
Author: Andy Wingo <address@hidden>
Date: Fri May 10 14:14:32 2019 +0200
Refactor some bits from x86 to lightening
---
lightening.h | 28 ++++++++++++++--------------
lightening/lightening.c | 31 +++++++++++++++++++++++++++++++
lightening/x86.c | 29 -----------------------------
3 files changed, 45 insertions(+), 43 deletions(-)
diff --git a/lightening.h b/lightening.h
index c316348..c36d73c 100644
--- a/lightening.h
+++ b/lightening.h
@@ -65,6 +65,20 @@ jit_same_fprs (jit_fpr_t a, jit_fpr_t b)
return jit_fpr_regno (a) == jit_fpr_regno (b);
}
+#if defined(__i386__) || defined(__x86_64__)
+# include "lightening/x86.h"
+#elif defined(__mips__)
+# include "lightening/mips.h"
+#elif defined(__arm__)
+# include "lightening/arm.h"
+#elif defined(__ppc__) || defined(__powerpc__)
+# include "lightening/ppc.h"
+#elif defined(__aarch64__)
+# include "lightening/aarch64.h"
+#elif defined(__s390__) || defined(__s390x__)
+# include "lightening/s390.h"
+#endif
+
enum jit_reloc_kind
{
JIT_RELOC_ABSOLUTE,
@@ -87,20 +101,6 @@ typedef struct jit_reloc
# define JIT_API extern
#endif
-#if defined(__i386__) || defined(__x86_64__)
-# include "lightening/x86.h"
-#elif defined(__mips__)
-# include "lightening/mips.h"
-#elif defined(__arm__)
-# include "lightening/arm.h"
-#elif defined(__ppc__) || defined(__powerpc__)
-# include "lightening/ppc.h"
-#elif defined(__aarch64__)
-# include "lightening/aarch64.h"
-#elif defined(__s390__) || defined(__s390x__)
-# include "lightening/s390.h"
-#endif
-
typedef struct jit_state jit_state_t;
enum jit_operand_abi
diff --git a/lightening/lightening.c b/lightening/lightening.c
index 7194238..49ab5ab 100644
--- a/lightening/lightening.c
+++ b/lightening/lightening.c
@@ -76,6 +76,8 @@ static void jit_try_shorten(jit_state_t *_jit, jit_reloc_t
reloc,
struct abi_arg_iterator;
+static jit_bool_t is_fpr_arg(enum jit_operand_abi arg);
+static jit_bool_t is_gpr_arg(enum jit_operand_abi arg);
static void reset_abi_arg_iterator(struct abi_arg_iterator *iter, size_t argc,
const jit_operand_t *args);
static void next_abi_arg(struct abi_arg_iterator *iter,
@@ -437,6 +439,35 @@ jit_patch_there(jit_state_t* _jit, jit_reloc_t reloc,
jit_pointer_t addr)
FOR_EACH_INSTRUCTION(IMPL_INSTRUCTION)
#undef IMPL_INSTRUCTION
+static jit_bool_t
+is_fpr_arg(enum jit_operand_abi arg)
+{
+ switch (arg)
+ {
+ case JIT_OPERAND_ABI_UINT8:
+ case JIT_OPERAND_ABI_INT8:
+ case JIT_OPERAND_ABI_UINT16:
+ case JIT_OPERAND_ABI_INT16:
+ case JIT_OPERAND_ABI_UINT32:
+ case JIT_OPERAND_ABI_INT32:
+ case JIT_OPERAND_ABI_UINT64:
+ case JIT_OPERAND_ABI_INT64:
+ case JIT_OPERAND_ABI_POINTER:
+ return 0;
+ case JIT_OPERAND_ABI_FLOAT:
+ case JIT_OPERAND_ABI_DOUBLE:
+ return 1;
+ default:
+ abort();
+ }
+}
+
+static jit_bool_t
+is_gpr_arg(enum jit_operand_abi arg)
+{
+ return !is_fpr_arg(arg);
+}
+
static void
abi_imm_to_gpr(jit_state_t *_jit, enum jit_operand_abi abi, jit_gpr_t dst,
intptr_t imm)
diff --git a/lightening/x86.c b/lightening/x86.c
index a79d602..e1665bb 100644
--- a/lightening/x86.c
+++ b/lightening/x86.c
@@ -216,35 +216,6 @@ jit_init(jit_state_t *_jit)
return jit_cpu.sse2;
}
-static jit_bool_t
-is_fpr_arg(enum jit_operand_abi arg)
-{
- switch (arg)
- {
- case JIT_OPERAND_ABI_UINT8:
- case JIT_OPERAND_ABI_INT8:
- case JIT_OPERAND_ABI_UINT16:
- case JIT_OPERAND_ABI_INT16:
- case JIT_OPERAND_ABI_UINT32:
- case JIT_OPERAND_ABI_INT32:
- case JIT_OPERAND_ABI_UINT64:
- case JIT_OPERAND_ABI_INT64:
- case JIT_OPERAND_ABI_POINTER:
- return 0;
- case JIT_OPERAND_ABI_FLOAT:
- case JIT_OPERAND_ABI_DOUBLE:
- return 1;
- default:
- abort();
- }
-}
-
-static jit_bool_t
-is_gpr_arg(enum jit_operand_abi arg)
-{
- return !is_fpr_arg(arg);
-}
-
static const jit_gpr_t abi_gpr_args[] = {
#if __X32
/* No GPRs in args. */
- [Guile-commits] branch master updated (1b98734 -> e057ea0), Andy Wingo, 2019/05/20
- [Guile-commits] 02/34: Refactor some bits from x86 to lightening,
Andy Wingo <=
- [Guile-commits] 07/34: Fix GPR temporary selection, Andy Wingo, 2019/05/20
- [Guile-commits] 01/34: Refactor to move temp register acquire to core, Andy Wingo, 2019/05/20
- [Guile-commits] 10/34: Fix a couple bugs related to aarch64 literal pools, Andy Wingo, 2019/05/20
- [Guile-commits] 06/34: Allow a backend to have multiple temporary registers, Andy Wingo, 2019/05/20
- [Guile-commits] 09/34: Fix enter/leave JIT ABI, Andy Wingo, 2019/05/20
- [Guile-commits] 14/34: Fix dpkg --add-architecture invocation, Andy Wingo, 2019/05/20
- [Guile-commits] 16/34: Attempt to fix CI on Debian, Andy Wingo, 2019/05/20
- [Guile-commits] 19/34: Attempt to fix CI on Debian, Andy Wingo, 2019/05/20
- [Guile-commits] 24/34: Remove unused jit_{gpr,fpr}_is_callee_save, Andy Wingo, 2019/05/20
- [Guile-commits] 11/34: Aarch64 backend avoids needless temporary register allocation, Andy Wingo, 2019/05/20