guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 276/437: Rewrite jit_regset_scan1 for easier optimizatio


From: Andy Wingo
Subject: [Guile-commits] 276/437: Rewrite jit_regset_scan1 for easier optimization.
Date: Mon, 2 Jul 2018 05:14:35 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 6e75c0352db2c98d8bc82ab45d6e9ae59382851f
Author: pcpa <address@hidden>
Date:   Wed Feb 19 14:38:14 2014 -0300

    Rewrite jit_regset_scan1 for easier optimization.
    
        * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
        include/lightning/jit_hppa.h, include/lightning/jit_ia64.h,
        include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
        include/lightning/jit_s390x.h, include/lightning/jit_sparc.h,
        include/lightning/jit_x86.h: Change jit_regset_t to an
        unsigned type, to allow safe right shift.
    
        * lib/lightning.c: Rewrite jit_regset_scan1 to allow easier
        compiler optimization.
---
 ChangeLog                       | 12 ++++++++++++
 include/lightning/jit_aarch64.h |  2 +-
 include/lightning/jit_arm.h     |  2 +-
 include/lightning/jit_hppa.h    |  2 +-
 include/lightning/jit_ia64.h    |  8 ++++----
 include/lightning/jit_mips.h    |  2 +-
 include/lightning/jit_ppc.h     |  2 +-
 include/lightning/jit_s390x.h   |  2 +-
 include/lightning/jit_sparc.h   |  2 +-
 include/lightning/jit_x86.h     |  4 ++--
 lib/lightning.c                 | 11 ++++++++---
 11 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0a37f6f..81d3919 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2014-19-02 Paulo Andrade <address@hidden>
+
+       * include/lightning/jit_aarch64.h, include/lightning/jit_arm.h,
+       include/lightning/jit_hppa.h, include/lightning/jit_ia64.h,
+       include/lightning/jit_mips.h, include/lightning/jit_ppc.h,
+       include/lightning/jit_s390x.h, include/lightning/jit_sparc.h,
+       include/lightning/jit_x86.h: Change jit_regset_t to an
+       unsigned type, to allow safe right shift.
+
+       * lib/lightning.c: Rewrite jit_regset_scan1 to allow easier
+       compiler optimization.
+
 2013-12-03 Paulo Andrade <address@hidden>
 
        * lib/jit_x86-x87.c: Correct wrong optimization when
diff --git a/include/lightning/jit_aarch64.h b/include/lightning/jit_aarch64.h
index b42f709..8e6a7eb 100644
--- a/include/lightning/jit_aarch64.h
+++ b/include/lightning/jit_aarch64.h
@@ -90,6 +90,6 @@ typedef enum {
 #define JIT_NOREG              _NOREG
 } jit_reg_t;
 
-typedef jit_int64_t            jit_regset_t;
+typedef jit_uint64_t           jit_regset_t;
 
 #endif /* _jit_aarch64_h */
diff --git a/include/lightning/jit_arm.h b/include/lightning/jit_arm.h
index 1db7593..c8d2b14 100644
--- a/include/lightning/jit_arm.h
+++ b/include/lightning/jit_arm.h
@@ -123,7 +123,7 @@ typedef struct {
     jit_uint32_t ldrt_strt     : 1;
 } jit_cpu_t;
 
-typedef jit_int64_t            jit_regset_t;
+typedef jit_uint64_t           jit_regset_t;
 
 /*
  * Initialization
diff --git a/include/lightning/jit_hppa.h b/include/lightning/jit_hppa.h
index e7c5fe4..a24b2df 100644
--- a/include/lightning/jit_hppa.h
+++ b/include/lightning/jit_hppa.h
@@ -133,6 +133,6 @@ typedef enum {
     _NOREG,
 } jit_reg_t;
 
-typedef jit_int64_t            jit_regset_t;
+typedef jit_uint64_t           jit_regset_t;
 
 #endif /* _jit_hppa */
diff --git a/include/lightning/jit_ia64.h b/include/lightning/jit_ia64.h
index 29f4189..12c61ad 100644
--- a/include/lightning/jit_ia64.h
+++ b/include/lightning/jit_ia64.h
@@ -118,10 +118,10 @@ typedef enum {
 } jit_reg_t;
 
 typedef struct {
-    jit_int64_t                rl;
-    jit_int64_t                rh;
-    jit_int64_t                fl;
-    jit_int64_t                fh;
+    jit_uint64_t       rl;
+    jit_uint64_t       rh;
+    jit_uint64_t       fl;
+    jit_uint64_t       fh;
 } jit_regset_t;
 
 #endif /* _jit_ia64_h */
diff --git a/include/lightning/jit_mips.h b/include/lightning/jit_mips.h
index e361c22..54e57db 100644
--- a/include/lightning/jit_mips.h
+++ b/include/lightning/jit_mips.h
@@ -119,6 +119,6 @@ typedef enum {
     _NOREG,
 } jit_reg_t;
 
-typedef jit_int64_t            jit_regset_t;
+typedef jit_uint64_t           jit_regset_t;
 
 #endif /* _jit_mips_h */
diff --git a/include/lightning/jit_ppc.h b/include/lightning/jit_ppc.h
index 4daf9de..8021891 100644
--- a/include/lightning/jit_ppc.h
+++ b/include/lightning/jit_ppc.h
@@ -103,6 +103,6 @@ typedef enum {
 #define JIT_NOREG              _NOREG
 } jit_reg_t;
 
-typedef jit_int64_t            jit_regset_t;
+typedef jit_uint64_t           jit_regset_t;
 
 #endif /* _jit_ppc_h */
diff --git a/include/lightning/jit_s390x.h b/include/lightning/jit_s390x.h
index 072e728..f84290c 100644
--- a/include/lightning/jit_s390x.h
+++ b/include/lightning/jit_s390x.h
@@ -67,6 +67,6 @@ typedef enum {
 #define JIT_NOREG              _NOREG
 } jit_reg_t;
 
-typedef jit_int32_t            jit_regset_t;
+typedef jit_uint32_t           jit_regset_t;
 
 #endif /* _jit_s390x_h */
diff --git a/include/lightning/jit_sparc.h b/include/lightning/jit_sparc.h
index 946d382..63c7d74 100644
--- a/include/lightning/jit_sparc.h
+++ b/include/lightning/jit_sparc.h
@@ -65,6 +65,6 @@ typedef enum {
     _NOREG,
 } jit_reg_t;
 
-typedef jit_int64_t            jit_regset_t;
+typedef jit_uint64_t           jit_regset_t;
 
 #endif /* _jit_sparc_h */
diff --git a/include/lightning/jit_x86.h b/include/lightning/jit_x86.h
index 3166f71..5c85adb 100644
--- a/include/lightning/jit_x86.h
+++ b/include/lightning/jit_x86.h
@@ -139,9 +139,9 @@ typedef struct {
 } jit_cpu_t;
 
 #if __WORDSIZE == 32
-typedef jit_int32_t            jit_regset_t;
+typedef jit_uint32_t           jit_regset_t;
 #else
-typedef jit_int64_t            jit_regset_t;
+typedef jit_uint64_t           jit_regset_t;
 #endif
 
 /*
diff --git a/lib/lightning.c b/lib/lightning.c
index ebc76c1..de93e9f 100644
--- a/lib/lightning.c
+++ b/lib/lightning.c
@@ -496,10 +496,15 @@ jit_regset_scan1(jit_regset_t *set, jit_int32_t offset)
 unsigned long
 jit_regset_scan1(jit_regset_t *set, jit_int32_t offset)
 {
+    jit_regset_t       mask;
     assert(offset >= 0 && offset <= 63);
-    for (; offset < 64; offset++) {
-       if (*set & (1LL << offset))
-           return (offset);
+    if ((mask = *set >> offset)) {
+       for (;;) {
+           if (mask & 1)
+               return (offset);
+           mask >>= 1;
+           ++offset;
+       }
     }
     return (ULONG_MAX);
 }



reply via email to

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