[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 71/437: add missing x86-64 memory operations
From: |
Andy Wingo |
Subject: |
[Guile-commits] 71/437: add missing x86-64 memory operations |
Date: |
Mon, 2 Jul 2018 05:13:48 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit 90e08b1cda930e0582c2a076be4ac5ed49d80980
Author: Paolo Bonzini <address@hidden>
Date: Wed Mar 19 09:36:47 2008 +0100
add missing x86-64 memory operations
2008-03-19 Paolo Bonzini <address@hidden>
* lightning/i386/core-i386.c: Remove jit_ldr_i, jit_ldxr_i.
* lightning/i386/core-32.h: Add jit_ldr_i, jit_ldxr_i.
* lightning/i386/core-64.h: Add jit_ld{r,xr,i,xi}_{ui,l,ul},
jit_ldr_i, jit_ldxr_i, jit_str_l, jit_stxr_l.
---
ChangeLog | 7 +++++++
lightning/i386/core-32.h | 3 +++
lightning/i386/core-64.h | 39 ++++++++++++++++++++++++---------------
lightning/i386/core-i386.h | 3 ---
4 files changed, 34 insertions(+), 18 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 84f86dc..165bc69 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2008-03-19 Paolo Bonzini <address@hidden>
+ * lightning/i386/core-i386.c: Remove jit_ldr_i, jit_ldxr_i.
+ * lightning/i386/core-32.h: Add jit_ldr_i, jit_ldxr_i.
+ * lightning/i386/core-64.h: Add jit_ld{r,xr,i,xi}_{ui,l,ul};
+ move jit_ldr_i, jit_ldxr_i, jit_str_l, jit_stxr_l with others.
+
+2008-03-19 Paolo Bonzini <address@hidden>
+
* lightning/asm-common.h: Add _s32P.
2008-03-19 Paolo Bonzini <address@hidden>
diff --git a/lightning/i386/core-32.h b/lightning/i386/core-32.h
index 34c9117..eba34b9 100644
--- a/lightning/i386/core-32.h
+++ b/lightning/i386/core-32.h
@@ -145,6 +145,9 @@ struct jit_local_state {
#define jit_ldi_i(d, is) MOVLmr((is), 0, 0, 0, (d))
#define jit_ldxi_i(d, rs, is) MOVLmr((is), (rs), 0, 0, (d))
+#define jit_ldr_i(d, rs) MOVLmr(0, (rs), 0, 0, (d))
+#define jit_ldxr_i(d, s1, s2) MOVLmr(0, (s1), (s2), 1, (d))
+
#define jit_sti_i(id, rs) MOVLrm((rs), (id), 0, 0, 0)
#define jit_stxi_i(id, rd, rs) MOVLrm((rs), (id), (rd), 0, 0)
diff --git a/lightning/i386/core-64.h b/lightning/i386/core-64.h
index efd3ee8..08d686f 100644
--- a/lightning/i386/core-64.h
+++ b/lightning/i386/core-64.h
@@ -192,21 +192,6 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX
};
#define jit_patch_at(jump_pc,v) (_jitl.long_jumps ?
jit_patch_long_at((jump_pc)-3, v) : jit_patch_short_at(jump_pc, v))
#define jit_ret() ((_jitl.alloca_offset < 0 ? LEAVE_() : POPQr(_EBP)),
POPQr(_R13), POPQr(_R12), POPQr(_EBX), RET_())
-#define _jit_ldi_l(d, is) MOVQmr((is), 0, 0, 0, (d))
-#define _jit_ldxi_l(d, rs, is) MOVQmr((is), (rs), 0, 0, (d))
-#define jit_ldr_l(d, rs) MOVQmr(0, (rs), 0, 0, (d))
-#define jit_ldxr_l(d, s1, s2) MOVQmr(0, (s1), (s2), 1, (d))
-
-#define _jit_sti_l(id, rs) MOVQrm((rs), (id), 0, 0, 0)
-#define _jit_stxi_l(id, rd, rs) MOVQrm((rs), (id), (rd), 0,
0)
-#define jit_str_l(rd, rs) MOVQrm((rs), 0, (rd), 0, 0)
-#define jit_stxr_l(d1, d2, rs) MOVQrm((rs), 0, (d1), (d2), 1)
-
-#define jit_ldi_l(d, is) (_u32P((long)(is)) ? _jit_ldi_l((d),
(is)) : (jit_movi_l(JIT_REXTMP, (is)), jit_ldr_l((d), JIT_REXTMP)))
-#define jit_sti_l(id, rs) (_u32P((long)(id)) ? _jit_sti_l((id),
(rs)) : (jit_movi_l(JIT_REXTMP, (id)), jit_str_l (JIT_REXTMP, (rs))))
-#define jit_ldxi_l(d, rs, is) (_u32P((long)(is)) ? _jit_ldxi_l((d),
(rs), (is)) : (jit_movi_l(JIT_REXTMP, (is)), jit_ldxr_l((d), (rs), JIT_REXTMP)))
-#define jit_stxi_l(id, rd, rs) (_u32P((long)(id)) ? _jit_stxi_l((id),
(rd), (rs)) : (jit_movi_l(JIT_REXTMP, (id)), jit_stxr_l (JIT_REXTMP, (rd),
(rs))))
-
/* Memory */
/* Used to implement ldc, stc, ... We have SIL and friends which simplify it
all. */
@@ -233,12 +218,36 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX
};
#define jit_sti_s(id, rs) (_u32P((long)(id)) ?
MOVWrm(jit_reg16(rs), (id), 0, 0, 0) : (jit_movi_l(JIT_REXTMP, id),
jit_str_s(JIT_REXTMP, rs)))
#define jit_stxi_s(id, rd, rs) (_u32P((long)(id)) ?
MOVWrm(jit_reg16(rs), (id), (rd), 0, 0) : (jit_movi_l(JIT_REXTMP, id),
jit_stxr_s(JIT_REXTMP, rd, rs)))
+#define jit_ldi_ui(d, is) (_u32P((long)(is)) ? MOVLmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_ui(d, JIT_REXTMP)))
+#define jit_ldxi_ui(d, rs, is) (_u32P((long)(is)) ? MOVLmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_ui(d, rs,
JIT_REXTMP)))
+
#define jit_ldi_i(d, is) (_u32P((long)(is)) ? MOVLmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_i(d, JIT_REXTMP)))
#define jit_ldxi_i(d, rs, is) (_u32P((long)(is)) ? MOVLmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_i(d, rs,
JIT_REXTMP)))
#define jit_sti_i(id, rs) (_u32P((long)(id)) ? MOVLrm((rs),
(id), 0, 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_str_i(JIT_REXTMP, rs)))
#define jit_stxi_i(id, rd, rs) (_u32P((long)(id)) ? MOVLrm((rs),
(id), (rd), 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_stxr_i(JIT_REXTMP, rd,
rs)))
+#define jit_ldi_ul(d, is) (_u32P((long)(is)) ? MOVLmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_ul(d, JIT_REXTMP)))
+#define jit_ldxi_ul(d, rs, is) (_u32P((long)(is)) ? MOVLmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_ul(d, rs,
JIT_REXTMP)))
+
+#define jit_ldi_l(d, is) (_u32P((long)(is)) ? MOVLmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_l(d, JIT_REXTMP)))
+#define jit_ldxi_l(d, rs, is) (_u32P((long)(is)) ? MOVLmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_l(d, rs,
JIT_REXTMP)))
+
+#define jit_sti_l(id, rs) (_u32P((long)(id)) ? MOVLrm((rs),
(id), 0, 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_str_l(JIT_REXTMP, rs)))
+#define jit_stxi_l(id, rd, rs) (_u32P((long)(id)) ? MOVLrm((rs),
(id), (rd), 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_stxr_l(JIT_REXTMP, rd,
rs)))
+
+#define jit_ldr_ui(d, rs) MOVLmr(0, (rs), 0, 0, (d))
+#define jit_ldxr_ui(d, s1, s2) MOVLmr(0, (s1), (s2), 1, (d))
+
+#define jit_ldr_i(d, rs) MOVSLQmr(0, (rs), 0, 0, (d))
+#define jit_ldxr_i(d, s1, s2) MOVSLQmr(0, (s1), (s2), 1, (d))
+
+#define jit_ldr_l(d, rs) MOVQmr(0, (rs), 0, 0, (d))
+#define jit_ldxr_l(d, s1, s2) MOVQmr(0, (s1), (s2), 1, (d))
+
+#define jit_str_l(rd, rs) MOVQrm((rs), 0, (rd), 0, 0)
+#define jit_stxr_l(d1, d2, rs) MOVQrm((rs), 0, (d1), (d2), 1)
+
#define jit_blti_l(label, rs, is) jit_bra_l0((rs), (is), JLm(label),
JSm(label) )
#define jit_blei_l(label, rs, is) jit_bra_l ((rs), (is), JLEm(label)
)
#define jit_bgti_l(label, rs, is) jit_bra_l ((rs), (is), JGm(label)
)
diff --git a/lightning/i386/core-i386.h b/lightning/i386/core-i386.h
index f8df54b..dec15fb 100644
--- a/lightning/i386/core-i386.h
+++ b/lightning/i386/core-i386.h
@@ -337,9 +337,6 @@
#define jit_str_s(rd, rs) MOVWrm(jit_reg16(rs), 0, (rd), 0,
0)
#define jit_stxr_s(d1, d2, rs) MOVWrm(jit_reg16(rs), 0, (d1),
(d2), 1)
-#define jit_ldr_i(d, rs) MOVLmr(0, (rs), 0, 0, (d))
-#define jit_ldxr_i(d, s1, s2) MOVLmr(0, (s1), (s2), 1, (d))
-
#define jit_str_i(rd, rs) MOVLrm((rs), 0, (rd), 0, 0)
#define jit_stxr_i(d1, d2, rs) MOVLrm((rs), 0, (d1), (d2), 1)
- [Guile-commits] 62/437: commit source files for separate using/porting manuals, (continued)
- [Guile-commits] 62/437: commit source files for separate using/porting manuals, Andy Wingo, 2018/07/02
- [Guile-commits] 80/437: fix C++ incompatibility in i386 back-end, Andy Wingo, 2018/07/02
- [Guile-commits] 45/437: add floating-point for x86-64, Andy Wingo, 2018/07/02
- [Guile-commits] 28/437: first merge of x86-64 backend and related configury changes, Andy Wingo, 2018/07/02
- [Guile-commits] 74/437: add long boolean operations for x86-64, Andy Wingo, 2018/07/02
- [Guile-commits] 89/437: fix _rN vs. _rR, Andy Wingo, 2018/07/02
- [Guile-commits] 90/437: fix IMULQir and IMULQirr, Andy Wingo, 2018/07/02
- [Guile-commits] 79/437: fix jit_replace8 for case when one of the operands is _EAX., Andy Wingo, 2018/07/02
- [Guile-commits] 87/437: rewrite x86-64 argument passing to support up to 6 arguments, Andy Wingo, 2018/07/02
- [Guile-commits] 92/437: fix installation bug, Andy Wingo, 2018/07/02
- [Guile-commits] 71/437: add missing x86-64 memory operations,
Andy Wingo <=
- [Guile-commits] 84/437: move x86-64 JIT_V1/JIT_V2 in R12/R13, Andy Wingo, 2018/07/02
- [Guile-commits] 83/437: detect 32-/64-bit variant of i386 back-end at include time (not configure time), Andy Wingo, 2018/07/02
- [Guile-commits] 86/437: fix x86-64 jit_movi_l (x, 0) and 16-byte stack alignment in the prolog, Andy Wingo, 2018/07/02
- [Guile-commits] 91/437: fix miscellaneous PPC-32 back-end bugs, Andy Wingo, 2018/07/02
- [Guile-commits] 103/437: fix two bugs in load/store for i386, Andy Wingo, 2018/07/02
- [Guile-commits] 100/437: fix jit_movbrm in the i386 backend, Andy Wingo, 2018/07/02
- [Guile-commits] 58/437: use CALLsr, not CALLLsr, Andy Wingo, 2018/07/02
- [Guile-commits] 60/437: don't use _VOID symbol, reserved by newlib (cygwin), Andy Wingo, 2018/07/02
- [Guile-commits] 96/437: fix blunder in operand order (i386), Andy Wingo, 2018/07/02
- [Guile-commits] 97/437: fix x86 shifts, Andy Wingo, 2018/07/02