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