guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 02/02: Fix JIT of 64-bit comparisons on 32-bit architect


From: Andy Wingo
Subject: [Guile-commits] 02/02: Fix JIT of 64-bit comparisons on 32-bit architectures
Date: Tue, 9 Oct 2018 06:32:46 -0400 (EDT)

wingo pushed a commit to branch master
in repository guile.

commit e08d10af6786d729eff199760011df91ab49067d
Author: Andy Wingo <address@hidden>
Date:   Tue Oct 9 12:11:59 2018 +0200

    Fix JIT of 64-bit comparisons on 32-bit architectures
    
    * libguile/jit.c (compile_u64_imm_less): Compare high word using
      not-equal, to avoid a signedness compare.
    (compile_s64_imm_less, compile_imm_s64_less): Fix the not-less cases.
---
 libguile/jit.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/libguile/jit.c b/libguile/jit.c
index 2bb50f2..e4a6699 100644
--- a/libguile/jit.c
+++ b/libguile/jit.c
@@ -3779,7 +3779,7 @@ compile_u64_imm_less (scm_jit_state *j, uint16_t a, 
uint16_t b)
       add_inter_instruction_patch (j, k2, target);
       break;
     case scm_op_jnl:
-      k1 = jit_bgti (T1, 0);
+      k1 = jit_bnei (T1, 0);
       k2 = jit_bgei_u (T0, b);
       add_inter_instruction_patch (j, k1, target);
       add_inter_instruction_patch (j, k2, target);
@@ -3867,16 +3867,16 @@ compile_s64_imm_less (scm_jit_state *j, uint16_t a, 
int16_t b)
       k1 = jit_blti (T1, sign);
       k2 = jit_bnei (T1, sign);
       k3 = jit_blti (T0, b);
-      jit_patch (k2);
       add_inter_instruction_patch (j, k1, target);
+      jit_patch (k2);
       add_inter_instruction_patch (j, k3, target);
       break;
     case scm_op_jnl:
-      k1 = jit_bgti (T1, sign);
+      k1 = jit_blti (T1, sign);
       k2 = jit_bnei (T1, sign);
       k3 = jit_bgei (T0, b);
-      jit_patch (k2);
-      add_inter_instruction_patch (j, k1, target);
+      jit_patch (k1);
+      add_inter_instruction_patch (j, k2, target);
       add_inter_instruction_patch (j, k3, target);
       break;
     default:
@@ -3922,11 +3922,11 @@ compile_imm_s64_less (scm_jit_state *j, uint16_t a, 
int16_t b)
       add_inter_instruction_patch (j, k3, target);
       break;
     case scm_op_jnl:
-      k1 = jit_bgti (T1, sign);
+      k1 = jit_blti (T1, sign);
       k2 = jit_bnei (T1, sign);
       k3 = jit_blei (T0, b);
-      jit_patch (k1);
-      add_inter_instruction_patch (j, k2, target);
+      add_inter_instruction_patch (j, k1, target);
+      jit_patch (k2);
       add_inter_instruction_patch (j, k3, target);
       break;
     default:



reply via email to

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