+ }
+ break;
+ case 0x69:
+ GETBYTE ();
+ switch (op[2] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_94;
+ break;
+ }
+ break;
+ case 0x6a:
+ GETBYTE ();
+ switch (op[2] & 0x00)
+ {
+ case 0x00:
+ op_semantics_95:
+ {
+ /** 1111 1101 0110 101s rsrc rdst mvfc %1, %0 */
+#line 1013 "rx-decode.opc"
+ int s AU = op[1] & 0x01;
+#line 1013 "rx-decode.opc"
+ int rsrc AU = (op[2] >> 4) & 0x0f;
+#line 1013 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0110 101s rsrc rdst mvfc %1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" s = 0x%x,", s);
+ printf (" rsrc = 0x%x,", rsrc);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("mvfc %1, %0");
+#line 1013 "rx-decode.opc"
+ ID(mov); SR((s*16+rsrc) + 16); DR(rdst);
+
+ /*----------------------------------------------------------------------*/
+ /* INTERRUPTS */
+
+ }
+ break;
+ }
+ break;
+ case 0x6b:
+ GETBYTE ();
+ switch (op[2] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_95;
+ break;
+ }
+ break;
+ case 0x6c:
+ GETBYTE ();
+ switch (op[2] & 0x00)
+ {
+ case 0x00:
+ op_semantics_96:
+ {
+ /** 1111 1101 0110 110i mmmm rdst rotr #%1, %0 */
+#line 750 "rx-decode.opc"
+ int i AU = op[1] & 0x01;
+#line 750 "rx-decode.opc"
+ int mmmm AU = (op[2] >> 4) & 0x0f;
+#line 750 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0110 110i mmmm rdst rotr #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" i = 0x%x,", i);
+ printf (" mmmm = 0x%x,", mmmm);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("rotr #%1, %0");
+#line 750 "rx-decode.opc"
+ ID(rotr); SC(i*16+mmmm); DR(rdst); F__SZC;
+
+ }
+ break;
+ }
+ break;
+ case 0x6d:
+ GETBYTE ();
+ switch (op[2] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_96;
+ break;
+ }
+ break;
+ case 0x6e:
+ GETBYTE ();
+ switch (op[2] & 0x00)
+ {
+ case 0x00:
+ op_semantics_97:
+ {
+ /** 1111 1101 0110 111i mmmm rdst rotl #%1, %0 */
+#line 744 "rx-decode.opc"
+ int i AU = op[1] & 0x01;
+#line 744 "rx-decode.opc"
+ int mmmm AU = (op[2] >> 4) & 0x0f;
+#line 744 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0110 111i mmmm rdst rotl #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" i = 0x%x,", i);
+ printf (" mmmm = 0x%x,", mmmm);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("rotl #%1, %0");
+#line 744 "rx-decode.opc"
+ ID(rotl); SC(i*16+mmmm); DR(rdst); F__SZC;
+
+ }
+ break;
+ }
+ break;
+ case 0x6f:
+ GETBYTE ();
+ switch (op[2] & 0x00)
+ {
+ case 0x00:
+ goto op_semantics_97;
+ break;
+ }
+ break;
+ case 0x70:
+ GETBYTE ();
+ switch (op[2] & 0xf0)
+ {
+ case 0x20:
+ op_semantics_98:
+ {
+ /** 1111 1101 0111 im00 0010rdst adc #%1, %0 */
+#line 488 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 488 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 0010rdst adc #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("adc #%1, %0");
+#line 488 "rx-decode.opc"
+ ID(adc); SC(IMMex(im)); DR(rdst); F_OSZC;
+
+ }
+ break;
+ case 0x40:
+ op_semantics_99:
+ {
+ /** 1111 1101 0111 im00 0100rdst max #%1, %0 */
+#line 570 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 570 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 0100rdst max #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("max #%1, %0");
+#line 570 "rx-decode.opc"
+ int val = IMMex (im);
+ if (im == 0 && (unsigned) val == 0x80000000 && rdst == 0)
+ {
+ ID (nop7);
+ SYNTAX("nop\t; max\t#0x80000000, r0");
+ }
+ else
+ {
+ ID(max);
+ }
+ DR(rdst); SC(val);
+
+ }
+ break;
+ case 0x50:
+ op_semantics_100:
+ {
+ /** 1111 1101 0111 im00 0101rdst min #%1, %0 */
+#line 600 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 600 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 0101rdst min #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("min #%1, %0");
+#line 600 "rx-decode.opc"
+ ID(min); DR(rdst); SC(IMMex(im));
+
+ }
+ break;
+ case 0x60:
+ op_semantics_101:
+ {
+ /** 1111 1101 0111 im00 0110rdst emul #%1, %0 */
+#line 658 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 658 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 0110rdst emul #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("emul #%1, %0");
+#line 658 "rx-decode.opc"
+ ID(emul); DR(rdst); SC(IMMex(im));
+
+ }
+ break;
+ case 0x70:
+ op_semantics_102:
+ {
+ /** 1111 1101 0111 im00 0111rdst emulu #%1, %0 */
+#line 670 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 670 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 0111rdst emulu #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("emulu #%1, %0");
+#line 670 "rx-decode.opc"
+ ID(emulu); DR(rdst); SC(IMMex(im));
+
+ }
+ break;
+ case 0x80:
+ op_semantics_103:
+ {
+ /** 1111 1101 0111 im00 1000rdst div #%1, %0 */
+#line 682 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 682 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 1000rdst div #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("div #%1, %0");
+#line 682 "rx-decode.opc"
+ ID(div); DR(rdst); SC(IMMex(im)); F_O___;
+
+ }
+ break;
+ case 0x90:
+ op_semantics_104:
+ {
+ /** 1111 1101 0111 im00 1001rdst divu #%1, %0 */
+#line 694 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 694 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 1001rdst divu #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("divu #%1, %0");
+#line 694 "rx-decode.opc"
+ ID(divu); DR(rdst); SC(IMMex(im)); F_O___;
+
+ }
+ break;
+ case 0xc0:
+ op_semantics_105:
+ {
+ /** 1111 1101 0111 im00 1100rdst tst #%1, %2 */
+#line 467 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 467 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 1100rdst tst #%1, %2 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("tst #%1, %2");
+#line 467 "rx-decode.opc"
+ ID(and); SC(IMMex(im)); S2R(rdst); F__SZ_;
+
+ }
+ break;
+ case 0xd0:
+ op_semantics_106:
+ {
+ /** 1111 1101 0111 im00 1101rdst xor #%1, %0 */
+#line 446 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 446 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 1101rdst xor #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("xor #%1, %0");
+#line 446 "rx-decode.opc"
+ ID(xor); SC(IMMex(im)); DR(rdst); F__SZ_;
+
+ }
+ break;
+ case 0xe0:
+ op_semantics_107:
+ {
+ /** 1111 1101 0111 im00 1110rdst stz #%1, %0 */
+#line 392 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 392 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 1110rdst stz #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("stz #%1, %0");
+#line 392 "rx-decode.opc"
+ ID(stcc); SC(IMMex(im)); DR(rdst); S2cc(RXC_z);
+
+ }
+ break;
+ case 0xf0:
+ op_semantics_108:
+ {
+ /** 1111 1101 0111 im00 1111rdst stnz #%1, %0 */
+#line 395 "rx-decode.opc"
+ int im AU = (op[1] >> 2) & 0x03;
+#line 395 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 im00 1111rdst stnz #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" im = 0x%x,", im);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("stnz #%1, %0");
+#line 395 "rx-decode.opc"
+ ID(stcc); SC(IMMex(im)); DR(rdst); S2cc(RXC_nz);
+
+ /*----------------------------------------------------------------------*/
+ /* RTSD */
+
+ }
+ break;
+ default: UNSUPPORTED(); break;
+ }
+ break;
+ case 0x72:
+ GETBYTE ();
+ switch (op[2] & 0xf0)
+ {
+ case 0x00:
+ {
+ /** 1111 1101 0111 0010 0000 rdst fsub #%1, %0 */
+#line 902 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 0010 0000 rdst fsub #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("fsub #%1, %0");
+#line 902 "rx-decode.opc"
+ ID(fsub); DR(rdst); SC(IMM(0)); F__SZ_;
+
+ }
+ break;
+ case 0x10:
+ {
+ /** 1111 1101 0111 0010 0001 rdst fcmp #%1, %0 */
+#line 896 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 0010 0001 rdst fcmp #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("fcmp #%1, %0");
+#line 896 "rx-decode.opc"
+ ID(fcmp); DR(rdst); SC(IMM(0)); F_OSZ_;
+
+ }
+ break;
+ case 0x20:
+ {
+ /** 1111 1101 0111 0010 0010 rdst fadd #%1, %0 */
+#line 890 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 0010 0010 rdst fadd #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" rdst = 0x%x\n", rdst);
+ }
+ SYNTAX("fadd #%1, %0");
+#line 890 "rx-decode.opc"
+ ID(fadd); DR(rdst); SC(IMM(0)); F__SZ_;
+
+ }
+ break;
+ case 0x30:
+ {
+ /** 1111 1101 0111 0010 0011 rdst fmul #%1, %0 */
+#line 911 "rx-decode.opc"
+ int rdst AU = op[2] & 0x0f;
+ if (trace)
+ {
+ printf ("\033[33m%s\033[0m %02x %02x %02x\n",
+ "/** 1111 1101 0111 0010 0011 rdst fmul #%1, %0 */",
+ op[0], op[1], op[2]);
+ printf (" rdst = 0x%x\n", rdst);
+ }