guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 109/437: more fixes to fp branches


From: Andy Wingo
Subject: [Guile-commits] 109/437: more fixes to fp branches
Date: Mon, 2 Jul 2018 05:13:55 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 9564132c94f674e555db42ca13e4b08345add484
Author: Paolo Bonzini <address@hidden>
Date:   Fri Aug 20 10:08:43 2010 +0200

    more fixes to fp branches
    
    2010-08-20  Paolo Bonzini  <address@hidden>
    
        * lightning/i386/fp-64.h: Return patch address from jit_bXYr_{f,d}.
        Reported by Paulo César Pereira de Andrade.
        * lightning/ppc/fp.h: Likewise.
        * lightning/sparc/fp.h: Implement FP branches.
---
 ChangeLog              |  7 ++++++
 lightning/i386/fp-64.h | 58 +++++++++++++++++++++++++-------------------------
 lightning/ppc/fp.h     | 15 ++++++++-----
 lightning/sparc/fp.h   | 32 ++++++++++++++++++++++++++++
 4 files changed, 78 insertions(+), 34 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 8f432ef..3b79a3f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-08-20  Paolo Bonzini  <address@hidden>
+
+       * lightning/i386/fp-64.h: Return patch address from jit_bXYr_{f,d}.
+       Reported by Paulo César Pereira de Andrade.
+       * lightning/ppc/fp.h: Likewise.
+       * lightning/sparc/fp.h: Implement FP branches.
+
 2010-08-18  Paolo Bonzini  <address@hidden>
 
        * lightning/i386/fp-64.h: Fix jp in jit_bner_{f,d}.
diff --git a/lightning/i386/fp-64.h b/lightning/i386/fp-64.h
index 9bb2681..bb4b65f 100644
--- a/lightning/i386/fp-64.h
+++ b/lightning/i386/fp-64.h
@@ -230,35 +230,35 @@ union jit_double_imm {
        SBBLir (0, (rd));                               \
   } while (0)
 
-#define jit_bltr_f(d, s1, s2)            (UCOMISSrr ((s1), (s2)), JAm ((d)))
-#define jit_bler_f(d, s1, s2)            (UCOMISSrr ((s1), (s2)), JAEm ((d)))
-#define jit_beqr_f(d, s1, s2)            (UCOMISSrr ((s1), (s2)), _OO 
(0x7a06), JEm ((d)))
-#define jit_bner_f(d, s1, s2)            (UCOMISSrr ((s1), (s2)), _OO 
(0x7a02), _OO (0x7405), JMPm (((d)))) /* JP to JMP, JZ past JMP */
-#define jit_bger_f(d, s1, s2)            (UCOMISSrr ((s2), (s1)), JAEm ((d)))
-#define jit_bgtr_f(d, s1, s2)            (UCOMISSrr ((s2), (s1)), JAm ((d)))
-#define jit_bunltr_f(d, s1, s2)          (UCOMISSrr ((s2), (s1)), JNAEm ((d)))
-#define jit_bunler_f(d, s1, s2)          (UCOMISSrr ((s2), (s1)), JNAm ((d)))
-#define jit_buneqr_f(d, s1, s2)          (UCOMISSrr ((s1), (s2)), JEm ((d)))
-#define jit_bltgtr_f(d, s1, s2)          (UCOMISSrr ((s1), (s2)), JNEm ((d)))
-#define jit_bunger_f(d, s1, s2)          (UCOMISSrr ((s1), (s2)), JNAm ((d)))
-#define jit_bungtr_f(d, s1, s2)          (UCOMISSrr ((s1), (s2)), JNAEm ((d)))
-#define jit_bordr_f(d, s1, s2)           (UCOMISSrr ((s1), (s2)), JNPm ((d)))
-#define jit_bunordr_f(d, s1, s2)         (UCOMISSrr ((s1), (s2)), JPm ((d)))
-
-#define jit_bltr_d(d, s1, s2)            (UCOMISDrr ((s1), (s2)), JAm ((d)))
-#define jit_bler_d(d, s1, s2)            (UCOMISDrr ((s1), (s2)), JAEm ((d)))
-#define jit_beqr_d(d, s1, s2)            (UCOMISDrr ((s1), (s2)), _OO 
(0x7a06), JEm ((d)))
-#define jit_bner_d(d, s1, s2)            (UCOMISDrr ((s1), (s2)), _OO 
(0x7a02), _OO (0x7405), JMPm (((d)))) /* JP to JMP, JZ past JMP */ 
-#define jit_bger_d(d, s1, s2)            (UCOMISDrr ((s2), (s1)), JAEm ((d)))
-#define jit_bgtr_d(d, s1, s2)            (UCOMISDrr ((s2), (s1)), JAm ((d)))
-#define jit_bunltr_d(d, s1, s2)          (UCOMISDrr ((s2), (s1)), JNAEm ((d)))
-#define jit_bunler_d(d, s1, s2)          (UCOMISDrr ((s2), (s1)), JNAm ((d)))
-#define jit_buneqr_d(d, s1, s2)          (UCOMISDrr ((s1), (s2)), JEm ((d)))
-#define jit_bltgtr_d(d, s1, s2)          (UCOMISDrr ((s1), (s2)), JNEm ((d)))
-#define jit_bunger_d(d, s1, s2)          (UCOMISDrr ((s1), (s2)), JNAm ((d)))
-#define jit_bungtr_d(d, s1, s2)          (UCOMISDrr ((s1), (s2)), JNAEm ((d)))
-#define jit_bordr_d(d, s1, s2)           (UCOMISDrr ((s1), (s2)), JNPm ((d)))
-#define jit_bunordr_d(d, s1, s2)         (UCOMISDrr ((s1), (s2)), JPm ((d)))
+#define jit_bltr_f(d, s1, s2)            (UCOMISSrr ((s1), (s2)), JAm ((d)), 
_jit.x.pc)
+#define jit_bler_f(d, s1, s2)            (UCOMISSrr ((s1), (s2)), JAEm ((d)), 
_jit.x.pc)
+#define jit_beqr_f(d, s1, s2)            (UCOMISSrr ((s1), (s2)), _OO 
(0x7a06), JEm ((d)), _jit.x.pc)
+#define jit_bner_f(d, s1, s2)            (UCOMISSrr ((s1), (s2)), _OO 
(0x7a02), _OO (0x7405), JMPm (((d))), _jit.x.pc) /* JP to JMP, JZ past JMP */
+#define jit_bger_f(d, s1, s2)            (UCOMISSrr ((s2), (s1)), JAEm ((d)), 
_jit.x.pc)
+#define jit_bgtr_f(d, s1, s2)            (UCOMISSrr ((s2), (s1)), JAm ((d)), 
_jit.x.pc)
+#define jit_bunltr_f(d, s1, s2)          (UCOMISSrr ((s2), (s1)), JNAEm ((d)), 
_jit.x.pc)
+#define jit_bunler_f(d, s1, s2)          (UCOMISSrr ((s2), (s1)), JNAm ((d)), 
_jit.x.pc)
+#define jit_buneqr_f(d, s1, s2)          (UCOMISSrr ((s1), (s2)), JEm ((d)), 
_jit.x.pc)
+#define jit_bltgtr_f(d, s1, s2)          (UCOMISSrr ((s1), (s2)), JNEm ((d)), 
_jit.x.pc)
+#define jit_bunger_f(d, s1, s2)          (UCOMISSrr ((s1), (s2)), JNAm ((d)), 
_jit.x.pc)
+#define jit_bungtr_f(d, s1, s2)          (UCOMISSrr ((s1), (s2)), JNAEm ((d)), 
_jit.x.pc)
+#define jit_bordr_f(d, s1, s2)           (UCOMISSrr ((s1), (s2)), JNPm ((d)), 
_jit.x.pc)
+#define jit_bunordr_f(d, s1, s2)         (UCOMISSrr ((s1), (s2)), JPm ((d)), 
_jit.x.pc)
+
+#define jit_bltr_d(d, s1, s2)            (UCOMISDrr ((s1), (s2)), JAm ((d)), 
_jit.x.pc)
+#define jit_bler_d(d, s1, s2)            (UCOMISDrr ((s1), (s2)), JAEm ((d)), 
_jit.x.pc)
+#define jit_beqr_d(d, s1, s2)            (UCOMISDrr ((s1), (s2)), _OO 
(0x7a06), JEm ((d)), _jit.x.pc)
+#define jit_bner_d(d, s1, s2)            (UCOMISDrr ((s1), (s2)), _OO 
(0x7a02), _OO (0x7405), JMPm (((d))), _jit.x.pc) /* JP to JMP, JZ past JMP */ 
+#define jit_bger_d(d, s1, s2)            (UCOMISDrr ((s2), (s1)), JAEm ((d)), 
_jit.x.pc)
+#define jit_bgtr_d(d, s1, s2)            (UCOMISDrr ((s2), (s1)), JAm ((d)), 
_jit.x.pc)
+#define jit_bunltr_d(d, s1, s2)          (UCOMISDrr ((s2), (s1)), JNAEm ((d)), 
_jit.x.pc, _jit.x.pc)
+#define jit_bunler_d(d, s1, s2)          (UCOMISDrr ((s2), (s1)), JNAm ((d)), 
_jit.x.pc)
+#define jit_buneqr_d(d, s1, s2)          (UCOMISDrr ((s1), (s2)), JEm ((d)), 
_jit.x.pc)
+#define jit_bltgtr_d(d, s1, s2)          (UCOMISDrr ((s1), (s2)), JNEm ((d)), 
_jit.x.pc)
+#define jit_bunger_d(d, s1, s2)          (UCOMISDrr ((s1), (s2)), JNAm ((d)), 
_jit.x.pc)
+#define jit_bungtr_d(d, s1, s2)          (UCOMISDrr ((s1), (s2)), JNAEm ((d)), 
_jit.x.pc)
+#define jit_bordr_d(d, s1, s2)           (UCOMISDrr ((s1), (s2)), JNPm ((d)), 
_jit.x.pc)
+#define jit_bunordr_d(d, s1, s2)         (UCOMISDrr ((s1), (s2)), JPm ((d)), 
_jit.x.pc)
 
 #define jit_ltr_f(d, s1, s2)            (XORLrr ((d), (d)), UCOMISSrr ((s1), 
(s2)), SETAr (jit_reg8((d))))
 #define jit_ler_f(d, s1, s2)            (XORLrr ((d), (d)), UCOMISSrr ((s1), 
(s2)), SETAEr (jit_reg8((d))))
diff --git a/lightning/ppc/fp.h b/lightning/ppc/fp.h
index 2841e9a..feed42c 100644
--- a/lightning/ppc/fp.h
+++ b/lightning/ppc/fp.h
@@ -143,24 +143,29 @@
 
 #define jit_fpbr(d, s1, s2, rcbit) (           \
        FCMPOrrr(_cr0,(s1),(s2)),               \
-       BTii ((rcbit), (d)))
+       BTii ((rcbit), (d)),                    \
+       _jit.x.pc)
 
 #define jit_fpbr_neg(d, s1, s2,rcbit) (        \
        FCMPOrrr(_cr0,(s1),(s2)),               \
-       BFii ((rcbit), (d)))
+       BFii ((rcbit), (d)),                    \
+       _jit.x.pc)
 
 #define jit_fpbur(d, s1, s2, rcbit) (          \
        FCMPUrrr(_cr0,(s1),(s2)),               \
-       BTii ((rcbit), (d)))
+       BTii ((rcbit), (d)),                    \
+       _jit.x.pc)
 
 #define jit_fpbur_neg(d, s1, s2,rcbit) (       \
        FCMPUrrr(_cr0,(s1),(s2)),               \
-       BFii ((rcbit), (d)))
+       BFii ((rcbit), (d)),                    \
+       _jit.x.pc)
 
 #define jit_fpbur_or(d, s1, s2, bit1, bit2) (  \
        FCMPUrrr(_cr0,(s1),(s2)),               \
        CRORiii((bit1), (bit1), (bit2)),        \
-       BTii ((bit1), (d)))
+       BTii ((bit1), (d)),                     \
+       _jit.x.pc)
 
 #define jit_bgtr_d(d, s1, s2)      jit_fpbr ((d),(s1),(s2),_gt)   
 #define jit_bger_d(d, s1, s2)      jit_fpbr_neg((d),(s1),(s2),_lt)   
diff --git a/lightning/sparc/fp.h b/lightning/sparc/fp.h
index 45b6d66..bdfc626 100644
--- a/lightning/sparc/fp.h
+++ b/lightning/sparc/fp.h
@@ -205,6 +205,38 @@
 #define jit_unordr_d(d, s1, s2)         (FCMPDrr ((s1), (s2)), FBUi(_jit.x.pc 
+ 3), MOVir (1, (d)), MOVir (0, (d)))
 #define jit_unordr_f(d, s1, s2)         (FCMPSrr ((s1), (s2)), FBUi(_jit.x.pc 
+ 3), MOVir (1, (d)), MOVir (0, (d)))
 
+#define jit_branchr_f(s1, s2, jmp)      (FCMPSrr(s1, s2), jmp, NOP(), 
_jit.x.pc - 1)
+#define jit_branchr_d(s1, s2, jmp)      (FCMPDrr(s1, s2), jmp, NOP(), 
_jit.x.pc - 1)
+
+#define jit_bltr_d(label, s1, s2)        jit_branchr_d((s1), (s2), 
FBLi((label)))
+#define jit_bltr_f(label, s1, s2)        jit_branchr_f((s1), (s2), 
FBLi((label)))
+#define jit_bler_d(label, s1, s2)        jit_branchr_d((s1), (s2), 
FBLEi((label)))
+#define jit_bler_f(label, s1, s2)        jit_branchr_f((s1), (s2), 
FBLEi((label)))
+#define jit_beqr_d(label, s1, s2)        jit_branchr_d((s1), (s2), 
FBEi((label)))
+#define jit_beqr_f(label, s1, s2)        jit_branchr_f((s1), (s2), 
FBEi((label)))
+#define jit_bner_d(label, s1, s2)        jit_branchr_d((s1), (s2), 
FBNEi((label)))
+#define jit_bner_f(label, s1, s2)        jit_branchr_f((s1), (s2), 
FBNEi((label)))
+#define jit_bger_d(label, s1, s2)        jit_branchr_d((s1), (s2), 
FBGEi((label)))
+#define jit_bger_f(label, s1, s2)        jit_branchr_f((s1), (s2), 
FBGEi((label)))
+#define jit_bgtr_d(label, s1, s2)        jit_branchr_d((s1), (s2), 
FBGi((label)))
+#define jit_bgtr_f(label, s1, s2)        jit_branchr_f((s1), (s2), 
FBGi((label)))
+#define jit_bunltr_d(label, s1, s2)      jit_branchr_d((s1), (s2), 
FBULi((label)))
+#define jit_bunltr_f(label, s1, s2)      jit_branchr_f((s1), (s2), 
FBULi((label)))
+#define jit_bunler_d(label, s1, s2)      jit_branchr_d((s1), (s2), 
FBULEi((label)))
+#define jit_bunler_f(label, s1, s2)      jit_branchr_f((s1), (s2), 
FBULEi((label)))
+#define jit_buneqr_d(label, s1, s2)      jit_branchr_d((s1), (s2), 
FBUEi((label)))
+#define jit_buneqr_f(label, s1, s2)      jit_branchr_f((s1), (s2), 
FBUEi((label)))
+#define jit_bltgtr_d(label, s1, s2)      jit_branchr_d((s1), (s2), 
FBLGi((label)))
+#define jit_bltgtr_f(label, s1, s2)      jit_branchr_f((s1), (s2), 
FBLGi((label)))
+#define jit_bunger_d(label, s1, s2)      jit_branchr_d((s1), (s2), 
FBUGEi((label)))
+#define jit_bunger_f(label, s1, s2)      jit_branchr_f((s1), (s2), 
FBUGEi((label)))
+#define jit_bungtr_d(label, s1, s2)      jit_branchr_d((s1), (s2), 
FBUGi((label)))
+#define jit_bungtr_f(label, s1, s2)      jit_branchr_f((s1), (s2), 
FBUGi((label)))
+#define jit_bordr_d(label, s1, s2)       jit_branchr_d((s1), (s2), 
FBOi((label)))
+#define jit_bordr_f(label, s1, s2)       jit_branchr_f((s1), (s2), 
FBOi((label)))
+#define jit_bunordr_d(label, s1, s2)     jit_branchr_d((s1), (s2), 
FBUi((label)))
+#define jit_bunordr_f(label, s1, s2)     jit_branchr_f((s1), (s2), 
FBUi((label)))
+
 #define jit_prepare_f(num)              (_jitl.nextarg_put += (num))
 #define jit_prepare_d(num)              (_jitl.nextarg_put += 2 * (num))
 



reply via email to

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