[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 105/437: fix 64-bit load with sign extension
From: |
Andy Wingo |
Subject: |
[Guile-commits] 105/437: fix 64-bit load with sign extension |
Date: |
Mon, 2 Jul 2018 05:13:54 -0400 (EDT) |
wingo pushed a commit to branch lightning
in repository guile.
commit 64ccd054f2585e9203521cdd80cda79471ecce74
Author: Paolo Bonzini <address@hidden>
Date: Sun Aug 15 06:32:19 2010 -0400
fix 64-bit load with sign extension
2010-08-15 Paolo Bonzini <address@hidden>
* lightning/i386/core.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
jit_ldxr_s): Move...
* lightning/i386/core-32.h: ... here.
* lightning/i386/core-64.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
Use movsbq and movswq.
---
ChangeLog | 10 +++++++++-
lightning/i386/core-32.h | 6 ++++++
lightning/i386/core-64.h | 14 ++++++++++----
lightning/i386/core.h | 6 ------
4 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 1375eb7..be39c7b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
+2010-08-15 Paolo Bonzini <address@hidden>
+
+ * lightning/i386/core.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
+ jit_ldxr_s): Move...
+ * lightning/i386/core-32.h: ... here.
+ * lightning/i386/core-64.h (jit_ldr_c, jit_ldxr_c, jit_ldr_s,
+ Use movsbq and movswq.
+
2010-08-10 Paulo César Pereira de Andrade <address@hidden>
- Paolo Bonzini <address@hidden>
+
* lightning/i386/core-32.h (jit_replace): Use MOVLrr, not MOVLir.
(jit_movbrm): Check index register as well.
diff --git a/lightning/i386/core-32.h b/lightning/i386/core-32.h
index 461869b..313564f 100644
--- a/lightning/i386/core-32.h
+++ b/lightning/i386/core-32.h
@@ -142,6 +142,12 @@ struct jit_local_state {
((dd != _ECX && db != _ECX && di != _ECX)
? _CL : _DL)), \
dd, db, di, ds)))
+#define jit_ldr_c(d, rs) MOVSBLmr(0, (rs), 0, 0, (d))
+#define jit_ldxr_c(d, s1, s2) MOVSBLmr(0, (s1), (s2), 1, (d))
+
+#define jit_ldr_s(d, rs) MOVSWLmr(0, (rs), 0, 0, (d))
+#define jit_ldxr_s(d, s1, s2) MOVSWLmr(0, (s1), (s2), 1, (d))
+
#define jit_ldi_c(d, is) MOVSBLmr((is), 0, 0, 0, (d))
#define jit_ldxi_c(d, rs, is) MOVSBLmr((is), (rs), 0, 0, (d))
diff --git a/lightning/i386/core-64.h b/lightning/i386/core-64.h
index 9cd48cb..4c0c5dc 100644
--- a/lightning/i386/core-64.h
+++ b/lightning/i386/core-64.h
@@ -188,8 +188,14 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX,
_R8D, _R9D };
#define jit_reg16(rs) (_rR(rs) | _AX )
#define jit_movbrm(rs, dd, db, di, ds) MOVBrm(jit_reg8(rs), dd, db,
di, ds)
-#define jit_ldi_c(d, is) (_u32P((long)(is)) ? MOVSBLmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_c(d, JIT_REXTMP)))
-#define jit_ldxi_c(d, rs, is) (_u32P((long)(is)) ? MOVSBLmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_c(d, rs,
JIT_REXTMP)))
+#define jit_ldr_c(d, rs) MOVSBQmr(0, (rs), 0, 0, (d))
+#define jit_ldxr_c(d, s1, s2) MOVSBQmr(0, (s1), (s2), 1, (d))
+
+#define jit_ldr_s(d, rs) MOVSWQmr(0, (rs), 0, 0, (d))
+#define jit_ldxr_s(d, s1, s2) MOVSWQmr(0, (s1), (s2), 1, (d))
+
+#define jit_ldi_c(d, is) (_u32P((long)(is)) ? MOVSBQmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_c(d, JIT_REXTMP)))
+#define jit_ldxi_c(d, rs, is) (_u32P((long)(is)) ? MOVSBQmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_c(d, rs,
JIT_REXTMP)))
#define jit_ldi_uc(d, is) (_u32P((long)(is)) ? MOVZBLmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_uc(d, JIT_REXTMP)))
#define jit_ldxi_uc(d, rs, is) (_u32P((long)(is)) ? MOVZBLmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_uc(d, rs,
JIT_REXTMP)))
@@ -197,8 +203,8 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX,
_R8D, _R9D };
#define jit_sti_c(id, rs) (_u32P((long)(id)) ?
MOVBrm(jit_reg8(rs), (id), 0, 0, 0) : (jit_movi_l(JIT_REXTMP, id),
jit_str_c(JIT_REXTMP, rs)))
#define jit_stxi_c(id, rd, rs) (_u32P((long)(id)) ?
MOVBrm(jit_reg8(rs), (id), (rd), 0, 0) : (jit_movi_l(JIT_REXTMP, id),
jit_stxr_c(JIT_REXTMP, rd, rs)))
-#define jit_ldi_s(d, is) (_u32P((long)(is)) ? MOVSWLmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_s(d, JIT_REXTMP)))
-#define jit_ldxi_s(d, rs, is) (_u32P((long)(is)) ? MOVSWLmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_s(d, rs,
JIT_REXTMP)))
+#define jit_ldi_s(d, is) (_u32P((long)(is)) ? MOVSWQmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_s(d, JIT_REXTMP)))
+#define jit_ldxi_s(d, rs, is) (_u32P((long)(is)) ? MOVSWQmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_s(d, rs,
JIT_REXTMP)))
#define jit_ldi_us(d, is) (_u32P((long)(is)) ? MOVZWLmr((is), 0,
0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_us(d, JIT_REXTMP)))
#define jit_ldxi_us(d, rs, is) (_u32P((long)(is)) ? MOVZWLmr((is),
(rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_us(d, rs,
JIT_REXTMP)))
diff --git a/lightning/i386/core.h b/lightning/i386/core.h
index 0442944..cd55d51 100644
--- a/lightning/i386/core.h
+++ b/lightning/i386/core.h
@@ -333,18 +333,12 @@
#define jit_jmpr(reg) JMPsr(reg)
/* Memory */
-#define jit_ldr_c(d, rs) MOVSBLmr(0, (rs), 0, 0, (d))
-#define jit_ldxr_c(d, s1, s2) MOVSBLmr(0, (s1), (s2), 1, (d))
-
#define jit_ldr_uc(d, rs) MOVZBLmr(0, (rs), 0, 0, (d))
#define jit_ldxr_uc(d, s1, s2) MOVZBLmr(0, (s1), (s2), 1, (d))
#define jit_str_c(rd, rs) jit_movbrm((rs), 0, (rd), 0, 0)
#define jit_stxr_c(d1, d2, rs) jit_movbrm((rs), 0, (d1), (d2), 1)
-#define jit_ldr_s(d, rs) MOVSWLmr(0, (rs), 0, 0, (d))
-#define jit_ldxr_s(d, s1, s2) MOVSWLmr(0, (s1), (s2), 1, (d))
-
#define jit_ldr_us(d, rs) MOVZWLmr(0, (rs), 0, 0, (d))
#define jit_ldxr_us(d, s1, s2) MOVZWLmr(0, (s1), (s2), 1, (d))
- [Guile-commits] 101/437: fix i386 jit_replace and x86_64 jit_movi_f, (continued)
- [Guile-commits] 101/437: fix i386 jit_replace and x86_64 jit_movi_f, Andy Wingo, 2018/07/02
- [Guile-commits] 118/437: Account stack alignment on jit functions with odd number of arguments., Andy Wingo, 2018/07/02
- [Guile-commits] 03/437: big merge, Andy Wingo, 2018/07/02
- [Guile-commits] 111/437: Define extra SSE2 xmmN registers and set JIT_FPTMP to the topmost one., Andy Wingo, 2018/07/02
- [Guile-commits] 94/437: fix problems with i386 32-bit floating point branches, Andy Wingo, 2018/07/02
- [Guile-commits] 115/437: Change JIT_FPR_NUM to 7 to prevent clobber of JIT_FPR(7), Andy Wingo, 2018/07/02
- [Guile-commits] 112/437: Add safety check on number of integer and float arguments on x86_64., Andy Wingo, 2018/07/02
- [Guile-commits] 95/437: another fix to jit_fp_btest, Andy Wingo, 2018/07/02
- [Guile-commits] 110/437: Change jit_getarg_{c, uc, s, us, i, ui} to extr_l to sign extend on 64 bits., Andy Wingo, 2018/07/02
- [Guile-commits] 117/437: Implement x86_64 support for multiple integer and float arguments., Andy Wingo, 2018/07/02
- [Guile-commits] 105/437: fix 64-bit load with sign extension,
Andy Wingo <=
- [Guile-commits] 70/437: add _s32P, Andy Wingo, 2018/07/02
- [Guile-commits] 121/437: Define some extra fp-common macros when sizeof(long) == sizeof(int)., Andy Wingo, 2018/07/02
- [Guile-commits] 77/437: add .gitattributes file, Andy Wingo, 2018/07/02
- [Guile-commits] 44/437: merge some bugfixes, give right meaning to jit_retval_[fd], Andy Wingo, 2018/07/02
- [Guile-commits] 106/437: ldst test update, Andy Wingo, 2018/07/02
- [Guile-commits] 114/437: Change JIT_REXTMP to not clobber 6th argument., Andy Wingo, 2018/07/02
- [Guile-commits] 88/437: move JIT_R1/JIT_R2 to R10/R11 for the x86_64 backend, Andy Wingo, 2018/07/02
- [Guile-commits] 133/437: Correct integer multiplication and add extra test case., Andy Wingo, 2018/07/02
- [Guile-commits] 116/437: Change jit_finish to work with varargs functions in x86_64., Andy Wingo, 2018/07/02
- [Guile-commits] 85/437: add (void) casts for C++ compatibility, Andy Wingo, 2018/07/02