[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);
}
- [Guile-commits] 398/437: ia64: Pass all tests for variadic jit functions, (continued)
- [Guile-commits] 398/437: ia64: Pass all tests for variadic jit functions, Andy Wingo, 2018/07/02
- [Guile-commits] 397/437: Implement new synthesized IR codes sequences, Andy Wingo, 2018/07/02
- [Guile-commits] 410/437: GNU lightning 2.1.2 release, Andy Wingo, 2018/07/02
- [Guile-commits] 270/437: x86: Use aligned offset for x87 to/from sse move., Andy Wingo, 2018/07/02
- [Guile-commits] 302/437: Add info menu entry for lightning, Andy Wingo, 2018/07/02
- [Guile-commits] 214/437: Remove remaining ia64 port debug code., Andy Wingo, 2018/07/02
- [Guile-commits] 331/437: mips: Do not make t9 available as a generic register, Andy Wingo, 2018/07/02
- [Guile-commits] 287/437: ARM: Do not leave early init_jit if /proc is not mounted., Andy Wingo, 2018/07/02
- [Guile-commits] 405/437: Add a second pass to compute live register ranges, Andy Wingo, 2018/07/02
- [Guile-commits] 300/437: Add consistency check on temporaries during a jump, Andy Wingo, 2018/07/02
- [Guile-commits] 276/437: Rewrite jit_regset_scan1 for easier optimization.,
Andy Wingo <=
- [Guile-commits] 268/437: Sync after regenerating version.texi., Andy Wingo, 2018/07/02
- [Guile-commits] 277/437: x86_64: Correct wrong inline assembly in jit_get_cpu, Andy Wingo, 2018/07/02
- [Guile-commits] 360/437: Correct wrong check in simplify_stxi., Andy Wingo, 2018/07/02
- [Guile-commits] 389/437: alpha: Save correct offset if loading a vararg double., Andy Wingo, 2018/07/02
- [Guile-commits] 380/437: ppc: Add initial jit_va_ calls to ppc, Andy Wingo, 2018/07/02
- [Guile-commits] 239/437: Avoid possible problem if built with gcc 4.8 or newer., Andy Wingo, 2018/07/02
- [Guile-commits] 347/437: S390: Add support for 32 bit., Andy Wingo, 2018/07/02
- [Guile-commits] 428/437: Further lightning integration work, Andy Wingo, 2018/07/02
- [Guile-commits] 420/437: Strip "get-jit-size" feature from lightning., Andy Wingo, 2018/07/02
- [Guile-commits] 434/437: Remove unused AM_CONDITIONAL statements from lightning configure, Andy Wingo, 2018/07/02