OSDN Git Service

Regenerate cgen files, update copyright year.
[pf3gnuchains/pf3gnuchains3x.git] / sid / component / cgen-cpu / xstormy16 / xstormy16-decode.cxx
index ab05a72..35a2d28 100644 (file)
@@ -2,7 +2,7 @@
 
 THIS FILE IS MACHINE GENERATED WITH CGEN.
 
-Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
+Copyright (C) 2000-2010 Red Hat, Inc.
 
 This file is part of the Red Hat simulators.
 
@@ -10,6 +10,9 @@ This file is part of the Red Hat simulators.
 */
 
 
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
 #include "xstormy16.h"
 
 using namespace xstormy16; // FIXME: namespace organization still wip
@@ -141,6 +144,7 @@ xstormy16_idesc xstormy16_idesc::idesc_table[XSTORMY16_INSN_SYSCALL + 1] =
   { xstormy16_sem_sdiv, "SDIV", XSTORMY16_INSN_SDIV, { 0, (1<<MACH_BASE) } },
   { xstormy16_sem_sdivlh, "SDIVLH", XSTORMY16_INSN_SDIVLH, { 0, (1<<MACH_BASE) } },
   { xstormy16_sem_divlh, "DIVLH", XSTORMY16_INSN_DIVLH, { 0, (1<<MACH_BASE) } },
+  { xstormy16_sem_reset, "RESET", XSTORMY16_INSN_RESET, { 0, (1<<MACH_BASE) } },
   { xstormy16_sem_nop, "NOP", XSTORMY16_INSN_NOP, { 0, (1<<MACH_BASE) } },
   { xstormy16_sem_halt, "HALT", XSTORMY16_INSN_HALT, { 0, (1<<MACH_BASE) } },
   { xstormy16_sem_hold, "HOLD", XSTORMY16_INSN_HOLD, { 0, (1<<MACH_BASE) } },
@@ -179,6 +183,8 @@ xstormy16_extract_sfmt_movhgrmem (xstormy16_scache* abuf, xstormy16_cpu* current
 static void
 xstormy16_extract_sfmt_movlmemgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
+xstormy16_extract_sfmt_movhmemgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
+static void
 xstormy16_extract_sfmt_movgrgri (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
 xstormy16_extract_sfmt_movgrgripostinc (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
@@ -255,14 +261,8 @@ xstormy16_extract_sfmt_andimm8 (xstormy16_scache* abuf, xstormy16_cpu* current_c
 static void
 xstormy16_extract_sfmt_andgrimm16 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
-xstormy16_extract_sfmt_addgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
-static void
 xstormy16_extract_sfmt_addgrimm4 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
-xstormy16_extract_sfmt_addimm8 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
-static void
-xstormy16_extract_sfmt_addgrimm16 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
-static void
 xstormy16_extract_sfmt_adcgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
 xstormy16_extract_sfmt_adcgrimm4 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
@@ -273,16 +273,10 @@ xstormy16_extract_sfmt_adcgrimm16 (xstormy16_scache* abuf, xstormy16_cpu* curren
 static void
 xstormy16_extract_sfmt_incgrimm2 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
-xstormy16_extract_sfmt_rrcgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
-static void
-xstormy16_extract_sfmt_rrcgrimm4 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
+xstormy16_extract_sfmt_shrgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
 xstormy16_extract_sfmt_shrgrimm (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
-xstormy16_extract_sfmt_asrgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
-static void
-xstormy16_extract_sfmt_asrgrimm (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
-static void
 xstormy16_extract_sfmt_set1lmemimm (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
 xstormy16_extract_sfmt_set1hmemimm (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
@@ -331,11 +325,9 @@ xstormy16_extract_sfmt_ret (xstormy16_scache* abuf, xstormy16_cpu* current_cpu,
 static void
 xstormy16_extract_sfmt_mul (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
-xstormy16_extract_sfmt_sdiv (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
-static void
 xstormy16_extract_sfmt_sdivlh (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 static void
-xstormy16_extract_sfmt_nop (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
+xstormy16_extract_sfmt_reset (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn);
 
 // Fetch & decode instruction
 void
@@ -356,11 +348,21 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           unsigned int val = (((insn >> 17) & (3 << 3)) | ((insn >> 16) & (7 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_NOP; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_nop (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 1 : itype = XSTORMY16_INSN_SYSCALL; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_nop (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 2 : itype = XSTORMY16_INSN_IRET; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_iret (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 3 : itype = XSTORMY16_INSN_RET; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_ret (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 5 : itype = XSTORMY16_INSN_BRK; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_nop (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 0 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_NOP; xstormy16_extract_sfmt_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 1 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_SYSCALL; xstormy16_extract_sfmt_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 2 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_IRET; xstormy16_extract_sfmt_iret (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 3 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_RET; xstormy16_extract_sfmt_ret (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 5 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_BRK; xstormy16_extract_sfmt_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 8 : /* fall through */
           case 9 : /* fall through */
           case 10 : /* fall through */
@@ -368,7 +370,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           case 12 : /* fall through */
           case 13 : /* fall through */
           case 14 : /* fall through */
-          case 15 : itype = XSTORMY16_INSN_CALLRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_callrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 15 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_CALLRGR; xstormy16_extract_sfmt_callrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 16 : /* fall through */
           case 17 : /* fall through */
           case 18 : /* fall through */
@@ -376,7 +380,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           case 20 : /* fall through */
           case 21 : /* fall through */
           case 22 : /* fall through */
-          case 23 : itype = XSTORMY16_INSN_BGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_bgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 23 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_BGR; xstormy16_extract_sfmt_bgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 24 : /* fall through */
           case 25 : /* fall through */
           case 26 : /* fall through */
@@ -384,31 +390,60 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           case 28 : /* fall through */
           case 29 : /* fall through */
           case 30 : /* fall through */
-          case 31 : itype = XSTORMY16_INSN_ICALLRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_icallrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          case 31 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_ICALLRGR; xstormy16_extract_sfmt_icallrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 1 :
         {
-          unsigned int val = (((insn >> 18) & (3 << 2)) | ((insn >> 16) & (3 << 0)));
+          unsigned int val = (((insn >> 17) & (3 << 3)) | ((insn >> 16) & (7 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_HALT; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_nop (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 2 : itype = XSTORMY16_INSN_HOLD; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_nop (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 3 : itype = XSTORMY16_INSN_HOLDX; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_nop (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 4 : /* fall through */
-          case 5 : /* fall through */
-          case 6 : /* fall through */
-          case 7 : itype = XSTORMY16_INSN_CALLRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_callrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 0 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_HALT; xstormy16_extract_sfmt_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 2 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_HOLD; xstormy16_extract_sfmt_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 3 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_HOLDX; xstormy16_extract_sfmt_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 7 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_RESET; xstormy16_extract_sfmt_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 8 : /* fall through */
           case 9 : /* fall through */
           case 10 : /* fall through */
-          case 11 : itype = XSTORMY16_INSN_BGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_bgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 11 : /* fall through */
           case 12 : /* fall through */
           case 13 : /* fall through */
           case 14 : /* fall through */
-          case 15 : itype = XSTORMY16_INSN_ICALLRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_icallrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          case 15 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_CALLRGR; xstormy16_extract_sfmt_callrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 16 : /* fall through */
+          case 17 : /* fall through */
+          case 18 : /* fall through */
+          case 19 : /* fall through */
+          case 20 : /* fall through */
+          case 21 : /* fall through */
+          case 22 : /* fall through */
+          case 23 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_BGR; xstormy16_extract_sfmt_bgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 24 : /* fall through */
+          case 25 : /* fall through */
+          case 26 : /* fall through */
+          case 27 : /* fall through */
+          case 28 : /* fall through */
+          case 29 : /* fall through */
+          case 30 : /* fall through */
+          case 31 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_ICALLRGR; xstormy16_extract_sfmt_icallrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 2 : /* fall through */
@@ -417,9 +452,13 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           unsigned int val = (((insn >> 21) & (1 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_JMP; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_jmp (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 1 : itype = XSTORMY16_INSN_ICALLGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_icallgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          case 0 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_JMP; xstormy16_extract_sfmt_jmp (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 1 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_ICALLGR; xstormy16_extract_sfmt_icallgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 4 : /* fall through */
@@ -428,11 +467,17 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           unsigned int val = (((insn >> 20) & (3 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_PUSHGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_pushgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 1 : itype = XSTORMY16_INSN_POPGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_popgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 0 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_PUSHGR; xstormy16_extract_sfmt_pushgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 1 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_POPGR; xstormy16_extract_sfmt_popgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 2 : /* fall through */
-          case 3 : itype = XSTORMY16_INSN_CALLGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_callgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          case 3 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_CALLGR; xstormy16_extract_sfmt_callgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 6 :
@@ -440,10 +485,22 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           unsigned int val = (((insn >> 20) & (3 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_DIV; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_mul (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 1 : itype = XSTORMY16_INSN_MUL; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_mul (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 2 : itype = XSTORMY16_INSN_DIVLH; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_sdivlh (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          case 0 :
+            entire_insn = entire_insn >> 16;
+            if ((entire_insn & 0xffff) == 0xc0)
+              { itype = XSTORMY16_INSN_DIV; xstormy16_extract_sfmt_mul (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+            itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 1 :
+            entire_insn = entire_insn >> 16;
+            if ((entire_insn & 0xffff) == 0xd0)
+              { itype = XSTORMY16_INSN_MUL; xstormy16_extract_sfmt_mul (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+            itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 2 :
+            entire_insn = entire_insn >> 16;
+            if ((entire_insn & 0xffff) == 0xe0)
+              { itype = XSTORMY16_INSN_DIVLH; xstormy16_extract_sfmt_sdivlh (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+            itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 7 :
@@ -451,9 +508,17 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           unsigned int val = (((insn >> 21) & (1 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_SDIV; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_sdiv (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 1 : itype = XSTORMY16_INSN_SDIVLH; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_sdivlh (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          case 0 :
+            entire_insn = entire_insn >> 16;
+            if ((entire_insn & 0xffff) == 0xc8)
+              { itype = XSTORMY16_INSN_SDIV; xstormy16_extract_sfmt_mul (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+            itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 1 :
+            entire_insn = entire_insn >> 16;
+            if ((entire_insn & 0xffff) == 0xe8)
+              { itype = XSTORMY16_INSN_SDIVLH; xstormy16_extract_sfmt_sdivlh (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+            itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 8 : /* fall through */
@@ -487,7 +552,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 36 : /* fall through */
       case 37 : /* fall through */
       case 38 : /* fall through */
-      case 39 : itype = XSTORMY16_INSN_BNGRIMM4; xstormy16_extract_sfmt_bngrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 39 :
+        if ((entire_insn & 0xff00f000) == 0x4000000)
+          { itype = XSTORMY16_INSN_BNGRIMM4; xstormy16_extract_sfmt_bngrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 40 : /* fall through */
       case 41 : /* fall through */
       case 42 : /* fall through */
@@ -495,7 +563,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 44 : /* fall through */
       case 45 : /* fall through */
       case 46 : /* fall through */
-      case 47 : itype = XSTORMY16_INSN_BPGRIMM4; xstormy16_extract_sfmt_bngrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 47 :
+        if ((entire_insn & 0xff00f000) == 0x5000000)
+          { itype = XSTORMY16_INSN_BPGRIMM4; xstormy16_extract_sfmt_bngrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 48 : /* fall through */
       case 49 : /* fall through */
       case 50 : /* fall through */
@@ -503,7 +574,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 52 : /* fall through */
       case 53 : /* fall through */
       case 54 : /* fall through */
-      case 55 : itype = XSTORMY16_INSN_BNGRGR; xstormy16_extract_sfmt_bngrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 55 :
+        if ((entire_insn & 0xff00f000) == 0x6000000)
+          { itype = XSTORMY16_INSN_BNGRGR; xstormy16_extract_sfmt_bngrgr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 56 : /* fall through */
       case 57 : /* fall through */
       case 58 : /* fall through */
@@ -511,7 +585,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 60 : /* fall through */
       case 61 : /* fall through */
       case 62 : /* fall through */
-      case 63 : itype = XSTORMY16_INSN_BPGRGR; xstormy16_extract_sfmt_bngrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 63 :
+        if ((entire_insn & 0xff00f000) == 0x7000000)
+          { itype = XSTORMY16_INSN_BPGRGR; xstormy16_extract_sfmt_bngrgr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 64 : /* fall through */
       case 65 : /* fall through */
       case 66 : /* fall through */
@@ -519,7 +596,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 68 : /* fall through */
       case 69 : /* fall through */
       case 70 : /* fall through */
-      case 71 : itype = XSTORMY16_INSN_CLR1GRIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_shrgrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 71 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_CLR1GRIMM; xstormy16_extract_sfmt_addgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 72 : /* fall through */
       case 73 : /* fall through */
       case 74 : /* fall through */
@@ -527,7 +606,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 76 : /* fall through */
       case 77 : /* fall through */
       case 78 : /* fall through */
-      case 79 : itype = XSTORMY16_INSN_SET1GRIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_shrgrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 79 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SET1GRIMM; xstormy16_extract_sfmt_addgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 80 : /* fall through */
       case 81 : /* fall through */
       case 82 : /* fall through */
@@ -535,7 +616,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 84 : /* fall through */
       case 85 : /* fall through */
       case 86 : /* fall through */
-      case 87 : itype = XSTORMY16_INSN_CLR1GRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 87 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_CLR1GRGR; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 88 : /* fall through */
       case 89 : /* fall through */
       case 90 : /* fall through */
@@ -543,7 +626,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 92 : /* fall through */
       case 93 : /* fall through */
       case 94 : /* fall through */
-      case 95 : itype = XSTORMY16_INSN_SET1GRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 95 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SET1GRGR; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 104 : /* fall through */
       case 105 : /* fall through */
       case 106 : /* fall through */
@@ -684,9 +769,13 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           unsigned int val = (((insn >> 16) & (1 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_BR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_br (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 1 : itype = XSTORMY16_INSN_CALLRIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_callrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          case 0 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_BR; xstormy16_extract_sfmt_br (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 1 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_CALLRIMM; xstormy16_extract_sfmt_callrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 256 : /* fall through */
@@ -816,22 +905,36 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 380 : /* fall through */
       case 381 : /* fall through */
       case 382 : /* fall through */
-      case 383 : itype = XSTORMY16_INSN_MOVWGRIMM8; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movwgrimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 383 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVWGRIMM8; xstormy16_extract_sfmt_movwgrimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 384 : /* fall through */
-      case 385 : itype = XSTORMY16_INSN_INCGRIMM2; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_incgrimm2 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 385 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_INCGRIMM2; xstormy16_extract_sfmt_incgrimm2 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 386 : /* fall through */
-      case 387 : itype = XSTORMY16_INSN_DECGRIMM2; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_incgrimm2 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 387 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_DECGRIMM2; xstormy16_extract_sfmt_incgrimm2 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 388 : /* fall through */
       case 389 :
         {
           unsigned int val = (((insn >> 20) & (3 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_SWPB; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 1 : itype = XSTORMY16_INSN_SWPN; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 2 : itype = XSTORMY16_INSN_CBWGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 3 : itype = XSTORMY16_INSN_NOTGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          case 0 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_SWPB; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 1 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_SWPN; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 2 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_CBWGR; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 3 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_NOTGR; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 390 : /* fall through */
@@ -840,11 +943,17 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           unsigned int val = (((insn >> 20) & (3 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_MOVLOWGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movlowgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 1 : itype = XSTORMY16_INSN_MOVHIGHGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movlowgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 0 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_MOVLOWGR; xstormy16_extract_sfmt_movlowgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 1 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_MOVHIGHGR; xstormy16_extract_sfmt_movlowgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 2 : itype = XSTORMY16_INSN_MASKGRIMM16; xstormy16_extract_sfmt_maskgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 3 : itype = XSTORMY16_INSN_REVGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          case 3 :
+            entire_insn = entire_insn >> 16;
+            itype = XSTORMY16_INSN_REVGR; xstormy16_extract_sfmt_swpn (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 392 : /* fall through */
@@ -857,7 +966,7 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           case 1 : itype = XSTORMY16_INSN_ORGRIMM16; xstormy16_extract_sfmt_andgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 2 : itype = XSTORMY16_INSN_XORGRIMM16; xstormy16_extract_sfmt_andgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 3 : itype = XSTORMY16_INSN_MOVWGRIMM16; xstormy16_extract_sfmt_movwgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 394 : /* fall through */
@@ -866,11 +975,11 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
           unsigned int val = (((insn >> 20) & (3 << 0)));
           switch (val)
           {
-          case 0 : itype = XSTORMY16_INSN_ADDGRIMM16; xstormy16_extract_sfmt_addgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 0 : itype = XSTORMY16_INSN_ADDGRIMM16; xstormy16_extract_sfmt_andgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 1 : itype = XSTORMY16_INSN_ADCGRIMM16; xstormy16_extract_sfmt_adcgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          case 2 : itype = XSTORMY16_INSN_SUBGRIMM16; xstormy16_extract_sfmt_addgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+          case 2 : itype = XSTORMY16_INSN_SUBGRIMM16; xstormy16_extract_sfmt_andgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
           case 3 : itype = XSTORMY16_INSN_SBCGRIMM16; xstormy16_extract_sfmt_adcgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
-          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+          default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
           }
         }
       case 400 : /* fall through */
@@ -880,7 +989,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 404 : /* fall through */
       case 405 : /* fall through */
       case 406 : /* fall through */
-      case 407 : itype = XSTORMY16_INSN_SWPW; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_swpw (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 407 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SWPW; xstormy16_extract_sfmt_swpw (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 408 : /* fall through */
       case 409 : /* fall through */
       case 410 : /* fall through */
@@ -888,7 +999,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 412 : /* fall through */
       case 413 : /* fall through */
       case 414 : /* fall through */
-      case 415 : itype = XSTORMY16_INSN_MASKGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_maskgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 415 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MASKGRGR; xstormy16_extract_sfmt_maskgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 432 : /* fall through */
       case 433 : /* fall through */
       case 434 : /* fall through */
@@ -896,7 +1009,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 436 : /* fall through */
       case 437 : /* fall through */
       case 438 : /* fall through */
-      case 439 : itype = XSTORMY16_INSN_ASRGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_asrgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 439 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ASRGRGR; xstormy16_extract_sfmt_shrgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 440 : /* fall through */
       case 441 : /* fall through */
       case 442 : /* fall through */
@@ -904,7 +1019,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 444 : /* fall through */
       case 445 : /* fall through */
       case 446 : /* fall through */
-      case 447 : itype = XSTORMY16_INSN_ASRGRIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_asrgrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 447 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ASRGRIMM; xstormy16_extract_sfmt_shrgrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 448 : /* fall through */
       case 449 : /* fall through */
       case 450 : /* fall through */
@@ -912,7 +1029,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 452 : /* fall through */
       case 453 : /* fall through */
       case 454 : /* fall through */
-      case 455 : itype = XSTORMY16_INSN_RRCGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_rrcgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 455 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_RRCGRGR; xstormy16_extract_sfmt_adcgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 456 : /* fall through */
       case 457 : /* fall through */
       case 458 : /* fall through */
@@ -920,7 +1039,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 460 : /* fall through */
       case 461 : /* fall through */
       case 462 : /* fall through */
-      case 463 : itype = XSTORMY16_INSN_RRCGRIMM4; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_rrcgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 463 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_RRCGRIMM4; xstormy16_extract_sfmt_adcgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 464 : /* fall through */
       case 465 : /* fall through */
       case 466 : /* fall through */
@@ -928,7 +1049,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 468 : /* fall through */
       case 469 : /* fall through */
       case 470 : /* fall through */
-      case 471 : itype = XSTORMY16_INSN_RLCGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_rrcgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 471 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_RLCGRGR; xstormy16_extract_sfmt_adcgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 472 : /* fall through */
       case 473 : /* fall through */
       case 474 : /* fall through */
@@ -936,7 +1059,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 476 : /* fall through */
       case 477 : /* fall through */
       case 478 : /* fall through */
-      case 479 : itype = XSTORMY16_INSN_RLCGRIMM4; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_rrcgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 479 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_RLCGRIMM4; xstormy16_extract_sfmt_adcgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 480 : /* fall through */
       case 481 : /* fall through */
       case 482 : /* fall through */
@@ -944,7 +1069,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 484 : /* fall through */
       case 485 : /* fall through */
       case 486 : /* fall through */
-      case 487 : itype = XSTORMY16_INSN_SHRGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 487 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SHRGRGR; xstormy16_extract_sfmt_shrgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 488 : /* fall through */
       case 489 : /* fall through */
       case 490 : /* fall through */
@@ -952,7 +1079,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 492 : /* fall through */
       case 493 : /* fall through */
       case 494 : /* fall through */
-      case 495 : itype = XSTORMY16_INSN_SHRGRIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_shrgrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 495 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SHRGRIMM; xstormy16_extract_sfmt_shrgrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 496 : /* fall through */
       case 497 : /* fall through */
       case 498 : /* fall through */
@@ -960,7 +1089,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 500 : /* fall through */
       case 501 : /* fall through */
       case 502 : /* fall through */
-      case 503 : itype = XSTORMY16_INSN_SHLGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 503 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SHLGRGR; xstormy16_extract_sfmt_shrgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 504 : /* fall through */
       case 505 : /* fall through */
       case 506 : /* fall through */
@@ -968,7 +1099,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 508 : /* fall through */
       case 509 : /* fall through */
       case 510 : /* fall through */
-      case 511 : itype = XSTORMY16_INSN_SHLGRIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_shrgrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 511 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SHLGRIMM; xstormy16_extract_sfmt_shrgrimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 512 : /* fall through */
       case 513 : /* fall through */
       case 514 : /* fall through */
@@ -976,7 +1109,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 516 : /* fall through */
       case 517 : /* fall through */
       case 518 : /* fall through */
-      case 519 : itype = XSTORMY16_INSN_ANDGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 519 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ANDGRGR; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 520 : /* fall through */
       case 521 : /* fall through */
       case 522 : /* fall through */
@@ -984,7 +1119,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 524 : /* fall through */
       case 525 : /* fall through */
       case 526 : /* fall through */
-      case 527 : itype = XSTORMY16_INSN_ANDIMM8; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 527 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ANDIMM8; xstormy16_extract_sfmt_andimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 528 : /* fall through */
       case 529 : /* fall through */
       case 530 : /* fall through */
@@ -992,7 +1129,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 532 : /* fall through */
       case 533 : /* fall through */
       case 534 : /* fall through */
-      case 535 : itype = XSTORMY16_INSN_ORGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 535 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ORGRGR; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 536 : /* fall through */
       case 537 : /* fall through */
       case 538 : /* fall through */
@@ -1000,7 +1139,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 540 : /* fall through */
       case 541 : /* fall through */
       case 542 : /* fall through */
-      case 543 : itype = XSTORMY16_INSN_ORIMM8; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 543 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ORIMM8; xstormy16_extract_sfmt_andimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 544 : /* fall through */
       case 545 : /* fall through */
       case 546 : /* fall through */
@@ -1008,7 +1149,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 548 : /* fall through */
       case 549 : /* fall through */
       case 550 : /* fall through */
-      case 551 : itype = XSTORMY16_INSN_XORGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 551 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_XORGRGR; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 552 : /* fall through */
       case 553 : /* fall through */
       case 554 : /* fall through */
@@ -1016,7 +1159,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 556 : /* fall through */
       case 557 : /* fall through */
       case 558 : /* fall through */
-      case 559 : itype = XSTORMY16_INSN_XORIMM8; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_andimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 559 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_XORIMM8; xstormy16_extract_sfmt_andimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 560 : /* fall through */
       case 561 : /* fall through */
       case 562 : /* fall through */
@@ -1024,7 +1169,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 564 : /* fall through */
       case 565 : /* fall through */
       case 566 : /* fall through */
-      case 567 : itype = XSTORMY16_INSN_MOVGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 567 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVGRGR; xstormy16_extract_sfmt_movgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 568 : /* fall through */
       case 569 : /* fall through */
       case 570 : /* fall through */
@@ -1032,7 +1179,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 572 : /* fall through */
       case 573 : /* fall through */
       case 574 : /* fall through */
-      case 575 : itype = XSTORMY16_INSN_MOVWIMM8; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movwimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 575 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVWIMM8; xstormy16_extract_sfmt_movwimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 584 : /* fall through */
       case 585 : /* fall through */
       case 586 : /* fall through */
@@ -1040,7 +1189,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 588 : /* fall through */
       case 589 : /* fall through */
       case 590 : /* fall through */
-      case 591 : itype = XSTORMY16_INSN_ADDGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_addgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 591 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ADDGRGR; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 600 : /* fall through */
       case 601 : /* fall through */
       case 602 : /* fall through */
@@ -1048,7 +1199,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 604 : /* fall through */
       case 605 : /* fall through */
       case 606 : /* fall through */
-      case 607 : itype = XSTORMY16_INSN_ADCGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_adcgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 607 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ADCGRGR; xstormy16_extract_sfmt_adcgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 616 : /* fall through */
       case 617 : /* fall through */
       case 618 : /* fall through */
@@ -1056,7 +1209,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 620 : /* fall through */
       case 621 : /* fall through */
       case 622 : /* fall through */
-      case 623 : itype = XSTORMY16_INSN_SUBGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_addgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 623 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SUBGRGR; xstormy16_extract_sfmt_andgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 632 : /* fall through */
       case 633 : /* fall through */
       case 634 : /* fall through */
@@ -1064,7 +1219,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 636 : /* fall through */
       case 637 : /* fall through */
       case 638 : /* fall through */
-      case 639 : itype = XSTORMY16_INSN_SBCGRGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_adcgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 639 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SBCGRGR; xstormy16_extract_sfmt_adcgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 648 : /* fall through */
       case 649 : /* fall through */
       case 650 : /* fall through */
@@ -1072,7 +1229,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 652 : /* fall through */
       case 653 : /* fall through */
       case 654 : /* fall through */
-      case 655 : itype = XSTORMY16_INSN_ADDGRIMM4; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_addgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 655 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ADDGRIMM4; xstormy16_extract_sfmt_addgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 664 : /* fall through */
       case 665 : /* fall through */
       case 666 : /* fall through */
@@ -1080,7 +1239,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 668 : /* fall through */
       case 669 : /* fall through */
       case 670 : /* fall through */
-      case 671 : itype = XSTORMY16_INSN_ADCGRIMM4; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_adcgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 671 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ADCGRIMM4; xstormy16_extract_sfmt_adcgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 680 : /* fall through */
       case 681 : /* fall through */
       case 682 : /* fall through */
@@ -1088,7 +1249,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 684 : /* fall through */
       case 685 : /* fall through */
       case 686 : /* fall through */
-      case 687 : itype = XSTORMY16_INSN_SUBGRIMM4; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_addgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 687 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SUBGRIMM4; xstormy16_extract_sfmt_addgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 696 : /* fall through */
       case 697 : /* fall through */
       case 698 : /* fall through */
@@ -1096,7 +1259,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 700 : /* fall through */
       case 701 : /* fall through */
       case 702 : /* fall through */
-      case 703 : itype = XSTORMY16_INSN_SBCGRIMM4; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_adcgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 703 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SBCGRIMM4; xstormy16_extract_sfmt_adcgrimm4 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 712 : /* fall through */
       case 713 : /* fall through */
       case 714 : /* fall through */
@@ -1104,7 +1269,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 716 : /* fall through */
       case 717 : /* fall through */
       case 718 : /* fall through */
-      case 719 : itype = XSTORMY16_INSN_ADDIMM8; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_addimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 719 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ADDIMM8; xstormy16_extract_sfmt_andimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 728 : /* fall through */
       case 729 : /* fall through */
       case 730 : /* fall through */
@@ -1112,7 +1279,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 732 : /* fall through */
       case 733 : /* fall through */
       case 734 : /* fall through */
-      case 735 : itype = XSTORMY16_INSN_ADCIMM8; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_adcimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 735 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_ADCIMM8; xstormy16_extract_sfmt_adcimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 744 : /* fall through */
       case 745 : /* fall through */
       case 746 : /* fall through */
@@ -1120,7 +1289,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 748 : /* fall through */
       case 749 : /* fall through */
       case 750 : /* fall through */
-      case 751 : itype = XSTORMY16_INSN_SUBIMM8; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_addimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 751 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SUBIMM8; xstormy16_extract_sfmt_andimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 760 : /* fall through */
       case 761 : /* fall through */
       case 762 : /* fall through */
@@ -1128,7 +1299,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 764 : /* fall through */
       case 765 : /* fall through */
       case 766 : /* fall through */
-      case 767 : itype = XSTORMY16_INSN_SBCGRIMM8; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_adcimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 767 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SBCGRIMM8; xstormy16_extract_sfmt_adcimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 768 : /* fall through */
       case 770 : /* fall through */
       case 772 : /* fall through */
@@ -1136,7 +1309,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 776 : /* fall through */
       case 778 : /* fall through */
       case 780 : /* fall through */
-      case 782 : itype = XSTORMY16_INSN_MOVGRGRIPOSTINC; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movgrgripostinc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 782 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVGRGRIPOSTINC; xstormy16_extract_sfmt_movgrgripostinc (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 769 : /* fall through */
       case 771 : /* fall through */
       case 773 : /* fall through */
@@ -1144,7 +1319,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 777 : /* fall through */
       case 779 : /* fall through */
       case 781 : /* fall through */
-      case 783 : itype = XSTORMY16_INSN_MOVGRGRIIPOSTINC; xstormy16_extract_sfmt_movgrgriipostinc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 783 :
+        if ((entire_insn & 0xfe08f000) == 0x60080000)
+          { itype = XSTORMY16_INSN_MOVGRGRIIPOSTINC; xstormy16_extract_sfmt_movgrgriipostinc (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 784 : /* fall through */
       case 786 : /* fall through */
       case 788 : /* fall through */
@@ -1152,7 +1330,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 792 : /* fall through */
       case 794 : /* fall through */
       case 796 : /* fall through */
-      case 798 : itype = XSTORMY16_INSN_MOVGRIPOSTINCGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movgripostincgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 798 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVGRIPOSTINCGR; xstormy16_extract_sfmt_movgripostincgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 785 : /* fall through */
       case 787 : /* fall through */
       case 789 : /* fall through */
@@ -1160,7 +1340,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 793 : /* fall through */
       case 795 : /* fall through */
       case 797 : /* fall through */
-      case 799 : itype = XSTORMY16_INSN_MOVGRIIPOSTINCGR; xstormy16_extract_sfmt_movgriipostincgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 799 :
+        if ((entire_insn & 0xfe08f000) == 0x62080000)
+          { itype = XSTORMY16_INSN_MOVGRIIPOSTINCGR; xstormy16_extract_sfmt_movgriipostincgr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 800 : /* fall through */
       case 802 : /* fall through */
       case 804 : /* fall through */
@@ -1168,7 +1351,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 808 : /* fall through */
       case 810 : /* fall through */
       case 812 : /* fall through */
-      case 814 : itype = XSTORMY16_INSN_MOVFGRGRIPOSTINC; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movfgrgripostinc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 814 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVFGRGRIPOSTINC; xstormy16_extract_sfmt_movfgrgripostinc (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 801 : /* fall through */
       case 803 : /* fall through */
       case 805 : /* fall through */
@@ -1176,7 +1361,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 809 : /* fall through */
       case 811 : /* fall through */
       case 813 : /* fall through */
-      case 815 : itype = XSTORMY16_INSN_MOVFGRGRIIPOSTINC; xstormy16_extract_sfmt_movfgrgriipostinc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 815 :
+        if ((entire_insn & 0xfe088000) == 0x64080000)
+          { itype = XSTORMY16_INSN_MOVFGRGRIIPOSTINC; xstormy16_extract_sfmt_movfgrgriipostinc (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 816 : /* fall through */
       case 818 : /* fall through */
       case 820 : /* fall through */
@@ -1184,7 +1372,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 824 : /* fall through */
       case 826 : /* fall through */
       case 828 : /* fall through */
-      case 830 : itype = XSTORMY16_INSN_MOVFGRIPOSTINCGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movfgripostincgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 830 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVFGRIPOSTINCGR; xstormy16_extract_sfmt_movfgripostincgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 817 : /* fall through */
       case 819 : /* fall through */
       case 821 : /* fall through */
@@ -1192,7 +1382,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 825 : /* fall through */
       case 827 : /* fall through */
       case 829 : /* fall through */
-      case 831 : itype = XSTORMY16_INSN_MOVFGRIIPOSTINCGR; xstormy16_extract_sfmt_movfgriipostincgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 831 :
+        if ((entire_insn & 0xfe088000) == 0x66080000)
+          { itype = XSTORMY16_INSN_MOVFGRIIPOSTINCGR; xstormy16_extract_sfmt_movfgriipostincgr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 832 : /* fall through */
       case 834 : /* fall through */
       case 836 : /* fall through */
@@ -1200,7 +1393,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 840 : /* fall through */
       case 842 : /* fall through */
       case 844 : /* fall through */
-      case 846 : itype = XSTORMY16_INSN_MOVGRGRIPREDEC; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movgrgripredec (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 846 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVGRGRIPREDEC; xstormy16_extract_sfmt_movgrgripredec (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 833 : /* fall through */
       case 835 : /* fall through */
       case 837 : /* fall through */
@@ -1208,7 +1403,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 841 : /* fall through */
       case 843 : /* fall through */
       case 845 : /* fall through */
-      case 847 : itype = XSTORMY16_INSN_MOVGRGRIIPREDEC; xstormy16_extract_sfmt_movgrgriipredec (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 847 :
+        if ((entire_insn & 0xfe08f000) == 0x68080000)
+          { itype = XSTORMY16_INSN_MOVGRGRIIPREDEC; xstormy16_extract_sfmt_movgrgriipredec (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 848 : /* fall through */
       case 850 : /* fall through */
       case 852 : /* fall through */
@@ -1216,7 +1414,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 856 : /* fall through */
       case 858 : /* fall through */
       case 860 : /* fall through */
-      case 862 : itype = XSTORMY16_INSN_MOVGRIPREDECGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movgripredecgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 862 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVGRIPREDECGR; xstormy16_extract_sfmt_movgripredecgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 849 : /* fall through */
       case 851 : /* fall through */
       case 853 : /* fall through */
@@ -1224,7 +1424,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 857 : /* fall through */
       case 859 : /* fall through */
       case 861 : /* fall through */
-      case 863 : itype = XSTORMY16_INSN_MOVGRIIPREDECGR; xstormy16_extract_sfmt_movgriipredecgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 863 :
+        if ((entire_insn & 0xfe08f000) == 0x6a080000)
+          { itype = XSTORMY16_INSN_MOVGRIIPREDECGR; xstormy16_extract_sfmt_movgriipredecgr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 864 : /* fall through */
       case 866 : /* fall through */
       case 868 : /* fall through */
@@ -1232,7 +1435,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 872 : /* fall through */
       case 874 : /* fall through */
       case 876 : /* fall through */
-      case 878 : itype = XSTORMY16_INSN_MOVFGRGRIPREDEC; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movfgrgripredec (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 878 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVFGRGRIPREDEC; xstormy16_extract_sfmt_movfgrgripredec (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 865 : /* fall through */
       case 867 : /* fall through */
       case 869 : /* fall through */
@@ -1240,7 +1445,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 873 : /* fall through */
       case 875 : /* fall through */
       case 877 : /* fall through */
-      case 879 : itype = XSTORMY16_INSN_MOVFGRGRIIPREDEC; xstormy16_extract_sfmt_movfgrgriipredec (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 879 :
+        if ((entire_insn & 0xfe088000) == 0x6c080000)
+          { itype = XSTORMY16_INSN_MOVFGRGRIIPREDEC; xstormy16_extract_sfmt_movfgrgriipredec (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 880 : /* fall through */
       case 882 : /* fall through */
       case 884 : /* fall through */
@@ -1248,7 +1456,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 888 : /* fall through */
       case 890 : /* fall through */
       case 892 : /* fall through */
-      case 894 : itype = XSTORMY16_INSN_MOVFGRIPREDECGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movfgripredecgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 894 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVFGRIPREDECGR; xstormy16_extract_sfmt_movfgripredecgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 881 : /* fall through */
       case 883 : /* fall through */
       case 885 : /* fall through */
@@ -1256,7 +1466,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 889 : /* fall through */
       case 891 : /* fall through */
       case 893 : /* fall through */
-      case 895 : itype = XSTORMY16_INSN_MOVFGRIIPREDECGR; xstormy16_extract_sfmt_movfgriipredecgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 895 :
+        if ((entire_insn & 0xfe088000) == 0x6e080000)
+          { itype = XSTORMY16_INSN_MOVFGRIIPREDECGR; xstormy16_extract_sfmt_movfgriipredecgr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 896 : /* fall through */
       case 898 : /* fall through */
       case 900 : /* fall through */
@@ -1264,7 +1477,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 904 : /* fall through */
       case 906 : /* fall through */
       case 908 : /* fall through */
-      case 910 : itype = XSTORMY16_INSN_MOVGRGRI; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movgrgri (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 910 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVGRGRI; xstormy16_extract_sfmt_movgrgri (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 897 : /* fall through */
       case 899 : /* fall through */
       case 901 : /* fall through */
@@ -1272,7 +1487,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 905 : /* fall through */
       case 907 : /* fall through */
       case 909 : /* fall through */
-      case 911 : itype = XSTORMY16_INSN_MOVGRGRII; xstormy16_extract_sfmt_movgrgrii (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 911 :
+        if ((entire_insn & 0xfe08f000) == 0x70080000)
+          { itype = XSTORMY16_INSN_MOVGRGRII; xstormy16_extract_sfmt_movgrgrii (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 912 : /* fall through */
       case 914 : /* fall through */
       case 916 : /* fall through */
@@ -1280,7 +1498,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 920 : /* fall through */
       case 922 : /* fall through */
       case 924 : /* fall through */
-      case 926 : itype = XSTORMY16_INSN_MOVGRIGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movgrigr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 926 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVGRIGR; xstormy16_extract_sfmt_movgrigr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 913 : /* fall through */
       case 915 : /* fall through */
       case 917 : /* fall through */
@@ -1288,7 +1508,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 921 : /* fall through */
       case 923 : /* fall through */
       case 925 : /* fall through */
-      case 927 : itype = XSTORMY16_INSN_MOVGRIIGR; xstormy16_extract_sfmt_movgriigr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 927 :
+        if ((entire_insn & 0xfe08f000) == 0x72080000)
+          { itype = XSTORMY16_INSN_MOVGRIIGR; xstormy16_extract_sfmt_movgriigr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 928 : /* fall through */
       case 930 : /* fall through */
       case 932 : /* fall through */
@@ -1296,7 +1519,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 936 : /* fall through */
       case 938 : /* fall through */
       case 940 : /* fall through */
-      case 942 : itype = XSTORMY16_INSN_MOVFGRGRI; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movfgrgri (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 942 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVFGRGRI; xstormy16_extract_sfmt_movfgrgri (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 929 : /* fall through */
       case 931 : /* fall through */
       case 933 : /* fall through */
@@ -1304,7 +1529,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 937 : /* fall through */
       case 939 : /* fall through */
       case 941 : /* fall through */
-      case 943 : itype = XSTORMY16_INSN_MOVFGRGRII; xstormy16_extract_sfmt_movfgrgrii (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 943 :
+        if ((entire_insn & 0xfe088000) == 0x74080000)
+          { itype = XSTORMY16_INSN_MOVFGRGRII; xstormy16_extract_sfmt_movfgrgrii (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 944 : /* fall through */
       case 946 : /* fall through */
       case 948 : /* fall through */
@@ -1312,7 +1540,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 952 : /* fall through */
       case 954 : /* fall through */
       case 956 : /* fall through */
-      case 958 : itype = XSTORMY16_INSN_MOVFGRIGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movfgrigr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 958 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVFGRIGR; xstormy16_extract_sfmt_movfgrigr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 945 : /* fall through */
       case 947 : /* fall through */
       case 949 : /* fall through */
@@ -1320,7 +1550,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 953 : /* fall through */
       case 955 : /* fall through */
       case 957 : /* fall through */
-      case 959 : itype = XSTORMY16_INSN_MOVFGRIIGR; xstormy16_extract_sfmt_movfgriigr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 959 :
+        if ((entire_insn & 0xfe088000) == 0x76080000)
+          { itype = XSTORMY16_INSN_MOVFGRIIGR; xstormy16_extract_sfmt_movfgriigr (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 960 : /* fall through */
       case 961 : /* fall through */
       case 962 : /* fall through */
@@ -1360,7 +1593,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 996 : /* fall through */
       case 997 : /* fall through */
       case 998 : /* fall through */
-      case 999 : itype = XSTORMY16_INSN_BNLMEMIMM; xstormy16_extract_sfmt_bnlmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 999 :
+        if ((entire_insn & 0xff008000) == 0x7c000000)
+          { itype = XSTORMY16_INSN_BNLMEMIMM; xstormy16_extract_sfmt_bnlmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1000 : /* fall through */
       case 1001 : /* fall through */
       case 1002 : /* fall through */
@@ -1368,7 +1604,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1004 : /* fall through */
       case 1005 : /* fall through */
       case 1006 : /* fall through */
-      case 1007 : itype = XSTORMY16_INSN_BPLMEMIMM; xstormy16_extract_sfmt_bnlmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1007 :
+        if ((entire_insn & 0xff008000) == 0x7d000000)
+          { itype = XSTORMY16_INSN_BPLMEMIMM; xstormy16_extract_sfmt_bnlmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1008 : /* fall through */
       case 1009 : /* fall through */
       case 1010 : /* fall through */
@@ -1376,7 +1615,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1012 : /* fall through */
       case 1013 : /* fall through */
       case 1014 : /* fall through */
-      case 1015 : itype = XSTORMY16_INSN_BNHMEMIMM; xstormy16_extract_sfmt_bnhmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1015 :
+        if ((entire_insn & 0xff008000) == 0x7e000000)
+          { itype = XSTORMY16_INSN_BNHMEMIMM; xstormy16_extract_sfmt_bnhmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1016 : /* fall through */
       case 1017 : /* fall through */
       case 1018 : /* fall through */
@@ -1384,7 +1626,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1020 : /* fall through */
       case 1021 : /* fall through */
       case 1022 : /* fall through */
-      case 1023 : itype = XSTORMY16_INSN_BPHMEMIMM; xstormy16_extract_sfmt_bnhmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1023 :
+        if ((entire_insn & 0xff008000) == 0x7f000000)
+          { itype = XSTORMY16_INSN_BPHMEMIMM; xstormy16_extract_sfmt_bnhmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done; }
+        itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1024 : /* fall through */
       case 1025 : /* fall through */
       case 1026 : /* fall through */
@@ -1512,7 +1757,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1148 : /* fall through */
       case 1149 : /* fall through */
       case 1150 : /* fall through */
-      case 1151 : itype = XSTORMY16_INSN_MOVLGRMEM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movlgrmem (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1151 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVLGRMEM; xstormy16_extract_sfmt_movlgrmem (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1152 : /* fall through */
       case 1153 : /* fall through */
       case 1154 : /* fall through */
@@ -1640,7 +1887,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1276 : /* fall through */
       case 1277 : /* fall through */
       case 1278 : /* fall through */
-      case 1279 : itype = XSTORMY16_INSN_MOVLMEMGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movlmemgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1279 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVLMEMGR; xstormy16_extract_sfmt_movlmemgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1280 : /* fall through */
       case 1281 : /* fall through */
       case 1282 : /* fall through */
@@ -1768,7 +2017,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1404 : /* fall through */
       case 1405 : /* fall through */
       case 1406 : /* fall through */
-      case 1407 : itype = XSTORMY16_INSN_MOVHGRMEM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movhgrmem (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1407 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVHGRMEM; xstormy16_extract_sfmt_movhgrmem (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1408 : /* fall through */
       case 1409 : /* fall through */
       case 1410 : /* fall through */
@@ -1896,7 +2147,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1532 : /* fall through */
       case 1533 : /* fall through */
       case 1534 : /* fall through */
-      case 1535 : itype = XSTORMY16_INSN_MOVHMEMGR; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_movlmemgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1535 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_MOVHMEMGR; xstormy16_extract_sfmt_movhmemgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1536 : /* fall through */
       case 1537 : /* fall through */
       case 1538 : /* fall through */
@@ -2152,7 +2405,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1788 : /* fall through */
       case 1789 : /* fall through */
       case 1790 : /* fall through */
-      case 1791 : itype = XSTORMY16_INSN_BCC; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_bcc (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1791 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_BCC; xstormy16_extract_sfmt_bcc (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1792 : /* fall through */
       case 1793 : /* fall through */
       case 1794 : /* fall through */
@@ -2216,7 +2471,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1908 : /* fall through */
       case 1909 : /* fall through */
       case 1910 : /* fall through */
-      case 1911 : itype = XSTORMY16_INSN_CLR1LMEMIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_set1lmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1911 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_CLR1LMEMIMM; xstormy16_extract_sfmt_set1lmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1800 : /* fall through */
       case 1801 : /* fall through */
       case 1802 : /* fall through */
@@ -2280,7 +2537,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 1916 : /* fall through */
       case 1917 : /* fall through */
       case 1918 : /* fall through */
-      case 1919 : itype = XSTORMY16_INSN_SET1LMEMIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_set1lmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 1919 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SET1LMEMIMM; xstormy16_extract_sfmt_set1lmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1920 : /* fall through */
       case 1921 : /* fall through */
       case 1922 : /* fall through */
@@ -2344,7 +2603,9 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 2036 : /* fall through */
       case 2037 : /* fall through */
       case 2038 : /* fall through */
-      case 2039 : itype = XSTORMY16_INSN_CLR1HMEMIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_set1hmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      case 2039 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_CLR1HMEMIMM; xstormy16_extract_sfmt_set1hmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
       case 1928 : /* fall through */
       case 1929 : /* fall through */
       case 1930 : /* fall through */
@@ -2408,8 +2669,10 @@ xstormy16_scache::decode (xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_
       case 2044 : /* fall through */
       case 2045 : /* fall through */
       case 2046 : /* fall through */
-      case 2047 : itype = XSTORMY16_INSN_SET1HMEMIMM; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_set1hmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
-      default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;
+      case 2047 :
+        entire_insn = entire_insn >> 16;
+        itype = XSTORMY16_INSN_SET1HMEMIMM; xstormy16_extract_sfmt_set1hmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
+      default : itype = XSTORMY16_INSN_X_INVALID; xstormy16_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;
       }
     }
 
@@ -2588,6 +2851,35 @@ xstormy16_extract_sfmt_movlmemgr (xstormy16_scache* abuf, xstormy16_cpu* current
 }
 
 void
+xstormy16_extract_sfmt_movhmemgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
+    xstormy16_insn_word insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_movhgrmem.f
+    UINT f_Rm;
+    UINT f_op2m;
+    HI f_hmem8;
+
+    f_Rm = EXTRACT_MSB0_UINT (insn, 16, 4, 3);
+    f_op2m = EXTRACT_MSB0_UINT (insn, 16, 7, 1);
+    f_hmem8 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) + (32512));
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_Rm) = f_Rm;
+  FLD (f_hmem8) = f_hmem8;
+  FLD (f_op2m) = f_op2m;
+  if (UNLIKELY(current_cpu->trace_extract_p))
+    {
+      current_cpu->trace_stream 
+        << "0x" << hex << pc << dec << " (sfmt_movhmemgr)\t"
+        << " f_Rm:0x" << hex << f_Rm << dec
+        << " f_hmem8:0x" << hex << f_hmem8 << dec
+        << " f_op2m:0x" << hex << f_op2m << dec
+        << endl;
+    }
+
+#undef FLD
+}
+
+void
 xstormy16_extract_sfmt_movgrgri (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
     xstormy16_insn_word insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_movfgrgrii.f
@@ -2773,7 +3065,7 @@ xstormy16_extract_sfmt_movgrgrii (xstormy16_scache* abuf, xstormy16_cpu* current
     f_op2m = EXTRACT_MSB0_UINT (insn, 32, 7, 1);
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rs) = f_Rs;
@@ -2806,7 +3098,7 @@ xstormy16_extract_sfmt_movgrgriipostinc (xstormy16_scache* abuf, xstormy16_cpu*
     f_op2m = EXTRACT_MSB0_UINT (insn, 32, 7, 1);
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rs) = f_Rs;
@@ -2839,7 +3131,7 @@ xstormy16_extract_sfmt_movgrgriipredec (xstormy16_scache* abuf, xstormy16_cpu* c
     f_op2m = EXTRACT_MSB0_UINT (insn, 32, 7, 1);
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rs) = f_Rs;
@@ -2872,7 +3164,7 @@ xstormy16_extract_sfmt_movgriigr (xstormy16_scache* abuf, xstormy16_cpu* current
     f_op2m = EXTRACT_MSB0_UINT (insn, 32, 7, 1);
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rdm) = f_Rdm;
@@ -2905,7 +3197,7 @@ xstormy16_extract_sfmt_movgriipostincgr (xstormy16_scache* abuf, xstormy16_cpu*
     f_op2m = EXTRACT_MSB0_UINT (insn, 32, 7, 1);
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rdm) = f_Rdm;
@@ -2938,7 +3230,7 @@ xstormy16_extract_sfmt_movgriipredecgr (xstormy16_scache* abuf, xstormy16_cpu* c
     f_op2m = EXTRACT_MSB0_UINT (insn, 32, 7, 1);
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rdm) = f_Rdm;
@@ -3264,7 +3556,7 @@ xstormy16_extract_sfmt_movfgrgrii (xstormy16_scache* abuf, xstormy16_cpu* curren
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
     f_Rb = EXTRACT_MSB0_UINT (insn, 32, 17, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rb) = f_Rb;
@@ -3301,7 +3593,7 @@ xstormy16_extract_sfmt_movfgrgriipostinc (xstormy16_scache* abuf, xstormy16_cpu*
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
     f_Rb = EXTRACT_MSB0_UINT (insn, 32, 17, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rb) = f_Rb;
@@ -3338,7 +3630,7 @@ xstormy16_extract_sfmt_movfgrgriipredec (xstormy16_scache* abuf, xstormy16_cpu*
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
     f_Rb = EXTRACT_MSB0_UINT (insn, 32, 17, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rb) = f_Rb;
@@ -3375,7 +3667,7 @@ xstormy16_extract_sfmt_movfgriigr (xstormy16_scache* abuf, xstormy16_cpu* curren
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
     f_Rb = EXTRACT_MSB0_UINT (insn, 32, 17, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rb) = f_Rb;
@@ -3412,7 +3704,7 @@ xstormy16_extract_sfmt_movfgriipostincgr (xstormy16_scache* abuf, xstormy16_cpu*
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
     f_Rb = EXTRACT_MSB0_UINT (insn, 32, 17, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rb) = f_Rb;
@@ -3449,7 +3741,7 @@ xstormy16_extract_sfmt_movfgriipredecgr (xstormy16_scache* abuf, xstormy16_cpu*
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rdm = EXTRACT_MSB0_UINT (insn, 32, 13, 3);
     f_Rb = EXTRACT_MSB0_UINT (insn, 32, 17, 3);
-    f_imm12 = EXTRACT_MSB0_INT (insn, 32, 20, 12);
+    f_imm12 = EXTRACT_MSB0_SINT (insn, 32, 20, 12);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rb) = f_Rb;
@@ -3682,31 +3974,6 @@ xstormy16_extract_sfmt_andgrimm16 (xstormy16_scache* abuf, xstormy16_cpu* curren
 }
 
 void
-xstormy16_extract_sfmt_addgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
-    xstormy16_insn_word insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_bccgrgr.f
-    UINT f_Rs;
-    UINT f_Rd;
-
-    f_Rs = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
-    f_Rd = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
-
-  /* Record the fields for the semantic handler.  */
-  FLD (f_Rd) = f_Rd;
-  FLD (f_Rs) = f_Rs;
-  if (UNLIKELY(current_cpu->trace_extract_p))
-    {
-      current_cpu->trace_stream 
-        << "0x" << hex << pc << dec << " (sfmt_addgrgr)\t"
-        << " f_Rd:0x" << hex << f_Rd << dec
-        << " f_Rs:0x" << hex << f_Rs << dec
-        << endl;
-    }
-
-#undef FLD
-}
-
-void
 xstormy16_extract_sfmt_addgrimm4 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
     xstormy16_insn_word insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
@@ -3732,52 +3999,6 @@ xstormy16_extract_sfmt_addgrimm4 (xstormy16_scache* abuf, xstormy16_cpu* current
 }
 
 void
-xstormy16_extract_sfmt_addimm8 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
-    xstormy16_insn_word insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_bccgrimm8.f
-    UINT f_imm8;
-
-    f_imm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
-
-  /* Record the fields for the semantic handler.  */
-  FLD (f_imm8) = f_imm8;
-  if (UNLIKELY(current_cpu->trace_extract_p))
-    {
-      current_cpu->trace_stream 
-        << "0x" << hex << pc << dec << " (sfmt_addimm8)\t"
-        << " f_imm8:0x" << hex << f_imm8 << dec
-        << endl;
-    }
-
-#undef FLD
-}
-
-void
-xstormy16_extract_sfmt_addgrimm16 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
-    xstormy16_insn_word insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_movwgrimm16.f
-    UINT f_Rd;
-    UINT f_imm16;
-
-    f_Rd = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
-    f_imm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
-
-  /* Record the fields for the semantic handler.  */
-  FLD (f_Rd) = f_Rd;
-  FLD (f_imm16) = f_imm16;
-  if (UNLIKELY(current_cpu->trace_extract_p))
-    {
-      current_cpu->trace_stream 
-        << "0x" << hex << pc << dec << " (sfmt_addgrimm16)\t"
-        << " f_Rd:0x" << hex << f_Rd << dec
-        << " f_imm16:0x" << hex << f_imm16 << dec
-        << endl;
-    }
-
-#undef FLD
-}
-
-void
 xstormy16_extract_sfmt_adcgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
     xstormy16_insn_word insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
@@ -3899,7 +4120,7 @@ xstormy16_extract_sfmt_incgrimm2 (xstormy16_scache* abuf, xstormy16_cpu* current
 }
 
 void
-xstormy16_extract_sfmt_rrcgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
+xstormy16_extract_sfmt_shrgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
     xstormy16_insn_word insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_bccgrgr.f
     UINT f_Rs;
@@ -3914,7 +4135,7 @@ xstormy16_extract_sfmt_rrcgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_c
   if (UNLIKELY(current_cpu->trace_extract_p))
     {
       current_cpu->trace_stream 
-        << "0x" << hex << pc << dec << " (sfmt_rrcgrgr)\t"
+        << "0x" << hex << pc << dec << " (sfmt_shrgrgr)\t"
         << " f_Rd:0x" << hex << f_Rd << dec
         << " f_Rs:0x" << hex << f_Rs << dec
         << endl;
@@ -3924,31 +4145,6 @@ xstormy16_extract_sfmt_rrcgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_c
 }
 
 void
-xstormy16_extract_sfmt_rrcgrimm4 (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
-    xstormy16_insn_word insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_bngrimm4.f
-    UINT f_imm4;
-    UINT f_Rd;
-
-    f_imm4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
-    f_Rd = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
-
-  /* Record the fields for the semantic handler.  */
-  FLD (f_Rd) = f_Rd;
-  FLD (f_imm4) = f_imm4;
-  if (UNLIKELY(current_cpu->trace_extract_p))
-    {
-      current_cpu->trace_stream 
-        << "0x" << hex << pc << dec << " (sfmt_rrcgrimm4)\t"
-        << " f_Rd:0x" << hex << f_Rd << dec
-        << " f_imm4:0x" << hex << f_imm4 << dec
-        << endl;
-    }
-
-#undef FLD
-}
-
-void
 xstormy16_extract_sfmt_shrgrimm (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
     xstormy16_insn_word insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_bngrimm4.f
@@ -3974,56 +4170,6 @@ xstormy16_extract_sfmt_shrgrimm (xstormy16_scache* abuf, xstormy16_cpu* current_
 }
 
 void
-xstormy16_extract_sfmt_asrgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
-    xstormy16_insn_word insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_bccgrgr.f
-    UINT f_Rs;
-    UINT f_Rd;
-
-    f_Rs = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
-    f_Rd = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
-
-  /* Record the fields for the semantic handler.  */
-  FLD (f_Rd) = f_Rd;
-  FLD (f_Rs) = f_Rs;
-  if (UNLIKELY(current_cpu->trace_extract_p))
-    {
-      current_cpu->trace_stream 
-        << "0x" << hex << pc << dec << " (sfmt_asrgrgr)\t"
-        << " f_Rd:0x" << hex << f_Rd << dec
-        << " f_Rs:0x" << hex << f_Rs << dec
-        << endl;
-    }
-
-#undef FLD
-}
-
-void
-xstormy16_extract_sfmt_asrgrimm (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
-    xstormy16_insn_word insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_bngrimm4.f
-    UINT f_imm4;
-    UINT f_Rd;
-
-    f_imm4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
-    f_Rd = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
-
-  /* Record the fields for the semantic handler.  */
-  FLD (f_Rd) = f_Rd;
-  FLD (f_imm4) = f_imm4;
-  if (UNLIKELY(current_cpu->trace_extract_p))
-    {
-      current_cpu->trace_stream 
-        << "0x" << hex << pc << dec << " (sfmt_asrgrimm)\t"
-        << " f_Rd:0x" << hex << f_Rd << dec
-        << " f_imm4:0x" << hex << f_imm4 << dec
-        << endl;
-    }
-
-#undef FLD
-}
-
-void
 xstormy16_extract_sfmt_set1lmemimm (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
     xstormy16_insn_word insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_set1lmemimm.f
@@ -4085,7 +4231,7 @@ xstormy16_extract_sfmt_bccgrgr (xstormy16_scache* abuf, xstormy16_cpu* current_c
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rd = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
     f_op5 = EXTRACT_MSB0_UINT (insn, 32, 16, 4);
-    f_rel12 = ((EXTRACT_MSB0_INT (insn, 32, 20, 12)) + (((pc) + (4))));
+    f_rel12 = ((EXTRACT_MSB0_SINT (insn, 32, 20, 12)) + (((pc) + (4))));
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rd) = f_Rd;
@@ -4118,7 +4264,7 @@ xstormy16_extract_sfmt_bccgrimm8 (xstormy16_scache* abuf, xstormy16_cpu* current
     f_Rm = EXTRACT_MSB0_UINT (insn, 32, 4, 3);
     f_imm8 = EXTRACT_MSB0_UINT (insn, 32, 8, 8);
     f_op5 = EXTRACT_MSB0_UINT (insn, 32, 16, 4);
-    f_rel12 = ((EXTRACT_MSB0_INT (insn, 32, 20, 12)) + (((pc) + (4))));
+    f_rel12 = ((EXTRACT_MSB0_SINT (insn, 32, 20, 12)) + (((pc) + (4))));
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rm) = f_Rm;
@@ -4148,7 +4294,7 @@ xstormy16_extract_sfmt_bccimm16 (xstormy16_scache* abuf, xstormy16_cpu* current_
     UINT f_imm16;
 
     f_op2 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
-    f_rel8_4 = ((EXTRACT_MSB0_INT (insn, 32, 8, 8)) + (((pc) + (4))));
+    f_rel8_4 = ((EXTRACT_MSB0_SINT (insn, 32, 8, 8)) + (((pc) + (4))));
     f_imm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
 
   /* Record the fields for the semantic handler.  */
@@ -4178,7 +4324,7 @@ xstormy16_extract_sfmt_bngrimm4 (xstormy16_scache* abuf, xstormy16_cpu* current_
 
     f_imm4 = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rd = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
-    f_rel12 = ((EXTRACT_MSB0_INT (insn, 32, 20, 12)) + (((pc) + (4))));
+    f_rel12 = ((EXTRACT_MSB0_SINT (insn, 32, 20, 12)) + (((pc) + (4))));
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rd) = f_Rd;
@@ -4207,7 +4353,7 @@ xstormy16_extract_sfmt_bngrgr (xstormy16_scache* abuf, xstormy16_cpu* current_cp
 
     f_Rs = EXTRACT_MSB0_UINT (insn, 32, 8, 4);
     f_Rd = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
-    f_rel12 = ((EXTRACT_MSB0_INT (insn, 32, 20, 12)) + (((pc) + (4))));
+    f_rel12 = ((EXTRACT_MSB0_SINT (insn, 32, 20, 12)) + (((pc) + (4))));
 
   /* Record the fields for the semantic handler.  */
   FLD (f_Rd) = f_Rd;
@@ -4236,7 +4382,7 @@ xstormy16_extract_sfmt_bnlmemimm (xstormy16_scache* abuf, xstormy16_cpu* current
 
     f_lmem8 = EXTRACT_MSB0_UINT (insn, 32, 8, 8);
     f_imm3b = EXTRACT_MSB0_UINT (insn, 32, 17, 3);
-    f_rel12 = ((EXTRACT_MSB0_INT (insn, 32, 20, 12)) + (((pc) + (4))));
+    f_rel12 = ((EXTRACT_MSB0_SINT (insn, 32, 20, 12)) + (((pc) + (4))));
 
   /* Record the fields for the semantic handler.  */
   FLD (f_imm3b) = f_imm3b;
@@ -4265,7 +4411,7 @@ xstormy16_extract_sfmt_bnhmemimm (xstormy16_scache* abuf, xstormy16_cpu* current
 
     f_hmem8 = ((EXTRACT_MSB0_UINT (insn, 32, 8, 8)) + (32512));
     f_imm3b = EXTRACT_MSB0_UINT (insn, 32, 17, 3);
-    f_rel12 = ((EXTRACT_MSB0_INT (insn, 32, 20, 12)) + (((pc) + (4))));
+    f_rel12 = ((EXTRACT_MSB0_SINT (insn, 32, 20, 12)) + (((pc) + (4))));
 
   /* Record the fields for the semantic handler.  */
   FLD (f_hmem8) = f_hmem8;
@@ -4292,7 +4438,7 @@ xstormy16_extract_sfmt_bcc (xstormy16_scache* abuf, xstormy16_cpu* current_cpu,
     SI f_rel8_2;
 
     f_op2 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
-    f_rel8_2 = ((EXTRACT_MSB0_INT (insn, 16, 8, 8)) + (((pc) + (2))));
+    f_rel8_2 = ((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) + (((pc) + (2))));
 
   /* Record the fields for the semantic handler.  */
   FLD (f_op2) = f_op2;
@@ -4336,7 +4482,7 @@ xstormy16_extract_sfmt_br (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, P
 #define FLD(f) abuf->fields.sfmt_br.f
     SI f_rel12a;
 
-    f_rel12a = ((((EXTRACT_MSB0_INT (insn, 16, 4, 11)) << (1))) + (((pc) + (2))));
+    f_rel12a = ((((EXTRACT_MSB0_SINT (insn, 16, 4, 11)) << (1))) + (((pc) + (2))));
 
   /* Record the fields for the semantic handler.  */
   FLD (f_rel12a) = f_rel12a;
@@ -4428,7 +4574,7 @@ xstormy16_extract_sfmt_callrimm (xstormy16_scache* abuf, xstormy16_cpu* current_
 #define FLD(f) abuf->fields.sfmt_br.f
     SI f_rel12a;
 
-    f_rel12a = ((((EXTRACT_MSB0_INT (insn, 16, 4, 11)) << (1))) + (((pc) + (2))));
+    f_rel12a = ((((EXTRACT_MSB0_SINT (insn, 16, 4, 11)) << (1))) + (((pc) + (2))));
 
   /* Record the fields for the semantic handler.  */
   FLD (f_rel12a) = f_rel12a;
@@ -4616,23 +4762,6 @@ xstormy16_extract_sfmt_mul (xstormy16_scache* abuf, xstormy16_cpu* current_cpu,
 }
 
 void
-xstormy16_extract_sfmt_sdiv (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
-    xstormy16_insn_word insn = entire_insn;
-#define FLD(f) abuf->fields.fmt_empty.f
-
-
-  /* Record the fields for the semantic handler.  */
-  if (UNLIKELY(current_cpu->trace_extract_p))
-    {
-      current_cpu->trace_stream 
-        << "0x" << hex << pc << dec << " (sfmt_sdiv)\t"
-        << endl;
-    }
-
-#undef FLD
-}
-
-void
 xstormy16_extract_sfmt_sdivlh (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
     xstormy16_insn_word insn = entire_insn;
 #define FLD(f) abuf->fields.fmt_empty.f
@@ -4650,7 +4779,7 @@ xstormy16_extract_sfmt_sdivlh (xstormy16_scache* abuf, xstormy16_cpu* current_cp
 }
 
 void
-xstormy16_extract_sfmt_nop (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
+xstormy16_extract_sfmt_reset (xstormy16_scache* abuf, xstormy16_cpu* current_cpu, PCADDR pc, xstormy16_insn_word base_insn, xstormy16_insn_word entire_insn){
     xstormy16_insn_word insn = entire_insn;
 #define FLD(f) abuf->fields.fmt_empty.f
 
@@ -4659,7 +4788,7 @@ xstormy16_extract_sfmt_nop (xstormy16_scache* abuf, xstormy16_cpu* current_cpu,
   if (UNLIKELY(current_cpu->trace_extract_p))
     {
       current_cpu->trace_stream 
-        << "0x" << hex << pc << dec << " (sfmt_nop)\t"
+        << "0x" << hex << pc << dec << " (sfmt_reset)\t"
         << endl;
     }