guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 01/03: Simplify register representation again


From: Andy Wingo
Subject: [Guile-commits] 01/03: Simplify register representation again
Date: Thu, 25 Apr 2019 17:27:04 -0400 (EDT)

wingo pushed a commit to branch lightening
in repository guile.

commit 2602f17fb4e472b5a89af026fe00bffe662f1d43
Author: Andy Wingo <address@hidden>
Date:   Thu Apr 25 19:12:55 2019 +0200

    Simplify register representation again
    
    There's only one flag, "callee-save".  Also the regno range is limited
    to 0-63 inclusive, to allow for cheap register sets as uint64_t values.
---
 lightening.h            |  52 ++++++---
 lightening/lightening.c |  18 +--
 lightening/x86-cpu.c    | 296 ++++++++++++++++++++++++------------------------
 lightening/x86-sse.c    | 142 +++++++++++------------
 lightening/x86.c        |  10 +-
 lightening/x86.h        |  62 +++++-----
 tests/qdivr.c           |   4 +-
 tests/qdivr_u.c         |   4 +-
 tests/qmulr.c           |   4 +-
 tests/qmulr_u.c         |   4 +-
 10 files changed, 304 insertions(+), 292 deletions(-)

diff --git a/lightening.h b/lightening.h
index 4747a71..e8e097a 100644
--- a/lightening.h
+++ b/lightening.h
@@ -37,18 +37,51 @@ typedef float               jit_float32_t;
 typedef double         jit_float64_t;
 typedef void*          jit_pointer_t;
 typedef int            jit_bool_t;
-typedef struct jit_gpr { int bits; } jit_gpr_t;
-typedef struct jit_fpr { int bits; } jit_fpr_t;
 
 typedef void*          jit_addr_t;
 typedef ptrdiff_t      jit_off_t;
 typedef intptr_t       jit_imm_t;
 typedef uintptr_t      jit_uimm_t;
 
-#define JIT_GPR(bits) ((jit_gpr_t) { bits })
-#define JIT_FPR(bits) ((jit_fpr_t) { bits })
-static inline jit_gpr_t jit_gpr(int bits) { return JIT_GPR(bits); }
-static inline jit_fpr_t jit_fpr(int bits) { return JIT_FPR(bits); }
+typedef struct jit_gpr { uint8_t bits; } jit_gpr_t;
+typedef struct jit_fpr { uint8_t bits; } jit_fpr_t;
+
+enum jit_register_flags
+{
+  JIT_REGISTER_CALLEE_SAVE = 0x40
+};
+
+// Precondition: regno between 0 and 63, inclusive.
+#define JIT_GPR(regno) ((jit_gpr_t) { regno })
+#define JIT_FPR(regno) ((jit_fpr_t) { regno })
+#define JIT_CALLEE_SAVE_GPR(regno) \
+  ((jit_gpr_t) { (regno) | JIT_REGISTER_CALLEE_SAVE })
+#define JIT_CALLEE_SAVE_FPR(regno) \
+  ((jit_fpr_t) { (regno) | JIT_REGISTER_CALLEE_SAVE })
+
+static inline jit_bool_t
+jit_gpr_is_callee_save (jit_gpr_t reg)
+{
+  return reg.bits & JIT_REGISTER_CALLEE_SAVE;
+}
+
+static inline jit_bool_t
+jit_fpr_is_callee_save (jit_fpr_t reg)
+{
+  return reg.bits & JIT_REGISTER_CALLEE_SAVE;
+}
+
+static inline uint8_t
+jit_gpr_regno (jit_gpr_t reg)
+{
+  return reg.bits & 0x3f;
+}
+
+static inline uint8_t
+jit_fpr_regno (jit_fpr_t reg)
+{
+  return reg.bits & 0x3f;
+}
 
 enum jit_reloc_kind
 {
@@ -95,10 +128,6 @@ typedef struct jit_reloc
 #  include "lightening/alpha.h"
 #endif
 
-#define jit_class_sav          0x10000000      /* callee save */
-#define jit_class(bits)                ((bits) & 0xffff0000)
-#define jit_regno(bits)                ((bits) & 0x00007fff)
-
 static inline jit_bool_t
 jit_same_gprs (jit_gpr_t a, jit_gpr_t b)
 {
@@ -224,9 +253,6 @@ JIT_API jit_pointer_t jit_address(jit_state_t*);
 JIT_API void jit_patch_here(jit_state_t*, jit_reloc_t);
 JIT_API void jit_patch_there(jit_state_t*, jit_reloc_t, jit_pointer_t);
 
-JIT_API jit_bool_t jit_gpr_is_callee_save (jit_state_t*, jit_gpr_t);
-JIT_API jit_bool_t jit_fpr_is_callee_save (jit_state_t*, jit_fpr_t);
-
 JIT_API void jit_move_operands (jit_state_t *_jit, jit_operand_t *dst,
                                 jit_operand_t *src, size_t argc);
 
diff --git a/lightening/lightening.c b/lightening/lightening.c
index c2d55bd..5a98eb4 100644
--- a/lightening/lightening.c
+++ b/lightening/lightening.c
@@ -36,8 +36,6 @@
 #endif
 
 #define _NOREG 0xffff
-#define rc(value)               jit_class_##value
-#define rn(reg)                 jit_regno(reg.bits)
 
 #if defined(__i386__) || defined(__x86_64__)
 # define JIT_RET                _RAX
@@ -373,18 +371,6 @@ jit_patch_there(jit_state_t* _jit, jit_reloc_t reloc, 
jit_pointer_t addr)
     }
 }
 
-jit_bool_t
-jit_gpr_is_callee_save (jit_state_t *_jit, jit_gpr_t reg)
-{
-  return jit_class(reg.bits) & jit_class_sav;
-}
-
-jit_bool_t
-jit_fpr_is_callee_save (jit_state_t *_jit, jit_fpr_t reg)
-{
-  return jit_class(reg.bits) & jit_class_sav;
-}
-
 #if defined(__i386__) || defined(__x86_64__)
 # include "x86.c"
 #elif defined(__mips__)
@@ -469,8 +455,8 @@ jit_fpr_is_callee_save (jit_state_t *_jit, jit_fpr_t reg)
 #define JIT_IMPL__pG__(stem) JIT_IMPL_2(stem, void, pointer, gpr)
 #define JIT_IMPL__p___(stem) JIT_IMPL_1(stem, void, pointer)
 
-#define unwrap_gpr(r) rn(r)
-#define unwrap_fpr(r) rn(r)
+#define unwrap_gpr(r) jit_gpr_regno(r)
+#define unwrap_fpr(r) jit_fpr_regno(r)
 #define unwrap_imm(i) i
 #define unwrap_uimm(u) u
 #define unwrap_off(o) o
diff --git a/lightening/x86-cpu.c b/lightening/x86-cpu.c
index f49ba7e..018a58b 100644
--- a/lightening/x86-cpu.c
+++ b/lightening/x86-cpu.c
@@ -505,8 +505,8 @@ alui(jit_state_t *_jit, int32_t code, int32_t r0, 
jit_word_t i0)
     }
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    alur(_jit, code, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    alur(_jit, code, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -710,8 +710,8 @@ addi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t 
i0)
     iaddr(_jit, r0, r1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    iaddr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    iaddr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -736,8 +736,8 @@ addci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t 
i0)
   }
   else if (r0 == r1) {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    iaddr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    iaddr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   } else {
     movi(_jit, r0, i0);
@@ -765,8 +765,8 @@ addxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t 
i0)
   }
   else if (r0 == r1) {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    iaddxr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    iaddxr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   } else {
     movi(_jit, r0, i0);
@@ -810,8 +810,8 @@ subi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t 
i0)
     iaddr(_jit, r0, r1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    isubr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    isubr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -821,9 +821,9 @@ subcr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
 {
   if (r0 == r2 && r0 != r1) {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movr(_jit, rn(reg), r0);
+    movr(_jit, jit_gpr_regno(reg), r0);
     movr(_jit, r0, r1);
-    isubr(_jit, r0, rn(reg));
+    isubr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   } else {
     movr(_jit, r0, r1);
@@ -839,8 +839,8 @@ subci(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t 
i0)
     isubi(_jit, r0, i0);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    isubr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    isubr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -850,9 +850,9 @@ subxr(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t r2)
 {
   if (r0 == r2 && r0 != r1) {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movr(_jit, rn(reg), r0);
+    movr(_jit, jit_gpr_regno(reg), r0);
     movr(_jit, r0, r1);
-    isubxr(_jit, r0, rn(reg));
+    isubxr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   } else {
     movr(_jit, r0, r1);
@@ -868,8 +868,8 @@ subxi(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t 
i0)
     isubxi(_jit, r0, i0);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    imovi(_jit, rn(reg), i0);
-    isubxr(_jit, r0, rn(reg));
+    imovi(_jit, jit_gpr_regno(reg), i0);
+    isubxr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -888,11 +888,11 @@ rotshr(jit_state_t *_jit, int32_t code,
 {
   if (r0 == _RCX_REGNO) {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movr(_jit, rn(reg), r1);
+    movr(_jit, jit_gpr_regno(reg), r1);
     if (r2 != _RCX_REGNO)
       movr(_jit, _RCX_REGNO, r2);
-    irotshr(_jit, code, rn(reg));
-    movr(_jit, _RCX_REGNO, rn(reg));
+    irotshr(_jit, code, jit_gpr_regno(reg));
+    movr(_jit, _RCX_REGNO, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   } else if (r2 != _RCX_REGNO) {
     /* Already know that R0 isn't RCX.  */
@@ -1005,8 +1005,8 @@ imuli(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
     }
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    imulr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    imulr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1133,11 +1133,11 @@ iqmuli(jit_state_t *_jit, int32_t r0, int32_t r1,
     ixorr(_jit, r1, r1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
+    movi(_jit, jit_gpr_regno(reg), i0);
     if (sign)
-      qmulr(_jit, r0, r1, r2, rn(reg));
+      qmulr(_jit, r0, r1, r2, jit_gpr_regno(reg));
     else
-      qmulr_u(_jit, r0, r1, r2, rn(reg));
+      qmulr_u(_jit, r0, r1, r2, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1173,8 +1173,8 @@ divremr(jit_state_t *_jit, int32_t r0, int32_t r1, 
int32_t r2,
   int tmp_divisor = 0;
   if (r2 == _RAX_REGNO || r2 == _RDX_REGNO) {
     jit_gpr_t tmp = get_temp_gpr(_jit);
-    movr(_jit, rn(tmp), r2);
-    r2 = rn(tmp);
+    movr(_jit, jit_gpr_regno(tmp), r2);
+    r2 = jit_gpr_regno(tmp);
     tmp_divisor = 1;
   }
 
@@ -1207,9 +1207,9 @@ divremi(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0,
          jit_bool_t sign, jit_bool_t divide)
 {
   jit_gpr_t tmp = get_temp_gpr(_jit);
-  movi(_jit, rn(tmp), i0);
+  movi(_jit, jit_gpr_regno(tmp), i0);
 
-  divremr(_jit, r0, r1, rn(tmp), sign, divide);
+  divremr(_jit, r0, r1, jit_gpr_regno(tmp), sign, divide);
 }
 
 static void
@@ -1273,8 +1273,8 @@ iqdivr(jit_state_t *_jit, int32_t r0, int32_t r1,
   int tmp_divisor = 0;
   if (r3 == _RAX_REGNO || r3 == _RDX_REGNO) {
     jit_gpr_t tmp = get_temp_gpr(_jit);
-    movr(_jit, rn(tmp), r3);
-    r3 = rn(tmp);
+    movr(_jit, jit_gpr_regno(tmp), r3);
+    r3 = jit_gpr_regno(tmp);
     tmp_divisor = 1;
   }
 
@@ -1324,11 +1324,11 @@ iqdivi(jit_state_t *_jit, int32_t r0, int32_t r1,
        int32_t r2, jit_word_t i0, jit_bool_t sign)
 {
   jit_gpr_t reg = get_temp_gpr(_jit);
-  movi(_jit, rn(reg), i0);
+  movi(_jit, jit_gpr_regno(reg), i0);
   if (sign)
-    qdivr(_jit, r0, r1, r2, rn(reg));
+    qdivr(_jit, r0, r1, r2, jit_gpr_regno(reg));
   else
-    qdivr_u(_jit, r0, r1, r2, rn(reg));
+    qdivr_u(_jit, r0, r1, r2, jit_gpr_regno(reg));
   unget_temp_gpr(_jit);
 }
 
@@ -1379,8 +1379,8 @@ andi(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
       iandi(_jit, r0, i0);
     } else {
       jit_gpr_t reg = get_temp_gpr(_jit);
-      movi(_jit, rn(reg), i0);
-      iandr(_jit, r0, rn(reg));
+      movi(_jit, jit_gpr_regno(reg), i0);
+      iandr(_jit, r0, jit_gpr_regno(reg));
       unget_temp_gpr(_jit);
     }
   } else {
@@ -1420,8 +1420,8 @@ ori(jit_state_t *_jit, int32_t r0, int32_t r1, jit_word_t 
i0)
     iorr(_jit, r0, r1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    iorr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    iorr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1457,8 +1457,8 @@ xori(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
     ixorr(_jit, r0, r1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ixorr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ixorr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1476,10 +1476,10 @@ cr(jit_state_t *_jit, int32_t code, int32_t r0, int32_t 
r1, int32_t r2)
     cc(_jit, code, r0);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    ixorr(_jit, rn(reg), rn(reg));
+    ixorr(_jit, jit_gpr_regno(reg), jit_gpr_regno(reg));
     icmpr(_jit, r1, r2);
-    cc(_jit, code, rn(reg));
-    movr(_jit, r0, rn(reg));
+    cc(_jit, code, jit_gpr_regno(reg));
+    movr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1497,10 +1497,10 @@ ci(jit_state_t *_jit, int32_t code, int32_t r0, int32_t 
r1, jit_word_t i0)
     cc(_jit, code, r0);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    ixorr(_jit, rn(reg), rn(reg));
+    ixorr(_jit, jit_gpr_regno(reg), jit_gpr_regno(reg));
     icmpi(_jit, r1, i0);
-    cc(_jit, code, rn(reg));
-    movr(_jit, r0, rn(reg));
+    cc(_jit, code, jit_gpr_regno(reg));
+    movr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1518,10 +1518,10 @@ ci0(jit_state_t *_jit, int32_t code, int32_t r0, 
int32_t r1)
     cc(_jit, code, r0);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    ixorr(_jit, rn(reg), rn(reg));
+    ixorr(_jit, jit_gpr_regno(reg), jit_gpr_regno(reg));
     testr(_jit, r1, r1);
-    cc(_jit, code, rn(reg));
-    movr(_jit, r0, rn(reg));
+    cc(_jit, code, jit_gpr_regno(reg));
+    movr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1533,8 +1533,8 @@ extr_c(jit_state_t *_jit, int32_t r0, int32_t r1)
     movcr(_jit, r0, r1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movr(_jit, rn(reg), r1);
-    movcr(_jit, r0, rn(reg));
+    movr(_jit, jit_gpr_regno(reg), r1);
+    movcr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1546,8 +1546,8 @@ extr_uc(jit_state_t *_jit, int32_t r0, int32_t r1)
     movcr_u(_jit, r0, r1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movr(_jit, rn(reg), r1);
-    movcr_u(_jit, r0, rn(reg));
+    movr(_jit, jit_gpr_regno(reg), r1);
+    movcr_u(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1627,8 +1627,8 @@ ldi_c(jit_state_t *_jit, int32_t r0, jit_word_t i0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldr_c(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldr_c(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1652,8 +1652,8 @@ ldi_uc(jit_state_t *_jit, int32_t r0, jit_word_t i0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldr_uc(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldr_uc(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1677,8 +1677,8 @@ ldi_s(jit_state_t *_jit, int32_t r0, jit_word_t i0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldr_s(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldr_s(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1702,8 +1702,8 @@ ldi_us(jit_state_t *_jit, int32_t r0, jit_word_t i0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldr_us(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldr_us(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1734,8 +1734,8 @@ ldi_i(jit_state_t *_jit, int32_t r0, jit_word_t i0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldr_i(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldr_i(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1759,8 +1759,8 @@ ldi_ui(jit_state_t *_jit, int32_t r0, jit_word_t i0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldr_ui(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldr_ui(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1783,8 +1783,8 @@ ldi_l(jit_state_t *_jit, int32_t r0, jit_word_t i0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldr_l(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldr_l(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1815,8 +1815,8 @@ ldxi_c(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
     rx(_jit, r0, i0, r1, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldxr_c(_jit, r0, r1, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldxr_c(_jit, r0, r1, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1845,8 +1845,8 @@ ldxi_uc(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
     rx(_jit, r0, i0, r1, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldxr_uc(_jit, r0, r1, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldxr_uc(_jit, r0, r1, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1875,8 +1875,8 @@ ldxi_s(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
     rx(_jit, r0, i0, r1, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldxr_s(_jit, r0, r1, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldxr_s(_jit, r0, r1, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1905,8 +1905,8 @@ ldxi_us(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
     rx(_jit, r0, i0, r1, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldxr_us(_jit, r0, r1, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldxr_us(_jit, r0, r1, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1937,8 +1937,8 @@ ldxi_i(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
     rx(_jit, r0, i0, r1, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldxr_i(_jit, r0, r1, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldxr_i(_jit, r0, r1, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1968,8 +1968,8 @@ ldxi_ui(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
     rx(_jit, r0, i0, r1, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldxr_ui(_jit, r0, r1, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldxr_ui(_jit, r0, r1, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -1992,8 +1992,8 @@ ldxi_l(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
     rx(_jit, r0, i0, r1, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldxr_l(_jit, r0, r1, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldxr_l(_jit, r0, r1, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -2009,10 +2009,10 @@ str_c(jit_state_t *_jit, int32_t r0, int32_t r1)
     rx(_jit, r1, 0, r0, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movr(_jit, rn(reg), r1);
-    rex(_jit, 0, 0, rn(reg), _NOREG, r0);
+    movr(_jit, jit_gpr_regno(reg), r1);
+    rex(_jit, 0, 0, jit_gpr_regno(reg), _NOREG, r0);
     ic(_jit, 0x88);
-    rx(_jit, rn(reg), 0, r0, _NOREG, _SCL1);
+    rx(_jit, jit_gpr_regno(reg), 0, r0, _NOREG, _SCL1);
     unget_temp_gpr(_jit);
   }
 }
@@ -2027,16 +2027,16 @@ sti_c(jit_state_t *_jit, jit_word_t i0, int32_t r0)
       rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
     } else {
       jit_gpr_t reg = get_temp_gpr(_jit);
-      movr(_jit, rn(reg), r0);
-      rex(_jit, 0, 0, rn(reg), _NOREG, _NOREG);
+      movr(_jit, jit_gpr_regno(reg), r0);
+      rex(_jit, 0, 0, jit_gpr_regno(reg), _NOREG, _NOREG);
       ic(_jit, 0x88);
-      rx(_jit, rn(reg), i0, _NOREG, _NOREG, _SCL1);
+      rx(_jit, jit_gpr_regno(reg), i0, _NOREG, _NOREG, _SCL1);
       unget_temp_gpr(_jit);
     }
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    str_c(_jit, rn(reg), r0);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    str_c(_jit, jit_gpr_regno(reg), r0);
     unget_temp_gpr(_jit);
   }
 }
@@ -2060,8 +2060,8 @@ sti_s(jit_state_t *_jit, jit_word_t i0, int32_t r0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    str_s(_jit, rn(reg), r0);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    str_s(_jit, jit_gpr_regno(reg), r0);
     unget_temp_gpr(_jit);
   }
 }
@@ -2083,8 +2083,8 @@ sti_i(jit_state_t *_jit, jit_word_t i0, int32_t r0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    str_i(_jit, rn(reg), r0);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    str_i(_jit, jit_gpr_regno(reg), r0);
     unget_temp_gpr(_jit);
   }
 }
@@ -2107,8 +2107,8 @@ sti_l(jit_state_t *_jit, jit_word_t i0, int32_t r0)
     rx(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    str_l(_jit, rn(reg), r0);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    str_l(_jit, jit_gpr_regno(reg), r0);
     unget_temp_gpr(_jit);
   }
 }
@@ -2119,8 +2119,8 @@ stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
 {
 #if __X64_32
   jit_gpr_t reg = get_temp_gpr(_jit);
-  addr(_jit, rn(reg), r0, r1);
-  str_c(_jit, rn(reg), r2);
+  addr(_jit, jit_gpr_regno(reg), r0, r1);
+  str_c(_jit, jit_gpr_regno(reg), r2);
   unget_temp_gpr(_jit);
 #else
   if (reg8_p(r2)) {
@@ -2129,10 +2129,10 @@ stxr_c(jit_state_t *_jit, int32_t r0, int32_t r1, 
int32_t r2)
     rx(_jit, r2, 0, r0, r1, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movr(_jit, rn(reg), r2);
-    rex(_jit, 0, 0, rn(reg), r1, r0);
+    movr(_jit, jit_gpr_regno(reg), r2);
+    rex(_jit, 0, 0, jit_gpr_regno(reg), r1, r0);
     ic(_jit, 0x88);
-    rx(_jit, rn(reg), 0, r0, r1, _SCL1);
+    rx(_jit, jit_gpr_regno(reg), 0, r0, r1, _SCL1);
     unget_temp_gpr(_jit);
   }
 #endif
@@ -2148,16 +2148,16 @@ stxi_c(jit_state_t *_jit, jit_word_t i0, int32_t r0, 
int32_t r1)
       rx(_jit, r1, i0, r0, _NOREG, _SCL1);
     } else {
       jit_gpr_t reg = get_temp_gpr(_jit);
-      movr(_jit, rn(reg), r1);
-      rex(_jit, 0, 0, rn(reg), _NOREG, r0);
+      movr(_jit, jit_gpr_regno(reg), r1);
+      rex(_jit, 0, 0, jit_gpr_regno(reg), _NOREG, r0);
       ic(_jit, 0x88);
-      rx(_jit, rn(reg), i0, r0, _NOREG, _SCL1);
+      rx(_jit, jit_gpr_regno(reg), i0, r0, _NOREG, _SCL1);
       unget_temp_gpr(_jit);
     }
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    stxr_c(_jit, rn(reg), r0, r1);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    stxr_c(_jit, jit_gpr_regno(reg), r0, r1);
     unget_temp_gpr(_jit);
   }
 }
@@ -2167,8 +2167,8 @@ stxr_s(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
 {
 #if __X64_32
   jit_gpr_t reg = get_temp_gpr(_jit);
-  addr(_jit, rn(reg), r0, r1);
-  str_s(_jit, rn(reg), r2);
+  addr(_jit, jit_gpr_regno(reg), r0, r1);
+  str_s(_jit, jit_gpr_regno(reg), r2);
   unget_temp_gpr(_jit);
 #else
   ic(_jit, 0x66);
@@ -2188,8 +2188,8 @@ stxi_s(jit_state_t *_jit, jit_word_t i0, int32_t r0, 
int32_t r1)
     rx(_jit, r1, i0, r0, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    stxr_s(_jit, rn(reg), r0, r1);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    stxr_s(_jit, jit_gpr_regno(reg), r0, r1);
     unget_temp_gpr(_jit);
   }
 }
@@ -2199,8 +2199,8 @@ stxr_i(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
 {
 #if __X64_32
   jit_gpr_t reg = get_temp_gpr(_jit);
-  addr(_jit, rn(reg), r0, r1);
-  str_i(rn(reg), r2);
+  addr(_jit, jit_gpr_regno(reg), r0, r1);
+  str_i(jit_gpr_regno(reg), r2);
   unget_temp_gpr(_jit);
 #else
   rex(_jit, 0, 0, r2, r1, r0);
@@ -2218,8 +2218,8 @@ stxi_i(jit_state_t *_jit, jit_word_t i0, int32_t r0, 
int32_t r1)
     rx(_jit, r1, i0, r0, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    stxr_i(_jit, rn(reg), r0, r1);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    stxr_i(_jit, jit_gpr_regno(reg), r0, r1);
     unget_temp_gpr(_jit);
   }
 }
@@ -2242,8 +2242,8 @@ stxi_l(jit_state_t *_jit, jit_word_t i0, int32_t r0, 
int32_t r1)
     rx(_jit, r1, i0, r0, _NOREG, _SCL1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    stxr_l(_jit, rn(reg), r0, r1);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    stxr_l(_jit, jit_gpr_regno(reg), r0, r1);
     unget_temp_gpr(_jit);
   }
 }
@@ -2439,8 +2439,8 @@ bmsi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     testi(_jit, r0, i1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i1);
-    testr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i1);
+    testr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
   return jnz(_jit);
@@ -2460,8 +2460,8 @@ bmci(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     testi(_jit, r0, i1);
   } else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i1);
-    testr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i1);
+    testr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
   return jz(_jit);
@@ -2482,9 +2482,9 @@ boaddi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     return jo(_jit);
   }
   jit_gpr_t reg = get_temp_gpr(_jit);
-  movi(_jit, rn(reg), i1);
+  movi(_jit, jit_gpr_regno(reg), i1);
   unget_temp_gpr(_jit);
-  return boaddr(_jit, r0, rn(reg));
+  return boaddr(_jit, r0, jit_gpr_regno(reg));
 }
 
 static jit_reloc_t
@@ -2502,9 +2502,9 @@ boaddi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     return jc(_jit);
   }
   jit_gpr_t reg = get_temp_gpr(_jit);
-  movi(_jit, rn(reg), i1);
+  movi(_jit, jit_gpr_regno(reg), i1);
   unget_temp_gpr(_jit);
-  return boaddr_u(_jit, r0, rn(reg));
+  return boaddr_u(_jit, r0, jit_gpr_regno(reg));
 }
 
 static jit_reloc_t
@@ -2522,9 +2522,9 @@ bxaddi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     return jno(_jit);
   }
   jit_gpr_t reg = get_temp_gpr(_jit);
-  movi(_jit, rn(reg), i1);
+  movi(_jit, jit_gpr_regno(reg), i1);
   unget_temp_gpr(_jit);
-  return bxaddr(_jit, r0, rn(reg));
+  return bxaddr(_jit, r0, jit_gpr_regno(reg));
 }
 
 static jit_reloc_t
@@ -2542,9 +2542,9 @@ bxaddi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     return jnc(_jit);
   }
   jit_gpr_t reg = get_temp_gpr(_jit);
-  movi(_jit, rn(reg), i1);
+  movi(_jit, jit_gpr_regno(reg), i1);
   unget_temp_gpr(_jit);
-  return bxaddr_u(_jit, r0, rn(reg));
+  return bxaddr_u(_jit, r0, jit_gpr_regno(reg));
 }
 
 static jit_reloc_t
@@ -2562,9 +2562,9 @@ bosubi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     return jo(_jit);
   }
   jit_gpr_t reg = get_temp_gpr(_jit);
-  movi(_jit, rn(reg), i1);
+  movi(_jit, jit_gpr_regno(reg), i1);
   unget_temp_gpr(_jit);
-  return bosubr(_jit, r0, rn(reg));
+  return bosubr(_jit, r0, jit_gpr_regno(reg));
 }
 
 static jit_reloc_t
@@ -2582,9 +2582,9 @@ bosubi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     return jc(_jit);
   }
   jit_gpr_t reg = get_temp_gpr(_jit);
-  movi(_jit, rn(reg), i1);
+  movi(_jit, jit_gpr_regno(reg), i1);
   unget_temp_gpr(_jit);
-  return bosubr_u(_jit, r0, rn(reg));
+  return bosubr_u(_jit, r0, jit_gpr_regno(reg));
 }
 
 static jit_reloc_t
@@ -2602,9 +2602,9 @@ bxsubi(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     return jno(_jit);
   }
   jit_gpr_t reg = get_temp_gpr(_jit);
-  movi(_jit, rn(reg), i1);
+  movi(_jit, jit_gpr_regno(reg), i1);
   unget_temp_gpr(_jit);
-  return bxsubr(_jit, r0, rn(reg));
+  return bxsubr(_jit, r0, jit_gpr_regno(reg));
 }
 
 static jit_reloc_t
@@ -2622,9 +2622,9 @@ bxsubi_u(jit_state_t *_jit, int32_t r0, jit_word_t i1)
     return jnc(_jit);
   }
   jit_gpr_t reg = get_temp_gpr(_jit);
-  movi(_jit, rn(reg), i1);
+  movi(_jit, jit_gpr_regno(reg), i1);
   unget_temp_gpr(_jit);
-  return bxsubr_u(_jit, r0, rn(reg));
+  return bxsubr_u(_jit, r0, jit_gpr_regno(reg));
 }
 
 static void
@@ -2647,8 +2647,8 @@ calli(jit_state_t *_jit, jit_word_t i0)
   else
     {
       jit_gpr_t reg = get_temp_gpr(_jit);
-      jit_patch_there(_jit, mov_addr(_jit, rn(reg)), (void*)i0);
-      callr(_jit, rn(reg));
+      jit_patch_there(_jit, mov_addr(_jit, jit_gpr_regno(reg)), (void*)i0);
+      callr(_jit, jit_gpr_regno(reg));
       unget_temp_gpr(_jit);
     }
 }
@@ -2673,8 +2673,8 @@ jmpi(jit_state_t *_jit, jit_word_t i0)
   else
     {
       jit_gpr_t reg = get_temp_gpr(_jit);
-      jit_patch_there(_jit, mov_addr(_jit, rn(reg)), (void*)i0);
-      jmpr(_jit, rn(reg));
+      jit_patch_there(_jit, mov_addr(_jit, jit_gpr_regno(reg)), (void*)i0);
+      jmpr(_jit, jit_gpr_regno(reg));
       unget_temp_gpr(_jit);
     }
 }
@@ -2716,34 +2716,34 @@ reti(jit_state_t *_jit, jit_word_t i0)
 static void
 retval_c(jit_state_t *_jit, int32_t r0)
 {
-  extr_c(_jit, r0, rn(JIT_RET));
+  extr_c(_jit, r0, jit_gpr_regno(JIT_RET));
 }
 
 static void
 retval_uc(jit_state_t *_jit, int32_t r0)
 {
-  extr_uc(_jit, r0, rn(JIT_RET));
+  extr_uc(_jit, r0, jit_gpr_regno(JIT_RET));
 }
 
 static void
 retval_s(jit_state_t *_jit, int32_t r0)
 {
-  extr_s(_jit, r0, rn(JIT_RET));
+  extr_s(_jit, r0, jit_gpr_regno(JIT_RET));
 }
 
 static void
 retval_us(jit_state_t *_jit, int32_t r0)
 {
-  extr_us(_jit, r0, rn(JIT_RET));
+  extr_us(_jit, r0, jit_gpr_regno(JIT_RET));
 }
 
 static void
 retval_i(jit_state_t *_jit, int32_t r0)
 {
 #if __X32 || __X64_32
-  movr(_jit, r0, rn(JIT_RET));
+  movr(_jit, r0, jit_gpr_regno(JIT_RET));
 #else
-  extr_i(_jit, r0, rn(JIT_RET));
+  extr_i(_jit, r0, jit_gpr_regno(JIT_RET));
 #endif
 }
 
@@ -2751,12 +2751,12 @@ retval_i(jit_state_t *_jit, int32_t r0)
 static void
 retval_ui(jit_state_t *_jit, int32_t r0)
 {
-  extr_ui(_jit, r0, rn(JIT_RET));
+  extr_ui(_jit, r0, jit_gpr_regno(JIT_RET));
 }
 
 static void
 retval_l(jit_state_t *_jit, int32_t r0)
 {
-  movr(_jit, r0, rn(JIT_RET));
+  movr(_jit, r0, jit_gpr_regno(JIT_RET));
 }
 #endif
diff --git a/lightening/x86-sse.c b/lightening/x86-sse.c
index 370f5f4..bc6c060 100644
--- a/lightening/x86-sse.c
+++ b/lightening/x86-sse.c
@@ -173,8 +173,8 @@ static void
 pushr_d(jit_state_t *_jit, int32_t r0)
 {
   jit_gpr_t tmp = get_temp_gpr(_jit);
-  movdqxr(_jit, rn(tmp), r0);
-  pushr(_jit, rn(tmp));
+  movdqxr(_jit, jit_gpr_regno(tmp), r0);
+  pushr(_jit, jit_gpr_regno(tmp));
   unget_temp_gpr(_jit);
 }
 
@@ -182,8 +182,8 @@ static void
 popr_d(jit_state_t *_jit, int32_t r0)
 {
   jit_gpr_t tmp = get_temp_gpr(_jit);
-  popr(_jit, rn(tmp));
-  ssexr(_jit, 0x66, X86_SSE_G2X, r0, rn(tmp));
+  popr(_jit, jit_gpr_regno(tmp));
+  ssexr(_jit, 0x66, X86_SSE_G2X, r0, jit_gpr_regno(tmp));
   unget_temp_gpr(_jit);
 }
 
@@ -379,8 +379,8 @@ movi_f(jit_state_t *_jit, int32_t r0, jit_float32_t i0)
     xorpsr(_jit, r0, r0);
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), data.i);
-    movdlxr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), data.i);
+    movdlxr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -400,14 +400,14 @@ movi_d(jit_state_t *_jit, int32_t r0, jit_float64_t i0)
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
 #if __X64 && !__X64_32
-    movi(_jit, rn(reg), data.w);
-    movdqxr(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), data.w);
+    movdqxr(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
 #else
-    movi(_jit, rn(reg), data.ii[0]);
-    stxi_i(CVT_OFFSET, _RBP_REGNO, rn(reg));
-    movi(_jit, rn(reg), data.ii[1]);
-    stxi_i(CVT_OFFSET + 4, _RBP_REGNO, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), data.ii[0]);
+    stxi_i(CVT_OFFSET, _RBP_REGNO, jit_gpr_regno(reg));
+    movi(_jit, jit_gpr_regno(reg), data.ii[1]);
+    stxi_i(CVT_OFFSET + 4, _RBP_REGNO, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
     ldxi_d(_jit, r0, _RBP_REGNO, CVT_OFFSET);
 #endif
@@ -418,7 +418,7 @@ static void
 retval_f(jit_state_t *_jit, int32_t r0)
 {
 #if __X64
-  movr_f(_jit, r0, rn(JIT_FRET));
+  movr_f(_jit, r0, jit_fpr_regno(JIT_FRET));
 #endif
 }
 
@@ -426,21 +426,21 @@ static void
 retval_d(jit_state_t *_jit, int32_t r0)
 {
 #if __X64
-  movr_d(_jit, r0, rn(JIT_FRET));
+  movr_d(_jit, r0, jit_fpr_regno(JIT_FRET));
 #endif
 }
 
 static void
 retr_f(jit_state_t *_jit, int32_t u)
 {
-  movr_f(_jit, rn(JIT_FRET), u);
+  movr_f(_jit, jit_fpr_regno(JIT_FRET), u);
   ret(_jit);
 }
 
 static void
 retr_d(jit_state_t *_jit, int32_t u)
 {
-  movr_d(_jit, rn(JIT_FRET), u);
+  movr_d(_jit, jit_fpr_regno(JIT_FRET), u);
   ret(_jit);
 }
 
@@ -477,9 +477,9 @@ subr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
     subssr(_jit, r0, r2);
   else if (r0 == r2) {
     jit_fpr_t reg = get_temp_xpr(_jit);
-    movr_f(_jit, rn(reg), r0);
+    movr_f(_jit, jit_fpr_regno(reg), r0);
     movr_f(_jit, r0, r1);
-    subssr(_jit, r0, rn(reg));
+    subssr(_jit, r0, jit_fpr_regno(reg));
     unget_temp_xpr(_jit);
   }
   else {
@@ -495,9 +495,9 @@ subr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
     subsdr(_jit, r0, r2);
   else if (r0 == r2) {
     jit_fpr_t reg = get_temp_xpr(_jit);
-    movr_d(_jit, rn(reg), r0);
+    movr_d(_jit, jit_fpr_regno(reg), r0);
     movr_d(_jit, r0, r1);
-    subsdr(_jit, r0, rn(reg));
+    subsdr(_jit, r0, jit_fpr_regno(reg));
     unget_temp_xpr(_jit);
   }
   else {
@@ -539,9 +539,9 @@ divr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
     divssr(_jit, r0, r2);
   else if (r0 == r2) {
     jit_fpr_t reg = get_temp_xpr(_jit);
-    movr_f(_jit, rn(reg), r0);
+    movr_f(_jit, jit_fpr_regno(reg), r0);
     movr_f(_jit, r0, r1);
-    divssr(_jit, r0, rn(reg));
+    divssr(_jit, r0, jit_fpr_regno(reg));
     unget_temp_xpr(_jit);
   }
   else {
@@ -557,9 +557,9 @@ divr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
     divsdr(_jit, r0, r2);
   else if (r0 == r2) {
     jit_fpr_t reg = get_temp_xpr(_jit);
-    movr_d(_jit, rn(reg), r0);
+    movr_d(_jit, jit_fpr_regno(reg), r0);
     movr_d(_jit, r0, r1);
-    divsdr(_jit, r0, rn(reg));
+    divsdr(_jit, r0, jit_fpr_regno(reg));
     unget_temp_xpr(_jit);
   }
   else {
@@ -573,9 +573,9 @@ absr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
 {
   if (r0 == r1) {
     jit_fpr_t reg = get_temp_xpr(_jit);
-    pcmpeqlr(_jit, rn(reg), rn(reg));
-    psrl(_jit, rn(reg), 1);
-    andpsr(_jit, r0, rn(reg));
+    pcmpeqlr(_jit, jit_fpr_regno(reg), jit_fpr_regno(reg));
+    psrl(_jit, jit_fpr_regno(reg), 1);
+    andpsr(_jit, r0, jit_fpr_regno(reg));
     unget_temp_xpr(_jit);
   }
   else {
@@ -590,9 +590,9 @@ absr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
 {
   if (r0 == r1) {
     jit_fpr_t reg = get_temp_xpr(_jit);
-    pcmpeqlr(_jit, rn(reg), rn(reg));
-    psrq(_jit, rn(reg), 1);
-    andpdr(_jit, r0, rn(reg));
+    pcmpeqlr(_jit, jit_fpr_regno(reg), jit_fpr_regno(reg));
+    psrq(_jit, jit_fpr_regno(reg), 1);
+    andpdr(_jit, r0, jit_fpr_regno(reg));
     unget_temp_xpr(_jit);
   }
   else {
@@ -606,14 +606,14 @@ static void
 negr_f(jit_state_t *_jit, int32_t r0, int32_t r1)
 {
   jit_gpr_t ireg = get_temp_gpr(_jit);
-  imovi(_jit, rn(ireg), 0x80000000);
+  imovi(_jit, jit_gpr_regno(ireg), 0x80000000);
   if (r0 == r1) {
     jit_fpr_t freg = get_temp_xpr(_jit);
-    movdlxr(_jit, rn(freg), rn(ireg));
-    xorpsr(_jit, r0, rn(freg));
+    movdlxr(_jit, jit_fpr_regno(freg), jit_gpr_regno(ireg));
+    xorpsr(_jit, r0, jit_fpr_regno(freg));
     unget_temp_xpr(_jit);
   } else {
-    movdlxr(_jit, r0, rn(ireg));
+    movdlxr(_jit, r0, jit_gpr_regno(ireg));
     xorpsr(_jit, r0, r1);
   }
   unget_temp_gpr(_jit);
@@ -623,15 +623,15 @@ static void
 negr_d(jit_state_t *_jit, int32_t r0, int32_t r1)
 {
   jit_gpr_t ireg = get_temp_gpr(_jit);
-  imovi(_jit, rn(ireg), 0x80000000);
+  imovi(_jit, jit_gpr_regno(ireg), 0x80000000);
   if (r0 == r1) {
     jit_fpr_t freg = get_temp_xpr(_jit);
-    movdlxr(_jit, rn(freg), rn(ireg));
-    pslq(_jit, rn(freg), 32);
-    xorpdr(_jit, r0, rn(freg));
+    movdlxr(_jit, jit_fpr_regno(freg), jit_gpr_regno(ireg));
+    pslq(_jit, jit_fpr_regno(freg), 32);
+    xorpdr(_jit, r0, jit_fpr_regno(freg));
     unget_temp_xpr(_jit);
   } else {
-    movdlxr(_jit, r0, rn(ireg));
+    movdlxr(_jit, r0, jit_gpr_regno(ireg));
     pslq(_jit, r0, 32);
     xorpdr(_jit, r0, r1);
   }
@@ -653,8 +653,8 @@ ldi_f(jit_state_t *_jit, int32_t r0, jit_word_t i0)
     movssmr(_jit, i0, _NOREG, _NOREG, _SCL1, r0);
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldr_f(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldr_f(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -664,8 +664,8 @@ ldxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
 {
 #if __X64_32
   jit_gpr_t reg = get_temp_gpr(_jit);
-  addr(_jit, rn(reg), r1, r2);
-  ldr_f(_jit, r0, rn(reg));
+  addr(_jit, jit_gpr_regno(reg), r1, r2);
+  ldr_f(_jit, r0, jit_gpr_regno(reg));
   unget_temp_gpr(_jit);
 #else
   movssmr(_jit, 0, r1, r2, _SCL1, r0);
@@ -680,11 +680,11 @@ ldxi_f(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
 #if __X64_32
-    addi(rn(reg), r1, i0);
-    ldr_f(_jit, r0, rn(reg));
+    addi(jit_gpr_regno(reg), r1, i0);
+    ldr_f(_jit, r0, jit_gpr_regno(reg));
 #else
-    movi(_jit, rn(reg), i0);
-    ldxr_f(_jit, r0, r1, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldxr_f(_jit, r0, r1, jit_gpr_regno(reg));
 #endif
     unget_temp_gpr(_jit);
   }
@@ -697,8 +697,8 @@ sti_f(jit_state_t *_jit, jit_word_t i0, int32_t r0)
     movssrm(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    str_f(_jit, rn(reg), r0);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    str_f(_jit, jit_gpr_regno(reg), r0);
     unget_temp_gpr(_jit);
   }
 }
@@ -708,8 +708,8 @@ stxr_f(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
 {
 #if __X64_32
   jit_gpr_t reg = get_temp_gpr(_jit);
-  addr(_jit, rn(reg), r0, r1);
-  str_f(_jit, rn(reg), r2);
+  addr(_jit, jit_gpr_regno(reg), r0, r1);
+  str_f(_jit, jit_gpr_regno(reg), r2);
   unget_temp_gpr(_jit);
 #else
   movssrm(_jit, r2, 0, r0, r1, _SCL1);
@@ -724,11 +724,11 @@ stxi_f(jit_state_t *_jit, jit_word_t i0, int32_t r0, 
int32_t r1)
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
 #if __X64_32
-    addi(rn(reg), r0, i0);
-    str_f(_jit, rn(reg), r1);
+    addi(jit_gpr_regno(reg), r0, i0);
+    str_f(_jit, jit_gpr_regno(reg), r1);
 #else
-    movi(_jit, rn(reg), i0);
-    stxr_f(_jit, rn(reg), r0, r1);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    stxr_f(_jit, jit_gpr_regno(reg), r0, r1);
 #endif
     unget_temp_gpr(_jit);
   }
@@ -847,8 +847,8 @@ ldi_d(jit_state_t *_jit, int32_t r0, jit_word_t i0)
     movsdmr(_jit, i0, _NOREG, _NOREG, _SCL1, r0);
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    ldr_d(_jit, r0, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldr_d(_jit, r0, jit_gpr_regno(reg));
     unget_temp_gpr(_jit);
   }
 }
@@ -858,8 +858,8 @@ ldxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
 {
 #if __X64_32
   jit_gpr_t reg = get_temp_gpr(_jit);
-  addr(_jit, rn(reg), r1, r2);
-  ldr_d(_jit, r0, rn(reg));
+  addr(_jit, jit_gpr_regno(reg), r1, r2);
+  ldr_d(_jit, r0, jit_gpr_regno(reg));
   unget_temp_gpr(_jit);
 #else
   movsdmr(_jit, 0, r1, r2, _SCL1, r0);
@@ -874,11 +874,11 @@ ldxi_d(jit_state_t *_jit, int32_t r0, int32_t r1, 
jit_word_t i0)
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
 #if __X64_32
-    addi(rn(reg), r1, i0);
-    ldr_d(_jit, r0, rn(reg));
+    addi(jit_gpr_regno(reg), r1, i0);
+    ldr_d(_jit, r0, jit_gpr_regno(reg));
 #else
-    movi(_jit, rn(reg), i0);
-    ldxr_d(_jit, r0, r1, rn(reg));
+    movi(_jit, jit_gpr_regno(reg), i0);
+    ldxr_d(_jit, r0, r1, jit_gpr_regno(reg));
 #endif
     unget_temp_gpr(_jit);
   }
@@ -891,8 +891,8 @@ sti_d(jit_state_t *_jit, jit_word_t i0, int32_t r0)
     movsdrm(_jit, r0, i0, _NOREG, _NOREG, _SCL1);
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
-    movi(_jit, rn(reg), i0);
-    str_d(_jit, rn(reg), r0);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    str_d(_jit, jit_gpr_regno(reg), r0);
     unget_temp_gpr(_jit);
   }
 }
@@ -902,8 +902,8 @@ stxr_d(jit_state_t *_jit, int32_t r0, int32_t r1, int32_t 
r2)
 {
 #if __X64_32
   jit_gpr_t reg = get_temp_gpr(_jit);
-  addr(_jit, rn(reg), r0, r1);
-  str_d(_jit, rn(reg), r2);
+  addr(_jit, jit_gpr_regno(reg), r0, r1);
+  str_d(_jit, jit_gpr_regno(reg), r2);
   unget_temp_gpr(_jit);
 #else
   movsdrm(_jit, r2, 0, r0, r1, _SCL1);
@@ -918,11 +918,11 @@ stxi_d(jit_state_t *_jit, jit_word_t i0, int32_t r0, 
int32_t r1)
   else {
     jit_gpr_t reg = get_temp_gpr(_jit);
 #if __X64_32
-    addi(rn(reg), r0, i0);
-    str_d(_jit, rn(reg), r1);
+    addi(jit_gpr_regno(reg), r0, i0);
+    str_d(_jit, jit_gpr_regno(reg), r1);
 #else
-    movi(_jit, rn(reg), i0);
-    stxr_d(_jit, rn(reg), r0, r1);
+    movi(_jit, jit_gpr_regno(reg), i0);
+    stxr_d(_jit, jit_gpr_regno(reg), r0, r1);
 #endif
     unget_temp_gpr(_jit);
   }
diff --git a/lightening/x86.c b/lightening/x86.c
index ad0e848..144816d 100644
--- a/lightening/x86.c
+++ b/lightening/x86.c
@@ -617,7 +617,7 @@ jit_move_operands(jit_state_t *_jit, jit_operand_t *dst, 
jit_operand_t *src,
     for (size_t i = 0; i < argc; i++) {
       switch (src[i].kind) {
       case JIT_OPERAND_KIND_GPR:
-        src_gprs |= 1ULL << rn(src[i].loc.gpr.gpr);
+        src_gprs |= 1ULL << jit_gpr_regno(src[i].loc.gpr.gpr);
         break;
       case JIT_OPERAND_KIND_FPR:
       case JIT_OPERAND_KIND_IMM:
@@ -629,20 +629,20 @@ jit_move_operands(jit_state_t *_jit, jit_operand_t *dst, 
jit_operand_t *src,
       switch (dst[i].kind) {
       case JIT_OPERAND_KIND_GPR: {
         ASSERT(dst[i].loc.gpr.addend == 0);
-        uint64_t bit = 1ULL << rn(dst[i].loc.gpr.gpr);
+        uint64_t bit = 1ULL << jit_gpr_regno(dst[i].loc.gpr.gpr);
         ASSERT((dst_gprs & bit) == 0);
         dst_gprs |= bit;
         break;
       }
       case JIT_OPERAND_KIND_FPR: {
-        uint64_t bit = 1ULL << rn(dst[i].loc.fpr);
+        uint64_t bit = 1ULL << jit_fpr_regno(dst[i].loc.fpr);
         ASSERT((dst_fprs & bit) == 0);
         dst_fprs |= bit;
         break;
       }
       case JIT_OPERAND_KIND_MEM: {
         ASSERT(dst[i].loc.mem.addend == 0);
-        uint64_t bit = 1ULL << rn(dst[i].loc.mem.base);
+        uint64_t bit = 1ULL << jit_gpr_regno(dst[i].loc.mem.base);
         dst_mem_base_gprs |= bit;
         break;
       }
@@ -830,7 +830,7 @@ jit_callr(jit_state_t *_jit, jit_gpr_t f, size_t argc, 
jit_operand_t args[])
 {
   size_t spill_size = prepare_call_args(_jit, argc, args);
 
-  callr(_jit, rn(f));
+  callr(_jit, jit_gpr_regno(f));
 
   if (spill_size)
     jit_addi(_jit, JIT_SP, JIT_SP, spill_size);
diff --git a/lightening/x86.h b/lightening/x86.h
index c2a2500..47a8750 100644
--- a/lightening/x86.h
+++ b/lightening/x86.h
@@ -48,11 +48,11 @@
 #  define _RAX     JIT_GPR(0)
 #  define _RCX     JIT_GPR(1)
 #  define _RDX     JIT_GPR(2)
-#  define _RBX     JIT_GPR(3 | jit_class_sav)
-#  define _RSP     JIT_GPR(4 | jit_class_sav)
-#  define _RBP     JIT_GPR(5 | jit_class_sav)
-#  define _RSI     JIT_GPR(6 | jit_class_sav)
-#  define _RDI     JIT_GPR(7 | jit_class_sav)
+#  define _RBX     JIT_CALLEE_SAVE_GPR(3)
+#  define _RSP     JIT_CALLEE_SAVE_GPR(4)
+#  define _RBP     JIT_CALLEE_SAVE_GPR(5)
+#  define _RSI     JIT_CALLEE_SAVE_GPR(6)
+#  define _RDI     JIT_CALLEE_SAVE_GPR(7)
 #  define _XMM0    JIT_FPR(0)
 #  define _XMM1    JIT_FPR(1)
 #  define _XMM2    JIT_FPR(2)
@@ -65,52 +65,52 @@
 #  define _RAX     JIT_GPR(0)
 #  define _RCX     JIT_GPR(1)
 #  define _RDX     JIT_GPR(2)
-#  define _RBX     JIT_GPR(3 | jit_class_sav)
-#  define _RSP     JIT_GPR(4 | jit_class_sav)
-#  define _RBP     JIT_GPR(5 | jit_class_sav)
-#  define _RSI     JIT_GPR(6 | jit_class_sav)
-#  define _RDI     JIT_GPR(7 | jit_class_sav)
+#  define _RBX     JIT_CALLEE_SAVE_GPR(3)
+#  define _RSP     JIT_CALLEE_SAVE_GPR(4)
+#  define _RBP     JIT_CALLEE_SAVE_GPR(5)
+#  define _RSI     JIT_CALLEE_SAVE_GPR(6)
+#  define _RDI     JIT_CALLEE_SAVE_GPR(7)
 #  define _R8      JIT_GPR(8)
 #  define _R9      JIT_GPR(9)
 #  define _R10     JIT_GPR(10)
 #  define _R11     JIT_GPR(11)
-#  define _R12     JIT_GPR(12 | jit_class_sav)
-#  define _R13     JIT_GPR(13 | jit_class_sav)
-#  define _R14     JIT_GPR(14 | jit_class_sav)
-#  define _R15     JIT_GPR(15 | jit_class_sav)
+#  define _R12     JIT_CALLEE_SAVE_GPR(12)
+#  define _R13     JIT_CALLEE_SAVE_GPR(13)
+#  define _R14     JIT_CALLEE_SAVE_GPR(14)
+#  define _R15     JIT_CALLEE_SAVE_GPR(15)
 #  define _XMM0    JIT_FPR(0)
 #  define _XMM1    JIT_FPR(1)
 #  define _XMM2    JIT_FPR(2)
 #  define _XMM3    JIT_FPR(3)
 #  define _XMM4    JIT_FPR(4)
 #  define _XMM5    JIT_FPR(5)
-#  define _XMM6    JIT_FPR(6 | jit_class_sav)
-#  define _XMM7    JIT_FPR(7 | jit_class_sav)
-#  define _XMM8    JIT_FPR(8 | jit_class_sav)
-#  define _XMM9    JIT_FPR(9 | jit_class_sav)
-#  define _XMM10   JIT_FPR(10 | jit_class_sav)
-#  define _XMM11   JIT_FPR(11 | jit_class_sav)
-#  define _XMM12   JIT_FPR(12 | jit_class_sav)
-#  define _XMM13   JIT_FPR(13 | jit_class_sav)
-#  define _XMM14   JIT_FPR(14 | jit_class_sav)
-#  define _XMM15   JIT_FPR(15 | jit_class_sav)
+#  define _XMM6    JIT_CALLEE_SAVE_FPR(6)
+#  define _XMM7    JIT_CALLEE_SAVE_FPR(7)
+#  define _XMM8    JIT_CALLEE_SAVE_FPR(8)
+#  define _XMM9    JIT_CALLEE_SAVE_FPR(9)
+#  define _XMM10   JIT_CALLEE_SAVE_FPR(10)
+#  define _XMM11   JIT_CALLEE_SAVE_FPR(11)
+#  define _XMM12   JIT_CALLEE_SAVE_FPR(12)
+#  define _XMM13   JIT_CALLEE_SAVE_FPR(13)
+#  define _XMM14   JIT_CALLEE_SAVE_FPR(14)
+#  define _XMM15   JIT_CALLEE_SAVE_FPR(15)
 #else
 #  define _RAX     JIT_GPR(0)
 #  define _RCX     JIT_GPR(1)
 #  define _RDX     JIT_GPR(2)
-#  define _RBX     JIT_GPR(3 | jit_class_sav)
-#  define _RSP     JIT_GPR(4 | jit_class_sav)
-#  define _RBP     JIT_GPR(5 | jit_class_sav)
+#  define _RBX     JIT_CALLEE_SAVE_GPR(3)
+#  define _RSP     JIT_CALLEE_SAVE_GPR(4)
+#  define _RBP     JIT_CALLEE_SAVE_GPR(5)
 #  define _RSI     JIT_GPR(6)
 #  define _RDI     JIT_GPR(7)
 #  define _R8      JIT_GPR(8)
 #  define _R9      JIT_GPR(9)
 #  define _R10     JIT_GPR(10)
 #  define _R11     JIT_GPR(11)
-#  define _R12     JIT_GPR(12 | jit_class_sav)
-#  define _R13     JIT_GPR(13 | jit_class_sav)
-#  define _R14     JIT_GPR(14 | jit_class_sav)
-#  define _R15     JIT_GPR(15 | jit_class_sav)
+#  define _R12     JIT_CALLEE_SAVE_GPR(12)
+#  define _R13     JIT_CALLEE_SAVE_GPR(13)
+#  define _R14     JIT_CALLEE_SAVE_GPR(14)
+#  define _R15     JIT_CALLEE_SAVE_GPR(15)
 #  define _XMM0    JIT_FPR(0)
 #  define _XMM1    JIT_FPR(1)
 #  define _XMM2    JIT_FPR(2)
diff --git a/tests/qdivr.c b/tests/qdivr.c
index d54c3c1..b4dd8f6 100644
--- a/tests/qdivr.c
+++ b/tests/qdivr.c
@@ -3,14 +3,14 @@
 static void
 maybe_save(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_gpr_is_callee_save (j, reg))
+  if (jit_gpr_is_callee_save (reg))
     jit_pushr(j, reg);
 }    
 
 static void
 maybe_restore(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_gpr_is_callee_save (j, reg))
+  if (jit_gpr_is_callee_save (reg))
     jit_popr(j, reg);
 }    
 
diff --git a/tests/qdivr_u.c b/tests/qdivr_u.c
index 0471e9e..30849bd 100644
--- a/tests/qdivr_u.c
+++ b/tests/qdivr_u.c
@@ -3,14 +3,14 @@
 static void
 maybe_save(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_gpr_is_callee_save (j, reg))
+  if (jit_gpr_is_callee_save (reg))
     jit_pushr(j, reg);
 }    
 
 static void
 maybe_restore(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_gpr_is_callee_save (j, reg))
+  if (jit_gpr_is_callee_save (reg))
     jit_popr(j, reg);
 }    
 
diff --git a/tests/qmulr.c b/tests/qmulr.c
index 68a2f40..9d0b232 100644
--- a/tests/qmulr.c
+++ b/tests/qmulr.c
@@ -3,14 +3,14 @@
 static void
 maybe_save(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_gpr_is_callee_save (j, reg))
+  if (jit_gpr_is_callee_save (reg))
     jit_pushr(j, reg);
 }    
 
 static void
 maybe_restore(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_gpr_is_callee_save (j, reg))
+  if (jit_gpr_is_callee_save (reg))
     jit_popr(j, reg);
 }    
 
diff --git a/tests/qmulr_u.c b/tests/qmulr_u.c
index f3724e5..741ea81 100644
--- a/tests/qmulr_u.c
+++ b/tests/qmulr_u.c
@@ -3,14 +3,14 @@
 static void
 maybe_save(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_gpr_is_callee_save (j, reg))
+  if (jit_gpr_is_callee_save (reg))
     jit_pushr(j, reg);
 }    
 
 static void
 maybe_restore(jit_state_t *j, jit_gpr_t reg)
 {
-  if (jit_gpr_is_callee_save (j, reg))
+  if (jit_gpr_is_callee_save (reg))
     jit_popr(j, reg);
 }    
 



reply via email to

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