guile-commits
[Top][All Lists]
Advanced

[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))
                                                            



reply via email to

[Prev in Thread] Current Thread [Next in Thread]