This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] Add RXv3 instructions.
- From: Yoshinori Sato <ysato at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 12 Jan 2019 16:31:04 -0000
- Subject: [binutils-gdb] Add RXv3 instructions.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4ce8c66d19abec8a768add7f6102e856157a3952
commit 4ce8c66d19abec8a768add7f6102e856157a3952
Author: Yoshinori Sato <ysato@users.sourceforge.jp>
Date: Sun Jan 6 00:06:49 2019 +0900
Add RXv3 instructions.
* rx-decode.opc (DSIZE): New. double size.
(_ld): New. dmov size attribute.
(PSCALE): Add double size.
(DCR, DDR, DDRH, DDRL, DCND): New. Double FPU registers.
(SCR, SDR, SDRH, SDRL): Likewise.
(S2DR, S2CR): Likewise.
(SDD): New. double displacement.
(DL): New. Set dmov size attribute.
(rx_decode_opcode): Add RXv3 instructions.
* rx-decode.c: Regenerate.
* rx-dis.c (size_names): Add double entry.
(opsize_names): Likewise.
(double_register_names): New. Double FPU registers.
(double_register_high_names): Likewise.
(double_register_low_names): Likewise.
(double_register_control_names): Likewise.
(double_condition_names): dcmp condition.
(print_insn_rx): Add bfmov / bfmovz output.
Add double FPU output.
Diff:
---
opcodes/rx-decode.c | 13543 ++++++++++++++++++++++++++++++------------------
opcodes/rx-decode.opc | 162 +-
opcodes/rx-dis.c | 64 +-
3 files changed, 8821 insertions(+), 4948 deletions(-)
diff --git a/opcodes/rx-decode.c b/opcodes/rx-decode.c
index 3ffc69f..6c1e1bd 100644
--- a/opcodes/rx-decode.c
+++ b/opcodes/rx-decode.c
@@ -45,6 +45,7 @@ static int trace = 0;
#define BSIZE 0
#define WSIZE 1
#define LSIZE 2
+#define DSIZE 3
/* These are for when the upper bits are "don't care" or "undefined". */
static int bwl[4] =
@@ -79,6 +80,12 @@ static int memex[4] =
RX_UWord
};
+static int _ld[2] =
+{
+ RX_Long,
+ RX_Double
+};
+
#define ID(x) rx->id = RXO_##x
#define OP(n,t,r,a) (rx->op[n].type = t, \
rx->op[n].reg = r, \
@@ -89,7 +96,7 @@ static int memex[4] =
/* This is for the BWL and BW bitfields. */
static int SCALE[] = { 1, 2, 4, 0 };
/* This is for the prefix size enum. */
-static int PSCALE[] = { 4, 1, 1, 1, 2, 2, 2, 3, 4 };
+static int PSCALE[] = { 4, 1, 1, 1, 2, 2, 2, 3, 4, 8 };
#define GET_SCALE(_indx) ((unsigned)(_indx) < ARRAY_SIZE (SCALE) ? SCALE[(_indx)] : 0)
#define GET_PSCALE(_indx) ((unsigned)(_indx) < ARRAY_SIZE (PSCALE) ? PSCALE[(_indx)] : 0)
@@ -115,6 +122,11 @@ static int dsp3map[] = { 8, 9, 10, 3, 4, 5, 6, 7 };
#define DIs(r,a,s) OP (0, RX_Operand_Indirect, r, (a) * GET_SCALE (s))
#define DD(t,r,s) rx_disp (0, t, r, bwl[s], ld);
#define DF(r) OP (0, RX_Operand_Flag, flagmap[r], 0)
+#define DCR(r) OP (0, RX_Operand_DoubleCReg, r, 0)
+#define DDR(r) OP (0, RX_Operand_DoubleReg, r, 0)
+#define DDRH(r) OP (0, RX_Operand_DoubleRegH, r, 0)
+#define DDRL(r) OP (0, RX_Operand_DoubleRegL, r, 0)
+#define DCND(r) OP (0, RX_Operand_DoubleCond, r, 0)
#define SC(i) OP (1, RX_Operand_Immediate, 0, i)
#define SR(r) OP (1, RX_Operand_Register, r, 0)
@@ -125,6 +137,10 @@ static int dsp3map[] = { 8, 9, 10, 3, 4, 5, 6, 7 };
#define SP(t,r) rx_disp (1, t, r, (t!=3) ? RX_UByte : RX_Long, ld); P(t, 1);
#define SPm(t,r,m) rx_disp (1, t, r, memex[m], ld); rx->op[1].size = memex[m];
#define Scc(cc) OP (1, RX_Operand_Condition, cc, 0)
+#define SCR(r) OP (1, RX_Operand_DoubleCReg, r, 0)
+#define SDR(r) OP (1, RX_Operand_DoubleReg, r, 0)
+#define SDRH(r) OP (1, RX_Operand_DoubleRegH, r, 0)
+#define SDRL(r) OP (1, RX_Operand_DoubleRegL, r, 0)
#define S2C(i) OP (2, RX_Operand_Immediate, 0, i)
#define S2R(r) OP (2, RX_Operand_Register, r, 0)
@@ -134,11 +150,16 @@ static int dsp3map[] = { 8, 9, 10, 3, 4, 5, 6, 7 };
#define S2P(t,r) rx_disp (2, t, r, (t!=3) ? RX_UByte : RX_Long, ld); P(t, 2);
#define S2Pm(t,r,m) rx_disp (2, t, r, memex[m], ld); rx->op[2].size = memex[m];
#define S2cc(cc) OP (2, RX_Operand_Condition, cc, 0)
+#define S2DR(r) OP (2, RX_Operand_DoubleReg, r, 0)
+#define S2CR(r) OP (2, RX_Operand_DoubleCReg, r, 0)
+
+#define SDD(t,r,s) rx_disp (1, t, r, bwl, ld);
#define BWL(sz) rx->op[0].size = rx->op[1].size = rx->op[2].size = rx->size = bwl[sz]
#define sBWL(sz) rx->op[0].size = rx->op[1].size = rx->op[2].size = rx->size = sbwl[sz]
#define uBW(sz) rx->op[0].size = rx->op[1].size = rx->op[2].size = rx->size = ubw[sz]
#define P(t, n) rx->op[n].size = (t!=3) ? RX_UByte : RX_Long;
+#define DL(sz) rx->op[0].size = rx->op[1].size = rx->op[2].size = rx->size = _ld[sz]
#define F(f) store_flags(rx, f)
@@ -299,7 +320,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("brk");
-#line 1029 "rx-decode.opc"
+#line 1050 "rx-decode.opc"
ID(brk);
}
@@ -314,7 +335,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("dbt");
-#line 1032 "rx-decode.opc"
+#line 1053 "rx-decode.opc"
ID(dbt);
}
@@ -329,7 +350,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("rts");
-#line 810 "rx-decode.opc"
+#line 831 "rx-decode.opc"
ID(rts);
/*----------------------------------------------------------------------*/
@@ -347,7 +368,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("nop");
-#line 816 "rx-decode.opc"
+#line 837 "rx-decode.opc"
ID(nop);
/*----------------------------------------------------------------------*/
@@ -365,7 +386,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("bra.a %a0");
-#line 788 "rx-decode.opc"
+#line 809 "rx-decode.opc"
ID(branch); DC(pc + IMMex(3));
}
@@ -380,7 +401,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("bsr.a %a0");
-#line 804 "rx-decode.opc"
+#line 825 "rx-decode.opc"
ID(jsr); DC(pc + IMMex(3));
}
@@ -397,13 +418,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_1:
{
/** 0000 0110 mx00 00ss rsrc rdst sub %2%S2, %1 */
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
int rdst AU = op[2] & 0x0f;
if (trace)
{
@@ -416,7 +437,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("sub %2%S2, %1");
-#line 546 "rx-decode.opc"
+#line 567 "rx-decode.opc"
ID(sub); S2Pm(ss, rsrc, mx); SR(rdst); DR(rdst); F_OSZC;
}
@@ -458,13 +479,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_2:
{
/** 0000 0110 mx00 01ss rsrc rdst cmp %2%S2, %1 */
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
int rdst AU = op[2] & 0x0f;
if (trace)
{
@@ -477,7 +498,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("cmp %2%S2, %1");
-#line 534 "rx-decode.opc"
+#line 555 "rx-decode.opc"
ID(sub); S2Pm(ss, rsrc, mx); SR(rdst); F_OSZC;
/*----------------------------------------------------------------------*/
@@ -522,13 +543,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_3:
{
/** 0000 0110 mx00 10ss rsrc rdst add %1%S1, %0 */
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
int rdst AU = op[2] & 0x0f;
if (trace)
{
@@ -541,7 +562,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("add %1%S1, %0");
-#line 510 "rx-decode.opc"
+#line 531 "rx-decode.opc"
ID(add); SPm(ss, rsrc, mx); DR(rdst); F_OSZC;
}
@@ -583,13 +604,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_4:
{
/** 0000 0110 mx00 11ss rsrc rdst mul %1%S1, %0 */
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
int rdst AU = op[2] & 0x0f;
if (trace)
{
@@ -602,7 +623,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("mul %1%S1, %0");
-#line 653 "rx-decode.opc"
+#line 674 "rx-decode.opc"
ID(mul); SPm(ss, rsrc, mx); DR(rdst); F_____;
}
@@ -644,13 +665,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_5:
{
/** 0000 0110 mx01 00ss rsrc rdst and %1%S1, %0 */
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
int rdst AU = op[2] & 0x0f;
if (trace)
{
@@ -663,7 +684,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("and %1%S1, %0");
-#line 423 "rx-decode.opc"
+#line 444 "rx-decode.opc"
ID(and); SPm(ss, rsrc, mx); DR(rdst); F__SZ_;
}
@@ -705,13 +726,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_6:
{
/** 0000 0110 mx01 01ss rsrc rdst or %1%S1, %0 */
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
int rsrc AU = (op[2] >> 4) & 0x0f;
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
int rdst AU = op[2] & 0x0f;
if (trace)
{
@@ -724,7 +745,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("or %1%S1, %0");
-#line 441 "rx-decode.opc"
+#line 462 "rx-decode.opc"
ID(or); SPm(ss, rsrc, mx); DR(rdst); F__SZ_;
}
@@ -770,13 +791,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_7:
{
/** 0000 0110 mx10 00sp 0000 0000 rsrc rdst sbb %1%S1, %0 */
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
int sp AU = op[1] & 0x03;
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -789,7 +810,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("sbb %1%S1, %0");
-#line 559 "rx-decode.opc"
+#line 580 "rx-decode.opc"
ID(sbb); SPm(sp, rsrc, mx); DR(rdst); F_OSZC;
/*----------------------------------------------------------------------*/
@@ -807,13 +828,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_8:
{
/** 0000 0110 mx10 00ss 0000 0100 rsrc rdst max %1%S1, %0 */
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -826,7 +847,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("max %1%S1, %0");
-#line 598 "rx-decode.opc"
+#line 619 "rx-decode.opc"
ID(max); SPm(ss, rsrc, mx); DR(rdst);
/*----------------------------------------------------------------------*/
@@ -844,13 +865,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_9:
{
/** 0000 0110 mx10 00ss 0000 0101 rsrc rdst min %1%S1, %0 */
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -863,7 +884,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("min %1%S1, %0");
-#line 610 "rx-decode.opc"
+#line 631 "rx-decode.opc"
ID(min); SPm(ss, rsrc, mx); DR(rdst);
/*----------------------------------------------------------------------*/
@@ -881,13 +902,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_10:
{
/** 0000 0110 mx10 00ss 0000 0110 rsrc rdst emul %1%S1, %0 */
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -900,7 +921,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("emul %1%S1, %0");
-#line 668 "rx-decode.opc"
+#line 689 "rx-decode.opc"
ID(emul); SPm(ss, rsrc, mx); DR(rdst);
/*----------------------------------------------------------------------*/
@@ -918,13 +939,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_11:
{
/** 0000 0110 mx10 00ss 0000 0111 rsrc rdst emulu %1%S1, %0 */
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -937,7 +958,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("emulu %1%S1, %0");
-#line 680 "rx-decode.opc"
+#line 701 "rx-decode.opc"
ID(emulu); SPm(ss, rsrc, mx); DR(rdst);
/*----------------------------------------------------------------------*/
@@ -955,13 +976,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_12:
{
/** 0000 0110 mx10 00ss 0000 1000 rsrc rdst div %1%S1, %0 */
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -974,7 +995,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("div %1%S1, %0");
-#line 692 "rx-decode.opc"
+#line 713 "rx-decode.opc"
ID(div); SPm(ss, rsrc, mx); DR(rdst); F_O___;
/*----------------------------------------------------------------------*/
@@ -992,13 +1013,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_13:
{
/** 0000 0110 mx10 00ss 0000 1001 rsrc rdst divu %1%S1, %0 */
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -1011,7 +1032,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("divu %1%S1, %0");
-#line 704 "rx-decode.opc"
+#line 725 "rx-decode.opc"
ID(divu); SPm(ss, rsrc, mx); DR(rdst); F_O___;
/*----------------------------------------------------------------------*/
@@ -1029,13 +1050,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_14:
{
/** 0000 0110 mx10 00ss 0000 1100 rsrc rdst tst %1%S1, %2 */
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -1048,7 +1069,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("tst %1%S1, %2");
-#line 477 "rx-decode.opc"
+#line 498 "rx-decode.opc"
ID(and); SPm(ss, rsrc, mx); S2R(rdst); F__SZ_;
/*----------------------------------------------------------------------*/
@@ -1066,13 +1087,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_15:
{
/** 0000 0110 mx10 00ss 0000 1101 rsrc rdst xor %1%S1, %0 */
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -1085,7 +1106,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("xor %1%S1, %0");
-#line 456 "rx-decode.opc"
+#line 477 "rx-decode.opc"
ID(xor); SPm(ss, rsrc, mx); DR(rdst); F__SZ_;
/*----------------------------------------------------------------------*/
@@ -1103,13 +1124,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_16:
{
/** 0000 0110 mx10 00ss 0001 0000 rsrc rdst xchg %1%S1, %0 */
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -1122,7 +1143,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("xchg %1%S1, %0");
-#line 390 "rx-decode.opc"
+#line 411 "rx-decode.opc"
ID(xchg); DR(rdst); SPm(ss, rsrc, mx);
/*----------------------------------------------------------------------*/
@@ -1140,13 +1161,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_17:
{
/** 0000 0110 mx10 00sd 0001 0001 rsrc rdst itof %1%S1, %0 */
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
int sd AU = op[1] & 0x03;
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -1159,7 +1180,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("itof %1%S1, %0");
-#line 933 "rx-decode.opc"
+#line 954 "rx-decode.opc"
ID(itof); DR (rdst); SPm(sd, rsrc, mx); F__SZ_;
/*----------------------------------------------------------------------*/
@@ -1177,13 +1198,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_18:
{
/** 0000 0110 mx10 00sd 0001 0101 rsrc rdst utof %1%S1, %0 */
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
int mx AU = (op[1] >> 6) & 0x03;
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
int sd AU = op[1] & 0x03;
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -1196,9 +1217,12 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("utof %1%S1, %0");
-#line 1119 "rx-decode.opc"
+#line 1140 "rx-decode.opc"
ID(utof); DR (rdst); SPm(sd, rsrc, mx); F__SZ_;
+ /*----------------------------------------------------------------------*/
+ /* RXv3 enhanced */
+
}
break;
}
@@ -2464,11 +2488,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_19:
{
/** 0000 0110 1010 00ss 0000 0010 rsrc rdst adc %1%S1, %0 */
-#line 498 "rx-decode.opc"
+#line 519 "rx-decode.opc"
int ss AU = op[1] & 0x03;
-#line 498 "rx-decode.opc"
+#line 519 "rx-decode.opc"
int rsrc AU = (op[3] >> 4) & 0x0f;
-#line 498 "rx-decode.opc"
+#line 519 "rx-decode.opc"
int rdst AU = op[3] & 0x0f;
if (trace)
{
@@ -2480,7 +2504,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("adc %1%S1, %0");
-#line 498 "rx-decode.opc"
+#line 519 "rx-decode.opc"
ID(adc); SPm(ss, rsrc, 2); DR(rdst); F_OSZC;
/*----------------------------------------------------------------------*/
@@ -3653,7 +3677,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0x0f:
{
/** 0000 1dsp bra.s %a0 */
-#line 779 "rx-decode.opc"
+#line 800 "rx-decode.opc"
int dsp AU = op[0] & 0x07;
if (trace)
{
@@ -3663,7 +3687,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" dsp = 0x%x\n", dsp);
}
SYNTAX("bra.s %a0");
-#line 779 "rx-decode.opc"
+#line 800 "rx-decode.opc"
ID(branch); DC(pc + dsp3map[dsp]);
}
@@ -3686,9 +3710,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x1f:
{
/** 0001 n dsp b%1.s %a0 */
-#line 769 "rx-decode.opc"
+#line 790 "rx-decode.opc"
int n AU = (op[0] >> 3) & 0x01;
-#line 769 "rx-decode.opc"
+#line 790 "rx-decode.opc"
int dsp AU = op[0] & 0x07;
if (trace)
{
@@ -3699,7 +3723,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" dsp = 0x%x\n", dsp);
}
SYNTAX("b%1.s %a0");
-#line 769 "rx-decode.opc"
+#line 790 "rx-decode.opc"
ID(branch); Scc(n); DC(pc + dsp3map[dsp]);
}
@@ -3721,7 +3745,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0x2f:
{
/** 0010 cond b%1.b %a0 */
-#line 772 "rx-decode.opc"
+#line 793 "rx-decode.opc"
int cond AU = op[0] & 0x0f;
if (trace)
{
@@ -3731,7 +3755,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" cond = 0x%x\n", cond);
}
SYNTAX("b%1.b %a0");
-#line 772 "rx-decode.opc"
+#line 793 "rx-decode.opc"
ID(branch); Scc(cond); DC(pc + IMMex (1));
}
@@ -3746,7 +3770,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("bra.b %a0");
-#line 782 "rx-decode.opc"
+#line 803 "rx-decode.opc"
ID(branch); DC(pc + IMMex(1));
}
@@ -3761,7 +3785,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("bra.w %a0");
-#line 785 "rx-decode.opc"
+#line 806 "rx-decode.opc"
ID(branch); DC(pc + IMMex(2));
}
@@ -3776,7 +3800,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("bsr.w %a0");
-#line 801 "rx-decode.opc"
+#line 822 "rx-decode.opc"
ID(jsr); DC(pc + IMMex(2));
}
@@ -3785,7 +3809,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0x3b:
{
/** 0011 101c b%1.w %a0 */
-#line 775 "rx-decode.opc"
+#line 796 "rx-decode.opc"
int c AU = op[0] & 0x01;
if (trace)
{
@@ -3795,7 +3819,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" c = 0x%x\n", c);
}
SYNTAX("b%1.w %a0");
-#line 775 "rx-decode.opc"
+#line 796 "rx-decode.opc"
ID(branch); Scc(c); DC(pc + IMMex (2));
@@ -3809,13 +3833,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_20:
{
/** 0011 11sz d dst sppp mov%s #%1, %0 */
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
int sz AU = op[0] & 0x03;
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
int d AU = (op[1] >> 7) & 0x01;
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
int dst AU = (op[1] >> 4) & 0x07;
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
int sppp AU = op[1] & 0x0f;
if (trace)
{
@@ -3828,7 +3852,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" sppp = 0x%x\n", sppp);
}
SYNTAX("mov%s #%1, %0");
-#line 311 "rx-decode.opc"
+#line 332 "rx-decode.opc"
ID(mov); sBWL (sz); DIs(dst, d*16+sppp, sz); SC(IMM(1)); F_____;
}
@@ -3860,9 +3884,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0011 1111 rega regb rtsd #%1, %2-%0 */
-#line 408 "rx-decode.opc"
+#line 429 "rx-decode.opc"
int rega AU = (op[1] >> 4) & 0x0f;
-#line 408 "rx-decode.opc"
+#line 429 "rx-decode.opc"
int regb AU = op[1] & 0x0f;
if (trace)
{
@@ -3873,7 +3897,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" regb = 0x%x\n", regb);
}
SYNTAX("rtsd #%1, %2-%0");
-#line 408 "rx-decode.opc"
+#line 429 "rx-decode.opc"
ID(rtsd); SC(IMM(1) * 4); S2R(rega); DR(regb);
/*----------------------------------------------------------------------*/
@@ -3891,11 +3915,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_21:
{
/** 0100 00ss rsrc rdst sub %2%S2, %1 */
-#line 543 "rx-decode.opc"
+#line 564 "rx-decode.opc"
int ss AU = op[0] & 0x03;
-#line 543 "rx-decode.opc"
+#line 564 "rx-decode.opc"
int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 543 "rx-decode.opc"
+#line 564 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -3907,7 +3931,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("sub %2%S2, %1");
-#line 543 "rx-decode.opc"
+#line 564 "rx-decode.opc"
ID(sub); S2P(ss, rsrc); SR(rdst); DR(rdst); F_OSZC;
}
@@ -3949,11 +3973,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_22:
{
/** 0100 01ss rsrc rdst cmp %2%S2, %1 */
-#line 531 "rx-decode.opc"
+#line 552 "rx-decode.opc"
int ss AU = op[0] & 0x03;
-#line 531 "rx-decode.opc"
+#line 552 "rx-decode.opc"
int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 531 "rx-decode.opc"
+#line 552 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -3965,7 +3989,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("cmp %2%S2, %1");
-#line 531 "rx-decode.opc"
+#line 552 "rx-decode.opc"
ID(sub); S2P(ss, rsrc); SR(rdst); F_OSZC;
}
@@ -4007,11 +4031,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_23:
{
/** 0100 10ss rsrc rdst add %1%S1, %0 */
-#line 507 "rx-decode.opc"
+#line 528 "rx-decode.opc"
int ss AU = op[0] & 0x03;
-#line 507 "rx-decode.opc"
+#line 528 "rx-decode.opc"
int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 507 "rx-decode.opc"
+#line 528 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4023,7 +4047,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("add %1%S1, %0");
-#line 507 "rx-decode.opc"
+#line 528 "rx-decode.opc"
ID(add); SP(ss, rsrc); DR(rdst); F_OSZC;
}
@@ -4065,11 +4089,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_24:
{
/** 0100 11ss rsrc rdst mul %1%S1, %0 */
-#line 650 "rx-decode.opc"
+#line 671 "rx-decode.opc"
int ss AU = op[0] & 0x03;
-#line 650 "rx-decode.opc"
+#line 671 "rx-decode.opc"
int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 650 "rx-decode.opc"
+#line 671 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4081,7 +4105,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("mul %1%S1, %0");
-#line 650 "rx-decode.opc"
+#line 671 "rx-decode.opc"
ID(mul); SP(ss, rsrc); DR(rdst); F_____;
}
@@ -4123,11 +4147,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_25:
{
/** 0101 00ss rsrc rdst and %1%S1, %0 */
-#line 420 "rx-decode.opc"
+#line 441 "rx-decode.opc"
int ss AU = op[0] & 0x03;
-#line 420 "rx-decode.opc"
+#line 441 "rx-decode.opc"
int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 420 "rx-decode.opc"
+#line 441 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4139,7 +4163,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("and %1%S1, %0");
-#line 420 "rx-decode.opc"
+#line 441 "rx-decode.opc"
ID(and); SP(ss, rsrc); DR(rdst); F__SZ_;
}
@@ -4181,11 +4205,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_26:
{
/** 0101 01ss rsrc rdst or %1%S1, %0 */
-#line 438 "rx-decode.opc"
+#line 459 "rx-decode.opc"
int ss AU = op[0] & 0x03;
-#line 438 "rx-decode.opc"
+#line 459 "rx-decode.opc"
int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 438 "rx-decode.opc"
+#line 459 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4197,7 +4221,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("or %1%S1, %0");
-#line 438 "rx-decode.opc"
+#line 459 "rx-decode.opc"
ID(or); SP(ss, rsrc); DR(rdst); F__SZ_;
}
@@ -4239,13 +4263,13 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_27:
{
/** 0101 1 s ss rsrc rdst movu%s %1, %0 */
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
int s AU = (op[0] >> 2) & 0x01;
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
int ss AU = op[0] & 0x03;
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4258,7 +4282,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("movu%s %1, %0");
-#line 359 "rx-decode.opc"
+#line 380 "rx-decode.opc"
ID(mov); uBW(s); SD(ss, rsrc, s); DR(rdst); F_____;
}
@@ -4335,9 +4359,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0110 0000 immm rdst sub #%2, %0 */
-#line 540 "rx-decode.opc"
+#line 561 "rx-decode.opc"
int immm AU = (op[1] >> 4) & 0x0f;
-#line 540 "rx-decode.opc"
+#line 561 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4348,7 +4372,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("sub #%2, %0");
-#line 540 "rx-decode.opc"
+#line 561 "rx-decode.opc"
ID(sub); S2C(immm); SR(rdst); DR(rdst); F_OSZC;
}
@@ -4362,9 +4386,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0110 0001 immm rdst cmp #%2, %1 */
-#line 522 "rx-decode.opc"
+#line 543 "rx-decode.opc"
int immm AU = (op[1] >> 4) & 0x0f;
-#line 522 "rx-decode.opc"
+#line 543 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4375,7 +4399,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("cmp #%2, %1");
-#line 522 "rx-decode.opc"
+#line 543 "rx-decode.opc"
ID(sub); S2C(immm); SR(rdst); F_OSZC;
}
@@ -4389,9 +4413,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0110 0010 immm rdst add #%1, %0 */
-#line 504 "rx-decode.opc"
+#line 525 "rx-decode.opc"
int immm AU = (op[1] >> 4) & 0x0f;
-#line 504 "rx-decode.opc"
+#line 525 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4402,7 +4426,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("add #%1, %0");
-#line 504 "rx-decode.opc"
+#line 525 "rx-decode.opc"
ID(add); SC(immm); DR(rdst); F_OSZC;
}
@@ -4416,9 +4440,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0110 0011 immm rdst mul #%1, %0 */
-#line 616 "rx-decode.opc"
+#line 637 "rx-decode.opc"
int immm AU = (op[1] >> 4) & 0x0f;
-#line 616 "rx-decode.opc"
+#line 637 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4429,7 +4453,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("mul #%1, %0");
-#line 616 "rx-decode.opc"
+#line 637 "rx-decode.opc"
if (immm == 1 && rdst == 0)
{
ID(nop2);
@@ -4452,9 +4476,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0110 0100 immm rdst and #%1, %0 */
-#line 414 "rx-decode.opc"
+#line 435 "rx-decode.opc"
int immm AU = (op[1] >> 4) & 0x0f;
-#line 414 "rx-decode.opc"
+#line 435 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4465,7 +4489,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("and #%1, %0");
-#line 414 "rx-decode.opc"
+#line 435 "rx-decode.opc"
ID(and); SC(immm); DR(rdst); F__SZ_;
}
@@ -4479,9 +4503,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0110 0101 immm rdst or #%1, %0 */
-#line 432 "rx-decode.opc"
+#line 453 "rx-decode.opc"
int immm AU = (op[1] >> 4) & 0x0f;
-#line 432 "rx-decode.opc"
+#line 453 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4492,7 +4516,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("or #%1, %0");
-#line 432 "rx-decode.opc"
+#line 453 "rx-decode.opc"
ID(or); SC(immm); DR(rdst); F__SZ_;
}
@@ -4506,9 +4530,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0110 0110 immm rdst mov%s #%1, %0 */
-#line 308 "rx-decode.opc"
+#line 329 "rx-decode.opc"
int immm AU = (op[1] >> 4) & 0x0f;
-#line 308 "rx-decode.opc"
+#line 329 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4519,7 +4543,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("mov%s #%1, %0");
-#line 308 "rx-decode.opc"
+#line 329 "rx-decode.opc"
ID(mov); DR(rdst); SC(immm); F_____;
}
@@ -4536,7 +4560,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0]);
}
SYNTAX("rtsd #%1");
-#line 405 "rx-decode.opc"
+#line 426 "rx-decode.opc"
ID(rtsd); SC(IMM(1) * 4);
}
@@ -4549,11 +4573,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_28:
{
/** 0110 100i mmmm rdst shlr #%2, %0 */
-#line 730 "rx-decode.opc"
+#line 751 "rx-decode.opc"
int i AU = op[0] & 0x01;
-#line 730 "rx-decode.opc"
+#line 751 "rx-decode.opc"
int mmmm AU = (op[1] >> 4) & 0x0f;
-#line 730 "rx-decode.opc"
+#line 751 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4565,7 +4589,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("shlr #%2, %0");
-#line 730 "rx-decode.opc"
+#line 751 "rx-decode.opc"
ID(shlr); S2C(i*16+mmmm); SR(rdst); DR(rdst); F__SZC;
}
@@ -4589,11 +4613,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_29:
{
/** 0110 101i mmmm rdst shar #%2, %0 */
-#line 720 "rx-decode.opc"
+#line 741 "rx-decode.opc"
int i AU = op[0] & 0x01;
-#line 720 "rx-decode.opc"
+#line 741 "rx-decode.opc"
int mmmm AU = (op[1] >> 4) & 0x0f;
-#line 720 "rx-decode.opc"
+#line 741 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4605,7 +4629,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("shar #%2, %0");
-#line 720 "rx-decode.opc"
+#line 741 "rx-decode.opc"
ID(shar); S2C(i*16+mmmm); SR(rdst); DR(rdst); F_0SZC;
}
@@ -4629,11 +4653,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_30:
{
/** 0110 110i mmmm rdst shll #%2, %0 */
-#line 710 "rx-decode.opc"
+#line 731 "rx-decode.opc"
int i AU = op[0] & 0x01;
-#line 710 "rx-decode.opc"
+#line 731 "rx-decode.opc"
int mmmm AU = (op[1] >> 4) & 0x0f;
-#line 710 "rx-decode.opc"
+#line 731 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4645,7 +4669,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("shll #%2, %0");
-#line 710 "rx-decode.opc"
+#line 731 "rx-decode.opc"
ID(shll); S2C(i*16+mmmm); SR(rdst); DR(rdst); F_OSZC;
}
@@ -4668,9 +4692,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0110 1110 dsta dstb pushm %1-%2 */
-#line 372 "rx-decode.opc"
+#line 393 "rx-decode.opc"
int dsta AU = (op[1] >> 4) & 0x0f;
-#line 372 "rx-decode.opc"
+#line 393 "rx-decode.opc"
int dstb AU = op[1] & 0x0f;
if (trace)
{
@@ -4681,7 +4705,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" dstb = 0x%x\n", dstb);
}
SYNTAX("pushm %1-%2");
-#line 372 "rx-decode.opc"
+#line 393 "rx-decode.opc"
ID(pushm); SR(dsta); S2R(dstb); F_____;
}
@@ -4695,9 +4719,9 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0110 1111 dsta dstb popm %1-%2 */
-#line 369 "rx-decode.opc"
+#line 390 "rx-decode.opc"
int dsta AU = (op[1] >> 4) & 0x0f;
-#line 369 "rx-decode.opc"
+#line 390 "rx-decode.opc"
int dstb AU = op[1] & 0x0f;
if (trace)
{
@@ -4708,7 +4732,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" dstb = 0x%x\n", dstb);
}
SYNTAX("popm %1-%2");
-#line 369 "rx-decode.opc"
+#line 390 "rx-decode.opc"
ID(popm); SR(dsta); S2R(dstb); F_____;
}
@@ -4723,11 +4747,11 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_31:
{
/** 0111 00im rsrc rdst add #%1, %2, %0 */
-#line 513 "rx-decode.opc"
+#line 534 "rx-decode.opc"
int im AU = op[0] & 0x03;
-#line 513 "rx-decode.opc"
+#line 534 "rx-decode.opc"
int rsrc AU = (op[1] >> 4) & 0x0f;
-#line 513 "rx-decode.opc"
+#line 534 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4739,7 +4763,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("add #%1, %2, %0");
-#line 513 "rx-decode.opc"
+#line 534 "rx-decode.opc"
ID(add); SC(IMMex(im)); S2R(rsrc); DR(rdst); F_OSZC;
}
@@ -4781,9 +4805,9 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_32:
{
/** 0111 01im 0000 rsrc cmp #%2, %1%S1 */
-#line 525 "rx-decode.opc"
+#line 546 "rx-decode.opc"
int im AU = op[0] & 0x03;
-#line 525 "rx-decode.opc"
+#line 546 "rx-decode.opc"
int rsrc AU = op[1] & 0x0f;
if (trace)
{
@@ -4794,7 +4818,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rsrc = 0x%x\n", rsrc);
}
SYNTAX("cmp #%2, %1%S1");
-#line 525 "rx-decode.opc"
+#line 546 "rx-decode.opc"
ID(sub); SR(rsrc); S2C(IMMex(im)); F_OSZC;
}
@@ -4803,9 +4827,9 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_33:
{
/** 0111 01im 0001rdst mul #%1, %0 */
-#line 628 "rx-decode.opc"
+#line 649 "rx-decode.opc"
int im AU = op[0] & 0x03;
-#line 628 "rx-decode.opc"
+#line 649 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4816,7 +4840,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("mul #%1, %0");
-#line 628 "rx-decode.opc"
+#line 649 "rx-decode.opc"
int val = IMMex(im);
if (val == 1 && rdst == 0)
{
@@ -4844,9 +4868,9 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_34:
{
/** 0111 01im 0010 rdst and #%1, %0 */
-#line 417 "rx-decode.opc"
+#line 438 "rx-decode.opc"
int im AU = op[0] & 0x03;
-#line 417 "rx-decode.opc"
+#line 438 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4857,7 +4881,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("and #%1, %0");
-#line 417 "rx-decode.opc"
+#line 438 "rx-decode.opc"
ID(and); SC(IMMex(im)); DR(rdst); F__SZ_;
}
@@ -4866,9 +4890,9 @@ rx_decode_opcode (unsigned long pc AU,
op_semantics_35:
{
/** 0111 01im 0011 rdst or #%1, %0 */
-#line 435 "rx-decode.opc"
+#line 456 "rx-decode.opc"
int im AU = op[0] & 0x03;
-#line 435 "rx-decode.opc"
+#line 456 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4879,7 +4903,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("or #%1, %0");
-#line 435 "rx-decode.opc"
+#line 456 "rx-decode.opc"
ID(or); SC(IMMex(im)); DR(rdst); F__SZ_;
}
@@ -4981,7 +5005,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0x4f:
{
/** 0111 0101 0100 rdst mov%s #%1, %0 */
-#line 289 "rx-decode.opc"
+#line 310 "rx-decode.opc"
int rdst AU = op[1] & 0x0f;
if (trace)
{
@@ -4991,7 +5015,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rdst = 0x%x\n", rdst);
}
SYNTAX("mov%s #%1, %0");
-#line 289 "rx-decode.opc"
+#line 310 "rx-decode.opc"
ID(mov); DR(rdst); SC(IMM (1)); F_____;
}
@@ -5014,7 +5038,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0x5f:
{
/** 0111 0101 0101 rsrc cmp #%2, %1 */
-#line 528 "rx-decode.opc"
+#line 549 "rx-decode.opc"
int rsrc AU = op[1] & 0x0f;
if (trace)
{
@@ -5024,7 +5048,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" rsrc = 0x%x\n", rsrc);
}
SYNTAX("cmp #%2, %1");
-#line 528 "rx-decode.opc"
+#line 549 "rx-decode.opc"
ID(sub); SR(rsrc); S2C(IMM(1)); F_OSZC;
}
@@ -5039,7 +5063,7 @@ rx_decode_opcode (unsigned long pc AU,
op[0], op[1]);
}
SYNTAX("int #%1");
-#line 1035 "rx-decode.opc"
+#line 1056 "rx-decode.opc"
ID(int); SC(IMM(1));
}
@@ -5051,7 +5075,7 @@ rx_decode_opcode (unsigned long pc AU,
case 0x00:
{
/** 0111 0101 0111 0000 0000 immm mvtipl #%1 */
-#line 1002 "rx-decode.opc"
+#line 1023 "rx-decode.opc"
int immm AU = op[2] & 0x0f;
if (trace)
{
@@ -5061,7 +5085,7 @@ rx_decode_opcode (unsigned long pc AU,
printf (" immm = 0x%x\n", immm);
}
SYNTAX("mvtipl #%1");
-#line 1002 "rx-decode.opc"
+#line 1023 "rx-decode.opc"
ID(mvtipl); SC(immm);
}
@@ -5069,6702 +5093,10167 @@ rx_decode_opcode (unsigned long pc AU,
default: UNSUPPORTED(); break;
}
break;
- default: UNSUPPORTED(); break;
- }
- break;
- case 0x76:
- GETBYTE ();
- switch (op[1] & 0xf0)
- {
- case 0x00:
- goto op_semantics_32;
- break;
- case 0x10:
- goto op_semantics_33;
- break;
- case 0x20:
- goto op_semantics_34;
- break;
- case 0x30:
- goto op_semantics_35;
+ case 0x90:
+ GETBYTE ();
+ switch (op[2] & 0xff)
+ {
+ case 0x1b:
+ {
+ /** 0111 0101 1001 0000 0001 1011 mvfdr */
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 0111 0101 1001 0000 0001 1011 mvfdr */",
+ op[0], op[1], op[2]);
+ }
+ SYNTAX("mvfdr");
+#line 1229 "rx-decode.opc"
+ ID(mvfdr); F_____;
+
+ }
+ break;
+ default: UNSUPPORTED(); break;
+ }
break;
- default: UNSUPPORTED(); break;
- }
- break;
- case 0x77:
- GETBYTE ();
- switch (op[1] & 0xf0)
- {
- case 0x00:
- goto op_semantics_32;
- break;
- case 0x10:
- goto op_semantics_33;
- break;
- case 0x20:
- goto op_semantics_34;
- break;
- case 0x30:
- goto op_semantics_35;
- break;
- default: UNSUPPORTED(); break;
- }
- break;
- case 0x78:
- GETBYTE ();
- switch (op[1] & 0x00)
- {
- case 0x00:
- op_semantics_36:
+ case 0xa0:
+ GETBYTE ();
+ switch (op[2] & 0x00)
{
- /** 0111 100b ittt rdst bset #%1, %0 */
-#line 947 "rx-decode.opc"
- int b AU = op[0] & 0x01;
-#line 947 "rx-decode.opc"
- int ittt AU = (op[1] >> 4) & 0x0f;
-#line 947 "rx-decode.opc"
- int rdst AU = op[1] & 0x0f;
- if (trace)
- {
- printf ("\033[33m%s\033[0m %02x %02x\n",
- "/** 0111 100b ittt rdst bset #%1, %0 */",
- op[0], op[1]);
- printf (" b = 0x%x,", b);
- printf (" ittt = 0x%x,", ittt);
- printf (" rdst = 0x%x\n", rdst);
- }
- SYNTAX("bset #%1, %0");
-#line 947 "rx-decode.opc"
- ID(bset); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;
-
+ case 0x00:
+ {
+ /** 0111 0101 1010 0000 rdst rnum dpushm.l %1-%2 */
+#line 1223 "rx-decode.opc"
+ int rdst AU = (op[2] >> 4) & 0x0f;
+#line 1223 "rx-decode.opc"
+ int rnum AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 0111 0101 1010 0000 rdst rnum dpushm.l %1-%2 */",
+ op[0], op[1], op[2]);
+ printf (" rdst = 0x%x,", rdst);
+ printf (" rnum = 0x%x\n", rnum);
+ }
+ SYNTAX("dpushm.l %1-%2");
+#line 1223 "rx-decode.opc"
+ ID(dpushm); SCR(rdst); S2CR(rdst + rnum); F_____;
+ }
+ break;
}
break;
- }
- break;
- case 0x79:
- GETBYTE ();
- switch (op[1] & 0x00)
- {
- case 0x00:
- goto op_semantics_36;
- break;
- }
- break;
- case 0x7a:
- GETBYTE ();
- switch (op[1] & 0x00)
- {
- case 0x00:
- op_semantics_37:
+ case 0xa8:
+ GETBYTE ();
+ switch (op[2] & 0x00)
{
- /** 0111 101b ittt rdst bclr #%1, %0 */
-#line 959 "rx-decode.opc"
- int b AU = op[0] & 0x01;
-#line 959 "rx-decode.opc"
- int ittt AU = (op[1] >> 4) & 0x0f;
-#line 959 "rx-decode.opc"
- int rdst AU = op[1] & 0x0f;
- if (trace)
- {
- printf ("\033[33m%s\033[0m %02x %02x\n",
- "/** 0111 101b ittt rdst bclr #%1, %0 */",
- op[0], op[1]);
- printf (" b = 0x%x,", b);
- printf (" ittt = 0x%x,", ittt);
- printf (" rdst = 0x%x\n", rdst);
- }
- SYNTAX("bclr #%1, %0");
-#line 959 "rx-decode.opc"
- ID(bclr); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;
-
+ case 0x00:
+ {
+ /** 0111 0101 1010 1000 rdst rnum dpopm.l %1-%2 */
+#line 1217 "rx-decode.opc"
+ int rdst AU = (op[2] >> 4) & 0x0f;
+#line 1217 "rx-decode.opc"
+ int rnum AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 0111 0101 1010 1000 rdst rnum dpopm.l %1-%2 */",
+ op[0], op[1], op[2]);
+ printf (" rdst = 0x%x,", rdst);
+ printf (" rnum = 0x%x\n", rnum);
+ }
+ SYNTAX("dpopm.l %1-%2");
+#line 1217 "rx-decode.opc"
+ ID(dpopm); SCR(rdst); S2CR(rdst + rnum); F_____;
+ }
+ break;
}
break;
- }
- break;
- case 0x7b:
- GETBYTE ();
- switch (op[1] & 0x00)
- {
- case 0x00:
- goto op_semantics_37;
- break;
- }
- break;
- case 0x7c:
- GETBYTE ();
- switch (op[1] & 0x00)
- {
- case 0x00:
- op_semantics_38:
+ case 0xb0:
+ GETBYTE ();
+ switch (op[2] & 0x00)
{
- /** 0111 110b ittt rdst btst #%2, %1 */
-#line 971 "rx-decode.opc"
- int b AU = op[0] & 0x01;
-#line 971 "rx-decode.opc"
- int ittt AU = (op[1] >> 4) & 0x0f;
-#line 971 "rx-decode.opc"
- int rdst AU = op[1] & 0x0f;
- if (trace)
- {
- printf ("\033[33m%s\033[0m %02x %02x\n",
- "/** 0111 110b ittt rdst btst #%2, %1 */",
- op[0], op[1]);
- printf (" b = 0x%x,", b);
- printf (" ittt = 0x%x,", ittt);
- printf (" rdst = 0x%x\n", rdst);
- }
- SYNTAX("btst #%2, %1");
-#line 971 "rx-decode.opc"
- ID(btst); BWL(LSIZE); S2C(b*16+ittt); SR(rdst); F___ZC;
-
+ case 0x00:
+ {
+ /** 0111 0101 1011 0000 rdst rnum dpushm.d %1-%2 */
+#line 1220 "rx-decode.opc"
+ int rdst AU = (op[2] >> 4) & 0x0f;
+#line 1220 "rx-decode.opc"
+ int rnum AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 0111 0101 1011 0000 rdst rnum dpushm.d %1-%2 */",
+ op[0], op[1], op[2]);
+ printf (" rdst = 0x%x,", rdst);
+ printf (" rnum = 0x%x\n", rnum);
+ }
+ SYNTAX("dpushm.d %1-%2");
+#line 1220 "rx-decode.opc"
+ ID(dpushm); SDR(rdst); S2DR(rdst + rnum); F_____;
+ }
+ break;
}
break;
- }
- break;
- case 0x7d:
- GETBYTE ();
- switch (op[1] & 0x00)
- {
- case 0x00:
- goto op_semantics_38;
+ case 0xb8:
+ GETBYTE ();
+ switch (op[2] & 0x00)
+ {
+ case 0x00:
+ {
+ /** 0111 0101 1011 1000 rdst rnum dpopm.d %1-%2 */
+#line 1214 "rx-decode.opc"
+ int rdst AU = (op[2] >> 4) & 0x0f;
+#line 1214 "rx-decode.opc"
+ int rnum AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 0111 0101 1011 1000 rdst rnum dpopm.d %1-%2 */",
+ op[0], op[1], op[2]);
+ printf (" rdst = 0x%x,", rdst);
+ printf (" rnum = 0x%x\n", rnum);
+ }
+ SYNTAX("dpopm.d %1-%2");
+#line 1214 "rx-decode.opc"
+ ID(dpopm); SDR(rdst); S2DR(rdst + rnum); F_____;
+
+ }
+ break;
+ }
break;
+ default: UNSUPPORTED(); break;
}
break;
- case 0x7e:
+ case 0x76:
GETBYTE ();
- switch (op[1] & 0xf0)
+ switch (op[1] & 0xff)
{
case 0x00:
- {
- /** 0111 1110 0000 rdst not %0 */
-#line 462 "rx-decode.opc"
- int rdst AU = op[1] & 0x0f;
- if (trace)
- {
- printf ("\033[33m%s\033[0m %02x %02x\n",
- "/** 0111 1110 0000 rdst not %0 */",
- op[0], op[1]);
- printf (" rdst = 0x%x\n", rdst);
- }
- SYNTAX("not %0");
-#line 462 "rx-decode.opc"
- ID(xor); DR(rdst); SR(rdst); S2C(~0); F__SZ_;
-
- }
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case 0x09:
+ case 0x0a:
+ case 0x0b:
+ case 0x0c:
+ case 0x0d:
+ case 0x0e:
+ case 0x0f:
+ goto op_semantics_32;
break;
case 0x10:
- {
- /** 0111 1110 0001 rdst neg %0 */
-#line 483 "rx-decode.opc"
- int rdst AU = op[1] & 0x0f;
- if (trace)
- {
- printf ("\033[33m%s\033[0m %02x %02x\n",
- "/** 0111 1110 0001 rdst neg %0 */",
- op[0], op[1]);
- printf (" rdst = 0x%x\n", rdst);
- }
- SYNTAX("neg %0");
-#line 483 "rx-decode.opc"
- ID(sub); DR(rdst); SC(0); S2R(rdst); F_OSZC;
-
- }
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1a:
+ case 0x1b:
+ case 0x1c:
+ case 0x1d:
+ case 0x1e:
+ case 0x1f:
+ goto op_semantics_33;
break;
case 0x20:
- {
- /** 0111 1110 0010 rdst abs %0 */
-#line 565 "rx-decode.opc"
- int rdst AU = op[1] & 0x0f;
- if (trace)
- {
- printf ("\033[33m%s\033[0m %02x %02x\n",
- "/** 0111 1110 0010 rdst abs %0 */",
- op[0], op[1]);
- printf (" rdst = 0x%x\n", rdst);
- }
- SYNTAX("abs %0");
-#line 565 "rx-decode.opc"
- ID(abs); DR(rdst); SR(rdst); F_OSZ_;
-
- }
- break;
- case 0x30:
- {
- /** 0111 1110 0011 rdst sat %0 */
-#line 885 "rx-decode.opc"
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ case 0x27:
+ case 0x28:
+ case 0x29:
+ case 0x2a:
+ case 0x2b:
+ case 0x2c:
+ case 0x2d:
+ case 0x2e:
+ case 0x2f:
+ goto op_semantics_34;
+ break;
+ case 0x30:
+ case 0x31:
+ case 0x32:
+ case 0x33:
+ case 0x34:
+ case 0x35:
+ case 0x36:
+ case 0x37:
+ case 0x38:
+ case 0x39:
+ case 0x3a:
+ case 0x3b:
+ case 0x3c:
+ case 0x3d:
+ case 0x3e:
+ case 0x3f:
+ goto op_semantics_35;
+ break;
+ case 0x90:
+ GETBYTE ();
+ switch (op[2] & 0xff)
+ {
+ case 0x00:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ op_semantics_36:
+ {
+ /** 0111 0110 1001 0000 srcb 0000 rdst srca dadd %1, %2, %0 */
+#line 1238 "rx-decode.opc"
+ int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1238 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+#line 1238 "rx-decode.opc"
+ int srca AU = op[3] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 srcb 0000 rdst srca dadd %1, %2, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" srcb = 0x%x,", srcb);
+ printf (" rdst = 0x%x,", rdst);
+ printf (" srca = 0x%x\n", srca);
+ }
+ SYNTAX("dadd %1, %2, %0");
+#line 1238 "rx-decode.opc"
+ ID(dadd); DDR(rdst); SDR(srca); S2DR(srcb); F_____;
+
+ }
+ break;
+ }
+ break;
+ case 0x01:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ op_semantics_37:
+ {
+ /** 0111 0110 1001 0000 srcb 0001 rdst srca dsub %1, %2, %0 */
+#line 1259 "rx-decode.opc"
+ int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1259 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+#line 1259 "rx-decode.opc"
+ int srca AU = op[3] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 srcb 0001 rdst srca dsub %1, %2, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" srcb = 0x%x,", srcb);
+ printf (" rdst = 0x%x,", rdst);
+ printf (" srca = 0x%x\n", srca);
+ }
+ SYNTAX("dsub %1, %2, %0");
+#line 1259 "rx-decode.opc"
+ ID(dsub); DDR(rdst); SDR(srca); S2DR(srcb); F_____;
+
+ }
+ break;
+ }
+ break;
+ case 0x02:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ op_semantics_38:
+ {
+ /** 0111 0110 1001 0000 srcb 0010 rdst srca dmul %1, %2, %0 */
+#line 1247 "rx-decode.opc"
+ int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1247 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+#line 1247 "rx-decode.opc"
+ int srca AU = op[3] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 srcb 0010 rdst srca dmul %1, %2, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" srcb = 0x%x,", srcb);
+ printf (" rdst = 0x%x,", rdst);
+ printf (" srca = 0x%x\n", srca);
+ }
+ SYNTAX("dmul %1, %2, %0");
+#line 1247 "rx-decode.opc"
+ ID(dmul); DDR(rdst); SDR(srca); S2DR(srcb); F_____;
+
+ }
+ break;
+ }
+ break;
+ case 0x05:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ op_semantics_39:
+ {
+ /** 0111 0110 1001 0000 srcb 0101 rdst srca ddiv %1, %2, %0 */
+#line 1244 "rx-decode.opc"
+ int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1244 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+#line 1244 "rx-decode.opc"
+ int srca AU = op[3] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 srcb 0101 rdst srca ddiv %1, %2, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" srcb = 0x%x,", srcb);
+ printf (" rdst = 0x%x,", rdst);
+ printf (" srca = 0x%x\n", srca);
+ }
+ SYNTAX("ddiv %1, %2, %0");
+#line 1244 "rx-decode.opc"
+ ID(ddiv); DDR(rdst); SDR(srca); S2DR(srcb); F_____;
+
+ }
+ break;
+ }
+ break;
+ case 0x08:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ op_semantics_40:
+ {
+ /** 0111 0110 1001 0000 srcb 1000 cond srca dcmp%0 %1, %2 */
+#line 1241 "rx-decode.opc"
+ int srcb AU = (op[2] >> 4) & 0x0f;
+#line 1241 "rx-decode.opc"
+ int cond AU = (op[3] >> 4) & 0x0f;
+#line 1241 "rx-decode.opc"
+ int srca AU = op[3] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 srcb 1000 cond srca dcmp%0 %1, %2 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" srcb = 0x%x,", srcb);
+ printf (" cond = 0x%x,", cond);
+ printf (" srca = 0x%x\n", srca);
+ }
+ SYNTAX("dcmp%0 %1, %2");
+#line 1241 "rx-decode.opc"
+ ID(dcmp); DCND(cond); SDR(srca); S2DR(srcb); F_____;
+
+ }
+ break;
+ }
+ break;
+ case 0x0c:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ op_semantics_41:
+ {
+ /** 0111 0110 1001 0000 rsrc 1100 rdst 0000 dmov.d %1, %0 */
+#line 1179 "rx-decode.opc"
+ int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1179 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 rsrc 1100 rdst 0000 dmov.d %1, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" rsrc = 0x%x,", rsrc);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("dmov.d %1, %0");
+#line 1179 "rx-decode.opc"
+ ID(dmov); DDR(rdst); SDR(rsrc); F_____;
+
+ }
+ break;
+ case 0x01:
+ op_semantics_42:
+ {
+ /** 0111 0110 1001 0000 rsrc 1100 rdst 0001 dabs %1, %0 */
+#line 1235 "rx-decode.opc"
+ int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1235 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 rsrc 1100 rdst 0001 dabs %1, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" rsrc = 0x%x,", rsrc);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("dabs %1, %0");
+#line 1235 "rx-decode.opc"
+ ID(dabs); DDR(rdst); SDR(rsrc); F_____;
+
+ }
+ break;
+ case 0x02:
+ op_semantics_43:
+ {
+ /** 0111 0110 1001 0000 rsrc 1100 rdst 0010 dneg %1, %0 */
+#line 1250 "rx-decode.opc"
+ int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1250 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 rsrc 1100 rdst 0010 dneg %1, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" rsrc = 0x%x,", rsrc);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("dneg %1, %0");
+#line 1250 "rx-decode.opc"
+ ID(dneg); DDR(rdst); SDR(rsrc); F_____;
+
+ }
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x0d:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ op_semantics_44:
+ {
+ /** 0111 0110 1001 0000 rsrc 1101 rdst 0000 dsqrt %1, %0 */
+#line 1256 "rx-decode.opc"
+ int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1256 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 rsrc 1101 rdst 0000 dsqrt %1, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" rsrc = 0x%x,", rsrc);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("dsqrt %1, %0");
+#line 1256 "rx-decode.opc"
+ ID(dsqrt); DDR(rdst); SDR(rsrc); F_____;
+
+ }
+ break;
+ case 0x08:
+ op_semantics_45:
+ {
+ /** 0111 0110 1001 0000 rsrc 1101 rdst 1000 dtoi %1, %0 */
+#line 1265 "rx-decode.opc"
+ int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1265 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 rsrc 1101 rdst 1000 dtoi %1, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" rsrc = 0x%x,", rsrc);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("dtoi %1, %0");
+#line 1265 "rx-decode.opc"
+ ID(dtoi); DDR(rdst); SDR(rsrc); F_____;
+
+ }
+ break;
+ case 0x09:
+ op_semantics_46:
+ {
+ /** 0111 0110 1001 0000 rsrc 1101 rdst 1001 dtou %1, %0 */
+#line 1268 "rx-decode.opc"
+ int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1268 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 rsrc 1101 rdst 1001 dtou %1, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" rsrc = 0x%x,", rsrc);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("dtou %1, %0");
+#line 1268 "rx-decode.opc"
+ ID(dtou); DDR(rdst); SDR(rsrc); F_____;
+
+ }
+ break;
+ case 0x0c:
+ op_semantics_47:
+ {
+ /** 0111 0110 1001 0000 rsrc 1101 rdst 1100 dtof %1, %0 */
+#line 1262 "rx-decode.opc"
+ int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1262 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 rsrc 1101 rdst 1100 dtof %1, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" rsrc = 0x%x,", rsrc);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("dtof %1, %0");
+#line 1262 "rx-decode.opc"
+ ID(dtof); DDR(rdst); SDR(rsrc); F_____;
+
+ }
+ break;
+ case 0x0d:
+ op_semantics_48:
+ {
+ /** 0111 0110 1001 0000 rsrc 1101 rdst 1101 dround %1, %0 */
+#line 1253 "rx-decode.opc"
+ int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1253 "rx-decode.opc"
+ int rdst AU = (op[3] >> 4) & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n",
+ "/** 0111 0110 1001 0000 rsrc 1101 rdst 1101 dround %1, %0 */",
+ op[0], op[1], op[2], op[3]);
+ printf (" rsrc = 0x%x,", rsrc);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("dround %1, %0");
+#line 1253 "rx-decode.opc"
+ ID(dround); DDR(rdst); SDR(rsrc); F_____;
+
+ }
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x10:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_36;
+ break;
+ }
+ break;
+ case 0x11:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_37;
+ break;
+ }
+ break;
+ case 0x12:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_38;
+ break;
+ }
+ break;
+ case 0x15:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_39;
+ break;
+ }
+ break;
+ case 0x18:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_40;
+ break;
+ }
+ break;
+ case 0x1c:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_41;
+ break;
+ case 0x01:
+ goto op_semantics_42;
+ break;
+ case 0x02:
+ goto op_semantics_43;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x1d:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_44;
+ break;
+ case 0x08:
+ goto op_semantics_45;
+ break;
+ case 0x09:
+ goto op_semantics_46;
+ break;
+ case 0x0c:
+ goto op_semantics_47;
+ break;
+ case 0x0d:
+ goto op_semantics_48;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x20:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_36;
+ break;
+ }
+ break;
+ case 0x21:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_37;
+ break;
+ }
+ break;
+ case 0x22:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_38;
+ break;
+ }
+ break;
+ case 0x25:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_39;
+ break;
+ }
+ break;
+ case 0x28:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_40;
+ break;
+ }
+ break;
+ case 0x2c:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_41;
+ break;
+ case 0x01:
+ goto op_semantics_42;
+ break;
+ case 0x02:
+ goto op_semantics_43;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x2d:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_44;
+ break;
+ case 0x08:
+ goto op_semantics_45;
+ break;
+ case 0x09:
+ goto op_semantics_46;
+ break;
+ case 0x0c:
+ goto op_semantics_47;
+ break;
+ case 0x0d:
+ goto op_semantics_48;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x30:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_36;
+ break;
+ }
+ break;
+ case 0x31:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_37;
+ break;
+ }
+ break;
+ case 0x32:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_38;
+ break;
+ }
+ break;
+ case 0x35:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_39;
+ break;
+ }
+ break;
+ case 0x38:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_40;
+ break;
+ }
+ break;
+ case 0x3c:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_41;
+ break;
+ case 0x01:
+ goto op_semantics_42;
+ break;
+ case 0x02:
+ goto op_semantics_43;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x3d:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_44;
+ break;
+ case 0x08:
+ goto op_semantics_45;
+ break;
+ case 0x09:
+ goto op_semantics_46;
+ break;
+ case 0x0c:
+ goto op_semantics_47;
+ break;
+ case 0x0d:
+ goto op_semantics_48;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x40:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_36;
+ break;
+ }
+ break;
+ case 0x41:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_37;
+ break;
+ }
+ break;
+ case 0x42:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_38;
+ break;
+ }
+ break;
+ case 0x45:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_39;
+ break;
+ }
+ break;
+ case 0x48:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_40;
+ break;
+ }
+ break;
+ case 0x4c:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_41;
+ break;
+ case 0x01:
+ goto op_semantics_42;
+ break;
+ case 0x02:
+ goto op_semantics_43;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x4d:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_44;
+ break;
+ case 0x08:
+ goto op_semantics_45;
+ break;
+ case 0x09:
+ goto op_semantics_46;
+ break;
+ case 0x0c:
+ goto op_semantics_47;
+ break;
+ case 0x0d:
+ goto op_semantics_48;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x50:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_36;
+ break;
+ }
+ break;
+ case 0x51:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_37;
+ break;
+ }
+ break;
+ case 0x52:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_38;
+ break;
+ }
+ break;
+ case 0x55:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_39;
+ break;
+ }
+ break;
+ case 0x58:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_40;
+ break;
+ }
+ break;
+ case 0x5c:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_41;
+ break;
+ case 0x01:
+ goto op_semantics_42;
+ break;
+ case 0x02:
+ goto op_semantics_43;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x5d:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_44;
+ break;
+ case 0x08:
+ goto op_semantics_45;
+ break;
+ case 0x09:
+ goto op_semantics_46;
+ break;
+ case 0x0c:
+ goto op_semantics_47;
+ break;
+ case 0x0d:
+ goto op_semantics_48;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x60:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_36;
+ break;
+ }
+ break;
+ case 0x61:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_37;
+ break;
+ }
+ break;
+ case 0x62:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_38;
+ break;
+ }
+ break;
+ case 0x65:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_39;
+ break;
+ }
+ break;
+ case 0x68:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_40;
+ break;
+ }
+ break;
+ case 0x6c:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_41;
+ break;
+ case 0x01:
+ goto op_semantics_42;
+ break;
+ case 0x02:
+ goto op_semantics_43;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x6d:
+ GETBYTE ();
+ switch (op[3] & 0x0f)
+ {
+ case 0x00:
+ goto op_semantics_44;
+ break;
+ case 0x08:
+ goto op_semantics_45;
+ break;
+ case 0x09:
+ goto op_semantics_46;
+ break;
+ case 0x0c:
+ goto op_semantics_47;
+ break;
+ case 0x0d:
+ goto op_semantics_48;
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x70:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_36;
+ break;
+ }
+ break;
+ case 0x71:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_37;
+ break;
+ }
+ break;
+ case 0x72:
+ GETBYTE ();
+ switch (op[3] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_38;
+ break;
+ }
+ [...]
[diff truncated at 100000 bytes]