[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 76/437: fix several load/store patterns for x86-64.
From: |
Andy Wingo |
Subject: |
[Guile-commits] 76/437: fix several load/store patterns for x86-64. |
Date: |
Mon, 2 Jul 2018 05:13:49 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit 4865ed345147ba132eaa617cd379215d31ec65de
Author: Paolo Bonzini <address@hidden>
Date: Fri Mar 21 09:08:38 2008 +0100
fix several load/store patterns for x86-64.
2008-03-21 Paolo Bonzini <address@hidden>
* lightning/i386/core-64.h: Fix jit_{ld,st}{,x}i_{i,l}.
Remove jit_ld{,x}i_ul.
* lightning/core-common.h: Make jit_ld{,x}{i,r}_ul
always a synonym of the _l variant.
* doc/porting.texi: Document this.
---
ChangeLog | 8 ++++++++
doc/porting.texi | 8 ++++----
lightning/core-common.h | 9 +++++----
lightning/i386/core-64.h | 15 ++++++---------
4 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 2b0974a..978d8ee 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-03-21 Paolo Bonzini <address@hidden>
+
+ * lightning/i386/core-64.h: Fix jit_{ld,st}{,x}i_{i,l}.
+ Remove jit_ld{,x}i_ul.
+ * lightning/core-common.h: Make jit_ld{,x}{i,r}_ul
+ always a synonym of the _l variant.
+ * doc/porting.texi: Document this.
+
2008-03-19 Paolo Bonzini <address@hidden>
* lightning/i386/core-64.h: Fix uses of jit_qop_.
diff --git a/doc/porting.texi b/doc/porting.texi
index 1cc2a11..826cc98 100644
--- a/doc/porting.texi
+++ b/doc/porting.texi
@@ -1126,11 +1126,9 @@ operations:
#define jit_ldr_s(d, rs)
#define jit_ldi_uc(d, is)
#define jit_ldi_ui(d, is)
-#define jit_ldi_ul(d, is)
#define jit_ldi_us(d, is)
#define jit_ldr_uc(d, rs)
#define jit_ldr_ui(d, rs)
-#define jit_ldr_ul(d, rs)
#define jit_ldr_us(d, rs)
#define jit_sti_c(id, rs)
#define jit_sti_i(id, rs)
@@ -1213,9 +1211,13 @@ operations:
#define jit_gti_p(d, rs, is)
#define jit_gtr_p(d, s1, s2)
#define jit_ldr_p(d, rs)
+#define jit_ldr_ul(d, rs)
#define jit_ldi_p(d, is)
+#define jit_ldi_ul(d, is)
#define jit_ldxi_p(d, rs, is)
+#define jit_ldxi_ul(d, rs, is)
#define jit_ldxr_p(d, s1, s2)
+#define jit_ldxr_ul(d, s1, s2)
#define jit_lei_p(d, rs, is)
#define jit_ler_p(d, s1, s2)
#define jit_lshi_ui(d, rs, is)
@@ -1446,10 +1448,8 @@ operations:
#define jit_ldr_ui(d, rs)
#define jit_ldxi_l(d, rs, is)
#define jit_ldxi_ui(d, rs, is)
-#define jit_ldxi_ul(d, rs, is)
#define jit_ldxr_l(d, s1, s2)
#define jit_ldxr_ui(d, s1, s2)
-#define jit_ldxr_ul(d, s1, s2)
#define jit_lei_l(d, rs, is)
#define jit_lei_ul(d, rs, is)
#define jit_ler_l(d, s1, s2)
diff --git a/lightning/core-common.h b/lightning/core-common.h
index 0d61e20..c9efa9d 100644
--- a/lightning/core-common.h
+++ b/lightning/core-common.h
@@ -365,6 +365,11 @@ typedef union jit_code {
#define jit_ldxr_p(rd, s1, s2) jit_ldxr_l((rd), (s1), (s2))
#define jit_ldxi_p(rd, rs, is) jit_ldxi_l((rd), (rs), (is))
+#define jit_ldr_ul(d, rs) jit_ldr_l((d), (rs))
+#define jit_ldi_ul(d, is) jit_ldi_l((d), (is))
+#define jit_ldxr_ul(d, s1, s2) jit_ldxr_l((d), (s1), (s2))
+#define jit_ldxi_ul(d, rs, is) jit_ldxi_l((d), (rs), (is))
+
/* Boolean & branch synonyms */
#define jit_eqr_ui(d, s1, s2) jit_eqr_i((d), (s1), (s2))
@@ -554,8 +559,6 @@ typedef union jit_code {
#define jit_sti_l(d, is) jit_sti_i((d), (is))
#define jit_ldr_ui(d, rs) jit_ldr_i((d), (rs))
#define jit_ldi_ui(d, is) jit_ldi_i((d), (is))
-#define jit_ldr_ul(d, rs) jit_ldr_ui((d), (rs))
-#define jit_ldi_ul(d, is) jit_ldi_ui((d), (is))
#endif
#define jit_ldxr_l(d, s1, s2) jit_ldxr_i((d), (s1), (s2))
@@ -564,8 +567,6 @@ typedef union jit_code {
#define jit_stxi_l(d, rs, is) jit_stxi_i((d), (rs), (is))
#define jit_ldxr_ui(d, s1, s2) jit_ldxr_i((d), (s1), (s2))
#define jit_ldxi_ui(d, rs, is) jit_ldxi_i((d), (rs), (is))
-#define jit_ldxr_ul(d, s1, s2) jit_ldxr_ui((d), (s1), (s2))
-#define jit_ldxi_ul(d, rs, is) jit_ldxi_ui((d), (rs), (is))
/* Boolean */
diff --git a/lightning/i386/core-64.h b/lightning/i386/core-64.h
index a3e34fd..0c8808c 100644
--- a/lightning/i386/core-64.h
+++ b/lightning/i386/core-64.h
@@ -221,20 +221,17 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX
};
#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_ldi_i(d, is) (_u32P((long)(is)) ? MOVSLQmr((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)) ? MOVSLQmr((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)) ? MOVQmr((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)) ? MOVQmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_l(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_sti_l(id, rs) (_u32P((long)(id)) ? MOVQrm((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)) ? MOVQrm((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))
- [Guile-commits] 130/437: Add make rule to build test case dependencies., (continued)
- [Guile-commits] 130/437: Add make rule to build test case dependencies., Andy Wingo, 2018/07/02
- [Guile-commits] 125/437: fix multiplication on x86_64, Andy Wingo, 2018/07/02
- [Guile-commits] 102/437: add ldst test, Andy Wingo, 2018/07/02
- [Guile-commits] 131/437: Add proper make clean rule to the check subdir., Andy Wingo, 2018/07/02
- [Guile-commits] 109/437: more fixes to fp branches, Andy Wingo, 2018/07/02
- [Guile-commits] 136/437: Update code to build and pass test cases in the arm port., Andy Wingo, 2018/07/02
- [Guile-commits] 124/437: Also reset alloca_slack after jit_prolog in i386., Andy Wingo, 2018/07/02
- [Guile-commits] 154/437: Correct test cases to work with x87 in ix86., Andy Wingo, 2018/07/02
- [Guile-commits] 148/437: Add better ppc support code, but still not functional., Andy Wingo, 2018/07/02
- [Guile-commits] 153/437: Make it clear stdarg like abstraction is not supported., Andy Wingo, 2018/07/02
- [Guile-commits] 76/437: fix several load/store patterns for x86-64.,
Andy Wingo <=
- [Guile-commits] 81/437: fix stack alignment for Apple 32-bit ABI, Andy Wingo, 2018/07/02
- [Guile-commits] 98/437: always set and replace lightning_frag, Andy Wingo, 2018/07/02
- [Guile-commits] 166/437: Correct extra regressions found by the call.tst test case., Andy Wingo, 2018/07/02
- [Guile-commits] 165/437: Add simple test case to test argument and return values., Andy Wingo, 2018/07/02
- [Guile-commits] 158/437: Add new test case to check stack integrity on complex stack frames., Andy Wingo, 2018/07/02
- [Guile-commits] 150/437: Add jit_ellipis and remove jit_prepare argument., Andy Wingo, 2018/07/02
- [Guile-commits] 108/437: fix x86_64 jit_bner_{f,d}, Andy Wingo, 2018/07/02
- [Guile-commits] 122/437: Correct ALU add and sub operations with 64 bit immediate operands., Andy Wingo, 2018/07/02
- [Guile-commits] 119/437: Correct branches and several ALU operations with 64 immediates, Andy Wingo, 2018/07/02
- [Guile-commits] 135/437: Correct implementation problems on ix86., Andy Wingo, 2018/07/02