This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


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

[commit] Reject invalid insns in cgen-generated sid/sim decoders


Hi,

I've committed the attached patch which corrects a long standing problem in the sid/sim decoders generated by cgen. These decoders select the most commonly fixed bits in the ISA a few at a time until enough bits have been selected to uniquely represent one and only one insn from the ISA. The problem is that there may still be encodings which match these bits but do not represent valid insns. As a result, these invalid encodings are simulated as if they were a valid insn.

My first idea was to generate one extra nested switch using the remaining opcode bits of the insn which hadn't been used yet. This worked, however for some ISAs with only a few insns but lots of opcode bits, this can lead to the selection of many more bits for the final switch which caused an exponential explosion in the time CGEN takes to generate the decoder.

This patch adds one additional test before accepting the insn. Namely, it checks that all of the fixed bits in the insn match the ones which are begin decoded. This is done by taking the logical 'and' of the insn's opcode mask and the bytes being decoded and checking that the result is equal to the insn's opcode value.

I've attached a diff of the generated decoder for xstormy16 so that you can see the additional tests which are generated.

Let me know if you have any problems or concerns
Dave
2005-05-18  Dave Brolley  <brolley@redhat.com>

	* utils-sim.scm (-gen-decode-default-entry): New function.
	(-gen-decode-insn-entry): Now takes 'invalid-insn' argument. Generate
	code to check that all opcodes bits match.
	(-gen-decoder-switch): Use -gen-decode-default-entry.

Index: cgen/utils-sim.scm
===================================================================
RCS file: /cvs/src/src/cgen/utils-sim.scm,v
retrieving revision 1.12
diff -c -p -r1.12 utils-sim.scm
*** cgen/utils-sim.scm	16 Jul 2003 05:35:48 -0000	1.12
--- cgen/utils-sim.scm	18 May 2005 21:51:13 -0000
***************
*** 1,5 ****
  ; Generic simulator application utilities.
! ; Copyright (C) 2000 Red Hat, Inc.
  ; This file is part of CGEN.
  ; See file COPYING.CGEN for details.
  
--- 1,5 ----
  ; Generic simulator application utilities.
! ; Copyright (C) 2000, 2005 Red Hat, Inc.
  ; This file is part of CGEN.
  ; See file COPYING.CGEN for details.
  
***************
*** 579,588 ****
  
  ; Convert decoder table into C code.
  
  ; Return code for one insn entry.
  ; REST is the remaining entries.
  
! (define (-gen-decode-insn-entry entry rest indent fn?)
    (assert (eq? 'insn (dtable-entry-type entry)))
    (logit 3 "Generating decode insn entry for " (obj:name (dtable-entry-value entry)) " ...\n")
  
--- 579,603 ----
  
  ; Convert decoder table into C code.
  
+ ; Return code for the default entry of each switch table
+ ;
+ (define (-gen-decode-default-entry indent invalid-insn fn?)
+   (string-append
+    "itype = "
+    (gen-cpu-insn-enum (current-cpu) invalid-insn)
+    ";"
+    (if (with-scache?)
+        (if fn?
+ 	   " @prefix@_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn); goto done;\n"
+ 	   " goto extract_sfmt_empty;\n")
+        " goto done;\n")
+   )
+ )
+ 
  ; Return code for one insn entry.
  ; REST is the remaining entries.
  
! (define (-gen-decode-insn-entry entry rest indent invalid-insn fn?)
    (assert (eq? 'insn (dtable-entry-type entry)))
    (logit 3 "Generating decode insn entry for " (obj:name (dtable-entry-value entry)) " ...\n")
  
***************
*** 609,631 ****
  
       (else
        (string-append indent "  case "
! 		     (number->string (dtable-entry-index entry)) " : "
! 		     "itype = " (gen-cpu-insn-enum (current-cpu) insn) ";"
  		     ; Compensate for base-insn-size > current-insn-size by adjusting entire_insn.
  		     ; Activate this logic only for sid simulators; they are consistent in
  		     ; interpreting base-insn-bitsize this way.
  		     (if (and (equal? APPLICATION 'SID-SIMULATOR)
  			      (> (state-base-insn-bitsize) (insn-length insn)))
  			 (string-append
! 			  " entire_insn = base_insn >> "
  			  (number->string (- (state-base-insn-bitsize) (insn-length insn)))
! 			  ";")
  			 "")
  		     (if (with-scache?)
  			 (if fn?
! 			     (string-append " @prefix@_extract_" fmt-name " (this, current_cpu, pc, base_insn, entire_insn); goto done;\n")
! 			     (string-append " goto extract_" fmt-name ";\n"))
! 			 " goto done;\n")))))
  )
  
  ; Subroutine of -decode-expr-ifield-tracking.
--- 624,650 ----
  
       (else
        (string-append indent "  case "
! 		     (number->string (dtable-entry-index entry)) " :\n"
  		     ; Compensate for base-insn-size > current-insn-size by adjusting entire_insn.
  		     ; Activate this logic only for sid simulators; they are consistent in
  		     ; interpreting base-insn-bitsize this way.
  		     (if (and (equal? APPLICATION 'SID-SIMULATOR)
  			      (> (state-base-insn-bitsize) (insn-length insn)))
  			 (string-append
! 			  indent "    entire_insn = base_insn >> "
  			  (number->string (- (state-base-insn-bitsize) (insn-length insn)))
! 			  ";\n")
  			 "")
+ 		     ; Generate code to check that all of the opcode bits for this insn match
+ 		     indent "    if ((entire_insn & 0x" (number->hex (insn-base-mask insn)) ") == 0x" (number->hex (insn-value insn)) ")\n" 
+ 		     indent "      { itype = " (gen-cpu-insn-enum (current-cpu) insn) ";"
  		     (if (with-scache?)
  			 (if fn?
! 			     (string-append " @prefix@_extract_" fmt-name " (this, current_cpu, pc, base_insn, entire_insn); goto done;")
! 			     (string-append " goto extract_" fmt-name ";"))
! 			 " goto done;")
! 		     " }\n"
! 		     indent "    " (-gen-decode-default-entry indent invalid-insn fn?)))))
  )
  
  ; Subroutine of -decode-expr-ifield-tracking.
***************
*** 963,969 ****
  	  (cdr entries)
  	  (cons (case (dtable-entry-type (car entries))
  		  ((insn)
! 		   (-gen-decode-insn-entry (car entries) (cdr entries) indent fn?))
  		  ((expr)
  		   (-gen-decode-expr-entry (car entries) indent invalid-insn fn?))
  		  ((table)
--- 982,988 ----
  	  (cdr entries)
  	  (cons (case (dtable-entry-type (car entries))
  		  ((insn)
! 		   (-gen-decode-insn-entry (car entries) (cdr entries) indent invalid-insn fn?))
  		  ((expr)
  		   (-gen-decode-expr-entry (car entries) indent invalid-insn fn?))
  		  ((table)
***************
*** 974,987 ****
  		result))))
  
     ; ??? Can delete if all cases are present.
!    indent "  default : itype = "
!    (gen-cpu-insn-enum (current-cpu) invalid-insn)
!    ";"
!    (if (with-scache?)
!        (if fn?
! 	   " @prefix@_extract_sfmt_empty (this, current_cpu, pc, base_insn, entire_insn);  goto done;\n"
! 	   " goto extract_sfmt_empty;\n")
!        " goto done;\n")
     indent "  }\n"
     indent "}\n"
     )
--- 993,1000 ----
  		result))))
  
     ; ??? Can delete if all cases are present.
!    indent "  default : "
!    (-gen-decode-default-entry indent invalid-insn fn?)
     indent "  }\n"
     indent "}\n"
     )
Index: xstormy16-decode.cxx
===================================================================
RCS file: /cvs/src/src/sid/component/cgen-cpu/xstormy16/xstormy16-decode.cxx,v
retrieving revision 1.8
diff -c -p -r1.8 xstormy16-decode.cxx
*** xstormy16-decode.cxx	22 Jul 2004 01:49:45 -0000	1.8
--- xstormy16-decode.cxx	18 May 2005 21:20:26 -0000
***************
*** 2,8 ****
  
  THIS FILE IS MACHINE GENERATED WITH CGEN.
  
! Copyright (C) 2000-2004 Red Hat, Inc.
  
  This file is part of the Red Hat simulators.
  
--- 2,8 ----
  
  THIS FILE IS MACHINE GENERATED WITH CGEN.
  
! Copyright (C) 2000-2005 Red Hat, Inc.
  
  This file is part of the Red Hat simulators.
  
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 366,376 ****
            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_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
!           case 1 : itype = XSTORMY16_INSN_SYSCALL; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_reset (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_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
            case 8 : /* fall through */
            case 9 : /* fall through */
            case 10 : /* fall through */
--- 366,396 ----
            unsigned int val = (((insn >> 17) & (3 << 3)) | ((insn >> 16) & (7 << 0)));
            switch (val)
            {
!           case 0 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0x0)
!               { itype = XSTORMY16_INSN_NOP; xstormy16_extract_sfmt_reset (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 = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0x1)
!               { itype = XSTORMY16_INSN_SYSCALL; xstormy16_extract_sfmt_reset (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 = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0x2)
!               { itype = XSTORMY16_INSN_IRET; xstormy16_extract_sfmt_iret (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 3 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0x3)
!               { itype = XSTORMY16_INSN_RET; xstormy16_extract_sfmt_ret (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 5 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0x5)
!               { itype = XSTORMY16_INSN_BRK; xstormy16_extract_sfmt_reset (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 8 : /* fall through */
            case 9 : /* fall through */
            case 10 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 378,384 ****
            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 16 : /* fall through */
            case 17 : /* fall through */
            case 18 : /* fall through */
--- 398,408 ----
            case 12 : /* fall through */
            case 13 : /* fall through */
            case 14 : /* fall through */
!           case 15 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x10)
!               { itype = XSTORMY16_INSN_CALLRGR; xstormy16_extract_sfmt_callrgr (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 16 : /* fall through */
            case 17 : /* fall through */
            case 18 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 386,392 ****
            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 24 : /* fall through */
            case 25 : /* fall through */
            case 26 : /* fall through */
--- 410,420 ----
            case 20 : /* fall through */
            case 21 : /* fall through */
            case 22 : /* fall through */
!           case 23 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x20)
!               { itype = XSTORMY16_INSN_BGR; xstormy16_extract_sfmt_bgr (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 24 : /* fall through */
            case 25 : /* fall through */
            case 26 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 394,401 ****
            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 1 :
--- 422,433 ----
            case 28 : /* fall through */
            case 29 : /* fall through */
            case 30 : /* fall through */
!           case 31 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x30)
!               { itype = XSTORMY16_INSN_ICALLRGR; xstormy16_extract_sfmt_icallrgr (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 1 :
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 403,412 ****
            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_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
!           case 2 : itype = XSTORMY16_INSN_HOLD; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
!           case 3 : itype = XSTORMY16_INSN_HOLDX; entire_insn = base_insn >> 16; xstormy16_extract_sfmt_reset (this, current_cpu, pc, base_insn, entire_insn); goto done;
!           case 7 : itype = XSTORMY16_INSN_RESET; entire_insn = base_insn >> 16; 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 */
--- 435,460 ----
            unsigned int val = (((insn >> 17) & (3 << 3)) | ((insn >> 16) & (7 << 0)));
            switch (val)
            {
!           case 0 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0x8)
!               { itype = XSTORMY16_INSN_HALT; xstormy16_extract_sfmt_reset (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 = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0xa)
!               { itype = XSTORMY16_INSN_HOLD; xstormy16_extract_sfmt_reset (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 3 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0xb)
!               { itype = XSTORMY16_INSN_HOLDX; xstormy16_extract_sfmt_reset (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 7 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0xf)
!               { itype = XSTORMY16_INSN_RESET; xstormy16_extract_sfmt_reset (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 8 : /* fall through */
            case 9 : /* fall through */
            case 10 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 414,420 ****
            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 16 : /* fall through */
            case 17 : /* fall through */
            case 18 : /* fall through */
--- 462,472 ----
            case 12 : /* fall through */
            case 13 : /* fall through */
            case 14 : /* fall through */
!           case 15 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x10)
!               { itype = XSTORMY16_INSN_CALLRGR; xstormy16_extract_sfmt_callrgr (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 16 : /* fall through */
            case 17 : /* fall through */
            case 18 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 422,428 ****
            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 24 : /* fall through */
            case 25 : /* fall through */
            case 26 : /* fall through */
--- 474,484 ----
            case 20 : /* fall through */
            case 21 : /* fall through */
            case 22 : /* fall through */
!           case 23 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x20)
!               { itype = XSTORMY16_INSN_BGR; xstormy16_extract_sfmt_bgr (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 24 : /* fall through */
            case 25 : /* fall through */
            case 26 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 430,437 ****
            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 2 : /* fall through */
--- 486,497 ----
            case 28 : /* fall through */
            case 29 : /* fall through */
            case 30 : /* fall through */
!           case 31 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x30)
!               { itype = XSTORMY16_INSN_ICALLRGR; xstormy16_extract_sfmt_icallrgr (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 2 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 440,448 ****
            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 4 : /* fall through */
--- 500,516 ----
            unsigned int val = (((insn >> 21) & (1 << 0)));
            switch (val)
            {
!           case 0 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xffe0) == 0x40)
!               { itype = XSTORMY16_INSN_JMP; xstormy16_extract_sfmt_jmp (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 = base_insn >> 16;
!             if ((entire_insn & 0xffe0) == 0x60)
!               { itype = XSTORMY16_INSN_ICALLGR; xstormy16_extract_sfmt_icallgr (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 4 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 451,461 ****
            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 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 6 :
--- 519,541 ----
            unsigned int val = (((insn >> 20) & (3 << 0)));
            switch (val)
            {
!           case 0 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x80)
!               { itype = XSTORMY16_INSN_PUSHGR; xstormy16_extract_sfmt_pushgr (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 = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x90)
!               { itype = XSTORMY16_INSN_POPGR; xstormy16_extract_sfmt_popgr (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 : /* fall through */
!           case 3 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xffe0) == 0xa0)
!               { itype = XSTORMY16_INSN_CALLGR; xstormy16_extract_sfmt_callgr (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 6 :
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 463,472 ****
            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 7 :
--- 543,564 ----
            unsigned int val = (((insn >> 20) & (3 << 0)));
            switch (val)
            {
!           case 0 :
!             entire_insn = base_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 = base_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 = base_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 :
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 474,482 ****
            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 8 : /* fall through */
--- 566,582 ----
            unsigned int val = (((insn >> 21) & (1 << 0)));
            switch (val)
            {
!           case 0 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xffff) == 0xc8)
!               { itype = XSTORMY16_INSN_SDIV; xstormy16_extract_sfmt_sdiv (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 = base_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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 486,492 ****
        case 12 : /* fall through */
        case 13 : /* fall through */
        case 14 : /* fall through */
!       case 15 : itype = XSTORMY16_INSN_CALLFIMM; xstormy16_extract_sfmt_callfimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 16 : /* fall through */
        case 17 : /* fall through */
        case 18 : /* fall through */
--- 586,595 ----
        case 12 : /* fall through */
        case 13 : /* fall through */
        case 14 : /* fall through */
!       case 15 :
!         if ((entire_insn & 0xff000000) == 0x1000000)
!           { itype = XSTORMY16_INSN_CALLFIMM; xstormy16_extract_sfmt_callfimm (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 16 : /* fall through */
        case 17 : /* fall through */
        case 18 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 494,500 ****
        case 20 : /* fall through */
        case 21 : /* fall through */
        case 22 : /* fall through */
!       case 23 : itype = XSTORMY16_INSN_JMPF; xstormy16_extract_sfmt_jmpf (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 24 : /* fall through */
        case 25 : /* fall through */
        case 26 : /* fall through */
--- 597,606 ----
        case 20 : /* fall through */
        case 21 : /* fall through */
        case 22 : /* fall through */
!       case 23 :
!         if ((entire_insn & 0xff000000) == 0x2000000)
!           { itype = XSTORMY16_INSN_JMPF; xstormy16_extract_sfmt_jmpf (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 24 : /* fall through */
        case 25 : /* fall through */
        case 26 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 502,508 ****
        case 28 : /* fall through */
        case 29 : /* fall through */
        case 30 : /* fall through */
!       case 31 : itype = XSTORMY16_INSN_ICALLFIMM; xstormy16_extract_sfmt_icallfimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 32 : /* fall through */
        case 33 : /* fall through */
        case 34 : /* fall through */
--- 608,617 ----
        case 28 : /* fall through */
        case 29 : /* fall through */
        case 30 : /* fall through */
!       case 31 :
!         if ((entire_insn & 0xff000000) == 0x3000000)
!           { itype = XSTORMY16_INSN_ICALLFIMM; xstormy16_extract_sfmt_icallfimm (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 32 : /* fall through */
        case 33 : /* fall through */
        case 34 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 510,516 ****
        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 40 : /* fall through */
        case 41 : /* fall through */
        case 42 : /* fall through */
--- 619,628 ----
        case 36 : /* fall through */
        case 37 : /* fall through */
        case 38 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 518,524 ****
        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 48 : /* fall through */
        case 49 : /* fall through */
        case 50 : /* fall through */
--- 630,639 ----
        case 44 : /* fall through */
        case 45 : /* fall through */
        case 46 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 526,532 ****
        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 56 : /* fall through */
        case 57 : /* fall through */
        case 58 : /* fall through */
--- 641,650 ----
        case 52 : /* fall through */
        case 53 : /* fall through */
        case 54 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 534,540 ****
        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 64 : /* fall through */
        case 65 : /* fall through */
        case 66 : /* fall through */
--- 652,661 ----
        case 60 : /* fall through */
        case 61 : /* fall through */
        case 62 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 542,548 ****
        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_set1grimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 72 : /* fall through */
        case 73 : /* fall through */
        case 74 : /* fall through */
--- 663,673 ----
        case 68 : /* fall through */
        case 69 : /* fall through */
        case 70 : /* fall through */
!       case 71 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x800)
!           { itype = XSTORMY16_INSN_CLR1GRIMM; xstormy16_extract_sfmt_set1grimm (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 72 : /* fall through */
        case 73 : /* fall through */
        case 74 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 550,556 ****
        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_set1grimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 80 : /* fall through */
        case 81 : /* fall through */
        case 82 : /* fall through */
--- 675,685 ----
        case 76 : /* fall through */
        case 77 : /* fall through */
        case 78 : /* fall through */
!       case 79 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x900)
!           { itype = XSTORMY16_INSN_SET1GRIMM; xstormy16_extract_sfmt_set1grimm (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 80 : /* fall through */
        case 81 : /* fall through */
        case 82 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 558,564 ****
        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 88 : /* fall through */
        case 89 : /* fall through */
        case 90 : /* fall through */
--- 687,697 ----
        case 84 : /* fall through */
        case 85 : /* fall through */
        case 86 : /* fall through */
!       case 87 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0xa00)
!           { itype = XSTORMY16_INSN_CLR1GRGR; xstormy16_extract_sfmt_andgrgr (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 88 : /* fall through */
        case 89 : /* fall through */
        case 90 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 566,572 ****
        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 104 : /* fall through */
        case 105 : /* fall through */
        case 106 : /* fall through */
--- 699,709 ----
        case 92 : /* fall through */
        case 93 : /* fall through */
        case 94 : /* fall through */
!       case 95 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0xb00)
!           { itype = XSTORMY16_INSN_SET1GRGR; xstormy16_extract_sfmt_andgrgr (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 104 : /* fall through */
        case 105 : /* fall through */
        case 106 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 574,580 ****
        case 108 : /* fall through */
        case 109 : /* fall through */
        case 110 : /* fall through */
!       case 111 : itype = XSTORMY16_INSN_BCCGRGR; xstormy16_extract_sfmt_bccgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 128 : /* fall through */
        case 129 : /* fall through */
        case 130 : /* fall through */
--- 711,720 ----
        case 108 : /* fall through */
        case 109 : /* fall through */
        case 110 : /* fall through */
!       case 111 :
!         if ((entire_insn & 0xff000000) == 0xd000000)
!           { itype = XSTORMY16_INSN_BCCGRGR; xstormy16_extract_sfmt_bccgrgr (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 128 : /* fall through */
        case 129 : /* fall through */
        case 130 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 707,715 ****
            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 256 : /* fall through */
--- 847,863 ----
            unsigned int val = (((insn >> 16) & (1 << 0)));
            switch (val)
            {
!           case 0 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xf001) == 0x1000)
!               { itype = XSTORMY16_INSN_BR; xstormy16_extract_sfmt_br (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 = base_insn >> 16;
!             if ((entire_insn & 0xf001) == 0x1001)
!               { itype = XSTORMY16_INSN_CALLRIMM; xstormy16_extract_sfmt_callrimm (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 256 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 775,781 ****
        case 372 : /* fall through */
        case 373 : /* fall through */
        case 374 : /* fall through */
!       case 375 : itype = XSTORMY16_INSN_BCCGRIMM8; xstormy16_extract_sfmt_bccgrimm8 (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 264 : /* fall through */
        case 265 : /* fall through */
        case 266 : /* fall through */
--- 923,932 ----
        case 372 : /* fall through */
        case 373 : /* fall through */
        case 374 : /* fall through */
!       case 375 :
!         if ((entire_insn & 0xf1000000) == 0x20000000)
!           { itype = XSTORMY16_INSN_BCCGRIMM8; xstormy16_extract_sfmt_bccgrimm8 (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 264 : /* fall through */
        case 265 : /* fall through */
        case 266 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 839,860 ****
        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 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 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 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 390 : /* fall through */
--- 990,1039 ----
        case 380 : /* fall through */
        case 381 : /* fall through */
        case 382 : /* fall through */
!       case 383 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf100) == 0x2100)
!           { itype = XSTORMY16_INSN_MOVWGRIMM8; xstormy16_extract_sfmt_movwgrimm8 (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 384 : /* fall through */
!       case 385 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xffc0) == 0x3000)
!           { itype = XSTORMY16_INSN_INCGRIMM2; xstormy16_extract_sfmt_incgrimm2 (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 386 : /* fall through */
!       case 387 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xffc0) == 0x3040)
!           { itype = XSTORMY16_INSN_DECGRIMM2; xstormy16_extract_sfmt_incgrimm2 (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 388 : /* fall through */
        case 389 :
          {
            unsigned int val = (((insn >> 20) & (3 << 0)));
            switch (val)
            {
!           case 0 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x3080)
!               { itype = XSTORMY16_INSN_SWPB; xstormy16_extract_sfmt_swpn (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 = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x3090)
!               { itype = XSTORMY16_INSN_SWPN; xstormy16_extract_sfmt_swpn (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 = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x30a0)
!               { itype = XSTORMY16_INSN_CBWGR; xstormy16_extract_sfmt_swpn (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 3 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x30b0)
!               { itype = XSTORMY16_INSN_NOTGR; xstormy16_extract_sfmt_swpn (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 390 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 863,873 ****
            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 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 392 : /* fall through */
--- 1042,1067 ----
            unsigned int val = (((insn >> 20) & (3 << 0)));
            switch (val)
            {
!           case 0 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x30c0)
!               { itype = XSTORMY16_INSN_MOVLOWGR; xstormy16_extract_sfmt_movlowgr (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 = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x30d0)
!               { itype = XSTORMY16_INSN_MOVHIGHGR; xstormy16_extract_sfmt_movlowgr (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 :
!             if ((entire_insn & 0xfff00000) == 0x30e00000)
!               { itype = XSTORMY16_INSN_MASKGRIMM16; xstormy16_extract_sfmt_maskgrimm16 (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 3 :
!             entire_insn = base_insn >> 16;
!             if ((entire_insn & 0xfff0) == 0x30f0)
!               { itype = XSTORMY16_INSN_REVGR; xstormy16_extract_sfmt_swpn (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 392 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 876,886 ****
            unsigned int val = (((insn >> 20) & (3 << 0)));
            switch (val)
            {
!           case 0 : itype = XSTORMY16_INSN_ANDGRIMM16; xstormy16_extract_sfmt_andgrimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
!           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;
            }
          }
        case 394 : /* fall through */
--- 1070,1092 ----
            unsigned int val = (((insn >> 20) & (3 << 0)));
            switch (val)
            {
!           case 0 :
!             if ((entire_insn & 0xfff00000) == 0x31000000)
!               { itype = XSTORMY16_INSN_ANDGRIMM16; xstormy16_extract_sfmt_andgrimm16 (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 :
!             if ((entire_insn & 0xfff00000) == 0x31100000)
!               { itype = XSTORMY16_INSN_ORGRIMM16; xstormy16_extract_sfmt_andgrimm16 (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 :
!             if ((entire_insn & 0xfff00000) == 0x31200000)
!               { itype = XSTORMY16_INSN_XORGRIMM16; xstormy16_extract_sfmt_andgrimm16 (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 3 :
!             if ((entire_insn & 0xfff00000) == 0x31300000)
!               { itype = XSTORMY16_INSN_MOVWGRIMM16; xstormy16_extract_sfmt_movwgrimm16 (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 394 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 889,899 ****
            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 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 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;
            }
          }
        case 400 : /* fall through */
--- 1095,1117 ----
            unsigned int val = (((insn >> 20) & (3 << 0)));
            switch (val)
            {
!           case 0 :
!             if ((entire_insn & 0xfff00000) == 0x31400000)
!               { itype = XSTORMY16_INSN_ADDGRIMM16; xstormy16_extract_sfmt_addgrimm16 (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 :
!             if ((entire_insn & 0xfff00000) == 0x31500000)
!               { itype = XSTORMY16_INSN_ADCGRIMM16; xstormy16_extract_sfmt_adcgrimm16 (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 :
!             if ((entire_insn & 0xfff00000) == 0x31600000)
!               { itype = XSTORMY16_INSN_SUBGRIMM16; xstormy16_extract_sfmt_addgrimm16 (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 3 :
!             if ((entire_insn & 0xfff00000) == 0x31700000)
!               { itype = XSTORMY16_INSN_SBCGRIMM16; xstormy16_extract_sfmt_adcgrimm16 (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 400 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 903,909 ****
        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 408 : /* fall through */
        case 409 : /* fall through */
        case 410 : /* fall through */
--- 1121,1131 ----
        case 404 : /* fall through */
        case 405 : /* fall through */
        case 406 : /* fall through */
!       case 407 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3200)
!           { itype = XSTORMY16_INSN_SWPW; xstormy16_extract_sfmt_swpw (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 408 : /* fall through */
        case 409 : /* fall through */
        case 410 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 911,917 ****
        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 432 : /* fall through */
        case 433 : /* fall through */
        case 434 : /* fall through */
--- 1133,1143 ----
        case 412 : /* fall through */
        case 413 : /* fall through */
        case 414 : /* fall through */
!       case 415 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3300)
!           { itype = XSTORMY16_INSN_MASKGRGR; xstormy16_extract_sfmt_maskgrgr (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 432 : /* fall through */
        case 433 : /* fall through */
        case 434 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 919,925 ****
        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 440 : /* fall through */
        case 441 : /* fall through */
        case 442 : /* fall through */
--- 1145,1155 ----
        case 436 : /* fall through */
        case 437 : /* fall through */
        case 438 : /* fall through */
!       case 439 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3600)
!           { itype = XSTORMY16_INSN_ASRGRGR; xstormy16_extract_sfmt_asrgrgr (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 440 : /* fall through */
        case 441 : /* fall through */
        case 442 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 927,933 ****
        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 448 : /* fall through */
        case 449 : /* fall through */
        case 450 : /* fall through */
--- 1157,1167 ----
        case 444 : /* fall through */
        case 445 : /* fall through */
        case 446 : /* fall through */
!       case 447 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3700)
!           { itype = XSTORMY16_INSN_ASRGRIMM; xstormy16_extract_sfmt_asrgrimm (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 448 : /* fall through */
        case 449 : /* fall through */
        case 450 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 935,941 ****
        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 456 : /* fall through */
        case 457 : /* fall through */
        case 458 : /* fall through */
--- 1169,1179 ----
        case 452 : /* fall through */
        case 453 : /* fall through */
        case 454 : /* fall through */
!       case 455 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3800)
!           { itype = XSTORMY16_INSN_RRCGRGR; xstormy16_extract_sfmt_rrcgrgr (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 456 : /* fall through */
        case 457 : /* fall through */
        case 458 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 943,949 ****
        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 464 : /* fall through */
        case 465 : /* fall through */
        case 466 : /* fall through */
--- 1181,1191 ----
        case 460 : /* fall through */
        case 461 : /* fall through */
        case 462 : /* fall through */
!       case 463 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3900)
!           { itype = XSTORMY16_INSN_RRCGRIMM4; xstormy16_extract_sfmt_rrcgrimm4 (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 464 : /* fall through */
        case 465 : /* fall through */
        case 466 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 951,957 ****
        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 472 : /* fall through */
        case 473 : /* fall through */
        case 474 : /* fall through */
--- 1193,1203 ----
        case 468 : /* fall through */
        case 469 : /* fall through */
        case 470 : /* fall through */
!       case 471 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3a00)
!           { itype = XSTORMY16_INSN_RLCGRGR; xstormy16_extract_sfmt_rrcgrgr (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 472 : /* fall through */
        case 473 : /* fall through */
        case 474 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 959,965 ****
        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 480 : /* fall through */
        case 481 : /* fall through */
        case 482 : /* fall through */
--- 1205,1215 ----
        case 476 : /* fall through */
        case 477 : /* fall through */
        case 478 : /* fall through */
!       case 479 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3b00)
!           { itype = XSTORMY16_INSN_RLCGRIMM4; xstormy16_extract_sfmt_rrcgrimm4 (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 480 : /* fall through */
        case 481 : /* fall through */
        case 482 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 967,973 ****
        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_shrgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 488 : /* fall through */
        case 489 : /* fall through */
        case 490 : /* fall through */
--- 1217,1227 ----
        case 484 : /* fall through */
        case 485 : /* fall through */
        case 486 : /* fall through */
!       case 487 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3c00)
!           { itype = XSTORMY16_INSN_SHRGRGR; xstormy16_extract_sfmt_shrgrgr (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 488 : /* fall through */
        case 489 : /* fall through */
        case 490 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 975,981 ****
        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 496 : /* fall through */
        case 497 : /* fall through */
        case 498 : /* fall through */
--- 1229,1239 ----
        case 492 : /* fall through */
        case 493 : /* fall through */
        case 494 : /* fall through */
!       case 495 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3d00)
!           { itype = XSTORMY16_INSN_SHRGRIMM; xstormy16_extract_sfmt_shrgrimm (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 496 : /* fall through */
        case 497 : /* fall through */
        case 498 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 983,989 ****
        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_shrgrgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 504 : /* fall through */
        case 505 : /* fall through */
        case 506 : /* fall through */
--- 1241,1251 ----
        case 500 : /* fall through */
        case 501 : /* fall through */
        case 502 : /* fall through */
!       case 503 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3e00)
!           { itype = XSTORMY16_INSN_SHLGRGR; xstormy16_extract_sfmt_shrgrgr (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 504 : /* fall through */
        case 505 : /* fall through */
        case 506 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 991,997 ****
        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 512 : /* fall through */
        case 513 : /* fall through */
        case 514 : /* fall through */
--- 1253,1263 ----
        case 508 : /* fall through */
        case 509 : /* fall through */
        case 510 : /* fall through */
!       case 511 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x3f00)
!           { itype = XSTORMY16_INSN_SHLGRIMM; xstormy16_extract_sfmt_shrgrimm (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 512 : /* fall through */
        case 513 : /* fall through */
        case 514 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 999,1005 ****
        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 520 : /* fall through */
        case 521 : /* fall through */
        case 522 : /* fall through */
--- 1265,1275 ----
        case 516 : /* fall through */
        case 517 : /* fall through */
        case 518 : /* fall through */
!       case 519 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4000)
!           { itype = XSTORMY16_INSN_ANDGRGR; xstormy16_extract_sfmt_andgrgr (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 520 : /* fall through */
        case 521 : /* fall through */
        case 522 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1007,1013 ****
        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 528 : /* fall through */
        case 529 : /* fall through */
        case 530 : /* fall through */
--- 1277,1287 ----
        case 524 : /* fall through */
        case 525 : /* fall through */
        case 526 : /* fall through */
!       case 527 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4100)
!           { itype = XSTORMY16_INSN_ANDIMM8; xstormy16_extract_sfmt_andimm8 (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 528 : /* fall through */
        case 529 : /* fall through */
        case 530 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1015,1021 ****
        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 536 : /* fall through */
        case 537 : /* fall through */
        case 538 : /* fall through */
--- 1289,1299 ----
        case 532 : /* fall through */
        case 533 : /* fall through */
        case 534 : /* fall through */
!       case 535 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4200)
!           { itype = XSTORMY16_INSN_ORGRGR; xstormy16_extract_sfmt_andgrgr (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 536 : /* fall through */
        case 537 : /* fall through */
        case 538 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1023,1029 ****
        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 544 : /* fall through */
        case 545 : /* fall through */
        case 546 : /* fall through */
--- 1301,1311 ----
        case 540 : /* fall through */
        case 541 : /* fall through */
        case 542 : /* fall through */
!       case 543 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4300)
!           { itype = XSTORMY16_INSN_ORIMM8; xstormy16_extract_sfmt_andimm8 (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 544 : /* fall through */
        case 545 : /* fall through */
        case 546 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1031,1037 ****
        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 552 : /* fall through */
        case 553 : /* fall through */
        case 554 : /* fall through */
--- 1313,1323 ----
        case 548 : /* fall through */
        case 549 : /* fall through */
        case 550 : /* fall through */
!       case 551 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4400)
!           { itype = XSTORMY16_INSN_XORGRGR; xstormy16_extract_sfmt_andgrgr (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 552 : /* fall through */
        case 553 : /* fall through */
        case 554 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1039,1045 ****
        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 560 : /* fall through */
        case 561 : /* fall through */
        case 562 : /* fall through */
--- 1325,1335 ----
        case 556 : /* fall through */
        case 557 : /* fall through */
        case 558 : /* fall through */
!       case 559 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4500)
!           { itype = XSTORMY16_INSN_XORIMM8; xstormy16_extract_sfmt_andimm8 (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 560 : /* fall through */
        case 561 : /* fall through */
        case 562 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1047,1053 ****
        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 568 : /* fall through */
        case 569 : /* fall through */
        case 570 : /* fall through */
--- 1337,1347 ----
        case 564 : /* fall through */
        case 565 : /* fall through */
        case 566 : /* fall through */
!       case 567 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4600)
!           { itype = XSTORMY16_INSN_MOVGRGR; xstormy16_extract_sfmt_movgrgr (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 568 : /* fall through */
        case 569 : /* fall through */
        case 570 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1055,1061 ****
        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 584 : /* fall through */
        case 585 : /* fall through */
        case 586 : /* fall through */
--- 1349,1359 ----
        case 572 : /* fall through */
        case 573 : /* fall through */
        case 574 : /* fall through */
!       case 575 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4700)
!           { itype = XSTORMY16_INSN_MOVWIMM8; xstormy16_extract_sfmt_movwimm8 (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 584 : /* fall through */
        case 585 : /* fall through */
        case 586 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1063,1069 ****
        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 600 : /* fall through */
        case 601 : /* fall through */
        case 602 : /* fall through */
--- 1361,1371 ----
        case 588 : /* fall through */
        case 589 : /* fall through */
        case 590 : /* fall through */
!       case 591 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4900)
!           { itype = XSTORMY16_INSN_ADDGRGR; xstormy16_extract_sfmt_addgrgr (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 600 : /* fall through */
        case 601 : /* fall through */
        case 602 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1071,1077 ****
        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 616 : /* fall through */
        case 617 : /* fall through */
        case 618 : /* fall through */
--- 1373,1383 ----
        case 604 : /* fall through */
        case 605 : /* fall through */
        case 606 : /* fall through */
!       case 607 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4b00)
!           { itype = XSTORMY16_INSN_ADCGRGR; xstormy16_extract_sfmt_adcgrgr (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 616 : /* fall through */
        case 617 : /* fall through */
        case 618 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1079,1085 ****
        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 632 : /* fall through */
        case 633 : /* fall through */
        case 634 : /* fall through */
--- 1385,1395 ----
        case 620 : /* fall through */
        case 621 : /* fall through */
        case 622 : /* fall through */
!       case 623 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4d00)
!           { itype = XSTORMY16_INSN_SUBGRGR; xstormy16_extract_sfmt_addgrgr (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 632 : /* fall through */
        case 633 : /* fall through */
        case 634 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1087,1093 ****
        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 648 : /* fall through */
        case 649 : /* fall through */
        case 650 : /* fall through */
--- 1397,1407 ----
        case 636 : /* fall through */
        case 637 : /* fall through */
        case 638 : /* fall through */
!       case 639 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x4f00)
!           { itype = XSTORMY16_INSN_SBCGRGR; xstormy16_extract_sfmt_adcgrgr (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 648 : /* fall through */
        case 649 : /* fall through */
        case 650 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1095,1101 ****
        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 664 : /* fall through */
        case 665 : /* fall through */
        case 666 : /* fall through */
--- 1409,1419 ----
        case 652 : /* fall through */
        case 653 : /* fall through */
        case 654 : /* fall through */
!       case 655 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x5100)
!           { itype = XSTORMY16_INSN_ADDGRIMM4; xstormy16_extract_sfmt_addgrimm4 (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 664 : /* fall through */
        case 665 : /* fall through */
        case 666 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1103,1109 ****
        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 680 : /* fall through */
        case 681 : /* fall through */
        case 682 : /* fall through */
--- 1421,1431 ----
        case 668 : /* fall through */
        case 669 : /* fall through */
        case 670 : /* fall through */
!       case 671 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x5300)
!           { itype = XSTORMY16_INSN_ADCGRIMM4; xstormy16_extract_sfmt_adcgrimm4 (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 680 : /* fall through */
        case 681 : /* fall through */
        case 682 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1111,1117 ****
        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 696 : /* fall through */
        case 697 : /* fall through */
        case 698 : /* fall through */
--- 1433,1443 ----
        case 684 : /* fall through */
        case 685 : /* fall through */
        case 686 : /* fall through */
!       case 687 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x5500)
!           { itype = XSTORMY16_INSN_SUBGRIMM4; xstormy16_extract_sfmt_addgrimm4 (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 696 : /* fall through */
        case 697 : /* fall through */
        case 698 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1119,1125 ****
        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 712 : /* fall through */
        case 713 : /* fall through */
        case 714 : /* fall through */
--- 1445,1455 ----
        case 700 : /* fall through */
        case 701 : /* fall through */
        case 702 : /* fall through */
!       case 703 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x5700)
!           { itype = XSTORMY16_INSN_SBCGRIMM4; xstormy16_extract_sfmt_adcgrimm4 (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 712 : /* fall through */
        case 713 : /* fall through */
        case 714 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1127,1133 ****
        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 728 : /* fall through */
        case 729 : /* fall through */
        case 730 : /* fall through */
--- 1457,1467 ----
        case 716 : /* fall through */
        case 717 : /* fall through */
        case 718 : /* fall through */
!       case 719 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x5900)
!           { itype = XSTORMY16_INSN_ADDIMM8; xstormy16_extract_sfmt_addimm8 (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 728 : /* fall through */
        case 729 : /* fall through */
        case 730 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1135,1141 ****
        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 744 : /* fall through */
        case 745 : /* fall through */
        case 746 : /* fall through */
--- 1469,1479 ----
        case 732 : /* fall through */
        case 733 : /* fall through */
        case 734 : /* fall through */
!       case 735 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x5b00)
!           { itype = XSTORMY16_INSN_ADCIMM8; xstormy16_extract_sfmt_adcimm8 (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 744 : /* fall through */
        case 745 : /* fall through */
        case 746 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1143,1149 ****
        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 760 : /* fall through */
        case 761 : /* fall through */
        case 762 : /* fall through */
--- 1481,1491 ----
        case 748 : /* fall through */
        case 749 : /* fall through */
        case 750 : /* fall through */
!       case 751 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x5d00)
!           { itype = XSTORMY16_INSN_SUBIMM8; xstormy16_extract_sfmt_addimm8 (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 760 : /* fall through */
        case 761 : /* fall through */
        case 762 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1151,1157 ****
        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 768 : /* fall through */
        case 770 : /* fall through */
        case 772 : /* fall through */
--- 1493,1503 ----
        case 764 : /* fall through */
        case 765 : /* fall through */
        case 766 : /* fall through */
!       case 767 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xff00) == 0x5f00)
!           { itype = XSTORMY16_INSN_SBCGRIMM8; xstormy16_extract_sfmt_adcimm8 (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 768 : /* fall through */
        case 770 : /* fall through */
        case 772 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1159,1165 ****
        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 769 : /* fall through */
        case 771 : /* fall through */
        case 773 : /* fall through */
--- 1505,1515 ----
        case 776 : /* fall through */
        case 778 : /* fall through */
        case 780 : /* fall through */
!       case 782 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x6000)
!           { itype = XSTORMY16_INSN_MOVGRGRIPOSTINC; xstormy16_extract_sfmt_movgrgripostinc (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 769 : /* fall through */
        case 771 : /* fall through */
        case 773 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1167,1173 ****
        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 784 : /* fall through */
        case 786 : /* fall through */
        case 788 : /* fall through */
--- 1517,1526 ----
        case 777 : /* fall through */
        case 779 : /* fall through */
        case 781 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1175,1181 ****
        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 785 : /* fall through */
        case 787 : /* fall through */
        case 789 : /* fall through */
--- 1528,1538 ----
        case 792 : /* fall through */
        case 794 : /* fall through */
        case 796 : /* fall through */
!       case 798 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x6200)
!           { itype = XSTORMY16_INSN_MOVGRIPOSTINCGR; xstormy16_extract_sfmt_movgripostincgr (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 785 : /* fall through */
        case 787 : /* fall through */
        case 789 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1183,1189 ****
        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 800 : /* fall through */
        case 802 : /* fall through */
        case 804 : /* fall through */
--- 1540,1549 ----
        case 793 : /* fall through */
        case 795 : /* fall through */
        case 797 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1191,1197 ****
        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 801 : /* fall through */
        case 803 : /* fall through */
        case 805 : /* fall through */
--- 1551,1561 ----
        case 808 : /* fall through */
        case 810 : /* fall through */
        case 812 : /* fall through */
!       case 814 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x6400)
!           { itype = XSTORMY16_INSN_MOVFGRGRIPOSTINC; xstormy16_extract_sfmt_movfgrgripostinc (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 801 : /* fall through */
        case 803 : /* fall through */
        case 805 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1199,1205 ****
        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 816 : /* fall through */
        case 818 : /* fall through */
        case 820 : /* fall through */
--- 1563,1572 ----
        case 809 : /* fall through */
        case 811 : /* fall through */
        case 813 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1207,1213 ****
        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 817 : /* fall through */
        case 819 : /* fall through */
        case 821 : /* fall through */
--- 1574,1584 ----
        case 824 : /* fall through */
        case 826 : /* fall through */
        case 828 : /* fall through */
!       case 830 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x6600)
!           { itype = XSTORMY16_INSN_MOVFGRIPOSTINCGR; xstormy16_extract_sfmt_movfgripostincgr (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 817 : /* fall through */
        case 819 : /* fall through */
        case 821 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1215,1221 ****
        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 832 : /* fall through */
        case 834 : /* fall through */
        case 836 : /* fall through */
--- 1586,1595 ----
        case 825 : /* fall through */
        case 827 : /* fall through */
        case 829 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1223,1229 ****
        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 833 : /* fall through */
        case 835 : /* fall through */
        case 837 : /* fall through */
--- 1597,1607 ----
        case 840 : /* fall through */
        case 842 : /* fall through */
        case 844 : /* fall through */
!       case 846 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x6800)
!           { itype = XSTORMY16_INSN_MOVGRGRIPREDEC; xstormy16_extract_sfmt_movgrgripredec (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 833 : /* fall through */
        case 835 : /* fall through */
        case 837 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1231,1237 ****
        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 848 : /* fall through */
        case 850 : /* fall through */
        case 852 : /* fall through */
--- 1609,1618 ----
        case 841 : /* fall through */
        case 843 : /* fall through */
        case 845 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1239,1245 ****
        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 849 : /* fall through */
        case 851 : /* fall through */
        case 853 : /* fall through */
--- 1620,1630 ----
        case 856 : /* fall through */
        case 858 : /* fall through */
        case 860 : /* fall through */
!       case 862 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x6a00)
!           { itype = XSTORMY16_INSN_MOVGRIPREDECGR; xstormy16_extract_sfmt_movgripredecgr (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 849 : /* fall through */
        case 851 : /* fall through */
        case 853 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1247,1253 ****
        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 864 : /* fall through */
        case 866 : /* fall through */
        case 868 : /* fall through */
--- 1632,1641 ----
        case 857 : /* fall through */
        case 859 : /* fall through */
        case 861 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1255,1261 ****
        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 865 : /* fall through */
        case 867 : /* fall through */
        case 869 : /* fall through */
--- 1643,1653 ----
        case 872 : /* fall through */
        case 874 : /* fall through */
        case 876 : /* fall through */
!       case 878 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x6c00)
!           { itype = XSTORMY16_INSN_MOVFGRGRIPREDEC; xstormy16_extract_sfmt_movfgrgripredec (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 865 : /* fall through */
        case 867 : /* fall through */
        case 869 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1263,1269 ****
        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 880 : /* fall through */
        case 882 : /* fall through */
        case 884 : /* fall through */
--- 1655,1664 ----
        case 873 : /* fall through */
        case 875 : /* fall through */
        case 877 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1271,1277 ****
        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 881 : /* fall through */
        case 883 : /* fall through */
        case 885 : /* fall through */
--- 1666,1676 ----
        case 888 : /* fall through */
        case 890 : /* fall through */
        case 892 : /* fall through */
!       case 894 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x6e00)
!           { itype = XSTORMY16_INSN_MOVFGRIPREDECGR; xstormy16_extract_sfmt_movfgripredecgr (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 881 : /* fall through */
        case 883 : /* fall through */
        case 885 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1279,1285 ****
        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 896 : /* fall through */
        case 898 : /* fall through */
        case 900 : /* fall through */
--- 1678,1687 ----
        case 889 : /* fall through */
        case 891 : /* fall through */
        case 893 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1287,1293 ****
        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 897 : /* fall through */
        case 899 : /* fall through */
        case 901 : /* fall through */
--- 1689,1699 ----
        case 904 : /* fall through */
        case 906 : /* fall through */
        case 908 : /* fall through */
!       case 910 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x7000)
!           { itype = XSTORMY16_INSN_MOVGRGRI; xstormy16_extract_sfmt_movgrgri (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 897 : /* fall through */
        case 899 : /* fall through */
        case 901 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1295,1301 ****
        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 912 : /* fall through */
        case 914 : /* fall through */
        case 916 : /* fall through */
--- 1701,1710 ----
        case 905 : /* fall through */
        case 907 : /* fall through */
        case 909 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1303,1309 ****
        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 913 : /* fall through */
        case 915 : /* fall through */
        case 917 : /* fall through */
--- 1712,1722 ----
        case 920 : /* fall through */
        case 922 : /* fall through */
        case 924 : /* fall through */
!       case 926 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x7200)
!           { itype = XSTORMY16_INSN_MOVGRIGR; xstormy16_extract_sfmt_movgrigr (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 913 : /* fall through */
        case 915 : /* fall through */
        case 917 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1311,1317 ****
        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 928 : /* fall through */
        case 930 : /* fall through */
        case 932 : /* fall through */
--- 1724,1733 ----
        case 921 : /* fall through */
        case 923 : /* fall through */
        case 925 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1319,1325 ****
        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 929 : /* fall through */
        case 931 : /* fall through */
        case 933 : /* fall through */
--- 1735,1745 ----
        case 936 : /* fall through */
        case 938 : /* fall through */
        case 940 : /* fall through */
!       case 942 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x7400)
!           { itype = XSTORMY16_INSN_MOVFGRGRI; xstormy16_extract_sfmt_movfgrgri (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 929 : /* fall through */
        case 931 : /* fall through */
        case 933 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1327,1333 ****
        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 944 : /* fall through */
        case 946 : /* fall through */
        case 948 : /* fall through */
--- 1747,1756 ----
        case 937 : /* fall through */
        case 939 : /* fall through */
        case 941 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1335,1341 ****
        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 945 : /* fall through */
        case 947 : /* fall through */
        case 949 : /* fall through */
--- 1758,1768 ----
        case 952 : /* fall through */
        case 954 : /* fall through */
        case 956 : /* fall through */
!       case 958 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xfe08) == 0x7600)
!           { itype = XSTORMY16_INSN_MOVFGRIGR; xstormy16_extract_sfmt_movfgrigr (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 945 : /* fall through */
        case 947 : /* fall through */
        case 949 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1343,1349 ****
        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 960 : /* fall through */
        case 961 : /* fall through */
        case 962 : /* fall through */
--- 1770,1779 ----
        case 953 : /* fall through */
        case 955 : /* fall through */
        case 957 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1359,1365 ****
        case 972 : /* fall through */
        case 973 : /* fall through */
        case 974 : /* fall through */
!       case 975 : itype = XSTORMY16_INSN_MOVLMEMIMM; xstormy16_extract_sfmt_movlmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 976 : /* fall through */
        case 977 : /* fall through */
        case 978 : /* fall through */
--- 1789,1798 ----
        case 972 : /* fall through */
        case 973 : /* fall through */
        case 974 : /* fall through */
!       case 975 :
!         if ((entire_insn & 0xfe000000) == 0x78000000)
!           { itype = XSTORMY16_INSN_MOVLMEMIMM; xstormy16_extract_sfmt_movlmemimm (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 976 : /* fall through */
        case 977 : /* fall through */
        case 978 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1375,1381 ****
        case 988 : /* fall through */
        case 989 : /* fall through */
        case 990 : /* fall through */
!       case 991 : itype = XSTORMY16_INSN_MOVHMEMIMM; xstormy16_extract_sfmt_movhmemimm (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 992 : /* fall through */
        case 993 : /* fall through */
        case 994 : /* fall through */
--- 1808,1817 ----
        case 988 : /* fall through */
        case 989 : /* fall through */
        case 990 : /* fall through */
!       case 991 :
!         if ((entire_insn & 0xfe000000) == 0x7a000000)
!           { itype = XSTORMY16_INSN_MOVHMEMIMM; xstormy16_extract_sfmt_movhmemimm (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 992 : /* fall through */
        case 993 : /* fall through */
        case 994 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1383,1389 ****
        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 1000 : /* fall through */
        case 1001 : /* fall through */
        case 1002 : /* fall through */
--- 1819,1828 ----
        case 996 : /* fall through */
        case 997 : /* fall through */
        case 998 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1391,1397 ****
        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 1008 : /* fall through */
        case 1009 : /* fall through */
        case 1010 : /* fall through */
--- 1830,1839 ----
        case 1004 : /* fall through */
        case 1005 : /* fall through */
        case 1006 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1399,1405 ****
        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 1016 : /* fall through */
        case 1017 : /* fall through */
        case 1018 : /* fall through */
--- 1841,1850 ----
        case 1012 : /* fall through */
        case 1013 : /* fall through */
        case 1014 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1407,1413 ****
        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 1024 : /* fall through */
        case 1025 : /* fall through */
        case 1026 : /* fall through */
--- 1852,1861 ----
        case 1020 : /* fall through */
        case 1021 : /* fall through */
        case 1022 : /* fall through */
!       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 */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1535,1541 ****
        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 1152 : /* fall through */
        case 1153 : /* fall through */
        case 1154 : /* fall through */
--- 1983,1993 ----
        case 1148 : /* fall through */
        case 1149 : /* fall through */
        case 1150 : /* fall through */
!       case 1151 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf000) == 0x8000)
!           { itype = XSTORMY16_INSN_MOVLGRMEM; xstormy16_extract_sfmt_movlgrmem (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 1152 : /* fall through */
        case 1153 : /* fall through */
        case 1154 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1663,1669 ****
        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 1280 : /* fall through */
        case 1281 : /* fall through */
        case 1282 : /* fall through */
--- 2115,2125 ----
        case 1276 : /* fall through */
        case 1277 : /* fall through */
        case 1278 : /* fall through */
!       case 1279 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf000) == 0x9000)
!           { itype = XSTORMY16_INSN_MOVLMEMGR; xstormy16_extract_sfmt_movlmemgr (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 1280 : /* fall through */
        case 1281 : /* fall through */
        case 1282 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1791,1797 ****
        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 1408 : /* fall through */
        case 1409 : /* fall through */
        case 1410 : /* fall through */
--- 2247,2257 ----
        case 1404 : /* fall through */
        case 1405 : /* fall through */
        case 1406 : /* fall through */
!       case 1407 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf000) == 0xa000)
!           { itype = XSTORMY16_INSN_MOVHGRMEM; xstormy16_extract_sfmt_movhgrmem (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 1408 : /* fall through */
        case 1409 : /* fall through */
        case 1410 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 1919,1925 ****
        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_movhmemgr (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 1536 : /* fall through */
        case 1537 : /* fall through */
        case 1538 : /* fall through */
--- 2379,2389 ----
        case 1532 : /* fall through */
        case 1533 : /* fall through */
        case 1534 : /* fall through */
!       case 1535 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf000) == 0xb000)
!           { itype = XSTORMY16_INSN_MOVHMEMGR; xstormy16_extract_sfmt_movhmemgr (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 1536 : /* fall through */
        case 1537 : /* fall through */
        case 1538 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 2047,2053 ****
        case 1660 : /* fall through */
        case 1661 : /* fall through */
        case 1662 : /* fall through */
!       case 1663 : itype = XSTORMY16_INSN_BCCIMM16; xstormy16_extract_sfmt_bccimm16 (this, current_cpu, pc, base_insn, entire_insn); goto done;
        case 1664 : /* fall through */
        case 1665 : /* fall through */
        case 1666 : /* fall through */
--- 2511,2520 ----
        case 1660 : /* fall through */
        case 1661 : /* fall through */
        case 1662 : /* fall through */
!       case 1663 :
!         if ((entire_insn & 0xf0000000) == 0xc0000000)
!           { itype = XSTORMY16_INSN_BCCIMM16; xstormy16_extract_sfmt_bccimm16 (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 1664 : /* fall through */
        case 1665 : /* fall through */
        case 1666 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 2175,2181 ****
        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 1792 : /* fall through */
        case 1793 : /* fall through */
        case 1794 : /* fall through */
--- 2642,2652 ----
        case 1788 : /* fall through */
        case 1789 : /* fall through */
        case 1790 : /* fall through */
!       case 1791 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf000) == 0xd000)
!           { itype = XSTORMY16_INSN_BCC; xstormy16_extract_sfmt_bcc (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 1792 : /* fall through */
        case 1793 : /* fall through */
        case 1794 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 2239,2245 ****
        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 1800 : /* fall through */
        case 1801 : /* fall through */
        case 1802 : /* fall through */
--- 2710,2720 ----
        case 1908 : /* fall through */
        case 1909 : /* fall through */
        case 1910 : /* fall through */
!       case 1911 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf100) == 0xe000)
!           { itype = XSTORMY16_INSN_CLR1LMEMIMM; xstormy16_extract_sfmt_set1lmemimm (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 1800 : /* fall through */
        case 1801 : /* fall through */
        case 1802 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 2303,2309 ****
        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 1920 : /* fall through */
        case 1921 : /* fall through */
        case 1922 : /* fall through */
--- 2778,2788 ----
        case 1916 : /* fall through */
        case 1917 : /* fall through */
        case 1918 : /* fall through */
!       case 1919 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf100) == 0xe100)
!           { itype = XSTORMY16_INSN_SET1LMEMIMM; xstormy16_extract_sfmt_set1lmemimm (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 1920 : /* fall through */
        case 1921 : /* fall through */
        case 1922 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 2367,2373 ****
        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 1928 : /* fall through */
        case 1929 : /* fall through */
        case 1930 : /* fall through */
--- 2846,2856 ----
        case 2036 : /* fall through */
        case 2037 : /* fall through */
        case 2038 : /* fall through */
!       case 2039 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf100) == 0xf000)
!           { itype = XSTORMY16_INSN_CLR1HMEMIMM; xstormy16_extract_sfmt_set1hmemimm (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 1928 : /* fall through */
        case 1929 : /* fall through */
        case 1930 : /* fall through */
*************** xstormy16_scache::decode (xstormy16_cpu*
*** 2431,2438 ****
        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;
        }
      }
  
--- 2914,2925 ----
        case 2044 : /* fall through */
        case 2045 : /* fall through */
        case 2046 : /* fall through */
!       case 2047 :
!         entire_insn = base_insn >> 16;
!         if ((entire_insn & 0xf100) == 0xf100)
!           { itype = XSTORMY16_INSN_SET1HMEMIMM; xstormy16_extract_sfmt_set1hmemimm (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;
        }
      }
  

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