guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 261/437: MIPS: Build and pass all test cases on mips64.


From: Andy Wingo
Subject: [Guile-commits] 261/437: MIPS: Build and pass all test cases on mips64.
Date: Mon, 2 Jul 2018 05:14:33 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 52bfc671928047b323d7646352f2f27500d56e3b
Author: pcpa <address@hidden>
Date:   Fri Oct 4 00:01:31 2013 -0300

    MIPS: Build and pass all test cases on mips64.
    
        * include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
        lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and
        pass all test cases on Irix big endian mips using
        the 64 bit abi.
---
 ChangeLog                    |   7 +
 include/lightning/jit_mips.h |   5 +-
 lib/jit_mips-cpu.c           | 581 ++++++++++++++++++++++++-------------------
 lib/jit_mips-sz.c            | 358 +++++++++++++++++++++++++-
 lib/jit_mips.c               |   2 +-
 size.c                       |  14 +-
 6 files changed, 704 insertions(+), 263 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d93a34e..f6fb8c4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2013-10-03 Paulo Andrade <address@hidden>
+
+       * include/lightning/jit_mips.h, lib/jit_mips-cpu.c,
+       lib/jit_mips-sz.c, lib/jit_mips.c, size: Build and
+       pass all test cases on Irix big endian mips using
+       the 64 bit abi.
+
 2013-10-02 Paulo Andrade <address@hidden>
 
        * include/lightning/jit_mips.h: Add proper mips abi detection.
diff --git a/include/lightning/jit_mips.h b/include/lightning/jit_mips.h
index 855e33d..e361c22 100644
--- a/include/lightning/jit_mips.h
+++ b/include/lightning/jit_mips.h
@@ -23,11 +23,8 @@
 #define JIT_HASH_CONSTS                1
 #define JIT_NUM_OPERANDS       3
 
-#if _MIPS_SIM == _ABIN32
+#if _MIPS_SIM != _ABIO32
 #    define NEW_ABI            1
-#elif _MIPS_SIM != _ABIO32
-/* FIXME port to _ABI64 */
-#  error "Unsupported ABI"
 #endif
 
 /*
diff --git a/lib/jit_mips-cpu.c b/lib/jit_mips-cpu.c
index 14b0989..f7f356c 100644
--- a/lib/jit_mips-cpu.c
+++ b/lib/jit_mips-cpu.c
@@ -92,16 +92,16 @@ typedef union {
 #    else
 #      define stack_framesize          112
 #    endif
-#    define ldi(u, v)                  ldi_i(u, v)
-#    define ldxi(u, v, w)              ldxi_i(u, v, w)
-#    define sti(u, v)                  sti_i(u, v)
-#    define stxi(u, v, w)              stxi_i(u, v, w)
+#    define ldi(u,v)                   ldi_i(u,v)
+#    define ldxi(u,v,w)                        ldxi_i(u,v,w)
+#    define sti(u,v)                   sti_i(u,v)
+#    define stxi(u,v,w)                        stxi_i(u,v,w)
 #  else
 #    define stack_framesize            144
-#    define ldi(u, v)                  ldi_l(u, v)
-#    define ldxi(u, v, w)              ldxi_l(u, v, w)
-#    define sti(u, v)                  sti_l(u, v)
-#    define stxi(u, v, w)              stxi_l(u, v, w)
+#    define ldi(u,v)                   ldi_l(u,v)
+#    define ldxi(u,v,w)                        ldxi_l(u,v,w)
+#    define sti(u,v)                   sti_l(u,v)
+#    define stxi(u,v,w)                        stxi_l(u,v,w)
 #  endif
 #  define can_sign_extend_short_p(im)  ((im) >= -32678 && (im) <= 32767)
 #  define can_zero_extend_short_p(im)  ((im) >= 0 && (im) <= 65535)
@@ -295,7 +295,7 @@ typedef union {
 #  define ii(i)                                *_jit->pc.ui++ = i
 static void
 _hrrrit(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
-       jit_int32_t, jit_int32_t);
+       jit_int32_t,jit_int32_t);
 #  define hrrrit(hc,rs,rt,rd,im,tc)    _hrrrit(_jit,hc,rs,rt,rd,im,tc)
 #  define hrrr_t(hc,rs,rt,rd,tc)       hrrrit(hc,rs,rt,rd,0,tc)
 #  define rrr_t(rs,rt,rd,tc)           hrrr_t(0,rs,rt,rd,tc)
@@ -303,44 +303,44 @@ 
_hrrrit(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t,
 static void 
_hrri(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t,jit_int32_t);
 #  define hi(hc,im)                    _hi(_jit,hc,im)
 static void _hi(jit_state_t*,jit_int32_t,jit_int32_t);
-#  define NOP(i0)                      _nop(_jit, i0)
+#  define NOP(i0)                      _nop(_jit,i0)
 static void _nop(jit_state_t*,jit_int32_t);
 #  define h_ri(hc,rt,im)               _hrri(_jit,hc,0,rt,im)
 #  define rrit(rt,rd,im,tc)            _hrrrit(_jit,0,0,rt,rd,im,tc)
 #  define LUI(rt,im)                   h_ri(MIPS_LUI,rt,im)
-#  if __WORDSIZE == 32
-#    define ADDU(rd,rs,rt)             rrr_t(rs,rt,rd,MIPS_ADDU)
-#    define ADDIU(rt,rs,im)            hrri(MIPS_ADDIU,rs,rt,im)
-#    define SUBU(rd,rs,rt)             rrr_t(rs,rt,rd,MIPS_SUBU)
-#    define MULT(rs, rt)               rrr_t(rs,rt,_ZERO_REGNO,MIPS_MULT)
-#    define MULTU(rs, rt)              rrr_t(rs,rt,_ZERO_REGNO,MIPS_MULTU)
-#    define DIV(rs, rt)                        
rrr_t(rs,rt,_ZERO_REGNO,MIPS_DIV)
-#    define DIVU(rs, rt)               rrr_t(rs,rt,_ZERO_REGNO,MIPS_DIVU)
-#    define SLLV(rd,rt,rs)             rrr_t(rs,rt,rd,MIPS_SLLV)
-#    define SLL(rd,rt,sa)              rrit(rt,rd,sa,MIPS_SLL)
-#    define SRAV(rd,rt,rs)             rrr_t(rs,rt,rd,MIPS_SRAV)
-#    define SRA(rd,rt,sa)              rrit(rt,rd,sa,MIPS_SRA)
-#    define SRLV(rd,rt,rs)             rrr_t(rs,rt,rd,MIPS_SRLV)
-#    define SRL(rd,rt,sa)              rrit(rt,rd,sa,MIPS_SRL)
-#    define ROTR(rd,rt,sa)             
hrrrit(MIPS_SPECIAL,1,rt,rd,sa,MIPS_DSRL)
-#    define INS(rt,rs,pos,size)                
hrrrit(MIPS_SPECIAL3,rs,rt,pos,pos+size-1,MIPS_DINS)
-#  else
-#    define ADDU(rd,rs,rt)             rrr_t(rs,rt,rd,MIPS_DADDU)
-#    define ADDIU(rt,rs,im)            hrri(MIPS_DADDIU,rs,rt,im)
-#    define SUBU(rd,rs,rt)             rrr_t(rs,rt,rd,MIPS_DSUBU)
-#    define MULT(rs, rt)               rrr_t(rs,rt,_ZERO_REGNO,MIPS_DMULT)
-#    define MULTU(rs, rt)              rrr_t(rs,rt,_ZERO_REGNO,MIPS_DMULTU)
-#    define DIV(rs, rt)                        
rrr_t(rs,rt,_ZERO_REGNO,MIPS_DDIV)
-#    define DIVU(rs, rt)               rrr_t(rs,rt,_ZERO_REGNO,MIPS_DDIVU)
-#    define SLLV(rd,rt,rs)             rrr_t(rs,rt,rd,MIPS_DSLLV)
-#    define SLL(rd,rt,sa)              rrit(rt,rd,sa,MIPS_DSLL)
-#    define SRAV(rd,rt,rs)             rrr_t(rs,rt,rd,MIPS_DSRAV)
-#    define SRA(rd,rt,sa)              rrit(rt,rd,sa,MIPS_DSRA)
-#    define SRLV(rd,rt,rs)             rrr_t(rs,rt,rd,MIPS_DSRLV)
-#    define SRL(rd,rt,sa)              rrit(rt,rd,sa,MIPS_DSRL)
-#    define ROTR(rd,rt,sa)             hrrrit(MIPS_SPECIAL,1,rt,rd,sa,MIPS_SRL)
-#    define INS(rt,rs,pos,size)                
hrrrit(MIPS_SPECIAL3,rs,rt,pos,pos+size-1,MIPS_INS)
-#  endif
+#  define ADDU(rd,rs,rt)               rrr_t(rs,rt,rd,MIPS_ADDU)
+#  define DADDU(rd,rs,rt)              rrr_t(rs,rt,rd,MIPS_DADDU)
+#  define ADDIU(rt,rs,im)              hrri(MIPS_ADDIU,rs,rt,im)
+#  define DADDIU(rt,rs,im)             hrri(MIPS_DADDIU,rs,rt,im)
+#  define SUBU(rd,rs,rt)               rrr_t(rs,rt,rd,MIPS_SUBU)
+#  define DSUBU(rd,rs,rt)              rrr_t(rs,rt,rd,MIPS_DSUBU)
+#  define MULT(rs,rt)                  rrr_t(rs,rt,_ZERO_REGNO,MIPS_MULT)
+#  define MULTU(rs,rt)                 rrr_t(rs,rt,_ZERO_REGNO,MIPS_MULTU)
+#  define DMULT(rs,rt)                 rrr_t(rs,rt,_ZERO_REGNO,MIPS_DMULT)
+#  define DMULTU(rs,rt)                        
rrr_t(rs,rt,_ZERO_REGNO,MIPS_DMULTU)
+#  define DIV(rs,rt)                   rrr_t(rs,rt,_ZERO_REGNO,MIPS_DIV)
+#  define DIVU(rs,rt)                  rrr_t(rs,rt,_ZERO_REGNO,MIPS_DIVU)
+#  define DDIV(rs,rt)                  rrr_t(rs,rt,_ZERO_REGNO,MIPS_DDIV)
+#  define DDIVU(rs,rt)                 rrr_t(rs,rt,_ZERO_REGNO,MIPS_DDIVU)
+#  define SLLV(rd,rt,rs)               rrr_t(rs,rt,rd,MIPS_SLLV)
+#  define SLL(rd,rt,sa)                        rrit(rt,rd,sa,MIPS_SLL)
+#  define DSLLV(rd,rt,rs)              rrr_t(rs,rt,rd,MIPS_DSLLV)
+#  define DSLL(rd,rt,sa)               rrit(rt,rd,sa,MIPS_DSLL)
+#  define DSLL32(rd,rt,sa)             rrit(rt,rd,sa,MIPS_DSLL32)
+#  define SRAV(rd,rt,rs)               rrr_t(rs,rt,rd,MIPS_SRAV)
+#  define SRA(rd,rt,sa)                        rrit(rt,rd,sa,MIPS_SRA)
+#  define SRLV(rd,rt,rs)               rrr_t(rs,rt,rd,MIPS_SRLV)
+#  define SRL(rd,rt,sa)                        rrit(rt,rd,sa,MIPS_SRL)
+#  define DSRAV(rd,rt,rs)              rrr_t(rs,rt,rd,MIPS_DSRAV)
+#  define DSRA(rd,rt,sa)               rrit(rt,rd,sa,MIPS_DSRA)
+#  define DSRA32(rd,rt,sa)             rrit(rt,rd,sa,MIPS_DSRA32)
+#  define DSRLV(rd,rt,rs)              rrr_t(rs,rt,rd,MIPS_DSRLV)
+#  define DSRL(rd,rt,sa)               rrit(rt,rd,sa,MIPS_DSRL)
+#  define DSRL32(rd,rt,sa)             rrit(rt,rd,sa,MIPS_DSRL32)
+#  define INS(rt,rs,pos,size)          
hrrrit(MIPS_SPECIAL3,rs,rt,pos,pos+size-1,MIPS_INS)
+#  define DINS(rt,rs,pos,size)         
hrrrit(MIPS_SPECIAL3,rs,rt,pos,pos+size-1,MIPS_DINS)
+#  define ROTR(rd,rt,sa)               hrrrit(MIPS_SPECIAL,1,rt,rd,sa,MIPS_SRL)
+#  define DROTR(rd,rt,sa)              
hrrrit(MIPS_SPECIAL,1,rt,rd,sa,MIPS_DSRL)
 #  define MFHI(rd)                     
rrr_t(_ZERO_REGNO,_ZERO_REGNO,rd,MIPS_MFHI)
 #  define MFLO(rd)                     
rrr_t(_ZERO_REGNO,_ZERO_REGNO,rd,MIPS_MFLO)
 #  define MTHI(rs)                     
rrr_t(rs,_ZERO_REGNO,_ZERO_REGNO,MIPS_MTHI)
@@ -359,6 +359,7 @@ static void _nop(jit_state_t*,jit_int32_t);
 #  define LWU(rt,of,rb)                        hrri(MIPS_LWU,rb,rt,of)
 #  define LD(rt,of,rb)                 hrri(MIPS_LD,rb,rt,of)
 #  define SB(rt,of,rb)                 hrri(MIPS_SB,rb,rt,of)
+#  define SH(rt,of,rb)                 hrri(MIPS_SH,rb,rt,of)
 #  define SW(rt,of,rb)                 hrri(MIPS_SW,rb,rt,of)
 #  define SD(rt,of,rb)                 hrri(MIPS_SD,rb,rt,of)
 #  define WSBH(rd,rt)                  
hrrrit(MIPS_SPECIAL3,0,rt,rd,MIPS_WSBH,MIPS_BSHFL)
@@ -376,31 +377,46 @@ static void _nop(jit_state_t*,jit_int32_t);
 #  define BNE(rs,rt,im)                        hrri(MIPS_BNE,rs,rt,im)
 #  define JALR(r0)                     
hrrrit(MIPS_SPECIAL,r0,0,_RA_REGNO,0,MIPS_JALR)
 #  define JR(r0)                       hrrrit(MIPS_SPECIAL,r0,0,0,0,MIPS_JR)
-#  define J(i0)                                hi(MIPS_J, i0)
+#  define J(i0)                                hi(MIPS_J,i0)
 #  define MOVZ(rd,rs,rt)               hrrrit(0,rs,rt,rd,0,MIPS_MOVZ)
-#  define comr(r0,r1)                  xori(r0, r1, -1)
-#  define negr(r0,r1)                  SUBU(r0,_ZERO_REGNO,r1)
-#  define addr(rd,rs,rt)               ADDU(rd,rs,rt)
+#  define comr(r0,r1)                  xori(r0,r1,-1)
+#  define negr(r0,r1)                  subr(r0,_ZERO_REGNO,r1)
+#  if __WORDSIZE == 32
+#    define addr(rd,rs,rt)             ADDU(rd,rs,rt)
+#    define addiu(r0,r1,i0)            ADDIU(r0,r1,i0)
+#    define subr(rd,rs,rt)             SUBU(rd,rs,rt)
+#    define mult(rs,rt)                        MULT(rs,rt)
+#    define multu(rs,rt)               MULTU(rs,rt)
+#    define div(rs,rt)                 DIV(rs,rt)
+#    define divu(rs,rt)                        DIVU(rs,rt)
+#  else
+#    define addr(rd,rs,rt)             DADDU(rd,rs,rt)
+#    define addiu(r0,r1,i0)            DADDIU(r0,r1,i0)
+#    define subr(rd,rs,rt)             DSUBU(rd,rs,rt)
+#    define mult(rs,rt)                        DMULT(rs,rt)
+#    define multu(rs,rt)               DMULTU(rs,rt)
+#    define div(rs,rt)                 DDIV(rs,rt)
+#    define divu(rs,rt)                        DDIVU(rs,rt)
+#  endif
 #  define addi(r0,r1,i0)               _addi(_jit,r0,r1,i0)
 static void _addi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#define addcr(r0, r1, r2)              _addcr(_jit, r0, r1, r2)
-static void _addcr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-#define addci(r0, r1, i0)              _addci(_jit, r0, r1, i0)
-static void _addci(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-#  define addxr(r0, r1, r2)            _addxr(_jit, r0, r1, r2)
-static void _addxr(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
-#  define addxi(r0, r1, i0)            _addxi(_jit, r0, r1, i0)
-static void _addxi(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
-#  define subr(rd,rs,rt)               SUBU(rd,rs,rt)
+#define addcr(r0,r1,r2)                        _addcr(_jit,r0,r1,r2)
+static void _addcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+#define addci(r0,r1,i0)                        _addci(_jit,r0,r1,i0)
+static void _addci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+#  define addxr(r0,r1,r2)              _addxr(_jit,r0,r1,r2)
+static void _addxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+#  define addxi(r0,r1,i0)              _addxi(_jit,r0,r1,i0)
+static void _addxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
 #  define subi(r0,r1,i0)               _subi(_jit,r0,r1,i0)
 static void _subi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define subcr(r0, r1, r2)            _subcr(_jit, r0, r1, r2)
+#  define subcr(r0,r1,r2)              _subcr(_jit,r0,r1,r2)
 static void _subcr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define subci(r0, r1, i0)            _subci(_jit, r0, r1, i0)
+#  define subci(r0,r1,i0)              _subci(_jit,r0,r1,i0)
 static void _subci(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define subxr(r0, r1, r2)            _subxr(_jit, r0, r1, r2)
+#  define subxr(r0,r1,r2)              _subxr(_jit,r0,r1,r2)
 static void _subxr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define subxi(r0, r1, i0)            _subxi(_jit, r0, r1, i0)
+#  define subxi(r0,r1,i0)              _subxi(_jit,r0,r1,i0)
 static void _subxi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
 #  define mulr(r0,r1,r2)               _mulr(_jit,r0,r1,r2)
 static void _mulr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
@@ -442,110 +458,121 @@ static void 
_remi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
 static void _remr_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
 #  define remi_u(r0,r1,i0)             _remi_u(_jit,r0,r1,i0)
 static void _remi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define lshr(r0, r1, r2)             SLLV(r0, r1, r2)
-#  define lshi(r0, r1, i0)             SLL(r0, r1, i0)
-#  define rshr(r0, r1, r2)             SRAV(r0, r1, r2)
-#  define rshi(r0, r1, i0)             SRA(r0, r1, i0)
-#  define rshr_u(r0, r1, r2)           SRLV(r0, r1, r2)
-#  define rshi_u(r0, r1, i0)           SRL(r0, r1, i0)
-#  define andr(r0, r1, r2)             AND(r0, r1, r2)
-#  define andi(r0, r1, i0)             _andi(_jit, r0, r1, i0)
+#  if __WORDSIZE == 32
+#    define lshr(r0,r1,r2)             SLLV(r0,r1,r2)
+#    define lshi(r0,r1,i0)             SLL(r0,r1,i0)
+#    define rshr(r0,r1,r2)             SRAV(r0,r1,r2)
+#    define rshi(r0,r1,i0)             SRA(r0,r1,i0)
+#    define rshr_u(r0,r1,r2)           SRLV(r0,r1,r2)
+#    define rshi_u(r0,r1,i0)           SRL(r0,r1,i0)
+#  else
+#    define lshr(r0,r1,r2)             DSLLV(r0,r1,r2)
+#    define lshi(r0,r1,i0)             _lshi(_jit,r0,r1,i0)
+static void _lshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+#    define rshr(r0,r1,r2)             DSRAV(r0,r1,r2)
+#    define rshi(r0,r1,i0)             _rshi(_jit,r0,r1,i0)
+static void _rshi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+#    define rshr_u(r0,r1,r2)           DSRLV(r0,r1,r2)
+#    define rshi_u(r0,r1,i0)           _rshi_u(_jit,r0,r1,i0)
+static void _rshi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
+#  endif
+#  define andr(r0,r1,r2)               AND(r0,r1,r2)
+#  define andi(r0,r1,i0)               _andi(_jit,r0,r1,i0)
 static void _andi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define orr(r0, r1, r2)              OR(r0, r1, r2)
-#  define ori(r0, r1, i0)              _ori(_jit, r0, r1, i0)
+#  define orr(r0,r1,r2)                        OR(r0,r1,r2)
+#  define ori(r0,r1,i0)                        _ori(_jit,r0,r1,i0)
 static void _ori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define xorr(r0, r1, r2)             XOR(r0, r1, r2)
-#  define xori(r0, r1, i0)             _xori(_jit, r0, r1, i0)
+#  define xorr(r0,r1,r2)               XOR(r0,r1,r2)
+#  define xori(r0,r1,i0)               _xori(_jit,r0,r1,i0)
 static void _xori(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define movr(r0, r1)                 orr(r0, r1, _ZERO_REGNO)
-#  define movi(r0, i0)                 _movi(_jit, r0, i0)
+#  define movr(r0,r1)                  orr(r0,r1,_ZERO_REGNO)
+#  define movi(r0,i0)                  _movi(_jit,r0,i0)
 static void _movi(jit_state_t*,jit_int32_t,jit_word_t);
-#  define movi_p(r0, i0)               _movi_p(_jit, r0, i0)
+#  define movi_p(r0,i0)                        _movi_p(_jit,r0,i0)
 static jit_word_t _movi_p(jit_state_t*,jit_int32_t,jit_word_t);
-#  define ldr_c(r0, r1)                        LB(r0, 0, r1)
-#  define ldi_c(r0, i0)                        _ldi_c(_jit, r0, i0)
+#  define ldr_c(r0,r1)                 LB(r0,0,r1)
+#  define ldi_c(r0,i0)                 _ldi_c(_jit,r0,i0)
 static void _ldi_c(jit_state_t*,jit_int32_t,jit_word_t);
-#  define ldr_uc(r0, r1)               LBU(r0, 0, r1)
-#  define ldi_uc(r0, i0)               _ldi_uc(_jit, r0, i0)
+#  define ldr_uc(r0,r1)                        LBU(r0,0,r1)
+#  define ldi_uc(r0,i0)                        _ldi_uc(_jit,r0,i0)
 static void _ldi_uc(jit_state_t*,jit_int32_t,jit_word_t);
-#  define ldr_s(r0, r1)                        LH(r0, 0, r1)
-#  define ldi_s(r0, i0)                        _ldi_s(_jit, r0, i0)
+#  define ldr_s(r0,r1)                 LH(r0,0,r1)
+#  define ldi_s(r0,i0)                 _ldi_s(_jit,r0,i0)
 static void _ldi_s(jit_state_t*,jit_int32_t,jit_word_t);
-#  define ldr_us(r0, r1)               LHU(r0, 0, r1)
-#  define ldi_us(r0, i0)               _ldi_us(_jit, r0, i0)
+#  define ldr_us(r0,r1)                        LHU(r0,0,r1)
+#  define ldi_us(r0,i0)                        _ldi_us(_jit,r0,i0)
 static void _ldi_us(jit_state_t*,jit_int32_t,jit_word_t);
-#  define ldr_i(r0, r1)                        LW(r0, 0, r1)
-#  define ldi_i(r0, i0)                        _ldi_i(_jit, r0, i0)
+#  define ldr_i(r0,r1)                 LW(r0,0,r1)
+#  define ldi_i(r0,i0)                 _ldi_i(_jit,r0,i0)
 static void _ldi_i(jit_state_t*,jit_int32_t,jit_word_t);
 #  if __WORDSIZE == 64
-#    define ldr_ui(r0, r1)             LWU(r0, 0, r1)
-#    define ldi_ui(r0, i0)             _ldi_ui(_jit, r0, i0)
+#    define ldr_ui(r0,r1)              LWU(r0,0,r1)
+#    define ldi_ui(r0,i0)              _ldi_ui(_jit,r0,i0)
 static void _ldi_ui(jit_state_t*,jit_int32_t,jit_word_t);
-#    define ldr_l(r0, r1)              LD(r0, 0, r1)
-#    define ldi_l(r0, i0)              _ldi_l(_jit, r0, i0)
+#    define ldr_l(r0,r1)               LD(r0,0,r1)
+#    define ldi_l(r0,i0)               _ldi_l(_jit,r0,i0)
 static void _ldi_l(jit_state_t*,jit_int32_t,jit_word_t);
 #  endif
-#  define ldxr_c(r0, r1, r2)           _ldxr_c(_jit, r0, r1, r2)
+#  define ldxr_c(r0,r1,r2)             _ldxr_c(_jit,r0,r1,r2)
 static void _ldxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define ldxi_c(r0, r1, i0)           _ldxi_c(_jit, r0, r1, i0)
+#  define ldxi_c(r0,r1,i0)             _ldxi_c(_jit,r0,r1,i0)
 static void _ldxi_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define ldxr_uc(r0, r1, r2)          _ldxr_uc(_jit, r0, r1, r2)
+#  define ldxr_uc(r0,r1,r2)            _ldxr_uc(_jit,r0,r1,r2)
 static void _ldxr_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define ldxi_uc(r0, r1, i0)          _ldxi_uc(_jit, r0, r1, i0)
+#  define ldxi_uc(r0,r1,i0)            _ldxi_uc(_jit,r0,r1,i0)
 static void _ldxi_uc(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define ldxr_s(r0, r1, r2)           _ldxr_s(_jit, r0, r1, r2)
+#  define ldxr_s(r0,r1,r2)             _ldxr_s(_jit,r0,r1,r2)
 static void _ldxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define ldxi_s(r0, r1, i0)           _ldxi_s(_jit, r0, r1, i0)
+#  define ldxi_s(r0,r1,i0)             _ldxi_s(_jit,r0,r1,i0)
 static void _ldxi_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define ldxr_us(r0, r1, r2)          _ldxr_us(_jit, r0, r1, r2)
+#  define ldxr_us(r0,r1,r2)            _ldxr_us(_jit,r0,r1,r2)
 static void _ldxr_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define ldxi_us(r0, r1, i0)          _ldxi_us(_jit, r0, r1, i0)
+#  define ldxi_us(r0,r1,i0)            _ldxi_us(_jit,r0,r1,i0)
 static void _ldxi_us(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define ldxr_i(r0, r1, r2)           _ldxr_i(_jit, r0, r1, r2)
+#  define ldxr_i(r0,r1,r2)             _ldxr_i(_jit,r0,r1,r2)
 static void _ldxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define ldxi_i(r0, r1, i0)           _ldxi_i(_jit, r0, r1, i0)
+#  define ldxi_i(r0,r1,i0)             _ldxi_i(_jit,r0,r1,i0)
 static void _ldxi_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
 #  if __WORDSIZE == 64
-#    define ldxr_ui(r0, r1, r2)                _ldxr_ui(_jit, r0, r1, r2)
+#    define ldxr_ui(r0,r1,r2)          _ldxr_ui(_jit,r0,r1,r2)
 static void _ldxr_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#    define ldxi_ui(r0, r1, i0)                _ldxi_ui(_jit, r0, r1, i0)
+#    define ldxi_ui(r0,r1,i0)          _ldxi_ui(_jit,r0,r1,i0)
 static void _ldxi_ui(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#    define ldxr_l(r0, r1, r2)         _ldxr_l(_jit, r0, r1, r2)
+#    define ldxr_l(r0,r1,r2)           _ldxr_l(_jit,r0,r1,r2)
 static void _ldxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#    define ldxi_l(r0, r1, i0)         _ldxi_l(_jit, r0, r1, i0)
+#    define ldxi_l(r0,r1,i0)           _ldxi_l(_jit,r0,r1,i0)
 static void _ldxi_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
 #  endif
-#  define str_c(r0, r1)                        SB(r1, 0, r0)
-#  define sti_c(i0, r0)                        _sti_c(_jit, i0, r0)
+#  define str_c(r0,r1)                 SB(r1,0,r0)
+#  define sti_c(i0,r0)                 _sti_c(_jit,i0,r0)
 static void _sti_c(jit_state_t*,jit_word_t,jit_int32_t);
-#  define SH(rt,of,rb)                 hrri(MIPS_SH,rb,rt,of)
-#  define str_s(r0, r1)                        SH(r1, 0, r0)
-#  define sti_s(i0, r0)                        _sti_s(_jit, i0, r0)
+#  define str_s(r0,r1)                 SH(r1,0,r0)
+#  define sti_s(i0,r0)                 _sti_s(_jit,i0,r0)
 static void _sti_s(jit_state_t*,jit_word_t,jit_int32_t);
-#  define str_i(r0, r1)                        SW(r1, 0, r0)
-#  define sti_i(i0, r0)                        _sti_i(_jit, i0, r0)
+#  define str_i(r0,r1)                 SW(r1,0,r0)
+#  define sti_i(i0,r0)                 _sti_i(_jit,i0,r0)
 static void _sti_i(jit_state_t*,jit_word_t,jit_int32_t);
 #  if __WORDSIZE == 64
-#    define str_l(r0, r1)              SD(r0, 0, r1)
-#    define sti_l(i0, r0)              _sti_l(_jit, i0, r0)
+#    define str_l(r0,r1)               SD(r1,0,r0)
+#    define sti_l(i0,r0)               _sti_l(_jit,i0,r0)
 static void _sti_l(jit_state_t*,jit_word_t,jit_int32_t);
 #  endif
-#  define stxr_c(r0, r1, r2)           _stxr_c(_jit, r0, r1, r2)
+#  define stxr_c(r0,r1,r2)             _stxr_c(_jit,r0,r1,r2)
 static void _stxr_c(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define stxi_c(i0, r0, r1)           _stxi_c(_jit, i0, r0, r1)
+#  define stxi_c(i0,r0,r1)             _stxi_c(_jit,i0,r0,r1)
 static void _stxi_c(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define stxr_s(r0, r1, r2)           _stxr_s(_jit, r0, r1, r2)
+#  define stxr_s(r0,r1,r2)             _stxr_s(_jit,r0,r1,r2)
 static void _stxr_s(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define stxi_s(i0, r0, r1)           _stxi_s(_jit, i0, r0, r1)
+#  define stxi_s(i0,r0,r1)             _stxi_s(_jit,i0,r0,r1)
 static void _stxi_s(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define stxr_i(r0, r1, r2)           _stxr_i(_jit, r0, r1, r2)
+#  define stxr_i(r0,r1,r2)             _stxr_i(_jit,r0,r1,r2)
 static void _stxr_i(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#  define stxi_i(i0, r0, r1)           _stxi_i(_jit, i0, r0, r1)
+#  define stxi_i(i0,r0,r1)             _stxi_i(_jit,i0,r0,r1)
 static void _stxi_i(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
 #  if __WORDSIZE == 64
-#    define stxr_l(r0, r1, r2)         _stxr_l(_jit, r0, r1, r2)
+#    define stxr_l(r0,r1,r2)           _stxr_l(_jit,r0,r1,r2)
 static void _stxr_l(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#    define stxi_l(i0, r0, r1)         _stxi_l(_jit, i0, r0, r1)
+#    define stxi_l(i0,r0,r1)           _stxi_l(_jit,i0,r0,r1)
 static void _stxi_l(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
 #  endif
 #  if __BYTE_ORDER == __LITTLE_ENDIAN
@@ -556,148 +583,148 @@ static void 
_htonr(jit_state_t*,jit_int32_t,jit_int32_t);
 #  endif
 #  define extr_c(r0,r1)                        _extr_c(_jit,r0,r1)
 static void _extr_c(jit_state_t*,jit_int32_t,jit_int32_t);
-#  define extr_uc(r0,r1)               ANDI(r0, r1, 0xff)
+#  define extr_uc(r0,r1)               ANDI(r0,r1,0xff)
 #  define extr_s(r0,r1)                        _extr_s(_jit,r0,r1)
 static void _extr_s(jit_state_t*,jit_int32_t,jit_int32_t);
-#  define extr_us(r0,r1)               ANDI(r0, r1, 0xffff)
+#  define extr_us(r0,r1)               ANDI(r0,r1,0xffff)
 #  if __WORDSIZE == 64
-#  define extr_i(r0,r1)                        SLL(r0, r0, 0)
+#  define extr_i(r0,r1)                        SLL(r0,r1,0)
 #  define extr_ui(r0,r1)               _extr_ui(_jit,r0,r1)
 static void _extr_ui(jit_state_t*,jit_int32_t,jit_int32_t);
 #  endif
-#  define ltr(r0, r1, r2)              SLT(r0, r1, r2)
-#  define lti(r0, r1, i0)              _lti(_jit, r0, r1, i0)
+#  define ltr(r0,r1,r2)                        SLT(r0,r1,r2)
+#  define lti(r0,r1,i0)                        _lti(_jit,r0,r1,i0)
 static void _lti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define ltr_u(r0, r1, r2)            SLTU(r0, r1, r2)
-#  define lti_u(r0, r1, i0)            _lti_u(_jit, r0, r1, i0)
+#  define ltr_u(r0,r1,r2)              SLTU(r0,r1,r2)
+#  define lti_u(r0,r1,i0)              _lti_u(_jit,r0,r1,i0)
 static void _lti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#define ler(r0, r1, r2)                        _ler(_jit, r0, r1, r2)
+#define ler(r0,r1,r2)                  _ler(_jit,r0,r1,r2)
 static void _ler(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#define lei(r0, r1, i0)                        _lei(_jit, r0, r1, i0)
+#define lei(r0,r1,i0)                  _lei(_jit,r0,r1,i0)
 static void _lei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#define ler_u(r0, r1, r2)              _ler_u(_jit, r0, r1, r2)
+#define ler_u(r0,r1,r2)                        _ler_u(_jit,r0,r1,r2)
 static void _ler_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#define lei_u(r0, r1, i0)              _lei_u(_jit, r0, r1, i0)
+#define lei_u(r0,r1,i0)                        _lei_u(_jit,r0,r1,i0)
 static void _lei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#define eqr(r0, r1, r2)                        _eqr(_jit, r0, r1, r2)
+#define eqr(r0,r1,r2)                  _eqr(_jit,r0,r1,r2)
 static void _eqr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#define eqi(r0, r1, i0)                        _eqi(_jit, r0, r1, i0)
+#define eqi(r0,r1,i0)                  _eqi(_jit,r0,r1,i0)
 static void _eqi(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#define ger(r0, r1, r2)                        _ger(_jit, r0, r1, r2)
+#define ger(r0,r1,r2)                  _ger(_jit,r0,r1,r2)
 static void _ger(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#define gei(r0, r1, i0)                        _gei(_jit, r0, r1, i0)
+#define gei(r0,r1,i0)                  _gei(_jit,r0,r1,i0)
 static void _gei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#define ger_u(r0, r1, i0)              _ger_u(_jit, r0, r1, i0)
+#define ger_u(r0,r1,i0)                        _ger_u(_jit,r0,r1,i0)
 static void _ger_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#define gei_u(r0, r1, i0)              _gei_u(_jit, r0, r1, i0)
+#define gei_u(r0,r1,i0)                        _gei_u(_jit,r0,r1,i0)
 static void _gei_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define gtr(r0, r1, r2)              SLT(r0, r2, r1)
-#define gti(r0, r1, i0)                        _gti(_jit, r0, r1, i0)
+#  define gtr(r0,r1,r2)                        SLT(r0,r2,r1)
+#define gti(r0,r1,i0)                  _gti(_jit,r0,r1,i0)
 static void _gti(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#  define gtr_u(r0, r1, r2)            SLTU(r0, r2, r1)
-#  define gti_u(r0, r1, i0)            _gti_u(_jit, r0, r1, i0)
+#  define gtr_u(r0,r1,r2)              SLTU(r0,r2,r1)
+#  define gti_u(r0,r1,i0)              _gti_u(_jit,r0,r1,i0)
 static void _gti_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#define ner(r0, r1, r2)                        _ner(_jit, r0, r1, r2)
+#define ner(r0,r1,r2)                  _ner(_jit,r0,r1,r2)
 static void _ner(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
-#define nei(r0, r1, i0)                        _nei(_jit, r0, r1, i0)
+#define nei(r0,r1,i0)                  _nei(_jit,r0,r1,i0)
 static void _nei(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
-#define bltr(i0, r0, r1)               _bltr(_jit, i0, r0, r1)
+#define bltr(i0,r0,r1)                 _bltr(_jit,i0,r0,r1)
 static jit_word_t _bltr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define bltr_u(i0, r0, r1)             _bltr_u(_jit, i0, r0, r1)
+#define bltr_u(i0,r0,r1)               _bltr_u(_jit,i0,r0,r1)
 static jit_word_t _bltr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define blti(i0, r0, i1)               _blti(_jit, i0, r0, i1)
+#define blti(i0,r0,i1)                 _blti(_jit,i0,r0,i1)
 static jit_word_t _blti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#define blti_u(i0, r0, i1)             _blti_u(_jit, i0, r0, i1)
+#define blti_u(i0,r0,i1)               _blti_u(_jit,i0,r0,i1)
 static jit_word_t _blti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#define bler(i0, r0, r1)               _bler(_jit, i0, r0, r1)
+#define bler(i0,r0,r1)                 _bler(_jit,i0,r0,r1)
 static jit_word_t _bler(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define bler_u(i0, r0, r1)             _bler_u(_jit, i0, r0, r1)
+#define bler_u(i0,r0,r1)               _bler_u(_jit,i0,r0,r1)
 static jit_word_t _bler_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define blei(i0, r0, i1)               _blei(_jit, i0, r0, i1)
+#define blei(i0,r0,i1)                 _blei(_jit,i0,r0,i1)
 static jit_word_t _blei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#define blei_u(i0, r0, i1)             _blei_u(_jit, i0, r0, i1)
+#define blei_u(i0,r0,i1)               _blei_u(_jit,i0,r0,i1)
 static jit_word_t _blei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#define beqr(i0, r0, r1)               _beqr(_jit, i0, r0, r1)
+#define beqr(i0,r0,r1)                 _beqr(_jit,i0,r0,r1)
 static jit_word_t _beqr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define beqi(i0, r0, i1)               _beqi(_jit, i0, r0, i1)
+#define beqi(i0,r0,i1)                 _beqi(_jit,i0,r0,i1)
 static jit_word_t _beqi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#define bger(i0, r0, r1)               _bger(_jit, i0, r0, r1)
+#define bger(i0,r0,r1)                 _bger(_jit,i0,r0,r1)
 static jit_word_t _bger(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define bger_u(i0, r0, r1)             _bger_u(_jit, i0, r0, r1)
+#define bger_u(i0,r0,r1)               _bger_u(_jit,i0,r0,r1)
 static jit_word_t _bger_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define bgei(i0, r0, i1)               _bgei(_jit, i0, r0, i1)
+#define bgei(i0,r0,i1)                 _bgei(_jit,i0,r0,i1)
 static jit_word_t _bgei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#define bgei_u(i0, r0, i1)             _bgei_u(_jit, i0, r0, i1)
+#define bgei_u(i0,r0,i1)               _bgei_u(_jit,i0,r0,i1)
 static jit_word_t _bgei_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#define bgtr(i0, r0, r1)               _bgtr(_jit, i0, r0, r1)
+#define bgtr(i0,r0,r1)                 _bgtr(_jit,i0,r0,r1)
 static jit_word_t _bgtr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define bgtr_u(i0, r0, r1)             _bgtr_u(_jit, i0, r0, r1)
+#define bgtr_u(i0,r0,r1)               _bgtr_u(_jit,i0,r0,r1)
 static jit_word_t _bgtr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define bgti(i0, r0, i1)               _bgti(_jit, i0, r0, i1)
+#define bgti(i0,r0,i1)                 _bgti(_jit,i0,r0,i1)
 static jit_word_t _bgti(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#define bgti_u(i0, r0, i1)             _bgti_u(_jit, i0, r0, i1)
+#define bgti_u(i0,r0,i1)               _bgti_u(_jit,i0,r0,i1)
 static jit_word_t _bgti_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#define bner(i0, r0, r1)               _bner(_jit, i0, r0, r1)
+#define bner(i0,r0,r1)                 _bner(_jit,i0,r0,r1)
 static jit_word_t _bner(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#define bnei(i0, r0, i1)               _bnei(_jit, i0, r0, i1)
+#define bnei(i0,r0,i1)                 _bnei(_jit,i0,r0,i1)
 static jit_word_t _bnei(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define jmpr(r0)                     _jmpr(_jit, r0)
+#  define jmpr(r0)                     _jmpr(_jit,r0)
 static void _jmpr(jit_state_t*,jit_int32_t);
-#  define jmpi(i0)                     _jmpi(_jit, i0)
+#  define jmpi(i0)                     _jmpi(_jit,i0)
 static jit_word_t _jmpi(jit_state_t*,jit_word_t);
-#  define boaddr(i0, r0, r1)           _boaddr(_jit, i0, r0, r1)
+#  define boaddr(i0,r0,r1)             _boaddr(_jit,i0,r0,r1)
 static jit_word_t _boaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define boaddi(i0, r0, i1)           _boaddi(_jit, i0, r0, i1)
+#  define boaddi(i0,r0,i1)             _boaddi(_jit,i0,r0,i1)
 static jit_word_t _boaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define boaddr_u(i0, r0, r1)         _boaddr_u(_jit, i0, r0, r1)
+#  define boaddr_u(i0,r0,r1)           _boaddr_u(_jit,i0,r0,r1)
 static jit_word_t _boaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define boaddi_u(i0, r0, i1)         _boaddi_u(_jit, i0, r0, i1)
+#  define boaddi_u(i0,r0,i1)           _boaddi_u(_jit,i0,r0,i1)
 static jit_word_t _boaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define bxaddr(i0, r0, r1)           _bxaddr(_jit, i0, r0, r1)
+#  define bxaddr(i0,r0,r1)             _bxaddr(_jit,i0,r0,r1)
 static jit_word_t _bxaddr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define bxaddi(i0, r0, i1)           _bxaddi(_jit, i0, r0, i1)
+#  define bxaddi(i0,r0,i1)             _bxaddi(_jit,i0,r0,i1)
 static jit_word_t _bxaddi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define bxaddr_u(i0, r0, r1)         _bxaddr_u(_jit, i0, r0, r1)
+#  define bxaddr_u(i0,r0,r1)           _bxaddr_u(_jit,i0,r0,r1)
 static jit_word_t _bxaddr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define bxaddi_u(i0, r0, i1)         _bxaddi_u(_jit, i0, r0, i1)
+#  define bxaddi_u(i0,r0,i1)           _bxaddi_u(_jit,i0,r0,i1)
 static jit_word_t _bxaddi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define bosubr(i0, r0, r1)           _bosubr(_jit, i0, r0, r1)
+#  define bosubr(i0,r0,r1)             _bosubr(_jit,i0,r0,r1)
 static jit_word_t _bosubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define bosubi(i0, r0, i1)           _bosubi(_jit, i0, r0, i1)
+#  define bosubi(i0,r0,i1)             _bosubi(_jit,i0,r0,i1)
 static jit_word_t _bosubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define bosubr_u(i0, r0, r1)         _bosubr_u(_jit, i0, r0, r1)
+#  define bosubr_u(i0,r0,r1)           _bosubr_u(_jit,i0,r0,r1)
 static jit_word_t _bosubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define bosubi_u(i0, r0, i1)         _bosubi_u(_jit, i0, r0, i1)
+#  define bosubi_u(i0,r0,i1)           _bosubi_u(_jit,i0,r0,i1)
 static jit_word_t _bosubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define bxsubr(i0, r0, r1)           _bxsubr(_jit, i0, r0, r1)
+#  define bxsubr(i0,r0,r1)             _bxsubr(_jit,i0,r0,r1)
 static jit_word_t _bxsubr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define bxsubi(i0, r0, i1)           _bxsubi(_jit, i0, r0, i1)
+#  define bxsubi(i0,r0,i1)             _bxsubi(_jit,i0,r0,i1)
 static jit_word_t _bxsubi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define bxsubr_u(i0, r0, r1)         _bxsubr_u(_jit, i0, r0, r1)
+#  define bxsubr_u(i0,r0,r1)           _bxsubr_u(_jit,i0,r0,r1)
 static jit_word_t _bxsubr_u(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define bxsubi_u(i0, r0, i1)         _bxsubi_u(_jit, i0, r0, i1)
+#  define bxsubi_u(i0,r0,i1)           _bxsubi_u(_jit,i0,r0,i1)
 static jit_word_t _bxsubi_u(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define bmsr(i0, r0, r1)             _bmsr(_jit, i0, r0, r1)
+#  define bmsr(i0,r0,r1)               _bmsr(_jit,i0,r0,r1)
 static jit_word_t _bmsr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define bmsi(i0, r0, i1)             _bmsi(_jit, i0, r0, i1)
+#  define bmsi(i0,r0,i1)               _bmsi(_jit,i0,r0,i1)
 static jit_word_t _bmsi(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define bmcr(i0, r0, r1)             _bmcr(_jit, i0, r0, r1)
+#  define bmcr(i0,r0,r1)               _bmcr(_jit,i0,r0,r1)
 static jit_word_t _bmcr(jit_state_t*,jit_word_t,jit_int32_t,jit_int32_t);
-#  define bmci(i0, r0, i1)             _bmci(_jit, i0, r0, i1)
+#  define bmci(i0,r0,i1)               _bmci(_jit,i0,r0,i1)
 static jit_word_t _bmci(jit_state_t*,jit_word_t,jit_int32_t,jit_word_t);
-#  define callr(r0)                    _callr(_jit, r0)
+#  define callr(r0)                    _callr(_jit,r0)
 static void _callr(jit_state_t*,jit_int32_t);
-#  define calli(i0)                    _calli(_jit, i0)
+#  define calli(i0)                    _calli(_jit,i0)
 static void _calli(jit_state_t*,jit_word_t);
-#  define calli_p(i0)                  _calli_p(_jit, i0)
+#  define calli_p(i0)                  _calli_p(_jit,i0)
 static jit_word_t _calli_p(jit_state_t*,jit_word_t);
-#  define prolog(node)                 _prolog(_jit, node)
+#  define prolog(node)                 _prolog(_jit,node)
 static void _prolog(jit_state_t*,jit_node_t*);
-#  define epilog(node)                 _epilog(_jit, node)
+#  define epilog(node)                 _epilog(_jit,node)
 static void _epilog(jit_state_t*,jit_node_t*);
-#define patch_abs(instr, label)                _patch_abs(_jit, instr, label)
+#define patch_abs(instr,label)         _patch_abs(_jit,instr,label)
 static void _patch_abs(jit_state_t*,jit_word_t,jit_word_t);
-#define patch_at(jump, label)          _patch_at(_jit, jump, label)
+#define patch_at(jump,label)           _patch_at(_jit,jump,label)
 static void _patch_at(jit_state_t*,jit_word_t,jit_word_t);
 #endif
 
@@ -753,7 +780,7 @@ _addi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_word_t i0)
     if (i0 == 0)
        movr(r0, r1);
     else if (can_sign_extend_short_p(i0))
-       ADDIU(r0, r1, i0);
+       addiu(r0, r1, i0);
     else {
        reg = jit_get_reg(jit_class_gpr);
        movi(rn(reg), i0);
@@ -771,13 +798,13 @@ _addcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_int32_t r2)
        jit_carry = jit_get_reg(jit_class_gpr);
     if (r0 == r1) {
        t0 = jit_get_reg(jit_class_gpr);
-       ADDU(rn(t0), r1, r2);
+       addr(rn(t0), r1, r2);
        SLTU(rn(jit_carry), rn(t0), r1);
        movr(r0, rn(t0));
        jit_unget_reg(t0);
     }
     else {
-       ADDU(r0, r1, r2);
+       addr(r0, r1, r2);
        SLTU(rn(jit_carry), r0, r1);
     }
 }
@@ -792,7 +819,7 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_word_t i0)
     t0 = jit_get_reg(jit_class_gpr);
     if (r0 == r1) {
        if (can_sign_extend_short_p(i0))
-           ADDIU(rn(t0), r1, i0);
+           addiu(rn(t0), r1, i0);
        else {
            movi(rn(t0), i0);
            addr(rn(t0), r1, rn(t0));
@@ -802,7 +829,7 @@ _addci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_word_t i0)
     }
     else {
        if (can_sign_extend_short_p(i0))
-           ADDIU(r0, r1, i0);
+           addiu(r0, r1, i0);
        else {
            movi(rn(t0), i0);
            addr(r0, r1, rn(t0));
@@ -845,7 +872,7 @@ _subi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_word_t i0)
     if (i0 == 0)
        movr(r0, r1);
     else if (can_sign_extend_short_p(i0) && (i0 & 0xffff) != 0x8000)
-       ADDIU(r0, r1, -i0);
+       addiu(r0, r1, -i0);
     else {
        reg = jit_get_reg(jit_class_gpr);
        movi(rn(reg), i0);
@@ -863,13 +890,13 @@ _subcr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_int32_t r2)
        jit_carry = jit_get_reg(jit_class_gpr);
     if (r0 == r1) {
        t0 = jit_get_reg(jit_class_gpr);
-       SUBU(rn(t0), r1, r2);
+       subr(rn(t0), r1, r2);
        SLTU(rn(jit_carry), r1, rn(t0));
        movr(r0, rn(t0));
        jit_unget_reg(t0);
     }
     else {
-       SUBU(r0, r1, r2);
+       subr(r0, r1, r2);
        SLTU(rn(jit_carry), r1, r0);
     }
 }
@@ -884,7 +911,7 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_word_t i0)
     t0 = jit_get_reg(jit_class_gpr);
     if (r0 == r1) {
        if (can_sign_extend_short_p(i0) && (i0 & 0xffff) != 0x8000)
-           ADDIU(rn(t0), r1, -i0);
+           addiu(rn(t0), r1, -i0);
        else {
            movi(rn(t0), i0);
            subr(rn(t0), r1, rn(t0));
@@ -894,7 +921,7 @@ _subci(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_word_t i0)
     }
     else {
        if (can_sign_extend_short_p(i0) && (i0 & 0xffff) != 0x8000)
-           ADDIU(r0, r1, -i0);
+           addiu(r0, r1, -i0);
        else {
            movi(rn(t0), i0);
            subr(r0, r1, rn(t0));
@@ -933,7 +960,7 @@ _subxi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_word_t i0)
 static void
 _mulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
 {
-    MULTU(r1, r2);
+    multu(r1, r2);
     MFLO(r0);
 }
 
@@ -953,9 +980,9 @@ _iqmulr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
        jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
 {
     if (sign)
-       MULT(r2, r3);
+       mult(r2, r3);
     else
-       MULTU(r2, r3);
+       multu(r2, r3);
     MFLO(r0);
     MFHI(r1);
 }
@@ -974,7 +1001,7 @@ _iqmuli(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
 static void
 _divr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
 {
-    DIV(r1, r2);
+    div(r1, r2);
     MFLO(r0);
 }
 
@@ -991,7 +1018,7 @@ _divi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_word_t i0)
 static void
 _divr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
 {
-    DIVU(r1, r2);
+    divu(r1, r2);
     MFLO(r0);
 }
 
@@ -1010,9 +1037,9 @@ _iqdivr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
        jit_int32_t r2, jit_int32_t r3, jit_bool_t sign)
 {
     if (sign)
-       DIV(r2, r3);
+       div(r2, r3);
     else
-       DIVU(r2, r3);
+       divu(r2, r3);
     MFLO(r0);
     MFHI(r1);
 }
@@ -1031,7 +1058,7 @@ _iqdivi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1,
 static void
 _remr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
 {
-    DIV(r1, r2);
+    div(r1, r2);
     MFHI(r0);
 }
 
@@ -1048,7 +1075,7 @@ _remi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, 
jit_word_t i0)
 static void
 _remr_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
 {
-    DIVU(r1, r2);
+    divu(r1, r2);
     MFHI(r0);
 }
 
@@ -1062,6 +1089,38 @@ _remi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t 
r1, jit_word_t i0)
     jit_unget_reg(reg);
 }
 
+#if __WORDSIZE == 64
+static void
+_lshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+{
+    assert(i0 >= 0 && i0 <= 63);
+    if (i0 < 32)
+       DSLL(r0, r1, i0);
+    else
+       DSLL32(r0, r1, i0 - 32);
+}
+
+static void
+_rshi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+{
+    assert(i0 >= 0 && i0 <= 63);
+    if (i0 < 32)
+       DSRA(r0, r1, i0);
+    else
+       DSRA32(r0, r1, i0 - 32);
+}
+
+static void
+_rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+{
+    assert(i0 >= 0 && i0 <= 63);
+    if (i0 < 32)
+       DSRL(r0, r1, i0);
+    else
+       DSRL32(r0, r1, i0 - 32);
+}
+#endif
+
 static void
 _andi(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
 {
@@ -1110,7 +1169,7 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
     if (i0 == 0)
        OR(r0, _ZERO_REGNO, _ZERO_REGNO);
     else if (can_sign_extend_short_p(i0))
-       ADDIU(r0, _ZERO_REGNO, i0);
+       addiu(r0, _ZERO_REGNO, i0);
     else if (can_zero_extend_short_p(i0))
        ORI(r0, _ZERO_REGNO, i0);
     else {
@@ -1118,20 +1177,20 @@ _movi(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
            LUI(r0, i0 >> 16);
        else if (can_zero_extend_int_p(i0)) {
            if (i0 & 0xffff0000) {
-               ORI(r0, r0, i0 >> 16);
-               SLL(r0, r0, 16);
+               ORI(r0, _ZERO_REGNO, i0 >> 16);
+               lshi(r0, r0, 16);
            }
        }
 #  if __WORDSIZE == 64
        else {
            movi(r0, (jit_uword_t)i0 >> 32);
            if (i0 & 0xffff0000) {
-               SLL(r0, r0, 16);
+               lshi(r0, r0, 16);
                ORI(r0, r0, i0 >> 16);
-               SLL(r0, r0, 16);
+               lshi(r0, r0, 16);
            }
            else
-               SLL(r0, r0, 32);
+               lshi(r0, r0, 32);
        }
 #  endif
        if (i0 & 0xffff)
@@ -1151,9 +1210,9 @@ _movi_p(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
 #  else
     LUI(r0, i0 >> 48);
     ORI(r0, r0, i0 >> 32);
-    SLL(r0, r0, 16);
+    lshi(r0, r0, 16);
     ORI(r0, r0, i0 >> 16);
-    SLL(r0, r0, 16);
+    lshi(r0, r0, 16);
     ORI(r0, r0, i0);
 #  endif
 
@@ -1599,6 +1658,9 @@ _htonr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
     else {
        /* FIXME rewrite in a more sane way, but unlikely to be used
         * in near time... */
+#  if __WORDSIZE == 64
+#    error htonr only implemented for 32 bit
+#  endif
        rg0 = jit_get_reg(jit_class_gpr);
        rg1 = jit_get_reg(jit_class_gpr);
        LUI(rn(rg0), 0xff00);
@@ -1627,8 +1689,8 @@ _extr_c(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
     if (jit_mips2_p())
        SEB(r0, r1);
     else {
-       SLL(r0, r1, 24);
-       SRA(r0, r0, 24);
+       lshi(r0, r1, __WORDSIZE - 8);
+       rshi(r0, r0, __WORDSIZE - 8);
     }
 }
 
@@ -1638,8 +1700,8 @@ _extr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
     if (jit_mips2_p())
        SEH(r0, r1);
     else {
-       SLL(r0, r1, 16);
-       SRA(r0, r0, 16);
+       lshi(r0, r1, __WORDSIZE - 16);
+       rshi(r0, r0, __WORDSIZE - 16);
     }
 }
 
@@ -1647,8 +1709,8 @@ _extr_s(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
 static void
 _extr_ui(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
 {
-    movr(r0, r1);
-    INS(r0, _ZERO_REGNO, 32, 32);
+    lshi(r0, r1, 32);
+    rshi_u(r0, r0, 32);
 }
 #  endif
 
@@ -2259,14 +2321,14 @@ _boaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_int32_t r1)
     t1 = jit_get_reg(jit_class_gpr);
     t2 = jit_get_reg(jit_class_gpr);
     SLT(rn(t0), r1, _ZERO_REGNO);      /* t0 = r1 < 0 */
-    ADDU(rn(t1), r0, r1);              /* t1 = r0 + r1 */
+    addr(rn(t1), r0, r1);              /* t1 = r0 + r1 */
     SLT(rn(t2), rn(t1), r0);           /* t2 = t1 < r0 */
     SLT(rn(t1), r0, rn(t1));           /* t1 = r0 < t1 */
     MOVZ(rn(t1), rn(t2), rn(t0));      /* if (r0 == 0) t1 = t2 */
     w = _jit->pc.w;
     BNE(rn(t1), _ZERO_REGNO, ((i0 - w) >> 2) - 1);
     /* delay slot */
-    ADDU(r0, r0, r1);
+    addr(r0, r0, r1);
     jit_unget_reg(t2);
     jit_unget_reg(t1);
     jit_unget_reg(t0);
@@ -2287,14 +2349,14 @@ _boaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_word_t i1)
        t1 = jit_get_reg(jit_class_gpr);
        t2 = jit_get_reg(jit_class_gpr);
        SLTI(rn(t0), _ZERO_REGNO, i1);
-       ADDIU(rn(t1), r0, i1);
+       addiu(rn(t1), r0, i1);
        SLT(rn(t2), r0, rn(t1));
        SLT(rn(t1), rn(t1), r0);
        MOVZ(rn(t1), rn(t2), rn(t0));
        w = _jit->pc.w;
        BNE(rn(t1), _ZERO_REGNO, ((i0 - w) >> 2) - 1);
        /* delay slot */
-       ADDIU(r0, r0, i1);
+       addiu(r0, r0, i1);
        jit_unget_reg(t2);
        jit_unget_reg(t1);
        jit_unget_reg(t0);
@@ -2317,7 +2379,7 @@ _boaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_int32_t r1)
 
     t0 = jit_get_reg(jit_class_gpr);
     t1 = jit_get_reg(jit_class_gpr);
-    ADDU(rn(t0), r0, r1);
+    addr(rn(t0), r0, r1);
     SLTU(rn(t1), rn(t0), r0);
     w = _jit->pc.w;
     BNE(_ZERO_REGNO, rn(t1), ((i0 - w) >> 2) - 1);
@@ -2338,7 +2400,7 @@ _boaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_word_t i1)
     if (can_sign_extend_short_p(i0)) {
        t0 = jit_get_reg(jit_class_gpr);
        t1 = jit_get_reg(jit_class_gpr);
-       ADDIU(rn(t0), r0, i1);
+       addiu(rn(t0), r0, i1);
        SLTU(rn(t1), rn(t0), r0);
        w = _jit->pc.w;
        BNE(_ZERO_REGNO, rn(t1), ((i0 - w) >> 2) - 1);
@@ -2369,14 +2431,14 @@ _bxaddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_int32_t r1)
     t1 = jit_get_reg(jit_class_gpr);
     t2 = jit_get_reg(jit_class_gpr);
     SLT(rn(t0), r1, _ZERO_REGNO);      /* t0 = r1 < 0 */
-    ADDU(rn(t1), r0, r1);              /* t1 = r0 + r1 */
+    addr(rn(t1), r0, r1);              /* t1 = r0 + r1 */
     SLT(rn(t2), rn(t1), r0);           /* t2 = t1 < r0 */
     SLT(rn(t1), r0, rn(t1));           /* t1 = r0 < t1 */
     MOVZ(rn(t1), rn(t2), rn(t0));      /* if (r0 == 0) t1 = t2 */
     w = _jit->pc.w;
     BEQ(rn(t1), _ZERO_REGNO, ((i0 - w) >> 2) - 1);
     /* delay slot */
-    ADDU(r0, r0, r1);
+    addr(r0, r0, r1);
     jit_unget_reg(t2);
     jit_unget_reg(t1);
     jit_unget_reg(t0);
@@ -2397,14 +2459,14 @@ _bxaddi(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_word_t i1)
        t1 = jit_get_reg(jit_class_gpr);
        t2 = jit_get_reg(jit_class_gpr);
        SLTI(rn(t0), _ZERO_REGNO, i1);
-       ADDIU(rn(t1), r0, i1);
+       addiu(rn(t1), r0, i1);
        SLT(rn(t2), r0, rn(t1));
        SLT(rn(t1), rn(t1), r0);
        MOVZ(rn(t1), rn(t2), rn(t0));
        w = _jit->pc.w;
        BEQ(rn(t1), _ZERO_REGNO, ((i0 - w) >> 2) - 1);
        /* delay slot */
-       ADDIU(r0, r0, i1);
+       addiu(r0, r0, i1);
        jit_unget_reg(t2);
        jit_unget_reg(t1);
        jit_unget_reg(t0);
@@ -2427,7 +2489,7 @@ _bxaddr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_int32_t r1)
 
     t0 = jit_get_reg(jit_class_gpr);
     t1 = jit_get_reg(jit_class_gpr);
-    ADDU(rn(t0), r0, r1);
+    addr(rn(t0), r0, r1);
     SLTU(rn(t1), rn(t0), r0);
     w = _jit->pc.w;
     BEQ(_ZERO_REGNO, rn(t1), ((i0 - w) >> 2) - 1);
@@ -2448,7 +2510,7 @@ _bxaddi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_word_t i1)
     if (can_sign_extend_short_p(i0)) {
        t0 = jit_get_reg(jit_class_gpr);
        t1 = jit_get_reg(jit_class_gpr);
-       ADDIU(rn(t0), r0, i1);
+       addiu(rn(t0), r0, i1);
        SLTU(rn(t1), rn(t0), r0);
        w = _jit->pc.w;
        BEQ(_ZERO_REGNO, rn(t1), ((i0 - w) >> 2) - 1);
@@ -2479,14 +2541,14 @@ _bosubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_int32_t r1)
     t1 = jit_get_reg(jit_class_gpr);
     t2 = jit_get_reg(jit_class_gpr);
     SLT(rn(t0), _ZERO_REGNO, r1);      /* t0 = 0 < r1 */
-    SUBU(rn(t1), r0, r1);              /* t1 = r0 - r1 */
+    subr(rn(t1), r0, r1);              /* t1 = r0 - r1 */
     SLT(rn(t2), rn(t1), r0);           /* t2 = t1 < r0 */
     SLT(rn(t1), r0, rn(t1));           /* t1 = r0 < t1 */
     MOVZ(rn(t1), rn(t2), rn(t0));      /* if (r0 == 0) t1 = t2 */
     w = _jit->pc.w;
     BNE(rn(t1), _ZERO_REGNO, ((i0 - w) >> 2) - 1);
     /* delay slot */
-    SUBU(r0, r0, r1);
+    subr(r0, r0, r1);
     jit_unget_reg(t2);
     jit_unget_reg(t1);
     jit_unget_reg(t0);
@@ -2507,14 +2569,14 @@ _bosubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_word_t i1)
        t1 = jit_get_reg(jit_class_gpr);
        t2 = jit_get_reg(jit_class_gpr);
        SLTI(rn(t0), _ZERO_REGNO, i1);
-       ADDIU(rn(t1), r0, -i1);
+       addiu(rn(t1), r0, -i1);
        SLT(rn(t2), rn(t1), r0);
        SLT(rn(t1), r0, rn(t1));
        MOVZ(rn(t1), rn(t2), rn(t0));
        w = _jit->pc.w;
        BNE(rn(t1), _ZERO_REGNO, ((i0 - w) >> 2) - 1);
        /* delay slot */
-       ADDIU(r0, r0, -i1);
+       addiu(r0, r0, -i1);
        jit_unget_reg(t2);
        jit_unget_reg(t1);
        jit_unget_reg(t0);
@@ -2537,7 +2599,7 @@ _bosubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_int32_t r1)
 
     t0 = jit_get_reg(jit_class_gpr);
     t1 = jit_get_reg(jit_class_gpr);
-    SUBU(rn(t0), r0, r1);
+    subr(rn(t0), r0, r1);
     SLTU(rn(t1), r0, rn(t0));
     w = _jit->pc.w;
     BNE(_ZERO_REGNO, rn(t1), ((i0 - w) >> 2) - 1);
@@ -2558,7 +2620,7 @@ _bosubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_word_t i1)
     if (can_sign_extend_short_p(i0) && (i0 & 0xffff) != 0x8000) {
        t0 = jit_get_reg(jit_class_gpr);
        t1 = jit_get_reg(jit_class_gpr);
-       ADDIU(rn(t0), r0, -i1);
+       addiu(rn(t0), r0, -i1);
        SLTU(rn(t1), r0, rn(t0));
        w = _jit->pc.w;
        BNE(_ZERO_REGNO, rn(t1), ((i0 - w) >> 2) - 1);
@@ -2589,14 +2651,14 @@ _bxsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_int32_t r1)
     t1 = jit_get_reg(jit_class_gpr);
     t2 = jit_get_reg(jit_class_gpr);
     SLT(rn(t0), _ZERO_REGNO, r1);      /* t0 = 0 < r1 */
-    SUBU(rn(t1), r0, r1);              /* t1 = r0 - r1 */
+    subr(rn(t1), r0, r1);              /* t1 = r0 - r1 */
     SLT(rn(t2), rn(t1), r0);           /* t2 = t1 < r0 */
     SLT(rn(t1), r0, rn(t1));           /* t1 = r0 < t1 */
     MOVZ(rn(t1), rn(t2), rn(t0));      /* if (t0 == 0) t1 = t2 */
     w = _jit->pc.w;
     BEQ(rn(t1), _ZERO_REGNO, ((i0 - w) >> 2) - 1);
     /* delay slot */
-    SUBU(r0, r0, r1);
+    subr(r0, r0, r1);
     jit_unget_reg(t2);
     jit_unget_reg(t1);
     jit_unget_reg(t0);
@@ -2617,14 +2679,14 @@ _bxsubi(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_word_t i1)
        t1 = jit_get_reg(jit_class_gpr);
        t2 = jit_get_reg(jit_class_gpr);
        SLTI(rn(t0), _ZERO_REGNO, i1);
-       ADDIU(rn(t1), r0, -i1);
+       addiu(rn(t1), r0, -i1);
        SLT(rn(t2), rn(t1), r0);
        SLT(rn(t1), r0, rn(t1));
        MOVZ(rn(t1), rn(t2), rn(t0));
        w = _jit->pc.w;
        BEQ(rn(t1), _ZERO_REGNO, ((i0 - w) >> 2) - 1);
        /* delay slot */
-       ADDIU(r0, r0, -i1);
+       addiu(r0, r0, -i1);
        jit_unget_reg(t2);
        jit_unget_reg(t1);
        jit_unget_reg(t0);
@@ -2647,7 +2709,7 @@ _bxsubr_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_int32_t r1)
 
     t0 = jit_get_reg(jit_class_gpr);
     t1 = jit_get_reg(jit_class_gpr);
-    SUBU(rn(t0), r0, r1);
+    subr(rn(t0), r0, r1);
     SLTU(rn(t1), r0, rn(t0));
     w = _jit->pc.w;
     BEQ(_ZERO_REGNO, rn(t1), ((i0 - w) >> 2) - 1);
@@ -2668,7 +2730,7 @@ _bxsubi_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t 
r0, jit_word_t i1)
     if (can_sign_extend_short_p(i0) && (i0 & 0xffff) != 0x8000) {
        t0 = jit_get_reg(jit_class_gpr);
        t1 = jit_get_reg(jit_class_gpr);
-       ADDIU(rn(t0), r0, -i1);
+       addiu(rn(t0), r0, -i1);
        SLTU(rn(t1), r0, rn(t0));
        w = _jit->pc.w;
        BEQ(_ZERO_REGNO, rn(t1), ((i0 - w) >> 2) - 1);
@@ -2868,6 +2930,7 @@ _patch_abs(jit_state_t *_jit, jit_word_t instr, 
jit_word_t label)
     } u;
 
     u.w = instr;
+#if __WORDSIZE == 32
     i.op = u.i[0];
     assert(i.hc.b == MIPS_LUI);
     i.is.b = label >> 16;
@@ -2876,6 +2939,26 @@ _patch_abs(jit_state_t *_jit, jit_word_t instr, 
jit_word_t label)
     assert(i.hc.b == MIPS_ORI);
     i.is.b = label;
     u.i[1] = i.op;
+#else
+    i.op = u.i[0];
+    assert(i.hc.b == MIPS_LUI);
+    i.is.b = label >> 48;
+    u.i[0] = i.op;
+    i.op = u.i[1];
+    assert(i.hc.b == MIPS_ORI);
+    i.is.b = label >> 32;
+    u.i[1] = i.op;
+    /* lshi */
+    i.op = u.i[3];
+    assert(i.hc.b == MIPS_ORI);
+    i.is.b = label >> 16;
+    u.i[3] = i.op;
+    /* lshi */
+    i.op = u.i[5];
+    assert(i.hc.b == MIPS_ORI);
+    i.is.b = label;
+    u.i[5] = i.op;
+#endif
 }
 
 static void
diff --git a/lib/jit_mips-sz.c b/lib/jit_mips-sz.c
index b3350df..48c0610 100644
--- a/lib/jit_mips-sz.c
+++ b/lib/jit_mips-sz.c
@@ -1,6 +1,6 @@
 
 #if __WORDSIZE == 32
-#if defined(_ABIN32)
+#if NEW_ABI
 #define JIT_INSTR_MAX 44
     0,
     0,
@@ -348,11 +348,11 @@
     12,
     0,
     0,
-#endif /* _ABIN32 */
+#endif /* NEW_ABI */
 #endif /* __WORDSIZE */
 
 #if __WORDSIZE == 32
-#if !defined(_ABIN32)
+#if !NEW_ABI
 #define JIT_INSTR_MAX 96
     0,
     0,
@@ -700,5 +700,355 @@
     0,
     0,
     0,
-#endif /* _ABIN32 */
+#endif /* NEW_ABI */
+#endif /* __WORDSIZE */
+
+#if __WORDSIZE == 64
+#define JIT_INSTR_MAX 44
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    44,
+    0,
+    4,
+    28,
+    12,
+    36,
+    28,
+    28,
+    4,
+    28,
+    12,
+    36,
+    28,
+    28,
+    8,
+    32,
+    12,
+    32,
+    12,
+    32,
+    8,
+    32,
+    8,
+    32,
+    12,
+    16,
+    12,
+    16,
+    8,
+    32,
+    8,
+    32,
+    4,
+    28,
+    4,
+    28,
+    4,
+    28,
+    4,
+    4,
+    4,
+    4,
+    4,
+    4,
+    4,
+    8,
+    4,
+    4,
+    4,
+    4,
+    8,
+    12,
+    8,
+    12,
+    12,
+    12,
+    8,
+    12,
+    8,
+    12,
+    4,
+    8,
+    4,
+    8,
+    8,
+    8,
+    4,
+    28,
+    8,
+    4,
+    8,
+    4,
+    4,
+    8,
+    4,
+    4,
+    12,
+    4,
+    12,
+    4,
+    12,
+    4,
+    12,
+    4,
+    12,
+    4,
+    12,
+    4,
+    12,
+    8,
+    4,
+    8,
+    4,
+    8,
+    4,
+    8,
+    4,
+    8,
+    4,
+    8,
+    4,
+    8,
+    4,
+    4,
+    12,
+    4,
+    12,
+    4,
+    12,
+    4,
+    12,
+    8,
+    4,
+    8,
+    4,
+    8,
+    4,
+    8,
+    4,
+    12,
+    12,
+    12,
+    12,
+    12,
+    16,
+    12,
+    16,
+    8,
+    36,
+    12,
+    12,
+    12,
+    12,
+    12,
+    16,
+    12,
+    16,
+    8,
+    32,
+    12,
+    12,
+    12,
+    12,
+    28,
+    28,
+    16,
+    20,
+    28,
+    28,
+    16,
+    20,
+    28,
+    28,
+    16,
+    20,
+    28,
+    28,
+    16,
+    20,
+    0,
+    8,
+    12,
+    32,
+    44,
+    0,
+    4,
+    16,
+    4,
+    16,
+    4,
+    16,
+    4,
+    16,
+    4,
+    4,
+    4,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    8,
+    8,
+    8,
+    4,
+    4,
+    12,
+    4,
+    12,
+    8,
+    4,
+    4,
+    12,
+    8,
+    4,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    0,
+    4,
+    16,
+    4,
+    16,
+    4,
+    16,
+    4,
+    16,
+    4,
+    4,
+    4,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    16,
+    28,
+    8,
+    8,
+    8,
+    4,
+    4,
+    12,
+    4,
+    12,
+    8,
+    4,
+    4,
+    12,
+    8,
+    4,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    12,
+    24,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    4,
+    12,
+    0,
+    0,
 #endif /* __WORDSIZE */
diff --git a/lib/jit_mips.c b/lib/jit_mips.c
index 1acbd1d..88f128c 100644
--- a/lib/jit_mips.c
+++ b/lib/jit_mips.c
@@ -1074,7 +1074,7 @@ _emit_code(jit_state_t *_jit)
                case_wr(st, _i);
 #if __WORDSIZE == 64
                case_rr(st, _l);
-               case_rw(st, _l);
+               case_wr(st, _l);
 #endif
                case_rrr(stx, _c);
                case_wrr(stx, _c);
diff --git a/size.c b/size.c
index 5c56e69..9ea3468 100644
--- a/size.c
+++ b/size.c
@@ -55,10 +55,12 @@ main(int argc, char *argv[])
     fprintf(fp, "#if !defined(__ARM_PCS_VFP)\n");
 #  endif
 #elif defined(__mips__)
-#  if defined(_ABIN32)
-    fprintf(fp, "#if defined(_ABIN32)\n");
-#  else
-    fprintf(fp, "#if !defined(_ABIN32)\n");
+#  if __WORDSIZE == 32
+#    if NEW_ABI
+    fprintf(fp, "#if NEW_ABI\n");
+#    else
+    fprintf(fp, "#if !NEW_ABI\n");
+#    endif
 #  endif
 #elif defined(__ppc__)
     fprintf(fp, "#if defined(__ppc__)\n");
@@ -71,7 +73,9 @@ main(int argc, char *argv[])
 #if defined(__arm__)
     fprintf(fp, "#undef /* __ARM_PCS_VFP */\n");
 #elif defined(__mips__)
-    fprintf(fp, "#endif /* _ABIN32 */\n");
+#  if __WORDSIZE == 32
+    fprintf(fp, "#endif /* NEW_ABI */\n");
+#  endif
 #elif defined(__ppc__)
     fprintf(fp, "#endif /* __ppc__ */\n");
 #elif defined(__powerpc__)



reply via email to

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