This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Add RXv3 instructions.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4ce8c66d19abec8a768add7f6102e856157a3952

commit 4ce8c66d19abec8a768add7f6102e856157a3952
Author: Yoshinori Sato <ysato@users.sourceforge.jp>
Date:   Sun Jan 6 00:06:49 2019 +0900

    Add RXv3 instructions.
    
            * rx-decode.opc (DSIZE): New. double size.
            (_ld): New. dmov size attribute.
            (PSCALE): Add double size.
            (DCR, DDR, DDRH, DDRL, DCND): New. Double FPU registers.
            (SCR, SDR, SDRH, SDRL): Likewise.
            (S2DR, S2CR): Likewise.
            (SDD): New. double displacement.
            (DL): New. Set dmov size attribute.
            (rx_decode_opcode): Add RXv3 instructions.
            * rx-decode.c: Regenerate.
            * rx-dis.c (size_names): Add double entry.
            (opsize_names): Likewise.
            (double_register_names): New. Double FPU registers.
            (double_register_high_names): Likewise.
            (double_register_low_names): Likewise.
            (double_register_control_names): Likewise.
            (double_condition_names): dcmp condition.
            (print_insn_rx): Add  bfmov / bfmovz output.
            Add double FPU output.

Diff:
---
 opcodes/rx-decode.c   | 13543 ++++++++++++++++++++++++++++++------------------
 opcodes/rx-decode.opc |   162 +-
 opcodes/rx-dis.c      |    64 +-
 3 files changed, 8821 insertions(+), 4948 deletions(-)

diff --git a/opcodes/rx-decode.c b/opcodes/rx-decode.c
index 3ffc69f..6c1e1bd 100644
--- a/opcodes/rx-decode.c
+++ b/opcodes/rx-decode.c
@@ -45,6 +45,7 @@ static int trace = 0;
 #define BSIZE 0
 #define WSIZE 1
 #define LSIZE 2
+#define DSIZE 3
 
 /* These are for when the upper bits are "don't care" or "undefined".  */
 static int bwl[4] =
@@ -79,6 +80,12 @@ static int memex[4] =
   RX_UWord
 };
 
+static int _ld[2] =
+{
+  RX_Long,
+  RX_Double
+};
+
 #define ID(x) rx->id = RXO_##x
 #define OP(n,t,r,a) (rx->op[n].type = t, \
 		     rx->op[n].reg = r,	     \
@@ -89,7 +96,7 @@ static int memex[4] =
 /* This is for the BWL and BW bitfields.  */
 static int SCALE[] = { 1, 2, 4, 0 };
 /* This is for the prefix size enum.  */
-static int PSCALE[] = { 4, 1, 1, 1, 2, 2, 2, 3, 4 };
+static int PSCALE[] = { 4, 1, 1, 1, 2, 2, 2, 3, 4, 8 };
 
 #define GET_SCALE(_indx)  ((unsigned)(_indx) < ARRAY_SIZE (SCALE) ? SCALE[(_indx)] : 0)
 #define GET_PSCALE(_indx) ((unsigned)(_indx) < ARRAY_SIZE (PSCALE) ? PSCALE[(_indx)] : 0)
@@ -115,6 +122,11 @@ static int dsp3map[] = { 8, 9, 10, 3, 4, 5, 6, 7 };
 #define DIs(r,a,s)  OP (0, RX_Operand_Indirect,  r, (a) * GET_SCALE (s))
 #define DD(t,r,s)   rx_disp (0, t, r, bwl[s], ld);
 #define DF(r)       OP (0, RX_Operand_Flag,  flagmap[r], 0)
+#define DCR(r)      OP (0, RX_Operand_DoubleCReg, r, 0)
+#define DDR(r)      OP (0, RX_Operand_DoubleReg,  r, 0)
+#define DDRH(r)     OP (0, RX_Operand_DoubleRegH,  r, 0)
+#define DDRL(r)     OP (0, RX_Operand_DoubleRegL,  r, 0)
+#define DCND(r)     OP (0, RX_Operand_DoubleCond, r, 0)
 
 #define SC(i)       OP (1, RX_Operand_Immediate, 0, i)
 #define SR(r)       OP (1, RX_Operand_Register,  r, 0)
@@ -125,6 +137,10 @@ static int dsp3map[] = { 8, 9, 10, 3, 4, 5, 6, 7 };
 #define SP(t,r)     rx_disp (1, t, r, (t!=3) ? RX_UByte : RX_Long, ld); P(t, 1);
 #define SPm(t,r,m)  rx_disp (1, t, r, memex[m], ld); rx->op[1].size = memex[m];
 #define Scc(cc)     OP (1, RX_Operand_Condition,  cc, 0)
+#define SCR(r)      OP (1, RX_Operand_DoubleCReg, r, 0)
+#define SDR(r)      OP (1, RX_Operand_DoubleReg,  r, 0)
+#define SDRH(r)      OP (1, RX_Operand_DoubleRegH,  r, 0)
+#define SDRL(r)      OP (1, RX_Operand_DoubleRegL,  r, 0)
 
 #define S2C(i)      OP (2, RX_Operand_Immediate, 0, i)
 #define S2R(r)      OP (2, RX_Operand_Register,  r, 0)
@@ -134,11 +150,16 @@ static int dsp3map[] = { 8, 9, 10, 3, 4, 5, 6, 7 };
 #define S2P(t,r)    rx_disp (2, t, r, (t!=3) ? RX_UByte : RX_Long, ld); P(t, 2);
 #define S2Pm(t,r,m) rx_disp (2, t, r, memex[m], ld); rx->op[2].size = memex[m];
 #define S2cc(cc)    OP (2, RX_Operand_Condition,  cc, 0)
+#define S2DR(r)     OP (2, RX_Operand_DoubleReg,  r, 0)
+#define S2CR(r)     OP (2, RX_Operand_DoubleCReg, r, 0)
+
+#define SDD(t,r,s)  rx_disp (1, t, r, bwl, ld);
 
 #define BWL(sz)     rx->op[0].size = rx->op[1].size = rx->op[2].size = rx->size = bwl[sz]
 #define sBWL(sz)    rx->op[0].size = rx->op[1].size = rx->op[2].size = rx->size = sbwl[sz]
 #define uBW(sz)     rx->op[0].size = rx->op[1].size = rx->op[2].size = rx->size = ubw[sz]
 #define P(t, n)	    rx->op[n].size = (t!=3) ? RX_UByte : RX_Long;
+#define DL(sz)      rx->op[0].size = rx->op[1].size = rx->op[2].size = rx->size = _ld[sz]
 
 #define F(f) store_flags(rx, f)
 
@@ -299,7 +320,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("brk");
-#line 1029 "rx-decode.opc"
+#line 1050 "rx-decode.opc"
           ID(brk);
 
         }
@@ -314,7 +335,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("dbt");
-#line 1032 "rx-decode.opc"
+#line 1053 "rx-decode.opc"
           ID(dbt);
 
         }
@@ -329,7 +350,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("rts");
-#line 810 "rx-decode.opc"
+#line 831 "rx-decode.opc"
           ID(rts);
 
         /*----------------------------------------------------------------------*/
@@ -347,7 +368,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("nop");
-#line 816 "rx-decode.opc"
+#line 837 "rx-decode.opc"
           ID(nop);
 
         /*----------------------------------------------------------------------*/
@@ -365,7 +386,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("bra.a	%a0");
-#line 788 "rx-decode.opc"
+#line 809 "rx-decode.opc"
           ID(branch); DC(pc + IMMex(3));
 
         }
@@ -380,7 +401,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("bsr.a	%a0");
-#line 804 "rx-decode.opc"
+#line 825 "rx-decode.opc"
           ID(jsr); DC(pc + IMMex(3));
 
         }
@@ -397,13 +418,13 @@ rx_decode_opcode (unsigned long pc AU,
                   op_semantics_1:
                     {
                       /** 0000 0110 mx00 00ss rsrc rdst			sub	%2%S2, %1 */
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
                       int mx AU = (op[1] >> 6) & 0x03;
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
                       int ss AU = op[1] & 0x03;
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
                       int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
                       int rdst AU = op[2] & 0x0f;
                       if (trace)
                         {
@@ -416,7 +437,7 @@ rx_decode_opcode (unsigned long pc AU,
                           printf ("  rdst = 0x%x\n", rdst);
                         }
                       SYNTAX("sub	%2%S2, %1");
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
                       ID(sub); S2Pm(ss, rsrc, mx); SR(rdst); DR(rdst); F_OSZC;
 
                     }
@@ -458,13 +479,13 @@ rx_decode_opcode (unsigned long pc AU,
                   op_semantics_2:
                     {
                       /** 0000 0110 mx00 01ss rsrc rdst		cmp	%2%S2, %1 */
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
                       int mx AU = (op[1] >> 6) & 0x03;
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
                       int ss AU = op[1] & 0x03;
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
                       int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
                       int rdst AU = op[2] & 0x0f;
                       if (trace)
                         {
@@ -477,7 +498,7 @@ rx_decode_opcode (unsigned long pc AU,
                           printf ("  rdst = 0x%x\n", rdst);
                         }
                       SYNTAX("cmp	%2%S2, %1");
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
                       ID(sub); S2Pm(ss, rsrc, mx); SR(rdst); F_OSZC;
 
                     /*----------------------------------------------------------------------*/
@@ -522,13 +543,13 @@ rx_decode_opcode (unsigned long pc AU,
                   op_semantics_3:
                     {
                       /** 0000 0110 mx00 10ss rsrc rdst	add	%1%S1, %0 */
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
                       int mx AU = (op[1] >> 6) & 0x03;
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
                       int ss AU = op[1] & 0x03;
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
                       int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
                       int rdst AU = op[2] & 0x0f;
                       if (trace)
                         {
@@ -541,7 +562,7 @@ rx_decode_opcode (unsigned long pc AU,
                           printf ("  rdst = 0x%x\n", rdst);
                         }
                       SYNTAX("add	%1%S1, %0");
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
                       ID(add); SPm(ss, rsrc, mx); DR(rdst); F_OSZC;
 
                     }
@@ -583,13 +604,13 @@ rx_decode_opcode (unsigned long pc AU,
                   op_semantics_4:
                     {
                       /** 0000 0110 mx00 11ss rsrc rdst	mul	%1%S1, %0 */
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
                       int mx AU = (op[1] >> 6) & 0x03;
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
                       int ss AU = op[1] & 0x03;
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
                       int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
                       int rdst AU = op[2] & 0x0f;
                       if (trace)
                         {
@@ -602,7 +623,7 @@ rx_decode_opcode (unsigned long pc AU,
                           printf ("  rdst = 0x%x\n", rdst);
                         }
                       SYNTAX("mul	%1%S1, %0");
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
                       ID(mul); SPm(ss, rsrc, mx); DR(rdst); F_____;
 
                     }
@@ -644,13 +665,13 @@ rx_decode_opcode (unsigned long pc AU,
                   op_semantics_5:
                     {
                       /** 0000 0110 mx01 00ss rsrc rdst	and	%1%S1, %0 */
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
                       int mx AU = (op[1] >> 6) & 0x03;
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
                       int ss AU = op[1] & 0x03;
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
                       int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
                       int rdst AU = op[2] & 0x0f;
                       if (trace)
                         {
@@ -663,7 +684,7 @@ rx_decode_opcode (unsigned long pc AU,
                           printf ("  rdst = 0x%x\n", rdst);
                         }
                       SYNTAX("and	%1%S1, %0");
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
                       ID(and); SPm(ss, rsrc, mx); DR(rdst); F__SZ_;
 
                     }
@@ -705,13 +726,13 @@ rx_decode_opcode (unsigned long pc AU,
                   op_semantics_6:
                     {
                       /** 0000 0110 mx01 01ss rsrc rdst			or	%1%S1, %0 */
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
                       int mx AU = (op[1] >> 6) & 0x03;
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
                       int ss AU = op[1] & 0x03;
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
                       int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
                       int rdst AU = op[2] & 0x0f;
                       if (trace)
                         {
@@ -724,7 +745,7 @@ rx_decode_opcode (unsigned long pc AU,
                           printf ("  rdst = 0x%x\n", rdst);
                         }
                       SYNTAX("or	%1%S1, %0");
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
                       ID(or); SPm(ss, rsrc, mx); DR(rdst); F__SZ_;
 
                     }
@@ -770,13 +791,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_7:
                           {
                             /** 0000 0110 mx10 00sp 0000 0000 rsrc rdst	sbb	%1%S1, %0 */
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
                             int sp AU = op[1] & 0x03;
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -789,7 +810,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("sbb	%1%S1, %0");
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
                             ID(sbb); SPm(sp, rsrc, mx); DR(rdst); F_OSZC;
 
                           /*----------------------------------------------------------------------*/
@@ -807,13 +828,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_8:
                           {
                             /** 0000 0110 mx10 00ss 0000 0100 rsrc rdst	max	%1%S1, %0 */
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -826,7 +847,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("max	%1%S1, %0");
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
                             ID(max); SPm(ss, rsrc, mx); DR(rdst);
 
                           /*----------------------------------------------------------------------*/
@@ -844,13 +865,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_9:
                           {
                             /** 0000 0110 mx10 00ss 0000 0101 rsrc rdst	min	%1%S1, %0 */
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -863,7 +884,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("min	%1%S1, %0");
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
                             ID(min); SPm(ss, rsrc, mx); DR(rdst);
 
                           /*----------------------------------------------------------------------*/
@@ -881,13 +902,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_10:
                           {
                             /** 0000 0110 mx10 00ss 0000 0110 rsrc rdst	emul	%1%S1, %0 */
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -900,7 +921,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("emul	%1%S1, %0");
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
                             ID(emul); SPm(ss, rsrc, mx); DR(rdst);
 
                           /*----------------------------------------------------------------------*/
@@ -918,13 +939,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_11:
                           {
                             /** 0000 0110 mx10 00ss 0000 0111 rsrc rdst	emulu	%1%S1, %0 */
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -937,7 +958,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("emulu	%1%S1, %0");
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
                             ID(emulu); SPm(ss, rsrc, mx); DR(rdst);
 
                           /*----------------------------------------------------------------------*/
@@ -955,13 +976,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_12:
                           {
                             /** 0000 0110 mx10 00ss 0000 1000 rsrc rdst	div	%1%S1, %0 */
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -974,7 +995,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("div	%1%S1, %0");
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
                             ID(div); SPm(ss, rsrc, mx); DR(rdst); F_O___;
 
                           /*----------------------------------------------------------------------*/
@@ -992,13 +1013,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_13:
                           {
                             /** 0000 0110 mx10 00ss 0000 1001 rsrc rdst	divu	%1%S1, %0 */
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -1011,7 +1032,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("divu	%1%S1, %0");
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
                             ID(divu); SPm(ss, rsrc, mx); DR(rdst); F_O___;
 
                           /*----------------------------------------------------------------------*/
@@ -1029,13 +1050,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_14:
                           {
                             /** 0000 0110 mx10 00ss 0000 1100 rsrc rdst	tst	%1%S1, %2 */
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -1048,7 +1069,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("tst	%1%S1, %2");
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
                             ID(and); SPm(ss, rsrc, mx); S2R(rdst); F__SZ_;
 
                           /*----------------------------------------------------------------------*/
@@ -1066,13 +1087,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_15:
                           {
                             /** 0000 0110 mx10 00ss 0000 1101 rsrc rdst	xor	%1%S1, %0 */
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -1085,7 +1106,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("xor	%1%S1, %0");
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
                             ID(xor); SPm(ss, rsrc, mx); DR(rdst); F__SZ_;
 
                           /*----------------------------------------------------------------------*/
@@ -1103,13 +1124,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_16:
                           {
                             /** 0000 0110 mx10 00ss 0001 0000 rsrc rdst	xchg	%1%S1, %0 */
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -1122,7 +1143,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("xchg	%1%S1, %0");
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
                             ID(xchg); DR(rdst); SPm(ss, rsrc, mx);
 
                           /*----------------------------------------------------------------------*/
@@ -1140,13 +1161,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_17:
                           {
                             /** 0000 0110 mx10 00sd 0001 0001 rsrc rdst	itof	%1%S1, %0 */
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
                             int sd AU = op[1] & 0x03;
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -1159,7 +1180,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("itof	%1%S1, %0");
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
                             ID(itof); DR (rdst); SPm(sd, rsrc, mx); F__SZ_;
 
                           /*----------------------------------------------------------------------*/
@@ -1177,13 +1198,13 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_18:
                           {
                             /** 0000 0110 mx10 00sd 0001 0101 rsrc rdst	utof	%1%S1, %0 */
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
                             int mx AU = (op[1] >> 6) & 0x03;
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
                             int sd AU = op[1] & 0x03;
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -1196,9 +1217,12 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("utof	%1%S1, %0");
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
                             ID(utof); DR (rdst); SPm(sd, rsrc, mx); F__SZ_;
 
+                          /*----------------------------------------------------------------------*/
+                          /* RXv3 enhanced							*/
+
                           }
                         break;
                     }
@@ -2464,11 +2488,11 @@ rx_decode_opcode (unsigned long pc AU,
                         op_semantics_19:
                           {
                             /** 0000 0110 1010 00ss 0000 0010 rsrc rdst	adc	%1%S1, %0 */
-#line 498 "rx-decode.opc"
+#line 519 "rx-decode.opc"
                             int ss AU = op[1] & 0x03;
-#line 498 "rx-decode.opc"
+#line 519 "rx-decode.opc"
                             int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 498 "rx-decode.opc"
+#line 519 "rx-decode.opc"
                             int rdst AU = op[3] & 0x0f;
                             if (trace)
                               {
@@ -2480,7 +2504,7 @@ rx_decode_opcode (unsigned long pc AU,
                                 printf ("  rdst = 0x%x\n", rdst);
                               }
                             SYNTAX("adc	%1%S1, %0");
-#line 498 "rx-decode.opc"
+#line 519 "rx-decode.opc"
                             ID(adc); SPm(ss, rsrc, 2); DR(rdst); F_OSZC;
 
                           /*----------------------------------------------------------------------*/
@@ -3653,7 +3677,7 @@ rx_decode_opcode (unsigned long pc AU,
     case 0x0f:
         {
           /** 0000 1dsp			bra.s	%a0 */
-#line 779 "rx-decode.opc"
+#line 800 "rx-decode.opc"
           int dsp AU = op[0] & 0x07;
           if (trace)
             {
@@ -3663,7 +3687,7 @@ rx_decode_opcode (unsigned long pc AU,
               printf ("  dsp = 0x%x\n", dsp);
             }
           SYNTAX("bra.s	%a0");
-#line 779 "rx-decode.opc"
+#line 800 "rx-decode.opc"
           ID(branch); DC(pc + dsp3map[dsp]);
 
         }
@@ -3686,9 +3710,9 @@ rx_decode_opcode (unsigned long pc AU,
     case 0x1f:
         {
           /** 0001 n dsp			b%1.s	%a0 */
-#line 769 "rx-decode.opc"
+#line 790 "rx-decode.opc"
           int n AU = (op[0] >> 3) & 0x01;
-#line 769 "rx-decode.opc"
+#line 790 "rx-decode.opc"
           int dsp AU = op[0] & 0x07;
           if (trace)
             {
@@ -3699,7 +3723,7 @@ rx_decode_opcode (unsigned long pc AU,
               printf ("  dsp = 0x%x\n", dsp);
             }
           SYNTAX("b%1.s	%a0");
-#line 769 "rx-decode.opc"
+#line 790 "rx-decode.opc"
           ID(branch); Scc(n); DC(pc + dsp3map[dsp]);
 
         }
@@ -3721,7 +3745,7 @@ rx_decode_opcode (unsigned long pc AU,
     case 0x2f:
         {
           /** 0010 cond			b%1.b	%a0 */
-#line 772 "rx-decode.opc"
+#line 793 "rx-decode.opc"
           int cond AU = op[0] & 0x0f;
           if (trace)
             {
@@ -3731,7 +3755,7 @@ rx_decode_opcode (unsigned long pc AU,
               printf ("  cond = 0x%x\n", cond);
             }
           SYNTAX("b%1.b	%a0");
-#line 772 "rx-decode.opc"
+#line 793 "rx-decode.opc"
           ID(branch); Scc(cond); DC(pc + IMMex (1));
 
         }
@@ -3746,7 +3770,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("bra.b	%a0");
-#line 782 "rx-decode.opc"
+#line 803 "rx-decode.opc"
           ID(branch); DC(pc + IMMex(1));
 
         }
@@ -3761,7 +3785,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("bra.w	%a0");
-#line 785 "rx-decode.opc"
+#line 806 "rx-decode.opc"
           ID(branch); DC(pc + IMMex(2));
 
         }
@@ -3776,7 +3800,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("bsr.w	%a0");
-#line 801 "rx-decode.opc"
+#line 822 "rx-decode.opc"
           ID(jsr); DC(pc + IMMex(2));
 
         }
@@ -3785,7 +3809,7 @@ rx_decode_opcode (unsigned long pc AU,
     case 0x3b:
         {
           /** 0011 101c			b%1.w	%a0 */
-#line 775 "rx-decode.opc"
+#line 796 "rx-decode.opc"
           int c AU = op[0] & 0x01;
           if (trace)
             {
@@ -3795,7 +3819,7 @@ rx_decode_opcode (unsigned long pc AU,
               printf ("  c = 0x%x\n", c);
             }
           SYNTAX("b%1.w	%a0");
-#line 775 "rx-decode.opc"
+#line 796 "rx-decode.opc"
           ID(branch); Scc(c); DC(pc + IMMex (2));
 
 
@@ -3809,13 +3833,13 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_20:
               {
                 /** 0011 11sz d dst sppp		mov%s	#%1, %0 */
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
                 int sz AU = op[0] & 0x03;
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
                 int d AU = (op[1] >> 7) & 0x01;
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
                 int dst AU = (op[1] >> 4) & 0x07;
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
                 int sppp AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -3828,7 +3852,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  sppp = 0x%x\n", sppp);
                   }
                 SYNTAX("mov%s	#%1, %0");
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
                 ID(mov); sBWL (sz); DIs(dst, d*16+sppp, sz); SC(IMM(1)); F_____;
 
               }
@@ -3860,9 +3884,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0011 1111 rega regb		rtsd	#%1, %2-%0 */
-#line 408 "rx-decode.opc"
+#line 429 "rx-decode.opc"
                 int rega AU = (op[1] >> 4) & 0x0f;
-#line 408 "rx-decode.opc"
+#line 429 "rx-decode.opc"
                 int regb AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -3873,7 +3897,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  regb = 0x%x\n", regb);
                   }
                 SYNTAX("rtsd	#%1, %2-%0");
-#line 408 "rx-decode.opc"
+#line 429 "rx-decode.opc"
                 ID(rtsd); SC(IMM(1) * 4); S2R(rega); DR(regb);
 
               /*----------------------------------------------------------------------*/
@@ -3891,11 +3915,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_21:
               {
                 /** 0100 00ss rsrc rdst			sub	%2%S2, %1 */
-#line 543 "rx-decode.opc"
+#line 564 "rx-decode.opc"
                 int ss AU = op[0] & 0x03;
-#line 543 "rx-decode.opc"
+#line 564 "rx-decode.opc"
                 int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 543 "rx-decode.opc"
+#line 564 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -3907,7 +3931,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("sub	%2%S2, %1");
-#line 543 "rx-decode.opc"
+#line 564 "rx-decode.opc"
                 ID(sub); S2P(ss, rsrc); SR(rdst); DR(rdst); F_OSZC;
 
               }
@@ -3949,11 +3973,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_22:
               {
                 /** 0100 01ss rsrc rdst		cmp	%2%S2, %1 */
-#line 531 "rx-decode.opc"
+#line 552 "rx-decode.opc"
                 int ss AU = op[0] & 0x03;
-#line 531 "rx-decode.opc"
+#line 552 "rx-decode.opc"
                 int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 531 "rx-decode.opc"
+#line 552 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -3965,7 +3989,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("cmp	%2%S2, %1");
-#line 531 "rx-decode.opc"
+#line 552 "rx-decode.opc"
                 ID(sub); S2P(ss, rsrc); SR(rdst); F_OSZC;
 
               }
@@ -4007,11 +4031,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_23:
               {
                 /** 0100 10ss rsrc rdst			add	%1%S1, %0 */
-#line 507 "rx-decode.opc"
+#line 528 "rx-decode.opc"
                 int ss AU = op[0] & 0x03;
-#line 507 "rx-decode.opc"
+#line 528 "rx-decode.opc"
                 int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 507 "rx-decode.opc"
+#line 528 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4023,7 +4047,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("add	%1%S1, %0");
-#line 507 "rx-decode.opc"
+#line 528 "rx-decode.opc"
                 ID(add); SP(ss, rsrc); DR(rdst); F_OSZC;
 
               }
@@ -4065,11 +4089,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_24:
               {
                 /** 0100 11ss rsrc rdst			mul	%1%S1, %0 */
-#line 650 "rx-decode.opc"
+#line 671 "rx-decode.opc"
                 int ss AU = op[0] & 0x03;
-#line 650 "rx-decode.opc"
+#line 671 "rx-decode.opc"
                 int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 650 "rx-decode.opc"
+#line 671 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4081,7 +4105,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("mul	%1%S1, %0");
-#line 650 "rx-decode.opc"
+#line 671 "rx-decode.opc"
                 ID(mul); SP(ss, rsrc); DR(rdst); F_____;
 
               }
@@ -4123,11 +4147,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_25:
               {
                 /** 0101 00ss rsrc rdst			and	%1%S1, %0 */
-#line 420 "rx-decode.opc"
+#line 441 "rx-decode.opc"
                 int ss AU = op[0] & 0x03;
-#line 420 "rx-decode.opc"
+#line 441 "rx-decode.opc"
                 int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 420 "rx-decode.opc"
+#line 441 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4139,7 +4163,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("and	%1%S1, %0");
-#line 420 "rx-decode.opc"
+#line 441 "rx-decode.opc"
                 ID(and); SP(ss, rsrc); DR(rdst); F__SZ_;
 
               }
@@ -4181,11 +4205,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_26:
               {
                 /** 0101 01ss rsrc rdst			or	%1%S1, %0 */
-#line 438 "rx-decode.opc"
+#line 459 "rx-decode.opc"
                 int ss AU = op[0] & 0x03;
-#line 438 "rx-decode.opc"
+#line 459 "rx-decode.opc"
                 int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 438 "rx-decode.opc"
+#line 459 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4197,7 +4221,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("or	%1%S1, %0");
-#line 438 "rx-decode.opc"
+#line 459 "rx-decode.opc"
                 ID(or); SP(ss, rsrc); DR(rdst); F__SZ_;
 
               }
@@ -4239,13 +4263,13 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_27:
               {
                 /** 0101 1 s ss rsrc rdst	movu%s	%1, %0 */
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
                 int s AU = (op[0] >> 2) & 0x01;
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
                 int ss AU = op[0] & 0x03;
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
                 int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4258,7 +4282,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("movu%s	%1, %0");
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
                 ID(mov); uBW(s); SD(ss, rsrc, s); DR(rdst); F_____;
 
               }
@@ -4335,9 +4359,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0110 0000 immm rdst			sub	#%2, %0 */
-#line 540 "rx-decode.opc"
+#line 561 "rx-decode.opc"
                 int immm AU = (op[1] >> 4) & 0x0f;
-#line 540 "rx-decode.opc"
+#line 561 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4348,7 +4372,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("sub	#%2, %0");
-#line 540 "rx-decode.opc"
+#line 561 "rx-decode.opc"
                 ID(sub); S2C(immm); SR(rdst); DR(rdst); F_OSZC;
 
               }
@@ -4362,9 +4386,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0110 0001 immm rdst			cmp	#%2, %1 */
-#line 522 "rx-decode.opc"
+#line 543 "rx-decode.opc"
                 int immm AU = (op[1] >> 4) & 0x0f;
-#line 522 "rx-decode.opc"
+#line 543 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4375,7 +4399,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("cmp	#%2, %1");
-#line 522 "rx-decode.opc"
+#line 543 "rx-decode.opc"
                 ID(sub); S2C(immm); SR(rdst); F_OSZC;
 
               }
@@ -4389,9 +4413,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0110 0010 immm rdst			add	#%1, %0 */
-#line 504 "rx-decode.opc"
+#line 525 "rx-decode.opc"
                 int immm AU = (op[1] >> 4) & 0x0f;
-#line 504 "rx-decode.opc"
+#line 525 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4402,7 +4426,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("add	#%1, %0");
-#line 504 "rx-decode.opc"
+#line 525 "rx-decode.opc"
                 ID(add); SC(immm); DR(rdst); F_OSZC;
 
               }
@@ -4416,9 +4440,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0110 0011 immm rdst			mul	#%1, %0 */
-#line 616 "rx-decode.opc"
+#line 637 "rx-decode.opc"
                 int immm AU = (op[1] >> 4) & 0x0f;
-#line 616 "rx-decode.opc"
+#line 637 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4429,7 +4453,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("mul	#%1, %0");
-#line 616 "rx-decode.opc"
+#line 637 "rx-decode.opc"
                 if (immm == 1 && rdst == 0)
                   {
                     ID(nop2);
@@ -4452,9 +4476,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0110 0100 immm rdst			and	#%1, %0 */
-#line 414 "rx-decode.opc"
+#line 435 "rx-decode.opc"
                 int immm AU = (op[1] >> 4) & 0x0f;
-#line 414 "rx-decode.opc"
+#line 435 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4465,7 +4489,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("and	#%1, %0");
-#line 414 "rx-decode.opc"
+#line 435 "rx-decode.opc"
                 ID(and); SC(immm); DR(rdst); F__SZ_;
 
               }
@@ -4479,9 +4503,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0110 0101 immm rdst			or	#%1, %0 */
-#line 432 "rx-decode.opc"
+#line 453 "rx-decode.opc"
                 int immm AU = (op[1] >> 4) & 0x0f;
-#line 432 "rx-decode.opc"
+#line 453 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4492,7 +4516,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("or	#%1, %0");
-#line 432 "rx-decode.opc"
+#line 453 "rx-decode.opc"
                 ID(or); SC(immm); DR(rdst); F__SZ_;
 
               }
@@ -4506,9 +4530,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0110 0110 immm rdst		mov%s	#%1, %0 */
-#line 308 "rx-decode.opc"
+#line 329 "rx-decode.opc"
                 int immm AU = (op[1] >> 4) & 0x0f;
-#line 308 "rx-decode.opc"
+#line 329 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4519,7 +4543,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("mov%s	#%1, %0");
-#line 308 "rx-decode.opc"
+#line 329 "rx-decode.opc"
                 ID(mov); DR(rdst); SC(immm); F_____;
 
               }
@@ -4536,7 +4560,7 @@ rx_decode_opcode (unsigned long pc AU,
                      op[0]);
             }
           SYNTAX("rtsd	#%1");
-#line 405 "rx-decode.opc"
+#line 426 "rx-decode.opc"
           ID(rtsd); SC(IMM(1) * 4);
 
         }
@@ -4549,11 +4573,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_28:
               {
                 /** 0110 100i mmmm rdst			shlr	#%2, %0 */
-#line 730 "rx-decode.opc"
+#line 751 "rx-decode.opc"
                 int i AU = op[0] & 0x01;
-#line 730 "rx-decode.opc"
+#line 751 "rx-decode.opc"
                 int mmmm AU = (op[1] >> 4) & 0x0f;
-#line 730 "rx-decode.opc"
+#line 751 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4565,7 +4589,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("shlr	#%2, %0");
-#line 730 "rx-decode.opc"
+#line 751 "rx-decode.opc"
                 ID(shlr); S2C(i*16+mmmm); SR(rdst); DR(rdst); F__SZC;
 
               }
@@ -4589,11 +4613,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_29:
               {
                 /** 0110 101i mmmm rdst			shar	#%2, %0 */
-#line 720 "rx-decode.opc"
+#line 741 "rx-decode.opc"
                 int i AU = op[0] & 0x01;
-#line 720 "rx-decode.opc"
+#line 741 "rx-decode.opc"
                 int mmmm AU = (op[1] >> 4) & 0x0f;
-#line 720 "rx-decode.opc"
+#line 741 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4605,7 +4629,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("shar	#%2, %0");
-#line 720 "rx-decode.opc"
+#line 741 "rx-decode.opc"
                 ID(shar); S2C(i*16+mmmm); SR(rdst); DR(rdst); F_0SZC;
 
               }
@@ -4629,11 +4653,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_30:
               {
                 /** 0110 110i mmmm rdst			shll	#%2, %0 */
-#line 710 "rx-decode.opc"
+#line 731 "rx-decode.opc"
                 int i AU = op[0] & 0x01;
-#line 710 "rx-decode.opc"
+#line 731 "rx-decode.opc"
                 int mmmm AU = (op[1] >> 4) & 0x0f;
-#line 710 "rx-decode.opc"
+#line 731 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4645,7 +4669,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("shll	#%2, %0");
-#line 710 "rx-decode.opc"
+#line 731 "rx-decode.opc"
                 ID(shll); S2C(i*16+mmmm); SR(rdst); DR(rdst); F_OSZC;
 
               }
@@ -4668,9 +4692,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0110 1110 dsta dstb		pushm	%1-%2 */
-#line 372 "rx-decode.opc"
+#line 393 "rx-decode.opc"
                 int dsta AU = (op[1] >> 4) & 0x0f;
-#line 372 "rx-decode.opc"
+#line 393 "rx-decode.opc"
                 int dstb AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4681,7 +4705,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  dstb = 0x%x\n", dstb);
                   }
                 SYNTAX("pushm	%1-%2");
-#line 372 "rx-decode.opc"
+#line 393 "rx-decode.opc"
                 ID(pushm); SR(dsta); S2R(dstb); F_____;
 
               }
@@ -4695,9 +4719,9 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x00:
               {
                 /** 0110 1111 dsta dstb		popm	%1-%2 */
-#line 369 "rx-decode.opc"
+#line 390 "rx-decode.opc"
                 int dsta AU = (op[1] >> 4) & 0x0f;
-#line 369 "rx-decode.opc"
+#line 390 "rx-decode.opc"
                 int dstb AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4708,7 +4732,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  dstb = 0x%x\n", dstb);
                   }
                 SYNTAX("popm	%1-%2");
-#line 369 "rx-decode.opc"
+#line 390 "rx-decode.opc"
                 ID(popm); SR(dsta); S2R(dstb); F_____;
 
               }
@@ -4723,11 +4747,11 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_31:
               {
                 /** 0111 00im rsrc rdst			add	#%1, %2, %0 */
-#line 513 "rx-decode.opc"
+#line 534 "rx-decode.opc"
                 int im AU = op[0] & 0x03;
-#line 513 "rx-decode.opc"
+#line 534 "rx-decode.opc"
                 int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 513 "rx-decode.opc"
+#line 534 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4739,7 +4763,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("add	#%1, %2, %0");
-#line 513 "rx-decode.opc"
+#line 534 "rx-decode.opc"
                 ID(add); SC(IMMex(im)); S2R(rsrc); DR(rdst); F_OSZC;
 
               }
@@ -4781,9 +4805,9 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_32:
               {
                 /** 0111 01im 0000 rsrc		cmp	#%2, %1%S1 */
-#line 525 "rx-decode.opc"
+#line 546 "rx-decode.opc"
                 int im AU = op[0] & 0x03;
-#line 525 "rx-decode.opc"
+#line 546 "rx-decode.opc"
                 int rsrc AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4794,7 +4818,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rsrc = 0x%x\n", rsrc);
                   }
                 SYNTAX("cmp	#%2, %1%S1");
-#line 525 "rx-decode.opc"
+#line 546 "rx-decode.opc"
                 ID(sub); SR(rsrc); S2C(IMMex(im)); F_OSZC;
 
               }
@@ -4803,9 +4827,9 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_33:
               {
                 /** 0111 01im 0001rdst			mul	#%1, %0 */
-#line 628 "rx-decode.opc"
+#line 649 "rx-decode.opc"
                 int im AU = op[0] & 0x03;
-#line 628 "rx-decode.opc"
+#line 649 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4816,7 +4840,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("mul	#%1, %0");
-#line 628 "rx-decode.opc"
+#line 649 "rx-decode.opc"
                 int val = IMMex(im);
                 if (val == 1 && rdst == 0)
                   {
@@ -4844,9 +4868,9 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_34:
               {
                 /** 0111 01im 0010 rdst			and	#%1, %0 */
-#line 417 "rx-decode.opc"
+#line 438 "rx-decode.opc"
                 int im AU = op[0] & 0x03;
-#line 417 "rx-decode.opc"
+#line 438 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4857,7 +4881,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("and	#%1, %0");
-#line 417 "rx-decode.opc"
+#line 438 "rx-decode.opc"
                 ID(and); SC(IMMex(im)); DR(rdst); F__SZ_;
 
               }
@@ -4866,9 +4890,9 @@ rx_decode_opcode (unsigned long pc AU,
             op_semantics_35:
               {
                 /** 0111 01im 0011 rdst			or	#%1, %0 */
-#line 435 "rx-decode.opc"
+#line 456 "rx-decode.opc"
                 int im AU = op[0] & 0x03;
-#line 435 "rx-decode.opc"
+#line 456 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4879,7 +4903,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("or	#%1, %0");
-#line 435 "rx-decode.opc"
+#line 456 "rx-decode.opc"
                 ID(or); SC(IMMex(im)); DR(rdst); F__SZ_;
 
               }
@@ -4981,7 +5005,7 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x4f:
               {
                 /** 0111 0101 0100 rdst		mov%s	#%1, %0 */
-#line 289 "rx-decode.opc"
+#line 310 "rx-decode.opc"
                 int rdst AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -4991,7 +5015,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rdst = 0x%x\n", rdst);
                   }
                 SYNTAX("mov%s	#%1, %0");
-#line 289 "rx-decode.opc"
+#line 310 "rx-decode.opc"
                 ID(mov); DR(rdst); SC(IMM (1)); F_____;
 
               }
@@ -5014,7 +5038,7 @@ rx_decode_opcode (unsigned long pc AU,
           case 0x5f:
               {
                 /** 0111 0101 0101 rsrc			cmp	#%2, %1 */
-#line 528 "rx-decode.opc"
+#line 549 "rx-decode.opc"
                 int rsrc AU = op[1] & 0x0f;
                 if (trace)
                   {
@@ -5024,7 +5048,7 @@ rx_decode_opcode (unsigned long pc AU,
                     printf ("  rsrc = 0x%x\n", rsrc);
                   }
                 SYNTAX("cmp	#%2, %1");
-#line 528 "rx-decode.opc"
+#line 549 "rx-decode.opc"
                 ID(sub); SR(rsrc); S2C(IMM(1)); F_OSZC;
 
               }
@@ -5039,7 +5063,7 @@ rx_decode_opcode (unsigned long pc AU,
                            op[0], op[1]);
                   }
                 SYNTAX("int #%1");
-#line 1035 "rx-decode.opc"
+#line 1056 "rx-decode.opc"
                 ID(int); SC(IMM(1));
 
               }
@@ -5051,7 +5075,7 @@ rx_decode_opcode (unsigned long pc AU,
                 case 0x00:
                     {
                       /** 0111 0101 0111 0000 0000 immm	mvtipl	#%1 */
-#line 1002 "rx-decode.opc"
+#line 1023 "rx-decode.opc"
                       int immm AU = op[2] & 0x0f;
                       if (trace)
                         {
@@ -5061,7 +5085,7 @@ rx_decode_opcode (unsigned long pc AU,
                           printf ("  immm = 0x%x\n", immm);
                         }
                       SYNTAX("mvtipl	#%1");
-#line 1002 "rx-decode.opc"
+#line 1023 "rx-decode.opc"
                       ID(mvtipl); SC(immm);
 
                     }
@@ -5069,6702 +5093,10167 @@ rx_decode_opcode (unsigned long pc AU,
                 default: UNSUPPORTED(); break;
               }
             break;
-          default: UNSUPPORTED(); break;
-        }
-      break;
-    case 0x76:
-        GETBYTE ();
-        switch (op[1] & 0xf0)
-        {
-          case 0x00:
-            goto op_semantics_32;
-            break;
-          case 0x10:
-            goto op_semantics_33;
-            break;
-          case 0x20:
-            goto op_semantics_34;
-            break;
-          case 0x30:
-            goto op_semantics_35;
+          case 0x90:
+              GETBYTE ();
+              switch (op[2] & 0xff)
+              {
+                case 0x1b:
+                    {
+                      /** 0111 0101 1001 0000 0001 1011	mvfdr */
+                      if (trace)
+                        {
+                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
+                                 "/** 0111 0101 1001 0000 0001 1011	mvfdr */",
+                                 op[0], op[1], op[2]);
+                        }
+                      SYNTAX("mvfdr");
+#line 1229 "rx-decode.opc"
+                      ID(mvfdr); F_____;
+
+                    }
+                  break;
+                default: UNSUPPORTED(); break;
+              }
             break;
-          default: UNSUPPORTED(); break;
-        }
-      break;
-    case 0x77:
-        GETBYTE ();
-        switch (op[1] & 0xf0)
-        {
-          case 0x00:
-            goto op_semantics_32;
-            break;
-          case 0x10:
-            goto op_semantics_33;
-            break;
-          case 0x20:
-            goto op_semantics_34;
-            break;
-          case 0x30:
-            goto op_semantics_35;
-            break;
-          default: UNSUPPORTED(); break;
-        }
-      break;
-    case 0x78:
-        GETBYTE ();
-        switch (op[1] & 0x00)
-        {
-          case 0x00:
-            op_semantics_36:
+          case 0xa0:
+              GETBYTE ();
+              switch (op[2] & 0x00)
               {
-                /** 0111 100b ittt rdst			bset	#%1, %0 */
-#line 947 "rx-decode.opc"
-                int b AU = op[0] & 0x01;
-#line 947 "rx-decode.opc"
-                int ittt AU = (op[1] >> 4) & 0x0f;
-#line 947 "rx-decode.opc"
-                int rdst AU = op[1] & 0x0f;
-                if (trace)
-                  {
-                    printf ("\033[33m%s\033[0m  %02x %02x\n",
-                           "/** 0111 100b ittt rdst			bset	#%1, %0 */",
-                           op[0], op[1]);
-                    printf ("  b = 0x%x,", b);
-                    printf ("  ittt = 0x%x,", ittt);
-                    printf ("  rdst = 0x%x\n", rdst);
-                  }
-                SYNTAX("bset	#%1, %0");
-#line 947 "rx-decode.opc"
-                ID(bset); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;
-
+                case 0x00:
+                    {
+                      /** 0111 0101 1010 0000 rdst rnum	dpushm.l	%1-%2 */
+#line 1223 "rx-decode.opc"
+                      int rdst AU = (op[2] >> 4) & 0x0f;
+#line 1223 "rx-decode.opc"
+                      int rnum AU = op[2] & 0x0f;
+                      if (trace)
+                        {
+                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
+                                 "/** 0111 0101 1010 0000 rdst rnum	dpushm.l	%1-%2 */",
+                                 op[0], op[1], op[2]);
+                          printf ("  rdst = 0x%x,", rdst);
+                          printf ("  rnum = 0x%x\n", rnum);
+                        }
+                      SYNTAX("dpushm.l	%1-%2");
+#line 1223 "rx-decode.opc"
+                      ID(dpushm); SCR(rdst); S2CR(rdst + rnum); F_____;
 
+                    }
+                  break;
               }
             break;
-        }
-      break;
-    case 0x79:
-        GETBYTE ();
-        switch (op[1] & 0x00)
-        {
-          case 0x00:
-            goto op_semantics_36;
-            break;
-        }
-      break;
-    case 0x7a:
-        GETBYTE ();
-        switch (op[1] & 0x00)
-        {
-          case 0x00:
-            op_semantics_37:
+          case 0xa8:
+              GETBYTE ();
+              switch (op[2] & 0x00)
               {
-                /** 0111 101b ittt rdst			bclr	#%1, %0 */
-#line 959 "rx-decode.opc"
-                int b AU = op[0] & 0x01;
-#line 959 "rx-decode.opc"
-                int ittt AU = (op[1] >> 4) & 0x0f;
-#line 959 "rx-decode.opc"
-                int rdst AU = op[1] & 0x0f;
-                if (trace)
-                  {
-                    printf ("\033[33m%s\033[0m  %02x %02x\n",
-                           "/** 0111 101b ittt rdst			bclr	#%1, %0 */",
-                           op[0], op[1]);
-                    printf ("  b = 0x%x,", b);
-                    printf ("  ittt = 0x%x,", ittt);
-                    printf ("  rdst = 0x%x\n", rdst);
-                  }
-                SYNTAX("bclr	#%1, %0");
-#line 959 "rx-decode.opc"
-                ID(bclr); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;
-
+                case 0x00:
+                    {
+                      /** 0111 0101 1010 1000 rdst rnum	dpopm.l	%1-%2 */
+#line 1217 "rx-decode.opc"
+                      int rdst AU = (op[2] >> 4) & 0x0f;
+#line 1217 "rx-decode.opc"
+                      int rnum AU = op[2] & 0x0f;
+                      if (trace)
+                        {
+                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
+                                 "/** 0111 0101 1010 1000 rdst rnum	dpopm.l	%1-%2 */",
+                                 op[0], op[1], op[2]);
+                          printf ("  rdst = 0x%x,", rdst);
+                          printf ("  rnum = 0x%x\n", rnum);
+                        }
+                      SYNTAX("dpopm.l	%1-%2");
+#line 1217 "rx-decode.opc"
+                      ID(dpopm); SCR(rdst); S2CR(rdst + rnum); F_____;
 
+                    }
+                  break;
               }
             break;
-        }
-      break;
-    case 0x7b:
-        GETBYTE ();
-        switch (op[1] & 0x00)
-        {
-          case 0x00:
-            goto op_semantics_37;
-            break;
-        }
-      break;
-    case 0x7c:
-        GETBYTE ();
-        switch (op[1] & 0x00)
-        {
-          case 0x00:
-            op_semantics_38:
+          case 0xb0:
+              GETBYTE ();
+              switch (op[2] & 0x00)
               {
-                /** 0111 110b ittt rdst			btst	#%2, %1 */
-#line 971 "rx-decode.opc"
-                int b AU = op[0] & 0x01;
-#line 971 "rx-decode.opc"
-                int ittt AU = (op[1] >> 4) & 0x0f;
-#line 971 "rx-decode.opc"
-                int rdst AU = op[1] & 0x0f;
-                if (trace)
-                  {
-                    printf ("\033[33m%s\033[0m  %02x %02x\n",
-                           "/** 0111 110b ittt rdst			btst	#%2, %1 */",
-                           op[0], op[1]);
-                    printf ("  b = 0x%x,", b);
-                    printf ("  ittt = 0x%x,", ittt);
-                    printf ("  rdst = 0x%x\n", rdst);
-                  }
-                SYNTAX("btst	#%2, %1");
-#line 971 "rx-decode.opc"
-                ID(btst); BWL(LSIZE); S2C(b*16+ittt); SR(rdst); F___ZC;
-
+                case 0x00:
+                    {
+                      /** 0111 0101 1011 0000 rdst rnum	dpushm.d	%1-%2 */
+#line 1220 "rx-decode.opc"
+                      int rdst AU = (op[2] >> 4) & 0x0f;
+#line 1220 "rx-decode.opc"
+                      int rnum AU = op[2] & 0x0f;
+                      if (trace)
+                        {
+                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
+                                 "/** 0111 0101 1011 0000 rdst rnum	dpushm.d	%1-%2 */",
+                                 op[0], op[1], op[2]);
+                          printf ("  rdst = 0x%x,", rdst);
+                          printf ("  rnum = 0x%x\n", rnum);
+                        }
+                      SYNTAX("dpushm.d	%1-%2");
+#line 1220 "rx-decode.opc"
+                      ID(dpushm); SDR(rdst); S2DR(rdst + rnum); F_____;
 
+                    }
+                  break;
               }
             break;
-        }
-      break;
-    case 0x7d:
-        GETBYTE ();
-        switch (op[1] & 0x00)
-        {
-          case 0x00:
-            goto op_semantics_38;
+          case 0xb8:
+              GETBYTE ();
+              switch (op[2] & 0x00)
+              {
+                case 0x00:
+                    {
+                      /** 0111 0101 1011 1000 rdst rnum	dpopm.d	%1-%2 */
+#line 1214 "rx-decode.opc"
+                      int rdst AU = (op[2] >> 4) & 0x0f;
+#line 1214 "rx-decode.opc"
+                      int rnum AU = op[2] & 0x0f;
+                      if (trace)
+                        {
+                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
+                                 "/** 0111 0101 1011 1000 rdst rnum	dpopm.d	%1-%2 */",
+                                 op[0], op[1], op[2]);
+                          printf ("  rdst = 0x%x,", rdst);
+                          printf ("  rnum = 0x%x\n", rnum);
+                        }
+                      SYNTAX("dpopm.d	%1-%2");
+#line 1214 "rx-decode.opc"
+                      ID(dpopm); SDR(rdst); S2DR(rdst + rnum); F_____;
+
+                    }
+                  break;
+              }
             break;
+          default: UNSUPPORTED(); break;
         }
       break;
-    case 0x7e:
+    case 0x76:
         GETBYTE ();
-        switch (op[1] & 0xf0)
+        switch (op[1] & 0xff)
         {
           case 0x00:
-              {
-                /** 0111 1110 0000 rdst			not	%0 */
-#line 462 "rx-decode.opc"
-                int rdst AU = op[1] & 0x0f;
-                if (trace)
-                  {
-                    printf ("\033[33m%s\033[0m  %02x %02x\n",
-                           "/** 0111 1110 0000 rdst			not	%0 */",
-                           op[0], op[1]);
-                    printf ("  rdst = 0x%x\n", rdst);
-                  }
-                SYNTAX("not	%0");
-#line 462 "rx-decode.opc"
-                ID(xor); DR(rdst); SR(rdst); S2C(~0); F__SZ_;
-
-              }
+          case 0x01:
+          case 0x02:
+          case 0x03:
+          case 0x04:
+          case 0x05:
+          case 0x06:
+          case 0x07:
+          case 0x08:
+          case 0x09:
+          case 0x0a:
+          case 0x0b:
+          case 0x0c:
+          case 0x0d:
+          case 0x0e:
+          case 0x0f:
+            goto op_semantics_32;
             break;
           case 0x10:
-              {
-                /** 0111 1110 0001 rdst			neg	%0 */
-#line 483 "rx-decode.opc"
-                int rdst AU = op[1] & 0x0f;
-                if (trace)
-                  {
-                    printf ("\033[33m%s\033[0m  %02x %02x\n",
-                           "/** 0111 1110 0001 rdst			neg	%0 */",
-                           op[0], op[1]);
-                    printf ("  rdst = 0x%x\n", rdst);
-                  }
-                SYNTAX("neg	%0");
-#line 483 "rx-decode.opc"
-                ID(sub); DR(rdst); SC(0); S2R(rdst); F_OSZC;
-
-              }
+          case 0x11:
+          case 0x12:
+          case 0x13:
+          case 0x14:
+          case 0x15:
+          case 0x16:
+          case 0x17:
+          case 0x18:
+          case 0x19:
+          case 0x1a:
+          case 0x1b:
+          case 0x1c:
+          case 0x1d:
+          case 0x1e:
+          case 0x1f:
+            goto op_semantics_33;
             break;
           case 0x20:
-              {
-                /** 0111 1110 0010 rdst			abs	%0 */
-#line 565 "rx-decode.opc"
-                int rdst AU = op[1] & 0x0f;
-                if (trace)
-                  {
-                    printf ("\033[33m%s\033[0m  %02x %02x\n",
-                           "/** 0111 1110 0010 rdst			abs	%0 */",
-                           op[0], op[1]);
-                    printf ("  rdst = 0x%x\n", rdst);
-                  }
-                SYNTAX("abs	%0");
-#line 565 "rx-decode.opc"
-                ID(abs); DR(rdst); SR(rdst); F_OSZ_;
-
-              }
-            break;
-          case 0x30:
-              {
-                /** 0111 1110 0011 rdst		sat	%0 */
-#line 885 "rx-decode.opc"
+          case 0x21:
+          case 0x22:
+          case 0x23:
+          case 0x24:
+          case 0x25:
+          case 0x26:
+          case 0x27:
+          case 0x28:
+          case 0x29:
+          case 0x2a:
+          case 0x2b:
+          case 0x2c:
+          case 0x2d:
+          case 0x2e:
+          case 0x2f:
+            goto op_semantics_34;
+            break;
+          case 0x30:
+          case 0x31:
+          case 0x32:
+          case 0x33:
+          case 0x34:
+          case 0x35:
+          case 0x36:
+          case 0x37:
+          case 0x38:
+          case 0x39:
+          case 0x3a:
+          case 0x3b:
+          case 0x3c:
+          case 0x3d:
+          case 0x3e:
+          case 0x3f:
+            goto op_semantics_35;
+            break;
+          case 0x90:
+              GETBYTE ();
+              switch (op[2] & 0xff)
+              {
+                case 0x00:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        op_semantics_36:
+                          {
+                            /** 0111 0110 1001 0000 srcb 0000 rdst srca	dadd	%1, %2, %0 */
+#line 1238 "rx-decode.opc"
+                            int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1238 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+#line 1238 "rx-decode.opc"
+                            int srca AU = op[3] & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 srcb 0000 rdst srca	dadd	%1, %2, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  srcb = 0x%x,", srcb);
+                                printf ("  rdst = 0x%x,", rdst);
+                                printf ("  srca = 0x%x\n", srca);
+                              }
+                            SYNTAX("dadd	%1, %2, %0");
+#line 1238 "rx-decode.opc"
+                            ID(dadd); DDR(rdst); SDR(srca); S2DR(srcb); F_____;
+
+                          }
+                        break;
+                    }
+                  break;
+                case 0x01:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        op_semantics_37:
+                          {
+                            /** 0111 0110 1001 0000 srcb 0001 rdst srca	dsub	%1, %2, %0 */
+#line 1259 "rx-decode.opc"
+                            int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1259 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+#line 1259 "rx-decode.opc"
+                            int srca AU = op[3] & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 srcb 0001 rdst srca	dsub	%1, %2, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  srcb = 0x%x,", srcb);
+                                printf ("  rdst = 0x%x,", rdst);
+                                printf ("  srca = 0x%x\n", srca);
+                              }
+                            SYNTAX("dsub	%1, %2, %0");
+#line 1259 "rx-decode.opc"
+                            ID(dsub); DDR(rdst); SDR(srca); S2DR(srcb); F_____;
+
+                          }
+                        break;
+                    }
+                  break;
+                case 0x02:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        op_semantics_38:
+                          {
+                            /** 0111 0110 1001 0000 srcb 0010 rdst srca	dmul	%1, %2, %0 */
+#line 1247 "rx-decode.opc"
+                            int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1247 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+#line 1247 "rx-decode.opc"
+                            int srca AU = op[3] & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 srcb 0010 rdst srca	dmul	%1, %2, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  srcb = 0x%x,", srcb);
+                                printf ("  rdst = 0x%x,", rdst);
+                                printf ("  srca = 0x%x\n", srca);
+                              }
+                            SYNTAX("dmul	%1, %2, %0");
+#line 1247 "rx-decode.opc"
+                            ID(dmul); DDR(rdst); SDR(srca); S2DR(srcb); F_____;
+
+                          }
+                        break;
+                    }
+                  break;
+                case 0x05:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        op_semantics_39:
+                          {
+                            /** 0111 0110 1001 0000 srcb 0101 rdst srca	ddiv	%1, %2, %0 */
+#line 1244 "rx-decode.opc"
+                            int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1244 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+#line 1244 "rx-decode.opc"
+                            int srca AU = op[3] & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 srcb 0101 rdst srca	ddiv	%1, %2, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  srcb = 0x%x,", srcb);
+                                printf ("  rdst = 0x%x,", rdst);
+                                printf ("  srca = 0x%x\n", srca);
+                              }
+                            SYNTAX("ddiv	%1, %2, %0");
+#line 1244 "rx-decode.opc"
+                            ID(ddiv); DDR(rdst); SDR(srca); S2DR(srcb); F_____;
+
+                          }
+                        break;
+                    }
+                  break;
+                case 0x08:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        op_semantics_40:
+                          {
+                            /** 0111 0110 1001 0000 srcb 1000 cond srca	dcmp%0	%1, %2 */
+#line 1241 "rx-decode.opc"
+                            int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1241 "rx-decode.opc"
+                            int cond AU = (op[3] >> 4) & 0x0f;
+#line 1241 "rx-decode.opc"
+                            int srca AU = op[3] & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 srcb 1000 cond srca	dcmp%0	%1, %2 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  srcb = 0x%x,", srcb);
+                                printf ("  cond = 0x%x,", cond);
+                                printf ("  srca = 0x%x\n", srca);
+                              }
+                            SYNTAX("dcmp%0	%1, %2");
+#line 1241 "rx-decode.opc"
+                            ID(dcmp); DCND(cond); SDR(srca); S2DR(srcb); F_____;
+
+                          }
+                        break;
+                    }
+                  break;
+                case 0x0c:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        op_semantics_41:
+                          {
+                            /** 0111 0110 1001 0000 rsrc 1100 rdst 0000	dmov.d	%1, %0 */
+#line 1179 "rx-decode.opc"
+                            int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1179 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 rsrc 1100 rdst 0000	dmov.d	%1, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  rsrc = 0x%x,", rsrc);
+                                printf ("  rdst = 0x%x\n", rdst);
+                              }
+                            SYNTAX("dmov.d	%1, %0");
+#line 1179 "rx-decode.opc"
+                            ID(dmov); DDR(rdst); SDR(rsrc); F_____;
+
+                          }
+                        break;
+                      case 0x01:
+                        op_semantics_42:
+                          {
+                            /** 0111 0110 1001 0000 rsrc 1100 rdst 0001	dabs	%1, %0 */
+#line 1235 "rx-decode.opc"
+                            int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1235 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 rsrc 1100 rdst 0001	dabs	%1, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  rsrc = 0x%x,", rsrc);
+                                printf ("  rdst = 0x%x\n", rdst);
+                              }
+                            SYNTAX("dabs	%1, %0");
+#line 1235 "rx-decode.opc"
+                            ID(dabs); DDR(rdst); SDR(rsrc); F_____;
+
+                          }
+                        break;
+                      case 0x02:
+                        op_semantics_43:
+                          {
+                            /** 0111 0110 1001 0000 rsrc 1100 rdst 0010	dneg	%1, %0 */
+#line 1250 "rx-decode.opc"
+                            int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1250 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 rsrc 1100 rdst 0010	dneg	%1, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  rsrc = 0x%x,", rsrc);
+                                printf ("  rdst = 0x%x\n", rdst);
+                              }
+                            SYNTAX("dneg	%1, %0");
+#line 1250 "rx-decode.opc"
+                            ID(dneg); DDR(rdst); SDR(rsrc); F_____;
+
+                          }
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x0d:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        op_semantics_44:
+                          {
+                            /** 0111 0110 1001 0000 rsrc 1101 rdst 0000	dsqrt	%1, %0 */
+#line 1256 "rx-decode.opc"
+                            int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1256 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 rsrc 1101 rdst 0000	dsqrt	%1, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  rsrc = 0x%x,", rsrc);
+                                printf ("  rdst = 0x%x\n", rdst);
+                              }
+                            SYNTAX("dsqrt	%1, %0");
+#line 1256 "rx-decode.opc"
+                            ID(dsqrt); DDR(rdst); SDR(rsrc); F_____;
+
+                          }
+                        break;
+                      case 0x08:
+                        op_semantics_45:
+                          {
+                            /** 0111 0110 1001 0000 rsrc 1101 rdst 1000	dtoi	%1, %0 */
+#line 1265 "rx-decode.opc"
+                            int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1265 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 rsrc 1101 rdst 1000	dtoi	%1, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  rsrc = 0x%x,", rsrc);
+                                printf ("  rdst = 0x%x\n", rdst);
+                              }
+                            SYNTAX("dtoi	%1, %0");
+#line 1265 "rx-decode.opc"
+                            ID(dtoi); DDR(rdst); SDR(rsrc); F_____;
+
+                          }
+                        break;
+                      case 0x09:
+                        op_semantics_46:
+                          {
+                            /** 0111 0110 1001 0000 rsrc 1101 rdst 1001	dtou	%1, %0 */
+#line 1268 "rx-decode.opc"
+                            int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1268 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 rsrc 1101 rdst 1001	dtou	%1, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  rsrc = 0x%x,", rsrc);
+                                printf ("  rdst = 0x%x\n", rdst);
+                              }
+                            SYNTAX("dtou	%1, %0");
+#line 1268 "rx-decode.opc"
+                            ID(dtou); DDR(rdst); SDR(rsrc); F_____;
+
+                          }
+                        break;
+                      case 0x0c:
+                        op_semantics_47:
+                          {
+                            /** 0111 0110 1001 0000 rsrc 1101 rdst 1100	dtof	%1, %0 */
+#line 1262 "rx-decode.opc"
+                            int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1262 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 rsrc 1101 rdst 1100	dtof	%1, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  rsrc = 0x%x,", rsrc);
+                                printf ("  rdst = 0x%x\n", rdst);
+                              }
+                            SYNTAX("dtof	%1, %0");
+#line 1262 "rx-decode.opc"
+                            ID(dtof); DDR(rdst); SDR(rsrc); F_____;
+
+                          }
+                        break;
+                      case 0x0d:
+                        op_semantics_48:
+                          {
+                            /** 0111 0110 1001 0000 rsrc 1101 rdst 1101	dround	%1, %0 */
+#line 1253 "rx-decode.opc"
+                            int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1253 "rx-decode.opc"
+                            int rdst AU = (op[3] >> 4) & 0x0f;
+                            if (trace)
+                              {
+                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
+                                       "/** 0111 0110 1001 0000 rsrc 1101 rdst 1101	dround	%1, %0 */",
+                                       op[0], op[1], op[2], op[3]);
+                                printf ("  rsrc = 0x%x,", rsrc);
+                                printf ("  rdst = 0x%x\n", rdst);
+                              }
+                            SYNTAX("dround	%1, %0");
+#line 1253 "rx-decode.opc"
+                            ID(dround); DDR(rdst); SDR(rsrc); F_____;
+
+                          }
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x10:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_36;
+                        break;
+                    }
+                  break;
+                case 0x11:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_37;
+                        break;
+                    }
+                  break;
+                case 0x12:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_38;
+                        break;
+                    }
+                  break;
+                case 0x15:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_39;
+                        break;
+                    }
+                  break;
+                case 0x18:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_40;
+                        break;
+                    }
+                  break;
+                case 0x1c:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_41;
+                        break;
+                      case 0x01:
+                        goto op_semantics_42;
+                        break;
+                      case 0x02:
+                        goto op_semantics_43;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x1d:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_44;
+                        break;
+                      case 0x08:
+                        goto op_semantics_45;
+                        break;
+                      case 0x09:
+                        goto op_semantics_46;
+                        break;
+                      case 0x0c:
+                        goto op_semantics_47;
+                        break;
+                      case 0x0d:
+                        goto op_semantics_48;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x20:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_36;
+                        break;
+                    }
+                  break;
+                case 0x21:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_37;
+                        break;
+                    }
+                  break;
+                case 0x22:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_38;
+                        break;
+                    }
+                  break;
+                case 0x25:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_39;
+                        break;
+                    }
+                  break;
+                case 0x28:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_40;
+                        break;
+                    }
+                  break;
+                case 0x2c:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_41;
+                        break;
+                      case 0x01:
+                        goto op_semantics_42;
+                        break;
+                      case 0x02:
+                        goto op_semantics_43;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x2d:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_44;
+                        break;
+                      case 0x08:
+                        goto op_semantics_45;
+                        break;
+                      case 0x09:
+                        goto op_semantics_46;
+                        break;
+                      case 0x0c:
+                        goto op_semantics_47;
+                        break;
+                      case 0x0d:
+                        goto op_semantics_48;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x30:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_36;
+                        break;
+                    }
+                  break;
+                case 0x31:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_37;
+                        break;
+                    }
+                  break;
+                case 0x32:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_38;
+                        break;
+                    }
+                  break;
+                case 0x35:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_39;
+                        break;
+                    }
+                  break;
+                case 0x38:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_40;
+                        break;
+                    }
+                  break;
+                case 0x3c:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_41;
+                        break;
+                      case 0x01:
+                        goto op_semantics_42;
+                        break;
+                      case 0x02:
+                        goto op_semantics_43;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x3d:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_44;
+                        break;
+                      case 0x08:
+                        goto op_semantics_45;
+                        break;
+                      case 0x09:
+                        goto op_semantics_46;
+                        break;
+                      case 0x0c:
+                        goto op_semantics_47;
+                        break;
+                      case 0x0d:
+                        goto op_semantics_48;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x40:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_36;
+                        break;
+                    }
+                  break;
+                case 0x41:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_37;
+                        break;
+                    }
+                  break;
+                case 0x42:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_38;
+                        break;
+                    }
+                  break;
+                case 0x45:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_39;
+                        break;
+                    }
+                  break;
+                case 0x48:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_40;
+                        break;
+                    }
+                  break;
+                case 0x4c:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_41;
+                        break;
+                      case 0x01:
+                        goto op_semantics_42;
+                        break;
+                      case 0x02:
+                        goto op_semantics_43;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x4d:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_44;
+                        break;
+                      case 0x08:
+                        goto op_semantics_45;
+                        break;
+                      case 0x09:
+                        goto op_semantics_46;
+                        break;
+                      case 0x0c:
+                        goto op_semantics_47;
+                        break;
+                      case 0x0d:
+                        goto op_semantics_48;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x50:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_36;
+                        break;
+                    }
+                  break;
+                case 0x51:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_37;
+                        break;
+                    }
+                  break;
+                case 0x52:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_38;
+                        break;
+                    }
+                  break;
+                case 0x55:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_39;
+                        break;
+                    }
+                  break;
+                case 0x58:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_40;
+                        break;
+                    }
+                  break;
+                case 0x5c:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_41;
+                        break;
+                      case 0x01:
+                        goto op_semantics_42;
+                        break;
+                      case 0x02:
+                        goto op_semantics_43;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x5d:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_44;
+                        break;
+                      case 0x08:
+                        goto op_semantics_45;
+                        break;
+                      case 0x09:
+                        goto op_semantics_46;
+                        break;
+                      case 0x0c:
+                        goto op_semantics_47;
+                        break;
+                      case 0x0d:
+                        goto op_semantics_48;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x60:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_36;
+                        break;
+                    }
+                  break;
+                case 0x61:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_37;
+                        break;
+                    }
+                  break;
+                case 0x62:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_38;
+                        break;
+                    }
+                  break;
+                case 0x65:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_39;
+                        break;
+                    }
+                  break;
+                case 0x68:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_40;
+                        break;
+                    }
+                  break;
+                case 0x6c:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_41;
+                        break;
+                      case 0x01:
+                        goto op_semantics_42;
+                        break;
+                      case 0x02:
+                        goto op_semantics_43;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x6d:
+                    GETBYTE ();
+                    switch (op[3] & 0x0f)
+                    {
+                      case 0x00:
+                        goto op_semantics_44;
+                        break;
+                      case 0x08:
+                        goto op_semantics_45;
+                        break;
+                      case 0x09:
+                        goto op_semantics_46;
+                        break;
+                      case 0x0c:
+                        goto op_semantics_47;
+                        break;
+                      case 0x0d:
+                        goto op_semantics_48;
+                        break;
+                      default: UNSUPPORTED(); break;
+                    }
+                  break;
+                case 0x70:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_36;
+                        break;
+                    }
+                  break;
+                case 0x71:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_37;
+                        break;
+                    }
+                  break;
+                case 0x72:
+                    GETBYTE ();
+                    switch (op[3] & 0x00)
+                    {
+                      case 0x00:
+                        goto op_semantics_38;
+                        break;
+                    }
+           [...]

[diff truncated at 100000 bytes]


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]