Implement untyped macros to call proper wordsize load or store - lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2023年04月14日 18:07:17 -0300
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2023年04月14日 18:07:17 -0300
commitdbc4762e5486a3f5c83bfa71f183c9e7d4ea7704 (patch)
tree2bf1adff8c6057634d28fa7d422ec40511134baf /lib
parente86802c6db7556f2b80ca353fd78a6fed35a43e1 (diff)
downloadlightning-dbc4762e5486a3f5c83bfa71f183c9e7d4ea7704.tar.gz
Implement untyped macros to call proper wordsize load or store
Diffstat (limited to 'lib')
-rw-r--r--lib/jit_aarch64-cpu.c 4
-rw-r--r--lib/jit_alpha-cpu.c 12
-rw-r--r--lib/jit_arm-cpu.c 6
-rw-r--r--lib/jit_hppa-cpu.c 12
-rw-r--r--lib/jit_ia64-cpu.c 4
-rw-r--r--lib/jit_loongarch-cpu.c 3
-rw-r--r--lib/jit_mips-cpu.c 6
-rw-r--r--lib/jit_ppc-cpu.c 4
-rw-r--r--lib/jit_s390-cpu.c 6
-rw-r--r--lib/jit_x86-cpu.c 4
10 files changed, 49 insertions, 12 deletions
diff --git a/lib/jit_aarch64-cpu.c b/lib/jit_aarch64-cpu.c
index 53bfd0c..d414cec 100644
--- a/lib/jit_aarch64-cpu.c
+++ b/lib/jit_aarch64-cpu.c
@@ -213,8 +213,12 @@ typedef union {
# define s26_p(d) ((d) >= -33554432 && (d) <= 33554431)
# define ii(i) *_jit->pc.ui++ = i
# define ldr(r0,r1) ldr_l(r0,r1)
+# define ldi(r0,i0) ldi_l(r0,i0)
# define ldxr(r0,r1,r2) ldxr_l(r0,r1,r2)
# define ldxi(r0,r1,i0) ldxi_l(r0,r1,i0)
+# define str(r0,r1) str_l(r0,r1)
+# define sti(i0,r0) sti_l(i0,r0)
+# define stxr(r0,r1,r2) stxr_l(r0,r1,r2)
# define stxi(i0,r0,r1) stxi_l(i0,r0,r1)
# define FP_REGNO 0x1d
# define LR_REGNO 0x1e
diff --git a/lib/jit_alpha-cpu.c b/lib/jit_alpha-cpu.c
index 4b862b2..7791063 100644
--- a/lib/jit_alpha-cpu.c
+++ b/lib/jit_alpha-cpu.c
@@ -52,6 +52,14 @@
# define _s32_p(v) ((v) >= -0x80000000 && (v) <= 0x7fffffff)
# define _u32_p(v) ((v) >= 0 && (v) <= 0xffffffff)
# define ii(i) *_jit->pc.ui++ = i
+# define ldr(r0,r1) ldr_l(r0,r1)
+# define ldi(r0,i0) ldi_l(r0,i0)
+# define ldxr(r0,r1,r2) ldxr_l(r0,r1,r2)
+# define ldxi(r0,r1,i0) ldxi_l(r0,r1,i0)
+# define str(r0,r1) str_l(r0,r1)
+# define sti(i0,r0) sti_l(i0,r0)
+# define stxr(r0,r1,r2) stxr_l(r0,r1,r2)
+# define stxi(i0,r0,r1) stxi_l(i0,r0,r1)
# define stack_framesize 224
# define _S0_REGNO 0x09
# define _S1_REGNO 0x0a
@@ -580,7 +588,6 @@ static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
static void _ldr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
# define ldi_ui(r0,i0) _ldi_ui(_jit,r0,i0)
static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
-# define ldr(r0,r1) ldr_l(r0,r1)
# define ldr_l(r0,r1) LDQ(r0,r1,0)
# define ldi_l(r0,i0) _ldi_l(_jit,r0,i0)
static void _ldi_l(jit_state_t*,jit_int32_t,jit_word_t);
@@ -608,10 +615,8 @@ static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
static void _ldxr_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
# define ldxi_ui(r0,r1,i0) _ldxi_ui(_jit,r0,r1,i0)
static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-# define ldxr(r0,r1,r2) ldxr_l(r0,r1,r2)
# define ldxr_l(r0,r1,r2) _ldxr_l(_jit,r0,r1,r2)
static void _ldxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-# define ldxi(r0,r1,i0) ldxi_l(r0,r1,i0)
# define ldxi_l(r0,r1,i0) _ldxi_l(_jit,r0,r1,i0)
static void _ldxi_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
# define unldr(r0, r1, i0) _unldr(_jit, r0, r1, i0)
@@ -631,7 +636,6 @@ static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
# define str_i(r0,r1) STL(r1,r0,0)
# define sti_i(i0,r0) _sti_i(_jit,i0,r0)
static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
-# define str(r0,r1) str_l(r0,r1)
# define str_l(r0,r1) STQ(r1,r0,0)
# define sti_l(i0,r0) _sti_l(_jit,i0,r0)
static void _sti_l(jit_state_t*,jit_word_t,jit_int32_t);
diff --git a/lib/jit_arm-cpu.c b/lib/jit_arm-cpu.c
index 080275c..9e19434 100644
--- a/lib/jit_arm-cpu.c
+++ b/lib/jit_arm-cpu.c
@@ -20,12 +20,14 @@
#if PROTO
# define jit_unaligned_p() (jit_cpu.unaligned)
# define jit_vfp_unaligned_p() (jit_cpu.vfp_unaligned)
-# define stxi(i0,r0,r1) stxi_i(i0,r0,r1)
-# define ldxi(r0,r1,i0) ldxi_i(r0,r1,i0)
# define ldr(r0,r1) ldr_i(r0,r1)
# define ldi(r0,i0) ldi_i(r0,i0)
+# define ldxr(r0,r1,r2) ldxr_i(r0,r1,r2)
+# define ldxi(r0,r1,i0) ldxi_i(r0,r1,i0)
# define str(r0,r1) str_i(r0,r1)
# define sti(i0,r0) sti_i(i0,r0)
+# define stxr(r0,r1,r2) stxr_i(r0,r1,r2)
+# define stxi(i0,r0,r1) stxi_i(i0,r0,r1)
# define _s20P(d) ((d) >= -(int)0x80000 && d <= 0x7ffff)
# define _s24P(d) ((d) >= -(int)0x800000 && d <= 0x7fffff)
# define _u3(v) ((v) & 0x7)
diff --git a/lib/jit_hppa-cpu.c b/lib/jit_hppa-cpu.c
index ba1dfb8..eb340c1 100644
--- a/lib/jit_hppa-cpu.c
+++ b/lib/jit_hppa-cpu.c
@@ -47,6 +47,14 @@ typedef struct udiv {
#define _R31_REGNO 31
#define _CR11_REGNO 11
#define ii(v) *_jit->pc.ui++ = v
+#define ldr(r0,r1) ldr_ui(r0,r1)
+#define ldi(r0,i0) ldi_ui(r0,i0)
+#define ldxi(r0,r1,r2) ldxr_ui(r0,r1,r2)
+#define ldxi(r0,r1,i0) ldxi_ui(r0,r1,i0)
+#define str(r0,r1) str_i(r0,r1)
+#define sti(i0,r0) sti_i(i0,r0)
+#define stxr(r0,r1,r2) stxr_i(r0,r1,r2)
+#define stxi(i0,r0,r1) stxi_i(i0,r0,r1)
#define f1(o,b,t,i) _f1(_jit,o,b,t,i)
static void _f1(jit_state_t*,jit_int32_t,
jit_int32_t,jit_int32_t,jit_int32_t);
@@ -822,8 +830,6 @@ static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
#define ldxr_us(r0,r1,r2) LDH(r2,r1,r0)
#define ldxi_us(r0,r1,i0) _ldxi_us(_jit,r0,r1,i0)
static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#define ldr(r0,r1) ldr_ui(r0,r1)
-#define ldi(r0,i0) ldi_ui(r0,i0)
#define ldr_i(r0,r1) ldr_ui(r0,r1)
#define ldr_ui(r0,r1) LDWI(_R0_REGNO,r1,r0)
#define ldi_i(r0,i0) ldi_ui(r0,i0)
@@ -831,7 +837,6 @@ static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
#define ldxr_i(r0,r1,r2) ldxr_ui(r0,r1,r2)
#define ldxr_ui(r0,r1,r2) LDW(r2,r1,r0)
-#define ldxi(r0,r1,i0) ldxi_ui(r0,r1,i0)
#define ldxi_i(r0,r1,i0) ldxi_ui(r0,r1,i0)
#define ldxi_ui(r0,r1,i0) _ldxi_ui(_jit,r0,r1,i0)
static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
@@ -854,7 +859,6 @@ static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
#define stxr_i(r0,r1,r2) _stxr_i(_jit,r0,r1,r2)
static void _stxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#define stxi(i0,r0,r1) stxi_i(i0,r0,r1)
#define stxi_i(i0,r0,r1) _stxi_i(_jit,i0,r0,r1)
static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
#define bcmpr(c,i0,r0,r1) _bcmpr(_jit,c,i0,r0,r1)
diff --git a/lib/jit_ia64-cpu.c b/lib/jit_ia64-cpu.c
index 1553eef..4320074 100644
--- a/lib/jit_ia64-cpu.c
+++ b/lib/jit_ia64-cpu.c
@@ -207,10 +207,10 @@ typedef enum {
#define ldr(r0,r1) ldr_l(r0,r1)
#define ldi(r0,i0) ldi_l(r0,i0)
-#define str(r0,r1) str_l(r0,r1)
-#define sti(i0,r0) str_l(i0,r0)
#define ldxr(r0,r1,r2) ldxr_l(r0,r1,r2)
#define ldxi(r0,r1,i0) ldxi_l(r0,r1,i0)
+#define str(r0,r1) str_l(r0,r1)
+#define sti(i0,r0) str_l(i0,r0)
#define stxr(r0,r1,r2) stxr_l(r0,r1,r2)
#define stxi(i0,r0,r1) stxi_l(i0,r0,r1)
diff --git a/lib/jit_loongarch-cpu.c b/lib/jit_loongarch-cpu.c
index ef8261f..46e8ce7 100644
--- a/lib/jit_loongarch-cpu.c
+++ b/lib/jit_loongarch-cpu.c
@@ -34,8 +34,11 @@
# define _FP_REGNO 22
# define ldr(u, v) ldr_l(u, v)
# define ldi(u, v) ldi_l(u, v)
+# define ldxr(u, v, w) ldxr_l(u, v, w)
# define ldxi(u, v, w) ldxi_l(u, v, w)
+# define str(u, v) str_l(u, v)
# define sti(u, v) sti_l(u, v)
+# define stxr(u, v, w) stxr_l(u, v, w)
# define stxi(u, v, w) stxi_l(u, v, w)
# define orrr(op, rk, rj, rd) _orrr(_jit, op, rk, rj, rd)
# define ou5rr(op, i5, rj, rd) _orrr(_jit, op, i5, rj, rd)
diff --git a/lib/jit_mips-cpu.c b/lib/jit_mips-cpu.c
index 104ede7..596ff62 100644
--- a/lib/jit_mips-cpu.c
+++ b/lib/jit_mips-cpu.c
@@ -102,14 +102,20 @@ typedef union {
# if __WORDSIZE == 32
# define ldr(u,v) ldr_i(u,v)
# define ldi(u,v) ldi_i(u,v)
+# define ldxr(u,v,w) ldxr_i(u,v,w)
# define ldxi(u,v,w) ldxi_i(u,v,w)
+# define str(u,v) str_i(u,v)
# define sti(u,v) sti_i(u,v)
+# define stxr(u,v,w) stxr_i(u,v,w)
# define stxi(u,v,w) stxi_i(u,v,w)
# else
# define ldr(u,v) ldr_l(u,v)
# define ldi(u,v) ldi_l(u,v)
+# define ldxr(u,v,w) ldxr_l(u,v,w)
# define ldxi(u,v,w) ldxi_l(u,v,w)
+# define str(u,v) str_l(u,v)
# define sti(u,v) sti_l(u,v)
+# define stxr(u,v,w) stxr_l(u,v,w)
# define stxi(u,v,w) stxi_l(u,v,w)
# endif
/* can_relative_jump_p(im) => can_sign_extend_short_p(im << 2) */
diff --git a/lib/jit_ppc-cpu.c b/lib/jit_ppc-cpu.c
index d59b487..21672c1 100644
--- a/lib/jit_ppc-cpu.c
+++ b/lib/jit_ppc-cpu.c
@@ -64,6 +64,8 @@
# define ldi(r0,i0) ldi_i(r0,i0)
# define ldxi(r0,r1,i0) ldxi_i(r0,r1,i0)
# define ldxr(r0,r1,r2) ldxr_i(r0,r1,r2)
+# define str(r0,r1) str_i(r0,r1)
+# define sti(i0,r0) sti_i(i0,r0)
# define stxi(i0,r0,r1) stxi_i(i0,r0,r1)
# define stxr(r0,r1,r2) stxr_i(r0,r1,r2)
# else
@@ -71,6 +73,8 @@
# define ldi(r0,i0) ldi_l(r0,i0)
# define ldxi(r0,r1,i0) ldxi_l(r0,r1,i0)
# define ldxr(r0,r1,r2) ldxr_l(r0,r1,r2)
+# define str(r0,r1) str_l(r0,r1)
+# define sti(i0,r0) sti_l(i0,r0)
# define stxi(i0,r0,r1) stxi_l(i0,r0,r1)
# define stxr(r0,r1,r2) stxr_l(r0,r1,r2)
# endif
diff --git a/lib/jit_s390-cpu.c b/lib/jit_s390-cpu.c
index f4784ab..3fe3e07 100644
--- a/lib/jit_s390-cpu.c
+++ b/lib/jit_s390-cpu.c
@@ -23,12 +23,18 @@
# define ldi(r0,i0) ldi_i(r0,i0)
# define ldxr(r0,r1,r2) ldxr_i(r0,r1,r2)
# define ldxi(r0,r1,i0) ldxi_i(r0,r1,i0)
+# define str(r0,r1) str_i(r0,r1)
+# define sti(i0,r0) sti_i(i0,r0)
+# define stxr(r0,r1,r2) stxr_i(r0,r1,r2)
# define stxi(i0,r0,r1) stxi_i(i0,r0,r1)
# else
# define ldr(r0,r1) ldr_l(r0,r1)
# define ldi(r0,i0) ldi_l(r0,i0)
# define ldxr(r0,r1,r2) ldxr_l(r0,r1,r2)
# define ldxi(r0,r1,i0) ldxi_l(r0,r1,i0)
+# define str(r0,r1) str_l(r0,r1)
+# define sti(i0,r0) sti_l(i0,r0)
+# define stxr(r0,r1,r2) stxr_l(r0,r1,r2)
# define stxi(i0,r0,r1) stxi_l(i0,r0,r1)
# endif
# define is(i) *_jit->pc.us++ = i
diff --git a/lib/jit_x86-cpu.c b/lib/jit_x86-cpu.c
index a5ed1e9..e185d14 100644
--- a/lib/jit_x86-cpu.c
+++ b/lib/jit_x86-cpu.c
@@ -32,7 +32,9 @@
# define ldr(u, v) ldr_i(u, v)
# define ldxr(u, v, w) ldxr_i(u, v, w)
# define ldxi(u, v, w) ldxi_i(u, v, w)
+# define str(u, v) str_i(u, v)
# define sti(u, v) sti_i(u, v)
+# define stxr(u, v, w) stxr_i(u, v, w)
# define stxi(u, v, w) stxi_i(u, v, w)
# define can_sign_extend_int_p(im) 1
# define can_zero_extend_int_p(im) 1
@@ -43,7 +45,9 @@
# define ldr(u, v) ldr_l(u, v)
# define ldxr(u, v, w) ldxr_l(u, v, w)
# define ldxi(u, v, w) ldxi_l(u, v, w)
+# define str(u, v) str_l(u, v)
# define sti(u, v) sti_l(u, v)
+# define stxr(u, v, w) stxr_l(u, v, w)
# define stxi(u, v, w) stxi_l(u, v, w)
# define can_sign_extend_int_p(im) \
(((im) >= 0 && (long long)(im) <= 0x7fffffffLL) || \
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月15日 18:36:40 +0000

AltStyle によって変換されたページ (->オリジナル) /