* m10300-opc.c, m10300-dis.c: Add am33 support.
authorJeff Law <law@redhat.com>
Wed, 1 Dec 1999 10:36:22 +0000 (10:36 +0000)
committerJeff Law <law@redhat.com>
Wed, 1 Dec 1999 10:36:22 +0000 (10:36 +0000)
opcodes/ChangeLog
opcodes/m10300-dis.c
opcodes/m10300-opc.c

index a34658014ac28d69547e06426b8306eae2b4014f..0b222d033f230491390ff166ca1a2d3a2a9f3f05 100644 (file)
@@ -1,3 +1,7 @@
+Wed Dec  1 03:34:53 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * m10300-opc.c, m10300-dis.c: Add am33 support.
+
 Wed Nov 24 20:29:58 1999  Jeffrey A Law  (law@cygnus.com)
 
        * hppa-dis.c (unit_cond_names): Add PA2.0 unit condition names.
index 415bffce37df428d27ca5bdb91bcca4396903c22..7d7f74c947f7904428ea87b2ec0eddece7a9b24f 100644 (file)
@@ -120,6 +120,7 @@ print_insn_mn10300 (memaddr, info)
           || (insn & 0xfc) == 0x38
           || (insn & 0xff) == 0xde
           || (insn & 0xff) == 0xdf
+          || (insn & 0xff) == 0xf9
           || (insn & 0xff) == 0xcc)
     {
       status = (*info->read_memory_func) (memaddr, buffer, 2, info);
@@ -142,6 +143,7 @@ print_insn_mn10300 (memaddr, info)
 
   /* These are four byte insns.  */
   else if ((insn & 0xff) == 0xfa
+          || (insn & 0xff) == 0xf7
           || (insn & 0xff) == 0xfb)
     {
       status = (*info->read_memory_func) (memaddr, buffer, 4, info);
@@ -234,6 +236,14 @@ disassemble (memaddr, info, insn, size)
        mysize = 4;
       else if (op->format == FMT_D4)
        mysize = 6;
+      else if (op->format == FMT_D6)
+       mysize = 3;
+      else if (op->format == FMT_D7 || op->format == FMT_D10)
+       mysize = 4;
+      else if (op->format == FMT_D8)
+       mysize = 6;
+      else if (op->format == FMT_D9)
+       mysize = 7;
       else
        mysize = 7;
        
@@ -252,6 +262,10 @@ disassemble (memaddr, info, insn, size)
                   || op->format == FMT_S2 || op->format == FMT_S4
                   || op->format == FMT_S6 || op->format == FMT_D5)
            extra_shift = 16;
+         else if (op->format == FMT_D7
+                  || op->format == FMT_D8
+                  || op->format == FMT_D9)
+           extra_shift = 8;
          else
            extra_shift = 0;
 
@@ -266,6 +280,11 @@ disassemble (memaddr, info, insn, size)
            {
              extension = 0;
            }
+         else if (size == 3
+                  && op->format == FMT_D6)
+           {
+             extension = 0;
+           }
          else if (size == 3)
            {
              insn &= 0xff0000;
@@ -286,6 +305,12 @@ disassemble (memaddr, info, insn, size)
            {
              extension = 0;
            }
+         else if (size == 4
+                  && (op->format == FMT_D7
+                      || op->format == FMT_D10))
+           {
+             extension = 0;
+           }
          else if (size == 4)
            {
              insn &= 0xffff0000;
@@ -336,6 +361,25 @@ disassemble (memaddr, info, insn, size)
                }
              extension = *(unsigned char *)buffer;
            }
+         else if (size == 6 && op->format == FMT_D8)
+           {
+             insn &= 0xffffff00;
+             status = (*info->read_memory_func) (memaddr + 5, buffer, 1, info);
+             if (status != 0)
+               {
+                 (*info->memory_error_func) (status, memaddr, info);
+                 return;
+               }
+             insn |= *(unsigned char *)buffer;
+
+             status = (*info->read_memory_func) (memaddr + 3, buffer, 2, info);
+             if (status != 0)
+               {
+                 (*info->memory_error_func) (status, memaddr, info);
+                 return;
+               }
+             extension = bfd_getl16 (buffer);
+           }
          else if (size == 6)
            {
              unsigned long temp = 0;
@@ -351,6 +395,19 @@ disassemble (memaddr, info, insn, size)
              insn |= (temp >> 16) & 0xffff;
              extension = temp & 0xffff;
            }
+         else if (size == 7 && op->format == FMT_D9)
+           {
+             insn &= 0xffffff00;
+             status = (*info->read_memory_func) (memaddr + 3, buffer, 4, info);
+             if (status != 0)
+               {
+                 (*info->memory_error_func) (status, memaddr, info);
+                 return;
+               }
+             extension = bfd_getl32 (buffer);
+             insn |= (extension & 0xff000000) >> 24;
+             extension &= 0xffffff;
+           }
          else if (size == 7 && op->opcode == 0xdd000000)
            {
              unsigned long temp = 0;
@@ -410,6 +467,10 @@ disassemble (memaddr, info, insn, size)
 
              operand = &mn10300_operands[*opindex_ptr];
 
+             /* If this operand is a PLUS (autoincrement), then do not emit
+                a comma before emitting the plus.  */
+             if ((operand->flags & MN10300_OPERAND_PLUS) != 0)
+               nocomma = 1;
 
              if ((operand->flags & MN10300_OPERAND_SPLIT) != 0)
                {
@@ -420,6 +481,17 @@ disassemble (memaddr, info, insn, size)
                  temp &= ((1 << (32 - operand->bits)) - 1);
                  value |= temp;
                }
+             else if ((operand->flags & MN10300_OPERAND_24BIT) != 0)
+               {
+                 unsigned long temp;
+                 value = insn & ((1 << operand->bits) - 1);
+                 value <<= (24 - operand->bits);
+                 temp = extension >> operand->shift;
+                 temp &= ((1 << (24 - operand->bits)) - 1);
+                 value |= temp;
+                 if ((operand->flags & MN10300_OPERAND_SIGNED) != 0)
+                   value = ((value & 0xffffff) ^ (~0x7fffff)) + 0x800000;
+               }
              else if ((operand->flags & MN10300_OPERAND_EXTENDED) != 0)
                {
                  value = ((extension >> (operand->shift))
@@ -432,6 +504,8 @@ disassemble (memaddr, info, insn, size)
                }
 
              if ((operand->flags & MN10300_OPERAND_SIGNED) != 0
+                  /* These are properly extended by the code above.  */
+                  && ((operand->flags & MN10300_OPERAND_24BIT) == 0)
                  )
                value = ((long)(value << (32 - operand->bits))
                          >> (32 - operand->bits));
@@ -466,6 +540,45 @@ disassemble (memaddr, info, insn, size)
              else if ((operand->flags & MN10300_OPERAND_MDR) != 0)
                (*info->fprintf_func) (info->stream, "mdr");
 
+             else if ((operand->flags & MN10300_OPERAND_RREG) != 0)
+               {
+                 value = ((insn >> (operand->shift + extra_shift))
+                          & ((1 << operand->bits) - 1));
+                 if (value < 8)
+                   (*info->fprintf_func) (info->stream, "r%d", value);
+                 else if (value < 12)
+                   (*info->fprintf_func) (info->stream, "a%d", value - 8);
+                 else
+                   (*info->fprintf_func) (info->stream, "d%d", value - 12);
+               }
+
+             else if ((operand->flags & MN10300_OPERAND_XRREG) != 0)
+               {
+                 value = ((insn >> (operand->shift + extra_shift))
+                          & ((1 << operand->bits) - 1));
+                 if (value == 0)
+                   (*info->fprintf_func) (info->stream, "sp", value);
+                 else
+                 (*info->fprintf_func) (info->stream, "xr%d", value);
+               }
+
+             else if ((operand->flags & MN10300_OPERAND_USP) != 0)
+               (*info->fprintf_func) (info->stream, "usp");
+
+             else if ((operand->flags & MN10300_OPERAND_SSP) != 0)
+               (*info->fprintf_func) (info->stream, "ssp");
+
+             else if ((operand->flags & MN10300_OPERAND_MSP) != 0)
+               (*info->fprintf_func) (info->stream, "msp");
+
+             else if ((operand->flags & MN10300_OPERAND_PC) != 0)
+               (*info->fprintf_func) (info->stream, "pc");
+
+             else if ((operand->flags & MN10300_OPERAND_EPSW) != 0)
+               (*info->fprintf_func) (info->stream, "epsw");
+
+             else if ((operand->flags & MN10300_OPERAND_PLUS) != 0)
+               (*info->fprintf_func) (info->stream, "+");
 
              else if ((operand->flags & MN10300_OPERAND_PAREN) != 0)
                {
@@ -528,6 +641,27 @@ disassemble (memaddr, info, insn, size)
                      comma = 1;
                    }
 
+                 if (value & 0x04)
+                   {
+                     if (comma)
+                       (*info->fprintf_func) (info->stream, ",");
+                     (*info->fprintf_func) (info->stream, "exreg0");
+                     comma = 1;
+                   }
+                 if (value & 0x02)
+                   {
+                     if (comma)
+                       (*info->fprintf_func) (info->stream, ",");
+                     (*info->fprintf_func) (info->stream, "exreg1");
+                     comma = 1;
+                   }
+                 if (value & 0x01)
+                   {
+                     if (comma)
+                       (*info->fprintf_func) (info->stream, ",");
+                     (*info->fprintf_func) (info->stream, "exother");
+                     comma = 1;
+                   }
                  (*info->fprintf_func) (info->stream, "]");
                }
 
index 8d0c0f3f8a1affd1a4948e190dc248043a6819b1..b818417aafbd7e16e66c10194ad5a411b9cc2d77 100644 (file)
@@ -212,6 +212,131 @@ const struct mn10300_operand mn10300_operands[] = {
 #define REGS    (REGS_SHIFT8+1)
   {8, 0, MN10300_OPERAND_REG_LIST},
 
+/* UStack pointer.  */
+#define USP    (REGS+1)
+  {0, 0, MN10300_OPERAND_USP},
+
+/* SStack pointer.  */
+#define SSP    (USP+1)
+  {0, 0, MN10300_OPERAND_SSP},
+
+/* MStack pointer.  */
+#define MSP    (SSP+1)
+  {0, 0, MN10300_OPERAND_MSP},
+
+/* PC .  */
+#define PC    (MSP+1)
+  {0, 0, MN10300_OPERAND_PC},
+
+/* 4 bit immediate for syscall.  */
+#define IMM4    (PC+1)
+  {4, 0, 0},
+
+/* Processor status word.  */
+#define EPSW    (IMM4+1)
+  {0, 0, MN10300_OPERAND_EPSW},
+
+/* rn register in the first register operand position.  */
+#define RN0      (EPSW+1)
+  {4, 0, MN10300_OPERAND_RREG},
+
+/* rn register in the fourth register operand position.  */
+#define RN2      (RN0+1)
+  {4, 4, MN10300_OPERAND_RREG},
+
+/* rm register in the first register operand position.  */
+#define RM0      (RN2+1)
+  {4, 0, MN10300_OPERAND_RREG},
+
+/* rm register in the second register operand position.  */
+#define RM1      (RM0+1)
+  {4, 2, MN10300_OPERAND_RREG},
+
+/* rm register in the third register operand position.  */
+#define RM2      (RM1+1)
+  {4, 4, MN10300_OPERAND_RREG},
+
+#define RN02      (RM2+1)
+  {4, 0, MN10300_OPERAND_RREG | MN10300_OPERAND_REPEATED},
+
+#define XRN0      (RN02+1)
+  {4, 0, MN10300_OPERAND_XRREG},
+
+#define XRM2      (XRN0+1)
+  {4, 4, MN10300_OPERAND_XRREG},
+
+/* + for autoincrement */
+#define PLUS   (XRM2+1)
+  {0, 0, MN10300_OPERAND_PLUS}, 
+
+#define XRN02      (PLUS+1)
+  {4, 0, MN10300_OPERAND_XRREG | MN10300_OPERAND_REPEATED},
+
+/* Ick */
+#define RD0      (XRN02+1)
+  {4, -8, MN10300_OPERAND_RREG},
+
+#define RD2      (RD0+1)
+  {4, -4, MN10300_OPERAND_RREG},
+
+/* 8 unsigned dispacement in a memory operation which
+   may promote to a 32bit displacement.  */
+#define IMM8_MEM    (RD2+1)
+  {8, 0, MN10300_OPERAND_PROMOTE | MN10300_OPERAND_MEMADDR},
+
+/* Index register.  */
+#define RI (IMM8_MEM+1)
+  {4, 4, MN10300_OPERAND_RREG},
+
+/* 24 bit signed displacement, may promote to 32bit dispacement.  */
+#define SD24    (RI+1)
+  {8, 0, MN10300_OPERAND_24BIT | MN10300_OPERAND_SIGNED | MN10300_OPERAND_PROMOTE},
+
+/* 24 bit unsigned immediate which may promote to a 32bit
+   unsigned immediate.  */
+#define IMM24    (SD24+1)
+  {8, 0, MN10300_OPERAND_24BIT | MN10300_OPERAND_PROMOTE},
+
+/* 24 bit signed immediate which may promote to a 32bit
+   signed immediate.  */
+#define SIMM24    (IMM24+1)
+  {8, 0, MN10300_OPERAND_24BIT | MN10300_OPERAND_PROMOTE | MN10300_OPERAND_SIGNED},
+
+/* 16bit unsigned dispacement in a memory operation which
+   may promote to a 32bit displacement.  */
+#define IMM24_MEM    (SIMM24+1)
+  {8, 0, MN10300_OPERAND_24BIT | MN10300_OPERAND_PROMOTE | MN10300_OPERAND_MEMADDR},
+/* 32bit immediate, high 24 bits in the main instruction
+   word, 8 in the extension word.
+
+   The "bits" field indicates how many bits are in the
+   main instruction word for MN10300_OPERAND_SPLIT!  */
+#define IMM32_HIGH8    (IMM24_MEM+1)
+  {8, 0, MN10300_OPERAND_SPLIT},
+
+/* Similarly, but a memory address.  */
+#define IMM32_HIGH8_MEM  (IMM32_HIGH8+1)
+  {8, 0, MN10300_OPERAND_SPLIT | MN10300_OPERAND_MEMADDR},
+
+/* rm register in the seventh register operand position.  */
+#define RM6      (IMM32_HIGH8_MEM+1)
+  {4, 12, MN10300_OPERAND_RREG},
+
+/* rm register in the fifth register operand position.  */
+#define RN4      (RM6+1)
+  {4, 8, MN10300_OPERAND_RREG},
+
+/* 4 bit immediate for dsp instructions.  */
+#define IMM4_2    (RN4+1)
+  {4, 4, 0},
+
+/* 4 bit immediate for dsp instructions.  */
+#define SIMM4_2    (IMM4_2+1)
+  {4, 4, MN10300_OPERAND_SIGNED},
+
+/* 4 bit immediate for dsp instructions.  */
+#define SIMM4_6    (SIMM4_2+1)
+  {4, 12, MN10300_OPERAND_SIGNED},
 
 } ; 
 
@@ -283,6 +408,48 @@ const struct mn10300_opcode mn10300_opcodes[] = {
 { "mov",       0xfa900000,  0xfff30000,  0,    FMT_D2, 0,      {AM1, MEM2(IMM16, SP)}},
 { "mov",       0xf3c0,      0xffc0,      0,    FMT_D0, 0,      {AM2, MEM2(DI, AN0)}},
 
+{ "mov",       0xf020,      0xfffc,      0,    FMT_D0, AM33,   {USP, AN0}},
+{ "mov",       0xf024,      0xfffc,      0,    FMT_D0, AM33,   {SSP, AN0}},
+{ "mov",       0xf028,      0xfffc,      0,    FMT_D0, AM33,   {MSP, AN0}},
+{ "mov",       0xf02c,      0xfffc,      0,    FMT_D0, AM33,   {PC, AN0}},
+{ "mov",       0xf030,      0xfff3,      0,    FMT_D0, AM33,   {AN1, USP}},
+{ "mov",       0xf031,      0xfff3,      0,    FMT_D0, AM33,   {AN1, SSP}},
+{ "mov",       0xf032,      0xfff3,      0,    FMT_D0, AM33,   {AN1, MSP}},
+{ "mov",       0xf2ec,      0xfffc,      0,    FMT_D0, AM33,   {EPSW, DN0}},
+{ "mov",       0xf2f1,      0xfff3,      0,    FMT_D0, AM33,   {DM1, EPSW}},
+{ "mov",       0xf500,      0xffc0,      0,    FMT_D0, AM33,   {AM2, RN0}},
+{ "mov",       0xf540,      0xffc0,      0,    FMT_D0, AM33,   {DM2, RN0}},
+{ "mov",       0xf580,      0xffc0,      0,    FMT_D0, AM33,   {RM1, AN0}},
+{ "mov",       0xf5c0,      0xffc0,      0,    FMT_D0, AM33,   {RM1, DN0}},
+{ "mov",       0xf90800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "mov",       0xf9e800,    0xffff00,    0,    FMT_D6, AM33,   {XRM2, RN0}},
+{ "mov",       0xf9f800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, XRN0}},
+{ "mov",       0xf90a00,    0xffff00,    0,    FMT_D6, AM33,   {MEM(RM0), RN2}},
+{ "mov",       0xf98a00,    0xffff0f,    0,    FMT_D6, AM33,   {MEM(SP), RN2}},
+{ "mov",       0xf96a00,    0xffff00,    0x12, FMT_D6, AM33,   {MEMINC(RM0), RN2}},
+{ "mov",       0xfb0e0000,  0xffff0f00,  0,    FMT_D7, AM33,   {MEM(IMM8_MEM), RN2}},
+{ "mov",       0xfd0e0000,  0xffff0f00,  0,    FMT_D8, AM33,   {MEM(IMM24_MEM), RN2}},
+{ "mov",       0xf91a00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, MEM(RN0)}},
+{ "mov",       0xf99a00,    0xffff0f,    0,    FMT_D6, AM33,   {RM2, MEM(SP)}},
+{ "mov",       0xf97a00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, MEMINC(RN0)}},
+{ "mov",       0xfb1e0000,  0xffff0f00,  0,    FMT_D7, AM33,   {RM2, MEM(IMM8_MEM)}},
+{ "mov",       0xfd1e0000,  0xffff0f00,  0,    FMT_D8, AM33,   {RM2, MEM(IMM24_MEM)}},
+{ "mov",       0xfb0a0000,  0xffff0000,  0,    FMT_D7, AM33,   {MEM2(SD8, RM0), RN2}},
+{ "mov",       0xfd0a0000,  0xffff0000,  0,    FMT_D8, AM33,   {MEM2(SD24, RM0), RN2}},
+{ "mov",       0xfb8e0000,  0xffff000f,  0,    FMT_D7, AM33,   {MEM2(RI, RM0), RD2}},
+{ "mov",       0xfb1a0000,  0xffff0000,  0,    FMT_D7, AM33,   {RM2, MEM2(SD8, RN0)}},
+{ "mov",       0xfd1a0000,  0xffff0000,  0,    FMT_D8, AM33,   {RM2, MEM2(SD24, RN0)}},
+{ "mov",       0xfb8a0000,  0xffff0f00,  0,    FMT_D7, AM33,   {MEM2(SD8, SP), RN2}},
+{ "mov",       0xfd8a0000,  0xffff0f00,  0,    FMT_D8, AM33,   {MEM2(SD24, SP), RN2}},
+{ "mov",       0xfb9a0000,  0xffff0f00,  0,    FMT_D7, AM33,   {RM2, MEM2(SD8, SP)}},
+{ "mov",       0xfd9a0000,  0xffff0f00,  0,    FMT_D8, AM33,   {RM2, MEM2(SD24, SP)}},
+{ "mov",       0xfb9e0000,  0xffff000f,  0,    FMT_D7, AM33,   {RD2, MEM2(RI, RN0)}},
+{ "mov",       0xfb6a0000,  0xffff0000,  0x22, FMT_D7, AM33,   {MEMINC2 (RM0, SIMM8), RN2}},
+{ "mov",       0xfb7a0000,  0xffff0000,  0,    FMT_D7, AM33,   {RM2, MEMINC2 (RN0, SIMM8)}},
+{ "mov",       0xfd6a0000,  0xffff0000,  0x22, FMT_D8, AM33,   {MEMINC2 (RM0, IMM24), RN2}},
+{ "mov",       0xfd7a0000,  0xffff0000,  0,    FMT_D8, AM33,   {RM2, MEMINC2 (RN0, IMM24)}},
+{ "mov",       0xfe6a0000,  0xffff0000,  0x22, FMT_D9, AM33,   {MEMINC2 (RM0, IMM32_HIGH8), RN2}},
+{ "mov",       0xfe7a0000,  0xffff0000,  0,    FMT_D9, AM33,   {RN2, MEMINC2 (RM0, IMM32_HIGH8)}},
 /* These must come after most of the other move instructions to avoid matching
    a symbolic name with IMMxx operands.  Ugh.  */
 { "mov",       0x2c0000,    0xfc0000,    0,    FMT_S2, 0,      {SIMM16, DN0}},
@@ -305,8 +472,83 @@ const struct mn10300_opcode mn10300_opcodes[] = {
    moves.  */
 { "mov",       0xf8f000,    0xfffc00,    0,    FMT_D1, AM30,   {MEM2(SD8N, AM0), SP}},
 { "mov",       0xf8f400,    0xfffc00,    0,    FMT_D1, AM30,   {SP, MEM2(SD8N, AN0)}},
-
-
+/* These are the same as the previous non-promoting versions.  The am33
+   does not have restrictions on the offsets used to load/store the stack
+   pointer.  */
+{ "mov",       0xf8f000,    0xfffc00,    0,    FMT_D1, AM33,   {MEM2(SD8, AM0), SP}},
+{ "mov",       0xf8f400,    0xfffc00,    0,    FMT_D1, AM33,   {SP, MEM2(SD8, AN0)}},
+/* These must come last so that we favor shorter move instructions for
+   loading immediates into d0-d3/a0-a3.  */
+{ "mov",       0xfb080000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "mov",       0xfd080000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "mov",       0xfe080000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "mov",       0xfbf80000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, XRN02}},
+{ "mov",       0xfdf80000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, XRN02}},
+{ "mov",       0xfef80000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, XRN02}},
+{ "mov",       0xfe0e0000,  0xffff0f00,  0,    FMT_D9, AM33,   {MEM(IMM32_HIGH8_MEM), RN2}},
+{ "mov",       0xfe1e0000,  0xffff0f00,  0,    FMT_D9, AM33,   {RM2, MEM(IMM32_HIGH8_MEM)}},
+{ "mov",       0xfe0a0000,  0xffff0000,  0,    FMT_D9, AM33,   {MEM2(IMM32_HIGH8,RM0), RN2}},
+{ "mov",       0xfe1a0000,  0xffff0000,  0,    FMT_D9, AM33,   {RM2, MEM2(IMM32_HIGH8, RN0)}},
+{ "mov",       0xfe8a0000,  0xffff0f00,  0,    FMT_D9, AM33,   {MEM2(IMM32_HIGH8, SP), RN2}},
+{ "mov",       0xfe9a0000,  0xffff0f00,  0,    FMT_D9, AM33,   {RM2, MEM2(IMM32_HIGH8, SP)}},
+
+{ "movu",      0xfb180000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "movu",      0xfd180000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "movu",      0xfe180000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+
+{ "mcst9",     0xf630,      0xfff0,      0,    FMT_D0, AM33,   {DN01}},
+{ "mcst48",    0xf660,      0xfff0,      0,    FMT_D0, AM33,   {DN01}},
+{ "swap",      0xf680,      0xfff0,      0,    FMT_D0, AM33,   {DM1, DN0}},
+{ "swap",      0xf9cb00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "swaph",     0xf690,      0xfff0,      0,    FMT_D0, AM33,   {DM1, DN0}},
+{ "swaph",     0xf9db00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "getchx",    0xf6c0,      0xfff0,      0,    FMT_D0, AM33,   {DN01}},
+{ "getclx",    0xf6d0,      0xfff0,      0,    FMT_D0, AM33,   {DN01}},
+{ "mac",       0xfb0f0000,  0xffff0000,  0xc,  FMT_D7, AM33,   {RM2, RN0, RD2, RD0}},
+{ "mac",       0xf90b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "mac",       0xfb0b0000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "mac",       0xfd0b0000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "mac",       0xfe0b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "macu",      0xfb1f0000,  0xffff0000,  0xc,  FMT_D7, AM33,   {RM2, RN0, RD2, RD0}},
+{ "macu",      0xf91b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "macu",      0xfb1b0000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "macu",      0xfd1b0000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "macu",      0xfe1b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "macb",      0xfb2f0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
+{ "macb",      0xf92b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "macb",      0xfb2b0000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "macb",      0xfd2b0000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "macb",      0xfe2b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "macbu",     0xfb3f0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
+{ "macbu",     0xf93b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "macbu",     0xfb3b0000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "macbu",     0xfd3b0000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "macbu",     0xfe3b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "mach",      0xfb4f0000,  0xffff0000,  0xc,  FMT_D7, AM33,   {RM2, RN0, RD2, RD0}},
+{ "mach",      0xf94b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "mach",      0xfb4b0000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "mach",      0xfd4b0000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "mach",      0xfe4b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "machu",     0xfb5f0000,  0xffff0000,  0xc,  FMT_D7, AM33,   {RM2, RN0, RD2, RD0}},
+{ "machu",     0xf95b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "machu",     0xfb5b0000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "machu",     0xfd5b0000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "machu",     0xfe5b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "dmach",     0xfb6f0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
+{ "dmach",     0xf96b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "dmach",     0xfe6b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "dmachu",    0xfb7f0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
+{ "dmachu",    0xf97b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "dmachu",    0xfe7b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "dmulh",     0xfb8f0000,  0xffff0000,  0xc,  FMT_D7, AM33,   {RM2, RN0, RD2, RD0}},
+{ "dmulh",     0xf98b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "dmulh",     0xfe8b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "dmulhu",    0xfb9f0000,  0xffff0000,  0xc,  FMT_D7, AM33,   {RM2, RN0, RD2, RD0}},
+{ "dmulhu",    0xf99b00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "dmulhu",    0xfe9b0000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
+{ "mcste",     0xf9bb00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "mcste",     0xfbbb0000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "swhw",      0xf9eb00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 
 { "movbu",     0xf040,      0xfff0,      0,    FMT_D0, 0,      {MEM(AM0), DN1}},
 { "movbu",     0xf84000,    0xfff000,    0,    FMT_D1, 0,      {MEM2(SD8, AM0), DN1}},
@@ -324,12 +566,36 @@ const struct mn10300_opcode mn10300_opcodes[] = {
 { "movbu",     0xfa920000,  0xfff30000,  0,    FMT_D2, 0,      {DM1, MEM2(IMM16, SP)}},
 { "movbu",     0xf440,      0xffc0,      0,    FMT_D0, 0,      {DM2, MEM2(DI, AN0)}},
 { "movbu",     0x020000,    0xf30000,    0,    FMT_S2, 0,      {DM1, MEM(IMM16_MEM)}},
+{ "movbu",     0xf92a00,    0xffff00,    0,    FMT_D6, AM33,   {MEM(RM0), RN2}},
+{ "movbu",     0xf93a00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, MEM(RN0)}},
+{ "movbu",     0xf9aa00,    0xffff0f,    0,    FMT_D6, AM33,   {MEM(SP), RN2}},
+{ "movbu",     0xf9ba00,    0xffff0f,    0,    FMT_D6, AM33,   {RM2, MEM(SP)}},
+{ "movbu",     0xfb2a0000,  0xffff0000,  0,    FMT_D7, AM33,   {MEM2(SD8, RM0), RN2}},
+{ "movbu",     0xfd2a0000,  0xffff0000,  0,    FMT_D8, AM33,   {MEM2(SD24, RM0), RN2}},
+{ "movbu",     0xfb3a0000,  0xffff0000,  0,    FMT_D7, AM33,   {RM2, MEM2(SD8, RN0)}},
+{ "movbu",     0xfd3a0000,  0xffff0000,  0,    FMT_D8, AM33,   {RM2, MEM2(SD24, RN0)}},
+{ "movbu",     0xfbaa0000,  0xffff0f00,  0,    FMT_D7, AM33,   {MEM2(SD8, SP), RN2}},
+{ "movbu",     0xfdaa0000,  0xffff0f00,  0,    FMT_D8, AM33,   {MEM2(SD24, SP), RN2}},
+{ "movbu",     0xfbba0000,  0xffff0f00,  0,    FMT_D7, AM33,   {RM2, MEM2(SD8, SP)}},
+{ "movbu",     0xfdba0000,  0xffff0f00,  0,    FMT_D8, AM33,   {RM2, MEM2(SD24, SP)}},
+{ "movbu",     0xfb2e0000,  0xffff0f00,  0,    FMT_D7, AM33,   {MEM(IMM8_MEM), RN2}},
+{ "movbu",     0xfd2e0000,  0xffff0f00,  0,    FMT_D8, AM33,   {MEM(IMM24_MEM), RN2}},
+{ "movbu",     0xfb3e0000,  0xffff0f00,  0,    FMT_D7, AM33,   {RM2, MEM(IMM8_MEM)}},
+{ "movbu",     0xfd3e0000,  0xffff0f00,  0,    FMT_D8, AM33,   {RM2, MEM(IMM24_MEM)}},
+{ "movbu",     0xfbae0000,  0xffff000f,  0,    FMT_D7, AM33,   {MEM2(RI, RM0), RD2}},
+{ "movbu",     0xfbbe0000,  0xffff000f,  0,    FMT_D7, AM33,   {RD2, MEM2(RI, RN0)}},
 { "movbu",     0xfc400000,  0xfff00000,  0,    FMT_D4, 0,      {MEM2(IMM32,AM0), DN1}},
 { "movbu",     0xfcb80000,  0xfffc0000,  0,    FMT_D4, 0,      {MEM2(IMM32, SP), DN0}},
 { "movbu",     0xfca80000,  0xfffc0000,  0,    FMT_D4, 0,      {MEM(IMM32_MEM), DN0}},
 { "movbu",     0xfc500000,  0xfff00000,  0,    FMT_D4, 0,      {DM1, MEM2(IMM32,AN0)}},
 { "movbu",     0xfc920000,  0xfff30000,  0,    FMT_D4, 0,      {DM1, MEM2(IMM32, SP)}},
 { "movbu",     0xfc820000,  0xfff30000,  0,    FMT_D4, 0,      {DM1, MEM(IMM32_MEM)}},
+{ "movbu",     0xfe2a0000,  0xffff0000,  0,    FMT_D9, AM33,   {MEM2(IMM32_HIGH8,RM0), RN2}},
+{ "movbu",     0xfe3a0000,  0xffff0000,  0,    FMT_D9, AM33,   {RM2, MEM2(IMM32_HIGH8, RN0)}},
+{ "movbu",     0xfeaa0000,  0xffff0f00,  0,    FMT_D9, AM33,   {MEM2(IMM32_HIGH8,SP), RN2}},
+{ "movbu",     0xfeba0000,  0xffff0f00,  0,    FMT_D9, AM33,   {RM2, MEM2(IMM32_HIGH8, SP)}},
+{ "movbu",     0xfe2e0000,  0xffff0f00,  0,    FMT_D9, AM33,   {MEM(IMM32_HIGH8_MEM), RN2}},
+{ "movbu",     0xfe3e0000,  0xffff0f00,  0,    FMT_D9, AM33,   {RM2, MEM(IMM32_HIGH8_MEM)}},
 
 { "movhu",     0xf060,      0xfff0,      0,    FMT_D0, 0,      {MEM(AM0), DN1}},
 { "movhu",     0xf86000,    0xfff000,    0,    FMT_D1, 0,      {MEM2(SD8, AM0), DN1}},
@@ -347,28 +613,73 @@ const struct mn10300_opcode mn10300_opcodes[] = {
 { "movhu",     0xfa930000,  0xfff30000,  0,    FMT_D2, 0,      {DM1, MEM2(IMM16, SP)}},
 { "movhu",     0xf4c0,      0xffc0,      0,    FMT_D0, 0,      {DM2, MEM2(DI, AN0)}},
 { "movhu",     0x030000,    0xf30000,    0,    FMT_S2, 0,      {DM1, MEM(IMM16_MEM)}},
+{ "movhu",     0xf94a00,    0xffff00,    0,    FMT_D6, AM33,   {MEM(RM0), RN2}},
+{ "movhu",     0xf95a00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, MEM(RN0)}},
+{ "movhu",     0xf9ca00,    0xffff0f,    0,    FMT_D6, AM33,   {MEM(SP), RN2}},
+{ "movhu",     0xf9da00,    0xffff0f,    0,    FMT_D6, AM33,   {RM2, MEM(SP)}},
+{ "movhu",     0xf9ea00,    0xffff00,    0x12, FMT_D6, AM33,   {MEMINC(RM0), RN2}},
+{ "movhu",     0xf9fa00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, MEMINC(RN0)}},
+{ "movhu",     0xfb4a0000,  0xffff0000,  0,    FMT_D7, AM33,   {MEM2(SD8, RM0), RN2}},
+{ "movhu",     0xfd4a0000,  0xffff0000,  0,    FMT_D8, AM33,   {MEM2(SD24, RM0), RN2}},
+{ "movhu",     0xfb5a0000,  0xffff0000,  0,    FMT_D7, AM33,   {RM2, MEM2(SD8, RN0)}},
+{ "movhu",     0xfd5a0000,  0xffff0000,  0,    FMT_D8, AM33,   {RM2, MEM2(SD24, RN0)}},
+{ "movhu",     0xfbca0000,  0xffff0f00,  0,    FMT_D7, AM33,   {MEM2(SD8, SP), RN2}},
+{ "movhu",     0xfdca0000,  0xffff0f00,  0,    FMT_D8, AM33,   {MEM2(SD24, SP), RN2}},
+{ "movhu",     0xfbda0000,  0xffff0f00,  0,    FMT_D7, AM33,   {RM2, MEM2(SD8, SP)}},
+{ "movhu",     0xfdda0000,  0xffff0f00,  0,    FMT_D8, AM33,   {RM2, MEM2(SD24, SP)}},
+{ "movhu",     0xfb4e0000,  0xffff0f00,  0,    FMT_D7, AM33,   {MEM(IMM8_MEM), RN2}},
+{ "movhu",     0xfd4e0000,  0xffff0f00,  0,    FMT_D8, AM33,   {MEM(IMM24_MEM), RN2}},
+{ "movhu",     0xfbce0000,  0xffff000f,  0,    FMT_D7, AM33,   {MEM2(RI, RM0), RD2}},
+{ "movhu",     0xfbde0000,  0xffff000f,  0,    FMT_D7, AM33,   {RD2, MEM2(RI, RN0)}},
 { "movhu",     0xfc600000,  0xfff00000,  0,    FMT_D4, 0,      {MEM2(IMM32,AM0), DN1}},
 { "movhu",     0xfcbc0000,  0xfffc0000,  0,    FMT_D4, 0,      {MEM2(IMM32, SP), DN0}},
 { "movhu",     0xfcac0000,  0xfffc0000,  0,    FMT_D4, 0,      {MEM(IMM32_MEM), DN0}},
 { "movhu",     0xfc700000,  0xfff00000,  0,    FMT_D4, 0,      {DM1, MEM2(IMM32,AN0)}},
 { "movhu",     0xfc930000,  0xfff30000,  0,    FMT_D4, 0,      {DM1, MEM2(IMM32, SP)}},
 { "movhu",     0xfc830000,  0xfff30000,  0,    FMT_D4, 0,      {DM1, MEM(IMM32_MEM)}},
+{ "movhu",     0xfe4a0000,  0xffff0000,  0,    FMT_D9, AM33,   {MEM2(IMM32_HIGH8,RM0), RN2}},
+{ "movhu",     0xfe5a0000,  0xffff0000,  0,    FMT_D9, AM33,   {RM2, MEM2(IMM32_HIGH8, RN0)}},
+{ "movhu",     0xfeca0000,  0xffff0f00,  0,    FMT_D9, AM33,   {MEM2(IMM32_HIGH8, SP), RN2}},
+{ "movhu",     0xfeda0000,  0xffff0f00,  0,    FMT_D9, AM33,   {RM2, MEM2(IMM32_HIGH8, SP)}},
+{ "movhu",     0xfe4e0000,  0xffff0f00,  0,    FMT_D9, AM33,   {MEM(IMM32_HIGH8_MEM), RN2}},
+{ "movhu",     0xfb5e0000,  0xffff0f00,  0,    FMT_D7, AM33,   {RM2, MEM(IMM8_MEM)}},
+{ "movhu",     0xfd5e0000,  0xffff0f00,  0,    FMT_D8, AM33,   {RM2, MEM(IMM24_MEM)}},
+{ "movhu",     0xfe5e0000,  0xffff0f00,  0,    FMT_D9, AM33,   {RM2, MEM(IMM32_HIGH8_MEM)}},
+{ "movhu",     0xfbea0000,  0xffff0000,  0x22, FMT_D7, AM33,   {MEMINC2 (RM0, SIMM8), RN2}},
+{ "movhu",     0xfbfa0000,  0xffff0000,  0,    FMT_D7, AM33,   {RM2, MEMINC2 (RN0, SIMM8)}},
+{ "movhu",     0xfdea0000,  0xffff0000,  0x22, FMT_D8, AM33,   {MEMINC2 (RM0, IMM24), RN2}},
+{ "movhu",     0xfdfa0000,  0xffff0000,  0,    FMT_D8, AM33,   {RM2, MEMINC2 (RN0, IMM24)}},
+{ "movhu",     0xfeea0000,  0xffff0000,  0x22, FMT_D9, AM33,   {MEMINC2 (RM0, IMM32_HIGH8), RN2}},
+{ "movhu",     0xfefa0000,  0xffff0000,  0,    FMT_D9, AM33,   {RN2, MEMINC2 (RM0, IMM32_HIGH8)}},
 
 { "ext",       0xf2d0,      0xfffc,      0,    FMT_D0, 0,      {DN0}},
+{ "ext",       0xf91800,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
+{ "extb",      0xf92800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "extb",      0x10,        0xfc,        0,    FMT_S0, 0,      {DN0}},
+{ "extb",      0xf92800,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
+{ "extbu",     0xf93800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "extbu",     0x14,        0xfc,        0,    FMT_S0, 0,      {DN0}},
+{ "extbu",     0xf93800,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
+{ "exth",      0xf94800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "exth",      0x18,        0xfc,        0,    FMT_S0, 0,      {DN0}},
+{ "exth",      0xf94800,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
+{ "exthu",     0xf95800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "exthu",     0x1c,        0xfc,        0,    FMT_S0, 0,      {DN0}},
+{ "exthu",     0xf95800,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
 { "movm",      0xce00,      0xff00,      0,    FMT_S1, 0,      {MEM(SP), REGS}},
 { "movm",      0xcf00,      0xff00,      0,    FMT_S1, 0,      {REGS, MEM(SP)}},
+{ "movm",      0xf8ce00,    0xffff00,    0,    FMT_D1, AM33,   {MEM(USP), REGS}},
+{ "movm",      0xf8cf00,    0xffff00,    0,    FMT_D1, AM33,   {REGS, MEM(USP)}},
 
 { "clr",       0x00,        0xf3,        0,    FMT_S0, 0,      {DN1}},
+{ "clr",       0xf96800,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
+{ "add",       0xfb7c0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "add",       0xe0,        0xf0,        0,    FMT_S0, 0,      {DM1, DN0}},
 { "add",       0xf160,      0xfff0,      0,    FMT_D0, 0,      {DM1, AN0}},
 { "add",       0xf150,      0xfff0,      0,    FMT_D0, 0,      {AM1, DN0}},
@@ -379,33 +690,66 @@ const struct mn10300_opcode mn10300_opcodes[] = {
 { "add",       0xfad00000,  0xfffc0000,  0,    FMT_D2, 0,      {SIMM16, AN0}},
 { "add",       0xf8fe00,    0xffff00,    0,    FMT_D1, 0,      {SIMM8, SP}},
 { "add",       0xfafe0000,  0xffff0000,  0,    FMT_D2, 0,      {SIMM16, SP}},
+{ "add",       0xf97800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "add",       0xfcc00000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, DN0}},
 { "add",       0xfcd00000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, AN0}},
 { "add",       0xfcfe0000,  0xffff0000,  0,    FMT_D4, 0,      {IMM32, SP}},
+{ "add",       0xfb780000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "add",       0xfd780000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "add",       0xfe780000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
+{ "addc",      0xfb8c0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "addc",      0xf140,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
+{ "addc",      0xf98800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "addc",      0xfb880000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "addc",      0xfd880000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "addc",      0xfe880000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
+{ "sub",       0xfb9c0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "sub",       0xf100,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
 { "sub",       0xf120,      0xfff0,      0,    FMT_D0, 0,      {DM1, AN0}},
 { "sub",       0xf110,      0xfff0,      0,    FMT_D0, 0,      {AM1, DN0}},
 { "sub",       0xf130,      0xfff0,      0,    FMT_D0, 0,      {AM1, AN0}},
+{ "sub",       0xf99800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "sub",       0xfcc40000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, DN0}},
 { "sub",       0xfcd40000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, AN0}},
+{ "sub",       0xfb980000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "sub",       0xfd980000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "sub",       0xfe980000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
+{ "subc",      0xfa8c0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "subc",      0xf180,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
+{ "subc",      0xf9a800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "subc",      0xfba80000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "subc",      0xfda80000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "subc",      0xfea80000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
+{ "mul",       0xfbad0000,  0xffff0000,  0xc,  FMT_D7, AM33,   {RM2, RN0, RD2, RD0}},
 { "mul",       0xf240,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
+{ "mul",       0xf9a900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "mul",       0xfba90000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "mul",       0xfda90000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "mul",       0xfea90000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
+{ "mulu",      0xfbbd0000,  0xffff0000,  0xc,  FMT_D7, AM33,   {RM2, RN0, RD2, RD0}},
 { "mulu",      0xf250,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
+{ "mulu",      0xf9b900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "mulu",      0xfbb90000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "mulu",      0xfdb90000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "mulu",      0xfeb90000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
 { "div",       0xf260,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
+{ "div",       0xf9c900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 
 { "divu",      0xf270,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
+{ "divu",      0xf9d900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 
 { "inc",       0x40,        0xf3,        0,    FMT_S0, 0,      {DN1}},
 { "inc",       0x41,        0xf3,        0,    FMT_S0, 0,      {AN1}},
+{ "inc",       0xf9b800,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
 { "inc4",      0x50,        0xfc,        0,    FMT_S0, 0,      {AN0}},
+{ "inc4",      0xf9c800,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
 { "cmp",       0xa000,      0xf000,      0,    FMT_S1, 0,      {SIMM8, DN01}},
 { "cmp",       0xa0,        0xf0,        0x3,  FMT_S0, 0,      {DM1, DN0}},
@@ -415,30 +759,57 @@ const struct mn10300_opcode mn10300_opcodes[] = {
 { "cmp",       0xb0,        0xf0,        0x3,  FMT_S0, 0,      {AM1, AN0}},
 { "cmp",       0xfac80000,  0xfffc0000,  0,    FMT_D2, 0,      {SIMM16, DN0}},
 { "cmp",       0xfad80000,  0xfffc0000,  0,    FMT_D2, 0,      {IMM16, AN0}},
+{ "cmp",       0xf9d800,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "cmp",       0xfcc80000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, DN0}},
 { "cmp",       0xfcd80000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, AN0}},
+{ "cmp",       0xfbd80000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "cmp",       0xfdd80000,  0xffff0000,  0,    FMT_D8, AM33,   {SIMM24, RN02}},
+{ "cmp",       0xfed80000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
+{ "and",       0xfb0d0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "and",       0xf200,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
 { "and",       0xf8e000,    0xfffc00,    0,    FMT_D1, 0,      {IMM8, DN0}},
 { "and",       0xfae00000,  0xfffc0000,  0,    FMT_D2, 0,      {IMM16, DN0}},
 { "and",       0xfafc0000,  0xffff0000,  0,    FMT_D2, 0,      {IMM16, PSW}},
+{ "and",       0xfcfc0000,  0xffff0000,  0,    FMT_D4, AM33,   {IMM32, EPSW}},
+{ "and",       0xf90900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "and",       0xfce00000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, DN0}},
+{ "and",       0xfb090000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "and",       0xfd090000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "and",       0xfe090000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
+{ "or",                0xfb1d0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "or",                0xf210,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
 { "or",                0xf8e400,    0xfffc00,    0,    FMT_D1, 0,      {IMM8, DN0}},
 { "or",                0xfae40000,  0xfffc0000,  0,    FMT_D2, 0,      {IMM16, DN0}},
 { "or",                0xfafd0000,  0xffff0000,  0,    FMT_D2, 0,      {IMM16, PSW}},
+{ "or",                0xfcfd0000,  0xffff0000,  0,    FMT_D4, AM33,   {IMM32, EPSW}},
+{ "or",                0xf91900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "or",                0xfce40000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, DN0}},
+{ "or",                0xfb190000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "or",                0xfd190000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "or",                0xfe190000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
+{ "xor",       0xfb2d0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "xor",       0xf220,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
 { "xor",       0xfae80000,  0xfffc0000,  0,    FMT_D2, 0,      {IMM16, DN0}},
+{ "xor",       0xf92900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 { "xor",       0xfce80000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, DN0}},
+{ "xor",       0xfb290000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "xor",       0xfd290000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "xor",       0xfe290000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 
 { "not",       0xf230,      0xfffc,      0,    FMT_D0, 0,      {DN0}},
+{ "not",       0xf93900,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
 { "btst",      0xf8ec00,    0xfffc00,    0,    FMT_D1, 0,      {IMM8, DN0}},
 { "btst",      0xfaec0000,  0xfffc0000,  0,    FMT_D2, 0,      {IMM16, DN0}},
 { "btst",      0xfcec0000,  0xfffc0000,  0,    FMT_D4, 0,      {IMM32, DN0}},
+/* Place these before the ones with IMM8E and SD8N_SHIFT8 since we want the
+   them to match last since they do not promote.  */
+{ "btst",      0xfbe90000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "btst",      0xfde90000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "btst",      0xfee90000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 { "btst",      0xfe020000,  0xffff0000,  0,    FMT_D5, 0,      {IMM8E, MEM(IMM32_LOWSHIFT8)}},
 { "btst",      0xfaf80000,  0xfffc0000,  0,    FMT_D2, 0,      {IMM8, MEM2(SD8N_SHIFT8, AN0)}},
 
@@ -450,23 +821,44 @@ const struct mn10300_opcode mn10300_opcodes[] = {
 { "bclr",      0xfe010000,  0xffff0000,  0,    FMT_D5, 0,      {IMM8E, MEM(IMM32_LOWSHIFT8)}},
 { "bclr",      0xfaf40000,  0xfffc0000,  0,    FMT_D2, 0,      {IMM8, MEM2(SD8N_SHIFT8,AN0)}},
 
+{ "asr",       0xfb4d0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "asr",       0xf2b0,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
 { "asr",       0xf8c800,    0xfffc00,    0,    FMT_D1, 0,      {IMM8, DN0}},
+{ "asr",       0xf94900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "asr",       0xfb490000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "asr",       0xfd490000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "asr",       0xfe490000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 { "asr",       0xf8c801,    0xfffcff,    0,    FMT_D1, 0,      {DN0}},
+{ "asr",       0xfb490001,  0xffff00ff,  0,    FMT_D7, AM33,   {RN02}},
 
+{ "lsr",       0xfb5d0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "lsr",       0xf2a0,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
 { "lsr",       0xf8c400,    0xfffc00,    0,    FMT_D1, 0,      {IMM8, DN0}},
+{ "lsr",       0xf95900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "lsr",       0xfb590000,  0xffff0000,  0,    FMT_D7, AM33,   {IMM8, RN02}},
+{ "lsr",       0xfd590000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "lsr",       0xfe590000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 { "lsr",       0xf8c401,    0xfffcff,    0,    FMT_D1, 0,      {DN0}},
+{ "lsr",       0xfb590001,  0xffff00ff,  0,    FMT_D7, AM33,   {RN02}},
 
+{ "asl",       0xfb6d0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "asl",       0xf290,      0xfff0,      0,    FMT_D0, 0,      {DM1, DN0}},
 { "asl",       0xf8c000,    0xfffc00,    0,    FMT_D1, 0,      {IMM8, DN0}},
+{ "asl",       0xf96900,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
+{ "asl",       0xfb690000,  0xffff0000,  0,    FMT_D7, AM33,   {SIMM8, RN02}},
+{ "asl",       0xfd690000,  0xffff0000,  0,    FMT_D8, AM33,   {IMM24, RN02}},
+{ "asl",       0xfe690000,  0xffff0000,  0,    FMT_D9, AM33,   {IMM32_HIGH8, RN02}},
 { "asl",       0xf8c001,    0xfffcff,    0,    FMT_D1, 0,      {DN0}},
+{ "asl",       0xfb690001,  0xffff00ff,  0,    FMT_D7, AM33,   {RN02}},
 
 { "asl2",      0x54,        0xfc,        0,    FMT_S0, 0,      {DN0}},
+{ "asl2",      0xf97900,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
 { "ror",       0xf284,      0xfffc,      0,    FMT_D0, 0,      {DN0}},
+{ "ror",       0xf98900,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
 { "rol",       0xf280,      0xfffc,      0,    FMT_D0, 0,      {DN0}},
+{ "rol",       0xf99900,    0xffff00,    0,    FMT_D6, AM33,   {RN02}},
 
 { "beq",       0xc800,      0xff00,      0,    FMT_S1, 0,      {SD8N_PCREL}},
 { "bne",       0xc900,      0xff00,      0,    FMT_S1, 0,      {SD8N_PCREL}},
@@ -655,13 +1047,18 @@ const struct mn10300_opcode mn10300_opcodes[] = {
 { "mulqu",     0xfb140000,  0xfffc0000,  0,    FMT_D2, AM30,   {SIMM16, DN0}},
 { "mulqu",     0xfd140000,  0xfffc0000,  0,    FMT_D4, AM30,   {IMM32, DN0}},
 { "sat16",     0xf640,      0xfff0,      0,    FMT_D0, AM30,   {DM1, DN0}},
+{ "sat16",     0xf9ab00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 
 { "sat24",     0xf650,      0xfff0,      0,    FMT_D0, AM30,   {DM1, DN0}},
+{ "sat24",     0xfbaf0000,  0xffff00ff,  0,    FMT_D7, AM33,   {RM2, RN0}},
 
+{ "bsch",      0xfbff0000,  0xffff000f,  0,    FMT_D7, AM33,   {RM2, RN0, RD2}},
 { "bsch",      0xf670,      0xfff0,      0,    FMT_D0, AM30,   {DM1, DN0}},
+{ "bsch",      0xf9fb00,    0xffff00,    0,    FMT_D6, AM33,   {RM2, RN0}},
 
 /* Extension.  We need some instruction to trigger "emulated syscalls"
    for our simulator.  */
+{ "syscall",   0xf0e0,      0xfff0,      0,    FMT_D0, AM33,   {IMM4}},
 { "syscall",    0xf0c0,      0xffff,      0,    FMT_D0, 0,     {UNUSED}},
 
 /* Extension.  When talking to the simulator, gdb requires some instruction
@@ -672,6 +1069,353 @@ const struct mn10300_opcode mn10300_opcodes[] = {
    both mn10x00 architectures.  */
 { "break",     0xff,        0xff,        0,    FMT_S0, 0,      {UNUSED}},
 
+{ "add_add",   0xf7000000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "add_add",   0xf7100000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "add_add",   0xf7040000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "add_add",   0xf7140000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "add_sub",   0xf7200000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "add_sub",   0xf7300000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "add_sub",   0xf7240000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "add_sub",   0xf7340000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "add_cmp",   0xf7400000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "add_cmp",   0xf7500000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "add_cmp",   0xf7440000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "add_cmp",   0xf7540000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "add_mov",   0xf7600000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "add_mov",   0xf7700000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "add_mov",   0xf7640000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "add_mov",   0xf7740000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "add_asr",   0xf7800000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "add_asr",   0xf7900000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "add_asr",   0xf7840000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "add_asr",   0xf7940000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "add_lsr",   0xf7a00000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "add_lsr",   0xf7b00000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "add_lsr",   0xf7a40000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "add_lsr",   0xf7b40000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "add_asl",   0xf7c00000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "add_asl",   0xf7d00000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "add_asl",   0xf7c40000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "add_asl",   0xf7d40000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "cmp_add",   0xf7010000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "cmp_add",   0xf7110000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "cmp_add",   0xf7050000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "cmp_add",   0xf7150000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "cmp_sub",   0xf7210000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "cmp_sub",   0xf7310000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "cmp_sub",   0xf7250000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "cmp_sub",   0xf7350000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "cmp_mov",   0xf7610000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "cmp_mov",   0xf7710000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "cmp_mov",   0xf7650000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "cmp_mov",   0xf7750000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "cmp_asr",   0xf7810000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "cmp_asr",   0xf7910000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "cmp_asr",   0xf7850000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "cmp_asr",   0xf7950000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "cmp_lsr",   0xf7a10000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "cmp_lsr",   0xf7b10000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "cmp_lsr",   0xf7a50000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "cmp_lsr",   0xf7b50000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "cmp_asl",   0xf7c10000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "cmp_asl",   0xf7d10000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "cmp_asl",   0xf7c50000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "cmp_asl",   0xf7d50000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "sub_add",   0xf7020000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sub_add",   0xf7120000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "sub_add",   0xf7060000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "sub_add",   0xf7160000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "sub_sub",   0xf7220000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sub_sub",   0xf7320000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "sub_sub",   0xf7260000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "sub_sub",   0xf7360000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "sub_cmp",   0xf7420000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sub_cmp",   0xf7520000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "sub_cmp",   0xf7460000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "sub_cmp",   0xf7560000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "sub_mov",   0xf7620000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sub_mov",   0xf7720000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "sub_mov",   0xf7660000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "sub_mov",   0xf7760000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "sub_asr",   0xf7820000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sub_asr",   0xf7920000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "sub_asr",   0xf7860000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "sub_asr",   0xf7960000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "sub_lsr",   0xf7a20000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sub_lsr",   0xf7b20000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "sub_lsr",   0xf7a60000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "sub_lsr",   0xf7b60000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "sub_asl",   0xf7c20000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sub_asl",   0xf7d20000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "sub_asl",   0xf7c60000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "sub_asl",   0xf7d60000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "mov_add",   0xf7030000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "mov_add",   0xf7130000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "mov_add",   0xf7070000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "mov_add",   0xf7170000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "mov_sub",   0xf7230000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "mov_sub",   0xf7330000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "mov_sub",   0xf7270000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "mov_sub",   0xf7370000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "mov_cmp",   0xf7430000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "mov_cmp",   0xf7530000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "mov_cmp",   0xf7470000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "mov_cmp",   0xf7570000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "mov_mov",   0xf7630000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "mov_mov",   0xf7730000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "mov_mov",   0xf7670000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "mov_mov",   0xf7770000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, SIMM4_2, RN0}},
+{ "mov_asr",   0xf7830000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "mov_asr",   0xf7930000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "mov_asr",   0xf7870000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "mov_asr",   0xf7970000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "mov_lsr",   0xf7a30000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "mov_lsr",   0xf7b30000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "mov_lsr",   0xf7a70000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "mov_lsr",   0xf7b70000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "mov_asl",   0xf7c30000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "mov_asl",   0xf7d30000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "mov_asl",   0xf7c70000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, RM2, RN0}},
+{ "mov_asl",   0xf7d70000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_6, RN4, IMM4_2, RN0}},
+{ "and_add",   0xf7080000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "and_add",   0xf7180000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "and_sub",   0xf7280000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "and_sub",   0xf7380000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "and_cmp",   0xf7480000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "and_cmp",   0xf7580000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "and_mov",   0xf7680000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "and_mov",   0xf7780000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "and_asr",   0xf7880000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "and_asr",   0xf7980000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "and_lsr",   0xf7a80000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "and_lsr",   0xf7b80000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "and_asl",   0xf7c80000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "and_asl",   0xf7d80000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "dmach_add", 0xf7090000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "dmach_add", 0xf7190000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "dmach_sub", 0xf7290000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "dmach_sub", 0xf7390000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "dmach_cmp", 0xf7490000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "dmach_cmp", 0xf7590000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "dmach_mov", 0xf7690000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "dmach_mov", 0xf7790000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "dmach_asr", 0xf7890000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "dmach_asr", 0xf7990000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "dmach_lsr", 0xf7a90000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "dmach_lsr", 0xf7b90000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "dmach_asl", 0xf7c90000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "dmach_asl", 0xf7d90000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "xor_add",   0xf70a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "xor_add",   0xf71a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "xor_sub",   0xf72a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "xor_sub",   0xf73a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "xor_cmp",   0xf74a0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "xor_cmp",   0xf75a0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "xor_mov",   0xf76a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "xor_mov",   0xf77a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "xor_asr",   0xf78a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "xor_asr",   0xf79a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "xor_lsr",   0xf7aa0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "xor_lsr",   0xf7ba0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "xor_asl",   0xf7ca0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "xor_asl",   0xf7da0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "swhw_add",  0xf70b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "swhw_add",  0xf71b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "swhw_sub",  0xf72b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "swhw_sub",  0xf73b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "swhw_cmp",  0xf74b0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "swhw_cmp",  0xf75b0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "swhw_mov",  0xf76b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "swhw_mov",  0xf77b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "swhw_asr",  0xf78b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "swhw_asr",  0xf79b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "swhw_lsr",  0xf7ab0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "swhw_lsr",  0xf7bb0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "swhw_asl",  0xf7cb0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "swhw_asl",  0xf7db0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "or_add",    0xf70c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "or_add",    0xf71c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "or_sub",    0xf72c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "or_sub",    0xf73c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "or_cmp",    0xf74c0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "or_cmp",    0xf75c0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "or_mov",    0xf76c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "or_mov",    0xf77c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "or_asr",    0xf78c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "or_asr",    0xf79c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "or_lsr",    0xf7ac0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "or_lsr",    0xf7bc0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "or_asl",    0xf7cc0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "or_asl",    0xf7dc0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "sat16_add", 0xf70d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sat16_add", 0xf71d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "sat16_sub", 0xf72d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sat16_sub", 0xf73d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "sat16_cmp", 0xf74d0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sat16_cmp", 0xf75d0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "sat16_mov", 0xf76d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sat16_mov", 0xf77d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, SIMM4_2, RN0}},
+{ "sat16_asr", 0xf78d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sat16_asr", 0xf79d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "sat16_lsr", 0xf7ad0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sat16_lsr", 0xf7bd0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+{ "sat16_asl", 0xf7cd0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, RM2, RN0}},
+{ "sat16_asl", 0xf7dd0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM6, RN4, IMM4_2, RN0}},
+/* Ugh.  Synthetic instructions.  */
+{ "add_and",   0xf7080000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "add_and",   0xf7180000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "add_dmach", 0xf7090000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "add_dmach", 0xf7190000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "add_or",    0xf70c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "add_or",    0xf71c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "add_sat16", 0xf70d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "add_sat16", 0xf71d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "add_swhw",  0xf70b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "add_swhw",  0xf71b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "add_xor",   0xf70a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "add_xor",   0xf71a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "asl_add",   0xf7c00000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_add",   0xf7d00000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asl_add",   0xf7c40000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "asl_add",   0xf7d40000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "asl_and",   0xf7c80000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_and",   0xf7d80000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asl_cmp",   0xf7c10000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_cmp",   0xf7d10000,  0xffff0000,  0x0,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4, }},
+{ "asl_cmp",   0xf7c50000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "asl_cmp",   0xf7d50000,  0xffff0000,  0x0,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "asl_dmach", 0xf7c90000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_dmach", 0xf7d90000,  0xffff0000,  0x0,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asl_mov",   0xf7c30000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_mov",   0xf7d30000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asl_mov",   0xf7c70000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "asl_mov",   0xf7d70000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "asl_or",    0xf7cc0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_or",    0xf7dc0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asl_sat16", 0xf7cd0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_sat16", 0xf7dd0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asl_sub",   0xf7c20000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_sub",   0xf7d20000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asl_sub",   0xf7c60000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "asl_sub",   0xf7d60000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "asl_swhw",  0xf7cb0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_swhw",  0xf7db0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asl_xor",   0xf7ca0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asl_xor",   0xf7da0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asr_add",   0xf7800000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_add",   0xf7900000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asr_add",   0xf7840000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "asr_add",   0xf7940000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "asr_and",   0xf7880000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_and",   0xf7980000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asr_cmp",   0xf7810000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_cmp",   0xf7910000,  0xffff0000,  0x0,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4, }},
+{ "asr_cmp",   0xf7850000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "asr_cmp",   0xf7950000,  0xffff0000,  0x0,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "asr_dmach", 0xf7890000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_dmach", 0xf7990000,  0xffff0000,  0x0,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asr_mov",   0xf7830000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_mov",   0xf7930000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asr_mov",   0xf7870000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "asr_mov",   0xf7970000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "asr_or",    0xf78c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_or",    0xf79c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asr_sat16", 0xf78d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_sat16", 0xf79d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asr_sub",   0xf7820000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_sub",   0xf7920000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asr_sub",   0xf7860000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "asr_sub",   0xf7960000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "asr_swhw",  0xf78b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_swhw",  0xf79b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "asr_xor",   0xf78a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "asr_xor",   0xf79a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "cmp_and",   0xf7480000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "cmp_and",   0xf7580000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "cmp_dmach", 0xf7490000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "cmp_dmach", 0xf7590000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "cmp_or",    0xf74c0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "cmp_or",    0xf75c0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "cmp_sat16", 0xf74d0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "cmp_sat16", 0xf75d0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "cmp_swhw",  0xf74b0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "cmp_swhw",  0xf75b0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "cmp_xor",   0xf74a0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "cmp_xor",   0xf75a0000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "lsr_add",   0xf7a00000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_add",   0xf7b00000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "lsr_add",   0xf7a40000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "lsr_add",   0xf7b40000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "lsr_and",   0xf7a80000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_and",   0xf7b80000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "lsr_cmp",   0xf7a10000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_cmp",   0xf7b10000,  0xffff0000,  0x0,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4, }},
+{ "lsr_cmp",   0xf7a50000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "lsr_cmp",   0xf7b50000,  0xffff0000,  0x0,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "lsr_dmach", 0xf7a90000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_dmach", 0xf7b90000,  0xffff0000,  0x0,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "lsr_mov",   0xf7a30000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_mov",   0xf7b30000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "lsr_mov",   0xf7a70000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "lsr_mov",   0xf7b70000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "lsr_or",    0xf7ac0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_or",    0xf7bc0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "lsr_sat16", 0xf7ad0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_sat16", 0xf7bd0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "lsr_sub",   0xf7a20000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_sub",   0xf7b20000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "lsr_sub",   0xf7a60000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, SIMM4_6, RN4}},
+{ "lsr_sub",   0xf7b60000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, SIMM4_6, RN4}},
+{ "lsr_swhw",  0xf7ab0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_swhw",  0xf7bb0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "lsr_xor",   0xf7aa0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "lsr_xor",   0xf7ba0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {IMM4_2, RN0, RM6, RN4}},
+{ "mov_and",   0xf7680000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "mov_and",   0xf7780000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "mov_dmach", 0xf7690000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "mov_dmach", 0xf7790000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "mov_or",    0xf76c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "mov_or",    0xf77c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "mov_sat16", 0xf76d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "mov_sat16", 0xf77d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "mov_swhw",  0xf76b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "mov_swhw",  0xf77b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "mov_xor",   0xf76a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "mov_xor",   0xf77a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "sub_and",   0xf7280000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "sub_and",   0xf7380000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "sub_dmach", 0xf7290000,  0xffff0000,  0x0,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "sub_dmach", 0xf7390000,  0xffff0000,  0x0,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "sub_or",    0xf72c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "sub_or",    0xf73c0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "sub_sat16", 0xf72d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "sub_sat16", 0xf73d0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "sub_swhw",  0xf72b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "sub_swhw",  0xf73b0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "sub_xor",   0xf72a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {RM2, RN0, RM6, RN4}},
+{ "sub_xor",   0xf73a0000,  0xffff0000,  0xa,  FMT_D10, AM33,   {SIMM4_2, RN0, RM6, RN4}},
+{ "mov_llt",   0xf7e00000,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_lgt",   0xf7e00001,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_lge",   0xf7e00002,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_lle",   0xf7e00003,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_lcs",   0xf7e00004,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_lhi",   0xf7e00005,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_lcc",   0xf7e00006,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_lls",   0xf7e00007,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_leq",   0xf7e00008,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_lne",   0xf7e00009,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "mov_lra",   0xf7e0000a,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "llt_mov",   0xf7e00000,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "lgt_mov",   0xf7e00001,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "lge_mov",   0xf7e00002,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "lle_mov",   0xf7e00003,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "lcs_mov",   0xf7e00004,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "lhi_mov",   0xf7e00005,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "lcc_mov",   0xf7e00006,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "lls_mov",   0xf7e00007,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "leq_mov",   0xf7e00008,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "lne_mov",   0xf7e00009,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
+{ "lra_mov",   0xf7e0000a,  0xffff000f,  0x22, FMT_D10, AM33,   {MEMINC2 (RN4,SIMM4_2), RM6}},
  
 { 0, 0, 0, 0, 0, 0, {0}},