VAX: Add computed results to instruction history trace
This commit is contained in:
parent
c8cd853102
commit
8d51b3517d
3 changed files with 627 additions and 529 deletions
113
VAX/vax_cpu.c
113
VAX/vax_cpu.c
|
@ -215,18 +215,20 @@
|
|||
#define WRITE_L(r) if (spec > (GRN | nPC)) \
|
||||
Write (va, r, L_LONG, WA); \
|
||||
else R[rn] = (r)
|
||||
#define WRITE_Q(rl,rh) if (spec > (GRN | nPC)) { \
|
||||
#define WRITE_Q(arl,arh) if (spec > (GRN | nPC)) { \
|
||||
if ((Test (va + 7, WA, &mstat) >= 0) || \
|
||||
(Test (va, WA, &mstat) < 0)) \
|
||||
Write (va, rl, L_LONG, WA); \
|
||||
Write (va + 4, rh, L_LONG, WA); \
|
||||
Write (va, arl, L_LONG, WA); \
|
||||
Write (va + 4, arh, L_LONG, WA); \
|
||||
} \
|
||||
else { \
|
||||
if (rn >= nSP) \
|
||||
RSVD_ADDR_FAULT; \
|
||||
R[rn] = rl; \
|
||||
R[rn + 1] = rh; \
|
||||
}
|
||||
R[rn] = arl; \
|
||||
R[rn + 1] = arh; \
|
||||
} \
|
||||
r = arl; \
|
||||
rh = arh
|
||||
|
||||
|
||||
#define HIST_MIN 64
|
||||
|
@ -238,7 +240,8 @@ typedef struct {
|
|||
int32 PSL;
|
||||
int32 opc;
|
||||
uint8 inst[INST_SIZE];
|
||||
int32 opnd[OPND_SIZE];
|
||||
uint32 opnd[OPND_SIZE];
|
||||
uint32 res[6];
|
||||
} InstHistory;
|
||||
|
||||
uint32 *M = NULL; /* memory */
|
||||
|
@ -668,6 +671,43 @@ for ( ;; ) {
|
|||
uint32 va, iad;
|
||||
int32 opnd[OPND_SIZE]; /* operand queue */
|
||||
|
||||
/* Optionally record instruction history results from prior instruction */
|
||||
|
||||
if (hst_lnt) {
|
||||
InstHistory *hlast = &hst[hst_p ? hst_p-1 : hst_lnt -1];
|
||||
int res = (drom[hlast->opc][0] & DR_M_RESMASK) >> DR_V_RESMASK;
|
||||
|
||||
switch ((drom[hlast->opc][0] & DR_M_RESMASK) >> DR_V_RESMASK) {
|
||||
case RB_O>>DR_V_RESMASK:
|
||||
break;
|
||||
case RB_Q>>DR_V_RESMASK:
|
||||
hlast->res[1] = rh;
|
||||
hlast->res[0] = r;
|
||||
break;
|
||||
case RB_B>>DR_V_RESMASK:
|
||||
case RB_W>>DR_V_RESMASK:
|
||||
case RB_L>>DR_V_RESMASK:
|
||||
hlast->res[0] = r;
|
||||
break;
|
||||
case RB_R5>>DR_V_RESMASK:
|
||||
hlast->res[5] = R[5];
|
||||
hlast->res[4] = R[4];
|
||||
case RB_R3>>DR_V_RESMASK:
|
||||
hlast->res[3] = R[3];
|
||||
hlast->res[2] = R[2];
|
||||
case RB_R1>>DR_V_RESMASK:
|
||||
hlast->res[1] = R[1];
|
||||
case RB_R0>>DR_V_RESMASK:
|
||||
hlast->res[0] = R[0];
|
||||
break;
|
||||
case RB_SP>>DR_V_RESMASK:
|
||||
hlast->res[0] = Read (SP, L_LONG, RA);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (cpu_astop) {
|
||||
cpu_astop = 0;
|
||||
ABORT (SCPE_STOP);
|
||||
|
@ -1605,17 +1645,20 @@ for ( ;; ) {
|
|||
*/
|
||||
|
||||
case CLRB:
|
||||
WRITE_B (0); /* store result */
|
||||
r = 0;
|
||||
WRITE_B (r); /* store result */
|
||||
CC_ZZ1P; /* set cc's */
|
||||
break;
|
||||
|
||||
case CLRW:
|
||||
WRITE_W (0); /* store result */
|
||||
r = 0;
|
||||
WRITE_W (r); /* store result */
|
||||
CC_ZZ1P; /* set cc's */
|
||||
break;
|
||||
|
||||
case CLRL:
|
||||
WRITE_L (0); /* store result */
|
||||
r = 0;
|
||||
WRITE_L (r); /* store result */
|
||||
CC_ZZ1P; /* set cc's */
|
||||
break;
|
||||
|
||||
|
@ -1714,19 +1757,22 @@ for ( ;; ) {
|
|||
*/
|
||||
|
||||
case MOVB:
|
||||
WRITE_B (op0); /* result */
|
||||
CC_IIZP_B (op0); /* set cc's */
|
||||
r = op0;
|
||||
WRITE_B (r); /* result */
|
||||
CC_IIZP_B (r); /* set cc's */
|
||||
break;
|
||||
|
||||
case MOVW: case MOVZBW:
|
||||
WRITE_W (op0); /* result */
|
||||
CC_IIZP_W (op0); /* set cc's */
|
||||
r = op0;
|
||||
WRITE_W (r); /* result */
|
||||
CC_IIZP_W (r); /* set cc's */
|
||||
break;
|
||||
|
||||
case MOVL: case MOVZBL: case MOVZWL:
|
||||
case MOVAB: case MOVAW: case MOVAL: case MOVAQ:
|
||||
WRITE_L (op0); /* result */
|
||||
CC_IIZP_L (op0); /* set cc's */
|
||||
r = op0;
|
||||
WRITE_L (r); /* result */
|
||||
CC_IIZP_L (r); /* set cc's */
|
||||
break;
|
||||
|
||||
case MCOMB:
|
||||
|
@ -3521,7 +3567,7 @@ for (k = 0; k < count; k++) { /* print specified */
|
|||
if (hst_switches & SWMASK('T')) /* sim_time */
|
||||
fprintf(st, "%10.0f ", h->time);
|
||||
fprintf(st, "%08X %08X| ", h->iPC, h->PSL); /* PC, PSL */
|
||||
numspec = drom[h->opc][0] & DR_NSPMASK; /* #specifiers */
|
||||
numspec = DR_GETNSP (drom[h->opc][0]); /* #specifiers */
|
||||
if (opcode[h->opc] == NULL) /* undefined? */
|
||||
fprintf (st, "%03X (undefined)", h->opc);
|
||||
else if (h->PSL & PSL_FPD) /* FPD set? */
|
||||
|
@ -3594,6 +3640,39 @@ for (i = 1, j = 0, more = FALSE; i <= numspec; i++) { /* loop thru specs */
|
|||
break;
|
||||
} /* end case */
|
||||
} /* end for */
|
||||
if ((line == 0) && ((drom[h->opc][0] & DR_M_RESMASK) >> DR_V_RESMASK)) {
|
||||
fprintf (st, " ->");
|
||||
switch ((drom[h->opc][0] & DR_M_RESMASK) >> DR_V_RESMASK) {
|
||||
case RB_O>>DR_V_RESMASK:
|
||||
fprintf (st, " %08X %08X %08X %08X", h->res[0], h->res[1], h->res[2], h->res[3]);
|
||||
break;
|
||||
case RB_Q>>DR_V_RESMASK:
|
||||
fprintf (st, " %08X %08X", h->res[0], h->res[1]);
|
||||
break;
|
||||
case RB_B>>DR_V_RESMASK:
|
||||
case RB_W>>DR_V_RESMASK:
|
||||
case RB_L>>DR_V_RESMASK:
|
||||
fprintf (st, " %08X", h->res[0]);
|
||||
break;
|
||||
case RB_R5>>DR_V_RESMASK:
|
||||
case RB_R3>>DR_V_RESMASK:
|
||||
case RB_R1>>DR_V_RESMASK:
|
||||
case RB_R0>>DR_V_RESMASK:
|
||||
if (1) {
|
||||
static const int rcnts[] = {1, 2, 4, 6};
|
||||
int i;
|
||||
|
||||
for (i = 0; i < rcnts[((drom[h->opc][0] & DR_M_RESMASK) - RB_R0) >> DR_V_RESMASK]; i++)
|
||||
fprintf (st, " R%d:%08X", i, h->res[i]);
|
||||
}
|
||||
break;
|
||||
case RB_SP>>DR_V_RESMASK:
|
||||
fprintf (st, " SP: %08X", h->res[0]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return more;
|
||||
}
|
||||
|
||||
|
|
|
@ -381,6 +381,22 @@
|
|||
#define DR_GETNSP(x) ((x) & DR_NSPMASK)
|
||||
#define DR_GETUSP(x) (((x) >> DR_V_USPMASK) & DR_M_USPMASK)
|
||||
|
||||
/* Extra bits in the opcode flag word of the Decode ROM array only for history results */
|
||||
|
||||
#define DR_V_RESMASK 8
|
||||
#define DR_M_RESMASK 0x0F00
|
||||
#define RB_0 (0 << DR_V_RESMASK) /* No Results */
|
||||
#define RB_B (1 << DR_V_RESMASK) /* Byte Result */
|
||||
#define RB_W (2 << DR_V_RESMASK) /* Word Result */
|
||||
#define RB_L (3 << DR_V_RESMASK) /* Long Result */
|
||||
#define RB_Q (4 << DR_V_RESMASK) /* Quad Result */
|
||||
#define RB_O (5 << DR_V_RESMASK) /* Octa Result */
|
||||
#define RB_R0 (6 << DR_V_RESMASK) /* Reg R0 */
|
||||
#define RB_R1 (7 << DR_V_RESMASK) /* Regs R0-R1 */
|
||||
#define RB_R3 (8 << DR_V_RESMASK) /* Regs R0-R3 */
|
||||
#define RB_R5 (9 << DR_V_RESMASK) /* Regs R0-R5 */
|
||||
#define RB_SP (10 << DR_V_RESMASK) /* @SP */
|
||||
|
||||
/* Decode ROM: specifier entry */
|
||||
|
||||
#define DR_ACMASK 0x300 /* type */
|
||||
|
|
417
VAX/vax_sys.c
417
VAX/vax_sys.c
|
@ -111,8 +111,11 @@ const char *sim_stop_messages[] = {
|
|||
- FPD legal flag (DR_F)
|
||||
- number of specifiers for decode bits 2:0>
|
||||
- number of specifiers for unimplemented instructions bits<6:4>
|
||||
- ONLY for simulator instruction history bits 11:8 reflect where
|
||||
results are recorded from
|
||||
*/
|
||||
|
||||
|
||||
const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* HALT */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* NOP */
|
||||
|
@ -124,8 +127,8 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{0, 0, 0, 0, 0, 0, 0}, /* SVPCTX */
|
||||
{4+DR_F, RW, AB, RW, AB, 0, 0}, /* CVTPS */
|
||||
{4+DR_F, RW, AB, RW, AB, 0, 0}, /* CVTSP */
|
||||
{6, RL, RL, RL, RL, RL, WL}, /* INDEX */
|
||||
{4+DR_F, AB, RL, RW, AB, 0, 0}, /* CRC */
|
||||
{6 +RB_L, RL, RL, RL, RL, RL, WL}, /* INDEX */
|
||||
{4+DR_F +RB_L, AB, RL, RW, AB, 0, 0}, /* CRC */
|
||||
{3, RB, RW, AB, 0, 0, 0}, /* PROBER */
|
||||
{3, RB, RW, AB, 0, 0, 0}, /* PROBEW */
|
||||
{2, AB, AB, 0, 0, 0, 0}, /* INSQUE */
|
||||
|
@ -146,63 +149,63 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{1, BB, 0, 0, 0, 0, 0}, /* BVS */
|
||||
{1, BB, 0, 0, 0, 0, 0}, /* BCC */
|
||||
{1, BB, 0, 0, 0, 0, 0}, /* BCS */
|
||||
{4+DR_F, RW, AB, RW, AB, 0, 0}, /* ADDP4 */
|
||||
{6+DR_F, RW, AB, RW, AB, RW, AB}, /* ADDP6 */
|
||||
{4+DR_F, RW, AB, RW, AB, 0, 0}, /* SUBP4 */
|
||||
{6+DR_F, RW, AB, RW, AB, RW, AB}, /* SUBP6 */
|
||||
{5+DR_F, RW, AB, AB, RW, AB, 0}, /* CVTPT */
|
||||
{6+DR_F, RW, AB, RW, AB, RW, AB}, /* MULP6 */
|
||||
{5+DR_F, RW, AB, AB, RW, AB, 0}, /* CVTTP */
|
||||
{6+DR_F, RW, AB, RW, AB, RW, AB}, /* DIVP6 */
|
||||
{3+DR_F, RW, AB, AB, 0, 0, 0}, /* MOVC3 */
|
||||
{3+DR_F, RW, AB, AB, 0, 0, 0}, /* CMPC3 */
|
||||
{4+DR_F, RW, AB, AB, RB, 0, 0}, /* SCANC */
|
||||
{4+DR_F, RW, AB, AB, RB, 0, 0}, /* SPANC */
|
||||
{5+DR_F, RW, AB, RB, RW, AB, 0}, /* MOVC5 */
|
||||
{5+DR_F, RW, AB, RB, RW, AB, 0}, /* CMPC5 */
|
||||
{6+DR_F, RW, AB, RB, AB, RW, AB}, /* MOVTC */
|
||||
{6+DR_F, RW, AB, RB, AB, RW, AB}, /* MOVTUC */
|
||||
{4+DR_F +RB_R3, RW, AB, RW, AB, 0, 0}, /* ADDP4 */
|
||||
{6+DR_F +RB_R5, RW, AB, RW, AB, RW, AB}, /* ADDP6 */
|
||||
{4+DR_F +RB_R3, RW, AB, RW, AB, 0, 0}, /* SUBP4 */
|
||||
{6+DR_F +RB_R5, RW, AB, RW, AB, RW, AB}, /* SUBP6 */
|
||||
{5+DR_F +RB_R3, RW, AB, AB, RW, AB, 0}, /* CVTPT */
|
||||
{6+DR_F +RB_R5, RW, AB, RW, AB, RW, AB}, /* MULP6 */
|
||||
{5+DR_F +RB_R3, RW, AB, AB, RW, AB, 0}, /* CVTTP */
|
||||
{6+DR_F +RB_R5, RW, AB, RW, AB, RW, AB}, /* DIVP6 */
|
||||
{3+DR_F +RB_R5, RW, AB, AB, 0, 0, 0}, /* MOVC3 */
|
||||
{3+DR_F +RB_R3, RW, AB, AB, 0, 0, 0}, /* CMPC3 */
|
||||
{4+DR_F +RB_R3, RW, AB, AB, RB, 0, 0}, /* SCANC */
|
||||
{4+DR_F +RB_R3, RW, AB, AB, RB, 0, 0}, /* SPANC */
|
||||
{5+DR_F +RB_R5, RW, AB, RB, RW, AB, 0}, /* MOVC5 */
|
||||
{5+DR_F +RB_R3, RW, AB, RB, RW, AB, 0}, /* CMPC5 */
|
||||
{6+DR_F +RB_R5, RW, AB, RB, AB, RW, AB}, /* MOVTC */
|
||||
{6+DR_F +RB_R3, RW, AB, RB, AB, RW, AB}, /* MOVTUC */
|
||||
{1, BW, 0, 0, 0, 0, 0}, /* BSBW */
|
||||
{1, BW, 0, 0, 0, 0, 0}, /* BRW */
|
||||
{2, RW, WL, 0, 0, 0, 0}, /* CVTWL */
|
||||
{2, RW, WB, 0, 0, 0, 0}, /* CVTWB */
|
||||
{3+DR_F, RW, AB, AB, 0, 0, 0}, /* MOVP */
|
||||
{3+DR_F, RW, AB, AB, 0, 0, 0}, /* CMPP3 */
|
||||
{3+DR_F, RW, AB, WL, 0, 0, 0}, /* CVTPL */
|
||||
{4+DR_F, RW, AB, RW, AB, 0, 0}, /* CMPP4 */
|
||||
{4+DR_F, RW, AB, AB, AB, 0, 0}, /* EDITPC */
|
||||
{4+DR_F, RW, AB, RW, AB, 0, 0}, /* MATCHC */
|
||||
{3+DR_F, RB, RW, AB, 0, 0, 0}, /* LOCC */
|
||||
{3+DR_F, RB, RW, AB, 0, 0, 0}, /* SKPC */
|
||||
{2, RW, WL, 0, 0, 0, 0}, /* MOVZWL */
|
||||
{2 +RB_L, RW, WL, 0, 0, 0, 0}, /* CVTWL */
|
||||
{2 +RB_B, RW, WB, 0, 0, 0, 0}, /* CVTWB */
|
||||
{3+DR_F +RB_R3, RW, AB, AB, 0, 0, 0}, /* MOVP */
|
||||
{3+DR_F +RB_R3, RW, AB, AB, 0, 0, 0}, /* CMPP3 */
|
||||
{3+DR_F +RB_L, RW, AB, WL, 0, 0, 0}, /* CVTPL */
|
||||
{4+DR_F +RB_R3, RW, AB, RW, AB, 0, 0}, /* CMPP4 */
|
||||
{4+DR_F +RB_R5, RW, AB, AB, AB, 0, 0}, /* EDITPC */
|
||||
{4+DR_F +RB_R3, RW, AB, RW, AB, 0, 0}, /* MATCHC */
|
||||
{3+DR_F +RB_R1, RB, RW, AB, 0, 0, 0}, /* LOCC */
|
||||
{3+DR_F +RB_R1, RB, RW, AB, 0, 0, 0}, /* SKPC */
|
||||
{2 +RB_L, RW, WL, 0, 0, 0, 0}, /* MOVZWL */
|
||||
{4, RW, RW, MW, BW, 0, 0}, /* ACBW */
|
||||
{2, AW, WL, 0, 0, 0, 0}, /* MOVAW */
|
||||
{1, AW, 0, 0, 0, 0, 0}, /* PUSHAW */
|
||||
{2, RF, ML, 0, 0, 0, 0}, /* ADDF2 */
|
||||
{3, RF, RF, WL, 0, 0, 0}, /* ADDF3 */
|
||||
{2, RF, ML, 0, 0, 0, 0}, /* SUBF2 */
|
||||
{3, RF, RF, WL, 0, 0, 0}, /* SUBF3 */
|
||||
{2, RF, ML, 0, 0, 0, 0}, /* MULF2 */
|
||||
{3, RF, RF, WL, 0, 0, 0}, /* MULF3 */
|
||||
{2, RF, ML, 0, 0, 0, 0}, /* DIVF2 */
|
||||
{3, RF, RF, WL, 0, 0, 0}, /* DIVF3 */
|
||||
{2, RF, WB, 0, 0, 0, 0}, /* CVTFB */
|
||||
{2, RF, WW, 0, 0, 0, 0}, /* CVTFW */
|
||||
{2, RF, WL, 0, 0, 0, 0}, /* CVTFL */
|
||||
{2, RF, WL, 0, 0, 0, 0}, /* CVTRFL */
|
||||
{2, RB, WL, 0, 0, 0, 0}, /* CVTBF */
|
||||
{2, RW, WL, 0, 0, 0, 0}, /* CVTWF */
|
||||
{2, RL, WL, 0, 0, 0, 0}, /* CVTLF */
|
||||
{1 +RB_SP, AW, 0, 0, 0, 0, 0}, /* PUSHAW */
|
||||
{2 +RB_L, RF, ML, 0, 0, 0, 0}, /* ADDF2 */
|
||||
{3 +RB_L, RF, RF, WL, 0, 0, 0}, /* ADDF3 */
|
||||
{2 +RB_L, RF, ML, 0, 0, 0, 0}, /* SUBF2 */
|
||||
{3 +RB_L, RF, RF, WL, 0, 0, 0}, /* SUBF3 */
|
||||
{2 +RB_L, RF, ML, 0, 0, 0, 0}, /* MULF2 */
|
||||
{3 +RB_L, RF, RF, WL, 0, 0, 0}, /* MULF3 */
|
||||
{2 +RB_L, RF, ML, 0, 0, 0, 0}, /* DIVF2 */
|
||||
{3 +RB_L, RF, RF, WL, 0, 0, 0}, /* DIVF3 */
|
||||
{2 +RB_B, RF, WB, 0, 0, 0, 0}, /* CVTFB */
|
||||
{2 +RB_W, RF, WW, 0, 0, 0, 0}, /* CVTFW */
|
||||
{2 +RB_L, RF, WL, 0, 0, 0, 0}, /* CVTFL */
|
||||
{2 +RB_L, RF, WL, 0, 0, 0, 0}, /* CVTRFL */
|
||||
{2 +RB_L, RB, WL, 0, 0, 0, 0}, /* CVTBF */
|
||||
{2 +RB_L, RW, WL, 0, 0, 0, 0}, /* CVTWF */
|
||||
{2 +RB_L, RL, WL, 0, 0, 0, 0}, /* CVTLF */
|
||||
{4, RF, RF, ML, BW, 0, 0}, /* ACBF */
|
||||
{2, RF, WL, 0, 0, 0, 0}, /* MOVF */
|
||||
{2 +RB_L, RF, WL, 0, 0, 0, 0}, /* MOVF */
|
||||
{2, RF, RF, 0, 0, 0, 0}, /* CMPF */
|
||||
{2, RF, WL, 0, 0, 0, 0}, /* MNEGF */
|
||||
{2 +RB_L, RF, WL, 0, 0, 0, 0}, /* MNEGF */
|
||||
{1, RF, 0, 0, 0, 0, 0}, /* TSTF */
|
||||
{5, RF, RB, RF, WL, WL, 0}, /* EMODF */
|
||||
{3, RF, RW, AB, 0, 0, 0}, /* POLYF */
|
||||
{2, RF, WQ, 0, 0, 0, 0}, /* CVTFD */
|
||||
{3 +RB_R0, RF, RW, AB, 0, 0, 0}, /* POLYF */
|
||||
{2 +RB_Q, RF, WQ, 0, 0, 0, 0}, /* CVTFD */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{2, RW, WW, 0, 0, 0, 0}, /* ADAWI */
|
||||
{2 +RB_W, RW, WW, 0, 0, 0, 0}, /* ADAWI */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
|
@ -210,94 +213,94 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{2, AB, AQ, 0, 0, 0, 0}, /* INSQTI */
|
||||
{2, AQ, WL, 0, 0, 0, 0}, /* REMQHI */
|
||||
{2, AQ, WL, 0, 0, 0, 0}, /* REMQTI */
|
||||
{2, RD, MQ, 0, 0, 0, 0}, /* ADDD2 */
|
||||
{3, RD, RD, WQ, 0, 0, 0}, /* ADDD3 */
|
||||
{2, RD, MQ, 0, 0, 0, 0}, /* SUBD2 */
|
||||
{3, RD, RD, WQ, 0, 0, 0}, /* SUBD3 */
|
||||
{2, RD, MQ, 0, 0, 0, 0}, /* MULD2 */
|
||||
{3, RD, RD, WQ, 0, 0, 0}, /* MULD3 */
|
||||
{2, RD, MQ, 0, 0, 0, 0}, /* DIVD2 */
|
||||
{3, RD, RD, WQ, 0, 0, 0}, /* DIVD3 */
|
||||
{2, RD, WB, 0, 0, 0, 0}, /* CVTDB */
|
||||
{2, RD, WW, 0, 0, 0, 0}, /* CVTDW */
|
||||
{2, RD, WL, 0, 0, 0, 0}, /* CVTDL */
|
||||
{2, RD, WL, 0, 0, 0, 0}, /* CVTRDL */
|
||||
{2, RB, WQ, 0, 0, 0, 0}, /* CVTBD */
|
||||
{2, RW, WQ, 0, 0, 0, 0}, /* CVTWD */
|
||||
{2, RL, WQ, 0, 0, 0, 0}, /* CVTLD */
|
||||
{2 +RB_Q, RD, MQ, 0, 0, 0, 0}, /* ADDD2 */
|
||||
{3 +RB_Q, RD, RD, WQ, 0, 0, 0}, /* ADDD3 */
|
||||
{2 +RB_Q, RD, MQ, 0, 0, 0, 0}, /* SUBD2 */
|
||||
{3 +RB_Q, RD, RD, WQ, 0, 0, 0}, /* SUBD3 */
|
||||
{2 +RB_Q, RD, MQ, 0, 0, 0, 0}, /* MULD2 */
|
||||
{3 +RB_Q, RD, RD, WQ, 0, 0, 0}, /* MULD3 */
|
||||
{2 +RB_Q, RD, MQ, 0, 0, 0, 0}, /* DIVD2 */
|
||||
{3 +RB_Q, RD, RD, WQ, 0, 0, 0}, /* DIVD3 */
|
||||
{2 +RB_B, RD, WB, 0, 0, 0, 0}, /* CVTDB */
|
||||
{2 +RB_W, RD, WW, 0, 0, 0, 0}, /* CVTDW */
|
||||
{2 +RB_L, RD, WL, 0, 0, 0, 0}, /* CVTDL */
|
||||
{2 +RB_L, RD, WL, 0, 0, 0, 0}, /* CVTRDL */
|
||||
{2 +RB_Q, RB, WQ, 0, 0, 0, 0}, /* CVTBD */
|
||||
{2 +RB_Q, RW, WQ, 0, 0, 0, 0}, /* CVTWD */
|
||||
{2 +RB_Q, RL, WQ, 0, 0, 0, 0}, /* CVTLD */
|
||||
{4, RD, RD, MQ, BW, 0, 0}, /* ACBD */
|
||||
{2, RD, WQ, 0, 0, 0, 0}, /* MOVD */
|
||||
{2, RD, RD, 0, 0, 0, 0}, /* CMPD */
|
||||
{2, RD, WQ, 0, 0, 0, 0}, /* MNEGD */
|
||||
{2 +RB_Q, RD, WQ, 0, 0, 0, 0}, /* MOVD */
|
||||
{2 +RB_Q, RD, RD, 0, 0, 0, 0}, /* CMPD */
|
||||
{2 +RB_Q, RD, WQ, 0, 0, 0, 0}, /* MNEGD */
|
||||
{1, RD, 0, 0, 0, 0, 0}, /* TSTD */
|
||||
{5, RD, RB, RD, WL, WQ, 0}, /* EMODD */
|
||||
{3, RD, RW, AB, 0, 0, 0}, /* POLYD */
|
||||
{2, RD, WL, 0, 0, 0, 0}, /* CVTDF */
|
||||
{3 +RB_R1, RD, RW, AB, 0, 0, 0}, /* POLYD */
|
||||
{2 +RB_L, RD, WL, 0, 0, 0, 0}, /* CVTDF */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{3, RB, RL, WL, 0, 0, 0}, /* ASHL */
|
||||
{3, RB, RQ, WQ, 0, 0, 0}, /* ASHQ */
|
||||
{3 +RB_L, RB, RL, WL, 0, 0, 0}, /* ASHL */
|
||||
{3 +RB_Q, RB, RQ, WQ, 0, 0, 0}, /* ASHQ */
|
||||
{4, RL, RL, RL, WQ, 0, 0}, /* EMUL */
|
||||
{4, RL, RQ, WL, WL, 0, 0}, /* EDIV */
|
||||
{1, WQ, 0, 0, 0, 0, 0}, /* CLRQ */
|
||||
{2, RQ, WQ, 0, 0, 0, 0}, /* MOVQ */
|
||||
{2, AQ, WL, 0, 0, 0, 0}, /* MOVAQ */
|
||||
{1, AQ, 0, 0, 0, 0, 0}, /* PUSHAQ */
|
||||
{2, RB, MB, 0, 0, 0, 0}, /* ADDB2 */
|
||||
{3, RB, RB, WB, 0, 0, 0}, /* ADDB3 */
|
||||
{2, RB, MB, 0, 0, 0, 0}, /* SUBB2 */
|
||||
{3, RB, RB, WB, 0, 0, 0}, /* SUBB3 */
|
||||
{2, RB, MB, 0, 0, 0, 0}, /* MULB2 */
|
||||
{3, RB, RB, WB, 0, 0, 0}, /* MULB3 */
|
||||
{2, RB, MB, 0, 0, 0, 0}, /* DIVB2 */
|
||||
{3, RB, RB, WB, 0, 0, 0}, /* DIVB3 */
|
||||
{2, RB, MB, 0, 0, 0, 0}, /* BISB2 */
|
||||
{3, RB, RB, WB, 0, 0, 0}, /* BISB3 */
|
||||
{2, RB, MB, 0, 0, 0, 0}, /* BICB2 */
|
||||
{3, RB, RB, WB, 0, 0, 0}, /* BICB3 */
|
||||
{2, RB, MB, 0, 0, 0, 0}, /* XORB2 */
|
||||
{3, RB, RB, WB, 0, 0, 0}, /* XORB3 */
|
||||
{2, RB, WB, 0, 0, 0, 0}, /* MNEGB */
|
||||
{1 +RB_Q, WQ, 0, 0, 0, 0, 0}, /* CLRQ */
|
||||
{2 +RB_Q, RQ, WQ, 0, 0, 0, 0}, /* MOVQ */
|
||||
{2 +RB_L, AQ, WL, 0, 0, 0, 0}, /* MOVAQ */
|
||||
{1 +RB_SP, AQ, 0, 0, 0, 0, 0}, /* PUSHAQ */
|
||||
{2 +RB_B, RB, MB, 0, 0, 0, 0}, /* ADDB2 */
|
||||
{3 +RB_B, RB, RB, WB, 0, 0, 0}, /* ADDB3 */
|
||||
{2 +RB_B, RB, MB, 0, 0, 0, 0}, /* SUBB2 */
|
||||
{3 +RB_B, RB, RB, WB, 0, 0, 0}, /* SUBB3 */
|
||||
{2 +RB_B, RB, MB, 0, 0, 0, 0}, /* MULB2 */
|
||||
{3 +RB_B, RB, RB, WB, 0, 0, 0}, /* MULB3 */
|
||||
{2 +RB_B, RB, MB, 0, 0, 0, 0}, /* DIVB2 */
|
||||
{3 +RB_B, RB, RB, WB, 0, 0, 0}, /* DIVB3 */
|
||||
{2 +RB_B, RB, MB, 0, 0, 0, 0}, /* BISB2 */
|
||||
{3 +RB_B, RB, RB, WB, 0, 0, 0}, /* BISB3 */
|
||||
{2 +RB_B, RB, MB, 0, 0, 0, 0}, /* BICB2 */
|
||||
{3 +RB_B, RB, RB, WB, 0, 0, 0}, /* BICB3 */
|
||||
{2 +RB_B, RB, MB, 0, 0, 0, 0}, /* XORB2 */
|
||||
{3 +RB_B, RB, RB, WB, 0, 0, 0}, /* XORB3 */
|
||||
{2 +RB_B, RB, WB, 0, 0, 0, 0}, /* MNEGB */
|
||||
{3, RB, RB, RB, 0, 0, 0}, /* CASEB */
|
||||
{2, RB, WB, 0, 0, 0, 0}, /* MOVB */
|
||||
{2 +RB_B, RB, WB, 0, 0, 0, 0}, /* MOVB */
|
||||
{2, RB, RB, 0, 0, 0, 0}, /* CMPB */
|
||||
{2, RB, WB, 0, 0, 0, 0}, /* MCOMB */
|
||||
{2, RB, RB, 0, 0, 0, 0}, /* BITB */
|
||||
{1, WB, 0, 0, 0, 0, 0}, /* CLRB */
|
||||
{2 +RB_B, RB, WB, 0, 0, 0, 0}, /* MCOMB */
|
||||
{2 +RB_B, RB, RB, 0, 0, 0, 0}, /* BITB */
|
||||
{1 +RB_B, WB, 0, 0, 0, 0, 0}, /* CLRB */
|
||||
{1, RB, 0, 0, 0, 0, 0}, /* TSTB */
|
||||
{1, MB, 0, 0, 0, 0, 0}, /* INCB */
|
||||
{1, MB, 0, 0, 0, 0, 0}, /* DECB */
|
||||
{2, RB, WL, 0, 0, 0, 0}, /* CVTBL */
|
||||
{2, RB, WW, 0, 0, 0, 0}, /* CVTBW */
|
||||
{2, RB, WL, 0, 0, 0, 0}, /* MOVZBL */
|
||||
{2, RB, WW, 0, 0, 0, 0}, /* MOVZBW */
|
||||
{3, RB, RL, WL, 0, 0, 0}, /* ROTL */
|
||||
{1 +RB_B, MB, 0, 0, 0, 0, 0}, /* INCB */
|
||||
{1 +RB_B, MB, 0, 0, 0, 0, 0}, /* DECB */
|
||||
{2 +RB_L, RB, WL, 0, 0, 0, 0}, /* CVTBL */
|
||||
{2 +RB_W, RB, WW, 0, 0, 0, 0}, /* CVTBW */
|
||||
{2 +RB_L, RB, WL, 0, 0, 0, 0}, /* MOVZBL */
|
||||
{2 +RB_W, RB, WW, 0, 0, 0, 0}, /* MOVZBW */
|
||||
{3 +RB_L, RB, RL, WL, 0, 0, 0}, /* ROTL */
|
||||
{4, RB, RB, MB, BW, 0, 0}, /* ACBB */
|
||||
{2, AB, WL, 0, 0, 0, 0}, /* MOVAB */
|
||||
{1, AB, 0, 0, 0, 0, 0}, /* PUSHAB */
|
||||
{2, RW, MW, 0, 0, 0, 0}, /* ADDW2 */
|
||||
{3, RW, RW, WW, 0, 0, 0}, /* ADDW3 */
|
||||
{2, RW, MW, 0, 0, 0, 0}, /* SUBW2 */
|
||||
{3, RW, RW, WW, 0, 0, 0}, /* SUBW3 */
|
||||
{2, RW, MW, 0, 0, 0, 0}, /* MULW2 */
|
||||
{3, RW, RW, WW, 0, 0, 0}, /* MULW3 */
|
||||
{2, RW, MW, 0, 0, 0, 0}, /* DIVW2 */
|
||||
{3, RW, RW, WW, 0, 0, 0}, /* DIVW3 */
|
||||
{2, RW, MW, 0, 0, 0, 0}, /* BISW2 */
|
||||
{3, RW, RW, WW, 0, 0, 0}, /* BISW3 */
|
||||
{2, RW, MW, 0, 0, 0, 0}, /* BICW2 */
|
||||
{3, RW, RW, WW, 0, 0, 0}, /* BICW3 */
|
||||
{2, RW, MW, 0, 0, 0, 0}, /* XORW2 */
|
||||
{3, RW, RW, WW, 0, 0, 0}, /* XORW3 */
|
||||
{2, RW, WW, 0, 0, 0, 0}, /* MNEGW */
|
||||
{2 +RB_L, AB, WL, 0, 0, 0, 0}, /* MOVAB */
|
||||
{1 +RB_SP, AB, 0, 0, 0, 0, 0}, /* PUSHAB */
|
||||
{2 +RB_W, RW, MW, 0, 0, 0, 0}, /* ADDW2 */
|
||||
{3 +RB_W, RW, RW, WW, 0, 0, 0}, /* ADDW3 */
|
||||
{2 +RB_W, RW, MW, 0, 0, 0, 0}, /* SUBW2 */
|
||||
{3 +RB_W, RW, RW, WW, 0, 0, 0}, /* SUBW3 */
|
||||
{2 +RB_W, RW, MW, 0, 0, 0, 0}, /* MULW2 */
|
||||
{3 +RB_W, RW, RW, WW, 0, 0, 0}, /* MULW3 */
|
||||
{2 +RB_W, RW, MW, 0, 0, 0, 0}, /* DIVW2 */
|
||||
{3 +RB_W, RW, RW, WW, 0, 0, 0}, /* DIVW3 */
|
||||
{2 +RB_W, RW, MW, 0, 0, 0, 0}, /* BISW2 */
|
||||
{3 +RB_W, RW, RW, WW, 0, 0, 0}, /* BISW3 */
|
||||
{2 +RB_W, RW, MW, 0, 0, 0, 0}, /* BICW2 */
|
||||
{3 +RB_W, RW, RW, WW, 0, 0, 0}, /* BICW3 */
|
||||
{2 +RB_W, RW, MW, 0, 0, 0, 0}, /* XORW2 */
|
||||
{3 +RB_W, RW, RW, WW, 0, 0, 0}, /* XORW3 */
|
||||
{2 +RB_W, RW, WW, 0, 0, 0, 0}, /* MNEGW */
|
||||
{3, RW, RW, RW, 0, 0, 0}, /* CASEW */
|
||||
{2, RW, WW, 0, 0, 0, 0}, /* MOVW */
|
||||
{2 +RB_W, RW, WW, 0, 0, 0, 0}, /* MOVW */
|
||||
{2, RW, RW, 0, 0, 0, 0}, /* CMPW */
|
||||
{2, RW, WW, 0, 0, 0, 0}, /* MCOMW */
|
||||
{2 +RB_W, RW, WW, 0, 0, 0, 0}, /* MCOMW */
|
||||
{2, RW, RW, 0, 0, 0, 0}, /* BITW */
|
||||
{1, WW, 0, 0, 0, 0, 0}, /* CLRW */
|
||||
{1 +RB_W, WW, 0, 0, 0, 0, 0}, /* CLRW */
|
||||
{1, RW, 0, 0, 0, 0, 0}, /* TSTW */
|
||||
{1, MW, 0, 0, 0, 0, 0}, /* INCW */
|
||||
{1, MW, 0, 0, 0, 0, 0}, /* DECW */
|
||||
{1 +RB_W, MW, 0, 0, 0, 0, 0}, /* INCW */
|
||||
{1 +RB_W, MW, 0, 0, 0, 0, 0}, /* DECW */
|
||||
{1, RW, 0, 0, 0, 0, 0}, /* BISPSW */
|
||||
{1, RW, 0, 0, 0, 0, 0}, /* BICPSW */
|
||||
{1, RW, 0, 0, 0, 0, 0}, /* POPR */
|
||||
|
@ -306,38 +309,38 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{1, RW, 0, 0, 0, 0, 0}, /* CHME */
|
||||
{1, RW, 0, 0, 0, 0, 0}, /* CHMS */
|
||||
{1, RW, 0, 0, 0, 0, 0}, /* CHMU */
|
||||
{2, RL, ML, 0, 0, 0, 0}, /* ADDL2 */
|
||||
{3, RL, RL, WL, 0, 0, 0}, /* ADDL3 */
|
||||
{2, RL, ML, 0, 0, 0, 0}, /* SUBL2 */
|
||||
{3, RL, RL, WL, 0, 0, 0}, /* SUBL3 */
|
||||
{2, RL, ML, 0, 0, 0, 0}, /* MULL2 */
|
||||
{3, RL, RL, WL, 0, 0, 0}, /* MULL3 */
|
||||
{2, RL, ML, 0, 0, 0, 0}, /* DIVL2 */
|
||||
{3, RL, RL, WL, 0, 0, 0}, /* DIVL3 */
|
||||
{2, RL, ML, 0, 0, 0, 0}, /* BISL2 */
|
||||
{3, RL, RL, WL, 0, 0, 0}, /* BISL3 */
|
||||
{2, RL, ML, 0, 0, 0, 0}, /* BICL2 */
|
||||
{3, RL, RL, WL, 0, 0, 0}, /* BICL3 */
|
||||
{2, RL, ML, 0, 0, 0, 0}, /* XORL2 */
|
||||
{3, RL, RL, WL, 0, 0, 0}, /* XORL3 */
|
||||
{2, RL, WL, 0, 0, 0, 0}, /* MNEGL */
|
||||
{2 +RB_L, RL, ML, 0, 0, 0, 0}, /* ADDL2 */
|
||||
{3 +RB_L, RL, RL, WL, 0, 0, 0}, /* ADDL3 */
|
||||
{2 +RB_L, RL, ML, 0, 0, 0, 0}, /* SUBL2 */
|
||||
{3 +RB_L, RL, RL, WL, 0, 0, 0}, /* SUBL3 */
|
||||
{2 +RB_L, RL, ML, 0, 0, 0, 0}, /* MULL2 */
|
||||
{3 +RB_L, RL, RL, WL, 0, 0, 0}, /* MULL3 */
|
||||
{2 +RB_L, RL, ML, 0, 0, 0, 0}, /* DIVL2 */
|
||||
{3 +RB_L, RL, RL, WL, 0, 0, 0}, /* DIVL3 */
|
||||
{2 +RB_L, RL, ML, 0, 0, 0, 0}, /* BISL2 */
|
||||
{3 +RB_L, RL, RL, WL, 0, 0, 0}, /* BISL3 */
|
||||
{2 +RB_L, RL, ML, 0, 0, 0, 0}, /* BICL2 */
|
||||
{3 +RB_L, RL, RL, WL, 0, 0, 0}, /* BICL3 */
|
||||
{2 +RB_L, RL, ML, 0, 0, 0, 0}, /* XORL2 */
|
||||
{3 +RB_L, RL, RL, WL, 0, 0, 0}, /* XORL3 */
|
||||
{2 +RB_L, RL, WL, 0, 0, 0, 0}, /* MNEGL */
|
||||
{3, RL, RL, RL, 0, 0, 0}, /* CASEL */
|
||||
{2, RL, WL, 0, 0, 0, 0}, /* MOVL */
|
||||
{2 +RB_L, RL, WL, 0, 0, 0, 0}, /* MOVL */
|
||||
{2, RL, RL, 0, 0, 0, 0}, /* CMPL */
|
||||
{2, RL, WL, 0, 0, 0, 0}, /* MCOML */
|
||||
{2 +RB_L, RL, WL, 0, 0, 0, 0}, /* MCOML */
|
||||
{2, RL, RL, 0, 0, 0, 0}, /* BITL */
|
||||
{1, WL, 0, 0, 0, 0, 0}, /* CLRL */
|
||||
{1 +RB_L, WL, 0, 0, 0, 0, 0}, /* CLRL */
|
||||
{1, RL, 0, 0, 0, 0, 0}, /* TSTL */
|
||||
{1, ML, 0, 0, 0, 0, 0}, /* INCL */
|
||||
{1, ML, 0, 0, 0, 0, 0}, /* DECL */
|
||||
{2, RL, ML, 0, 0, 0, 0}, /* ADWC */
|
||||
{2, RL, ML, 0, 0, 0, 0}, /* SBWC */
|
||||
{1 +RB_L, ML, 0, 0, 0, 0, 0}, /* INCL */
|
||||
{1 +RB_L, ML, 0, 0, 0, 0, 0}, /* DECL */
|
||||
{2 +RB_L, RL, ML, 0, 0, 0, 0}, /* ADWC */
|
||||
{2 +RB_L, RL, ML, 0, 0, 0, 0}, /* SBWC */
|
||||
{2, RL, RL, 0, 0, 0, 0}, /* MTPR */
|
||||
{2, RL, WL, 0, 0, 0, 0}, /* MFPR */
|
||||
{1, WL, 0, 0, 0, 0, 0}, /* MOVPSL */
|
||||
{1, RL, 0, 0, 0, 0, 0}, /* PUSHL */
|
||||
{2, AL, WL, 0, 0, 0, 0}, /* MOVAL */
|
||||
{1, AL, 0, 0, 0, 0, 0}, /* PUSHAL */
|
||||
{2 +RB_L, RL, WL, 0, 0, 0, 0}, /* MFPR */
|
||||
{1 +RB_L, WL, 0, 0, 0, 0, 0}, /* MOVPSL */
|
||||
{1 +RB_SP, RL, 0, 0, 0, 0, 0}, /* PUSHL */
|
||||
{2 +RB_L, AL, WL, 0, 0, 0, 0}, /* MOVAL */
|
||||
{1 +RB_SP, AL, 0, 0, 0, 0, 0}, /* PUSHAL */
|
||||
{3, RL, VB, BB, 0, 0, 0}, /* BBS */
|
||||
{3, RL, VB, BB, 0, 0, 0}, /* BBC */
|
||||
{3, RL, VB, BB, 0, 0, 0}, /* BBSS */
|
||||
|
@ -348,22 +351,22 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{3, RL, VB, BB, 0, 0, 0}, /* BBCCI */
|
||||
{2, RL, BB, 0, 0, 0, 0}, /* BLBS */
|
||||
{2, RL, BB, 0, 0, 0, 0}, /* BLBC */
|
||||
{4, RL, RB, VB, WL, 0, 0}, /* FFS */
|
||||
{4, RL, RB, VB, WL, 0, 0}, /* FFC */
|
||||
{4 +RB_L, RL, RB, VB, WL, 0, 0}, /* FFS */
|
||||
{4 +RB_L, RL, RB, VB, WL, 0, 0}, /* FFC */
|
||||
{4, RL, RB, VB, RL, 0, 0}, /* CMPV */
|
||||
{4, RL, RB, VB, RL, 0, 0}, /* CMPZV */
|
||||
{4, RL, RB, VB, WL, 0, 0}, /* EXTV */
|
||||
{4, RL, RB, VB, WL, 0, 0}, /* EXTZV */
|
||||
{4 +RB_L, RL, RB, VB, WL, 0, 0}, /* EXTV */
|
||||
{4 +RB_L, RL, RB, VB, WL, 0, 0}, /* EXTZV */
|
||||
{4, RL, RL, RB, VB, 0, 0}, /* INSV */
|
||||
{4, RL, RL, ML, BW, 0, 0}, /* ACBL */
|
||||
{3, RL, ML, BB, 0, 0, 0}, /* AOBLSS */
|
||||
{3, RL, ML, BB, 0, 0, 0}, /* AOBLEQ */
|
||||
{2, ML, BB, 0, 0, 0, 0}, /* SOBGEQ */
|
||||
{2, ML, BB, 0, 0, 0, 0}, /* SOBGTR */
|
||||
{2, RL, WB, 0, 0, 0, 0}, /* CVTLB */
|
||||
{2, RL, WW, 0, 0, 0, 0}, /* CVTLW */
|
||||
{6+DR_F, RB, RW, AB, RB, RW, AB}, /* ASHP */
|
||||
{3+DR_F, RL, RW, AB, 0, 0, 0}, /* CVTLP */
|
||||
{2 +RB_B, RL, WB, 0, 0, 0, 0}, /* CVTLB */
|
||||
{2 +RB_W, RL, WW, 0, 0, 0, 0}, /* CVTLW */
|
||||
{6+DR_F+RB_R3, RB, RW, AB, RB, RW, AB}, /* ASHP */
|
||||
{3+DR_F+RB_R3, RL, RW, AB, 0, 0, 0}, /* CVTLP */
|
||||
{2, AB, AB, 0, 0, 0, 0}, /* CALLG */
|
||||
{2, RL, AB, 0, 0, 0, 0}, /* CALLS */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* XFC */
|
||||
|
@ -420,8 +423,8 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* 130-13F */
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{ODC(2), RD, WO, 0, 0, 0, 0}, /* CVTDH */
|
||||
{2, RG, WL, 0, 0, 0, 0}, /* CVTGF */
|
||||
{ODC(2) +RB_O, RD, WO, 0, 0, 0, 0}, /* CVTDH */
|
||||
{2 +RB_L, RG, WL, 0, 0, 0, 0}, /* CVTGF */
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
|
@ -434,29 +437,29 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{2, RG, MQ, 0, 0, 0, 0}, /* ADDG2 */
|
||||
{3, RG, RG, WQ, 0, 0, 0}, /* ADDG3 */
|
||||
{2, RG, MQ, 0, 0, 0, 0}, /* SUBG2 */
|
||||
{3, RG, RG, WQ, 0, 0, 0}, /* SUBG3 */
|
||||
{2, RG, MQ, 0, 0, 0, 0}, /* MULG2 */
|
||||
{3, RG, RG, WQ, 0, 0, 0}, /* MULG3 */
|
||||
{2, RG, MQ, 0, 0, 0, 0}, /* DIVG2 */
|
||||
{3, RG, RG, WQ, 0, 0, 0}, /* DIVG3 */
|
||||
{2, RG, WB, 0, 0, 0, 0}, /* CVTGB */
|
||||
{2, RG, WW, 0, 0, 0, 0}, /* CVTGW */
|
||||
{2, RG, WL, 0, 0, 0, 0}, /* CVTGL */
|
||||
{2, RG, WL, 0, 0, 0, 0}, /* CVTRGL */
|
||||
{2, RB, WQ, 0, 0, 0, 0}, /* CVTBG */
|
||||
{2, RW, WQ, 0, 0, 0, 0}, /* CVTWG */
|
||||
{2, RL, WQ, 0, 0, 0, 0}, /* CVTLG */
|
||||
{2 +RB_Q, RG, MQ, 0, 0, 0, 0}, /* ADDG2 */
|
||||
{3 +RB_Q, RG, RG, WQ, 0, 0, 0}, /* ADDG3 */
|
||||
{2 +RB_Q, RG, MQ, 0, 0, 0, 0}, /* SUBG2 */
|
||||
{3 +RB_Q, RG, RG, WQ, 0, 0, 0}, /* SUBG3 */
|
||||
{2 +RB_Q, RG, MQ, 0, 0, 0, 0}, /* MULG2 */
|
||||
{3 +RB_Q, RG, RG, WQ, 0, 0, 0}, /* MULG3 */
|
||||
{2 +RB_Q, RG, MQ, 0, 0, 0, 0}, /* DIVG2 */
|
||||
{3 +RB_Q, RG, RG, WQ, 0, 0, 0}, /* DIVG3 */
|
||||
{2 +RB_B, RG, WB, 0, 0, 0, 0}, /* CVTGB */
|
||||
{2 +RB_W, RG, WW, 0, 0, 0, 0}, /* CVTGW */
|
||||
{2 +RB_L, RG, WL, 0, 0, 0, 0}, /* CVTGL */
|
||||
{2 +RB_L, RG, WL, 0, 0, 0, 0}, /* CVTRGL */
|
||||
{2 +RB_Q, RB, WQ, 0, 0, 0, 0}, /* CVTBG */
|
||||
{2 +RB_Q, RW, WQ, 0, 0, 0, 0}, /* CVTWG */
|
||||
{2 +RB_Q, RL, WQ, 0, 0, 0, 0}, /* CVTLG */
|
||||
{4, RG, RG, MQ, BW, 0, 0}, /* ACBG */
|
||||
{2, RG, WQ, 0, 0, 0, 0}, /* MOVG */
|
||||
{2 +RB_Q, RG, WQ, 0, 0, 0, 0}, /* MOVG */
|
||||
{2, RG, RG, 0, 0, 0, 0}, /* CMPG */
|
||||
{2, RG, WQ, 0, 0, 0, 0}, /* MNEGG */
|
||||
{2 +RB_Q, RG, WQ, 0, 0, 0, 0}, /* MNEGG */
|
||||
{1, RG, 0, 0, 0, 0, 0}, /* TSTG */
|
||||
{5, RG, RW, RG, WL, WQ, 0}, /* EMODG */
|
||||
{3, RG, RW, AB, 0, 0, 0}, /* POLYG */
|
||||
{ODC(2), RG, WO, 0, 0, 0, 0}, /* CVTGH */
|
||||
{3 +RB_R1, RG, RW, AB, 0, 0, 0}, /* POLYG */
|
||||
{ODC(2) +RB_O, RG, WO, 0, 0, 0, 0}, /* CVTGH */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
|
@ -466,38 +469,38 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{ODC(2), RH, MO, 0, 0, 0, 0}, /* ADDH2 */
|
||||
{ODC(3), RH, RH, WO, 0, 0, 0}, /* ADDH3 */
|
||||
{ODC(2), RH, MO, 0, 0, 0, 0}, /* SUBH2 */
|
||||
{ODC(3), RH, RH, WO, 0, 0, 0}, /* SUBH3 */
|
||||
{ODC(2), RH, MO, 0, 0, 0, 0}, /* MULH2 */
|
||||
{ODC(3), RH, RH, WO, 0, 0, 0}, /* MULH3 */
|
||||
{ODC(2), RH, MO, 0, 0, 0, 0}, /* DIVH2 */
|
||||
{ODC(3), RH, RH, WO, 0, 0, 0}, /* DIVH3 */
|
||||
{ODC(2), RH, WB, 0, 0, 0, 0}, /* CVTHB */
|
||||
{ODC(2), RH, WW, 0, 0, 0, 0}, /* CVTHW */
|
||||
{ODC(2), RH, WL, 0, 0, 0, 0}, /* CVTHL */
|
||||
{ODC(2), RH, WL, 0, 0, 0, 0}, /* CVTRHL */
|
||||
{ODC(2), RB, WO, 0, 0, 0, 0}, /* CVTBH */
|
||||
{ODC(2), RW, WO, 0, 0, 0, 0}, /* CVTWH */
|
||||
{ODC(2), RL, WO, 0, 0, 0, 0}, /* CVTLH */
|
||||
{ODC(2) +RB_O, RH, MO, 0, 0, 0, 0}, /* ADDH2 */
|
||||
{ODC(3) +RB_O, RH, RH, WO, 0, 0, 0}, /* ADDH3 */
|
||||
{ODC(2) +RB_O, RH, MO, 0, 0, 0, 0}, /* SUBH2 */
|
||||
{ODC(3) +RB_O, RH, RH, WO, 0, 0, 0}, /* SUBH3 */
|
||||
{ODC(2) +RB_O, RH, MO, 0, 0, 0, 0}, /* MULH2 */
|
||||
{ODC(3) +RB_O, RH, RH, WO, 0, 0, 0}, /* MULH3 */
|
||||
{ODC(2) +RB_O, RH, MO, 0, 0, 0, 0}, /* DIVH2 */
|
||||
{ODC(3) +RB_O, RH, RH, WO, 0, 0, 0}, /* DIVH3 */
|
||||
{ODC(2) +RB_B, RH, WB, 0, 0, 0, 0}, /* CVTHB */
|
||||
{ODC(2) +RB_W, RH, WW, 0, 0, 0, 0}, /* CVTHW */
|
||||
{ODC(2) +RB_L, RH, WL, 0, 0, 0, 0}, /* CVTHL */
|
||||
{ODC(2) +RB_O, RH, WL, 0, 0, 0, 0}, /* CVTRHL */
|
||||
{ODC(2) +RB_O, RB, WO, 0, 0, 0, 0}, /* CVTBH */
|
||||
{ODC(2) +RB_O, RW, WO, 0, 0, 0, 0}, /* CVTWH */
|
||||
{ODC(2) +RB_O, RL, WO, 0, 0, 0, 0}, /* CVTLH */
|
||||
{ODC(4), RH, RH, MO, BW, 0, 0}, /* ACBH */
|
||||
{ODC(2), RH, RO, 0, 0, 0, 0}, /* MOVH */
|
||||
{ODC(2) +RB_O, RH, RO, 0, 0, 0, 0}, /* MOVH */
|
||||
{ODC(2), RH, RH, 0, 0, 0, 0}, /* CMPH */
|
||||
{ODC(2), RH, WO, 0, 0, 0, 0}, /* MNEGH */
|
||||
{ODC(2) +RB_O, RH, WO, 0, 0, 0, 0}, /* MNEGH */
|
||||
{ODC(1), RH, 0, 0, 0, 0, 0}, /* TSTH */
|
||||
{ODC(5), RH, RW, RH, WL, WO, 0}, /* EMODH */
|
||||
{ODC(3), RH, RW, AB, 0, 0, 0}, /* POLYH */
|
||||
{ODC(2), RH, WQ, 0, 0, 0, 0}, /* CVTHG */
|
||||
{ODC(3) +RB_R3, RH, RW, AB, 0, 0, 0}, /* POLYH */
|
||||
{ODC(2) +RB_Q, RH, WQ, 0, 0, 0, 0}, /* CVTHG */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* reserved */
|
||||
{ODC(1), WO, 0, 0, 0, 0, 0}, /* CLRO */
|
||||
{ODC(2), RO, RO, 0, 0, 0, 0}, /* MOVO */
|
||||
{ODC(2), AO, WL, 0, 0, 0, 0}, /* MOVAO*/
|
||||
{ODC(1), AO, 0, 0, 0, 0, 0}, /* PUSHAO*/
|
||||
{ODC(1) +RB_O, WO, 0, 0, 0, 0, 0}, /* CLRO */
|
||||
{ODC(2) +RB_O, RO, RO, 0, 0, 0, 0}, /* MOVO */
|
||||
{ODC(2) +RB_L, AO, WL, 0, 0, 0, 0}, /* MOVAO*/
|
||||
{ODC(1) +RB_SP, AO, 0, 0, 0, 0, 0}, /* PUSHAO*/
|
||||
{0, 0, 0, 0, 0, 0, 0}, /* 180-18F */
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
|
@ -522,8 +525,8 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{ODC(2), RF, WO, 0, 0, 0, 0}, /* CVTFH */
|
||||
{2, RF, WQ, 0, 0, 0, 0}, /* CVTFG */
|
||||
{ODC(2) +RB_O, RF, WO, 0, 0, 0, 0}, /* CVTFH */
|
||||
{2 +RB_Q, RF, WQ, 0, 0, 0, 0}, /* CVTFG */
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
|
@ -616,8 +619,8 @@ const uint16 drom[NUM_INST][MAX_SPEC + 1] = {
|
|||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{ODC(2), RH, WL, 0, 0, 0, 0}, /* CVTHF */
|
||||
{ODC(2), RH, WQ, 0, 0, 0, 0}, /* CVTHD */
|
||||
{ODC(2) +RB_B, RH, WL, 0, 0, 0, 0}, /* CVTHF */
|
||||
{ODC(2) +RB_Q, RH, WQ, 0, 0, 0, 0}, /* CVTHD */
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0, 0, 0, 0, 0, 0},
|
||||
|
|
Loading…
Add table
Reference in a new issue