/* DO NOT EDIT!  -*- buffer-read-only: t -*- vi:set ro:  */
#line 1 "rx-decode.opc"
/* -*- c -*- */
/* Copyright (C) 2012-2021 Free Software Foundation, Inc.
   Contributed by Red Hat.
   Written by DJ Delorie.

   This file is part of the GNU opcodes library.

   This library is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   any later version.

   It is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */

#include "sysdep.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ansidecl.h"
#include "opcode/rx.h"
#include "libiberty.h"

#define RX_OPCODE_BIG_ENDIAN 0

typedef struct
{
  RX_Opcode_Decoded * rx;
  int (* getbyte)(void *);
  void * ptr;
  unsigned char * op;
} LocalData;

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] =
{
  RX_Byte,
  RX_Word,
  RX_Long,
  RX_Bad_Size /* Bogus instructions can have a size field set to 3.  */
};

static int sbwl[4] =
{
  RX_SByte,
  RX_SWord,
  RX_Long,
  RX_Bad_Size /* Bogus instructions can have a size field set to 3.  */
};

static int ubw[4] =
{
  RX_UByte,
  RX_UWord,
  RX_Bad_Size,/* Bogus instructions can have a size field set to 2.  */
  RX_Bad_Size /* Bogus instructions can have a size field set to 3.  */
};

static int memex[4] =
{
  RX_SByte,
  RX_SWord,
  RX_Long,
  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,	     \
		     rx->op[n].addend = a )
#define OPs(n,t,r,a,s) (OP (n,t,r,a), \
			rx->op[n].size = s )

/* 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, 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)

static int flagmap[] = {0, 1, 2, 3, 0, 0, 0, 0,
		       16, 17, 0, 0, 0, 0, 0, 0 };

static int dsp3map[] = { 8, 9, 10, 3, 4, 5, 6, 7 };

/*
 *C	a constant (immediate) c
 *R	A register
 *I	Register indirect, no offset
 *Is	Register indirect, with offset
 *D	standard displacement: type (r,[r],dsp8,dsp16 code), register, BWL code
 *P	standard displacement: type (r,[r]), reg, assumes UByte
 *Pm	memex displacement: type (r,[r]), reg, memex code
 *cc	condition code.  */

#define DC(c)       OP (0, RX_Operand_Immediate, 0, c)
#define DR(r)       OP (0, RX_Operand_Register,  r, 0)
#define DI(r,a)     OP (0, RX_Operand_Indirect,  r, a)
#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)
#define SRR(r)      OP (1, RX_Operand_TwoReg,  r, 0)
#define SI(r,a)     OP (1, RX_Operand_Indirect,  r, a)
#define SIs(r,a,s)  OP (1, RX_Operand_Indirect,  r, (a) * GET_SCALE (s))
#define SD(t,r,s)   rx_disp (1, t, r, bwl[s], ld);
#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)
#define S2I(r,a)    OP (2, RX_Operand_Indirect,  r, a)
#define S2Is(r,a,s) OP (2, RX_Operand_Indirect,  r, (a) * GET_SCALE (s))
#define S2D(t,r,s)  rx_disp (2, t, r, bwl[s], ld);
#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)

#define AU ATTRIBUTE_UNUSED
#define GETBYTE() (ld->op [ld->rx->n_bytes++] = ld->getbyte (ld->ptr))

#define SYNTAX(x) rx->syntax = x

#define UNSUPPORTED() \
  rx->syntax = "*unknown*"

#define IMM(sf)   immediate (sf, 0, ld)
#define IMMex(sf) immediate (sf, 1, ld)

static int
immediate (int sfield, int ex, LocalData * ld)
{
  unsigned long i = 0, j;

  switch (sfield)
    {
#define B ((unsigned long) GETBYTE())
    case 0:
#if RX_OPCODE_BIG_ENDIAN
      i  = B;
      if (ex && (i & 0x80))
	i -= 0x100;
      i <<= 24;
      i |= B << 16;
      i |= B << 8;
      i |= B;
#else
      i = B;
      i |= B << 8;
      i |= B << 16;
      j = B;
      if (ex && (j & 0x80))
	j -= 0x100;
      i |= j << 24;
#endif
      break;
    case 3:
#if RX_OPCODE_BIG_ENDIAN
      i  = B << 16;
      i |= B << 8;
      i |= B;
#else
      i  = B;
      i |= B << 8;
      i |= B << 16;
#endif
      if (ex && (i & 0x800000))
	i -= 0x1000000;
      break;
    case 2:
#if RX_OPCODE_BIG_ENDIAN
      i |= B << 8;
      i |= B;
#else
      i |= B;
      i |= B << 8;
#endif
      if (ex && (i & 0x8000))
	i -= 0x10000;
      break;
    case 1:
      i |= B;
      if (ex && (i & 0x80))
	i -= 0x100;
      break;
    default:
      abort();
    }
  return i;
}

static void
rx_disp (int n, int type, int reg, unsigned int size, LocalData * ld)
{
  int disp;

  ld->rx->op[n].reg = reg;
  switch (type)
    {
    case 3:
      ld->rx->op[n].type = RX_Operand_Register;
      break;
    case 0:
      ld->rx->op[n].type = RX_Operand_Zero_Indirect;
      ld->rx->op[n].addend = 0;
      break;
    case 1:
      ld->rx->op[n].type = RX_Operand_Indirect;
      disp = GETBYTE ();
      ld->rx->op[n].addend = disp * GET_PSCALE (size);
      break;
    case 2:
      ld->rx->op[n].type = RX_Operand_Indirect;
      disp = GETBYTE ();
#if RX_OPCODE_BIG_ENDIAN
      disp = disp * 256 + GETBYTE ();
#else
      disp = disp + GETBYTE () * 256;
#endif
      ld->rx->op[n].addend = disp * GET_PSCALE (size);
      break;
    default:
      abort ();
    }
}

#define xO 8
#define xS 4
#define xZ 2
#define xC 1

#define F_____
#define F___ZC rx->flags_0 = rx->flags_s = xZ|xC;
#define F__SZ_ rx->flags_0 = rx->flags_s = xS|xZ;
#define F__SZC rx->flags_0 = rx->flags_s = xS|xZ|xC;
#define F_0SZC rx->flags_0 = xO|xS|xZ|xC; rx->flags_s = xS|xZ|xC;
#define F_O___ rx->flags_0 = rx->flags_s = xO;
#define F_OS__ rx->flags_0 = rx->flags_s = xO|xS;
#define F_OSZ_ rx->flags_0 = rx->flags_s = xO|xS|xZ;
#define F_OSZC rx->flags_0 = rx->flags_s = xO|xS|xZ|xC;

int
rx_decode_opcode (unsigned long pc AU,
		  RX_Opcode_Decoded * rx,
		  int (* getbyte)(void *),
		  void * ptr)
{
  LocalData lds, * ld = &lds;
  unsigned char op[20] = {0};

  lds.rx = rx;
  lds.getbyte = getbyte;
  lds.ptr = ptr;
  lds.op = op;

  memset (rx, 0, sizeof (*rx));
  BWL(LSIZE);


/*----------------------------------------------------------------------*/
/* MOV									*/

  GETBYTE ();
  switch (op[0] & 0xff)
  {
    case 0x00:
        {
          /** 0000 0000			brk */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0000 0000			brk */",
                     op[0]);
            }
          SYNTAX("brk");
#line 1050 "rx-decode.opc"
          ID(brk);

        }
      break;
    case 0x01:
        {
          /** 0000 0001			dbt */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0000 0001			dbt */",
                     op[0]);
            }
          SYNTAX("dbt");
#line 1053 "rx-decode.opc"
          ID(dbt);

        }
      break;
    case 0x02:
        {
          /** 0000 0010			rts */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0000 0010			rts */",
                     op[0]);
            }
          SYNTAX("rts");
#line 831 "rx-decode.opc"
          ID(rts);

        /*----------------------------------------------------------------------*/
        /* NOP								*/

        }
      break;
    case 0x03:
        {
          /** 0000 0011			nop */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0000 0011			nop */",
                     op[0]);
            }
          SYNTAX("nop");
#line 837 "rx-decode.opc"
          ID(nop);

        /*----------------------------------------------------------------------*/
        /* STRING FUNCTIONS							*/

        }
      break;
    case 0x04:
        {
          /** 0000 0100			bra.a	%a0 */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0000 0100			bra.a	%a0 */",
                     op[0]);
            }
          SYNTAX("bra.a	%a0");
#line 809 "rx-decode.opc"
          ID(branch); DC(pc + IMMex(3));

        }
      break;
    case 0x05:
        {
          /** 0000 0101			bsr.a	%a0 */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0000 0101			bsr.a	%a0 */",
                     op[0]);
            }
          SYNTAX("bsr.a	%a0");
#line 825 "rx-decode.opc"
          ID(jsr); DC(pc + IMMex(3));

        }
      break;
    case 0x06:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x00:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_1:
                    {
                      /** 0000 0110 mx00 00ss rsrc rdst			sub	%2%S2, %1 */
#line 567 "rx-decode.opc"
                      int mx AU = (op[1] >> 6) & 0x03;
#line 567 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 567 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 567 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 0000 0110 mx00 00ss rsrc rdst			sub	%2%S2, %1 */",
                                 op[0], op[1], op[2]);
                          printf ("  mx = 0x%x,", mx);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("sub	%2%S2, %1");
#line 567 "rx-decode.opc"
                      ID(sub); S2Pm(ss, rsrc, mx); SR(rdst); DR(rdst); F_OSZC;

                    }
                  break;
              }
            break;
          case 0x01:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x02:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x03:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x04:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_2:
                    {
                      /** 0000 0110 mx00 01ss rsrc rdst		cmp	%2%S2, %1 */
#line 555 "rx-decode.opc"
                      int mx AU = (op[1] >> 6) & 0x03;
#line 555 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 555 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 555 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 0000 0110 mx00 01ss rsrc rdst		cmp	%2%S2, %1 */",
                                 op[0], op[1], op[2]);
                          printf ("  mx = 0x%x,", mx);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("cmp	%2%S2, %1");
#line 555 "rx-decode.opc"
                      ID(sub); S2Pm(ss, rsrc, mx); SR(rdst); F_OSZC;

                    /*----------------------------------------------------------------------*/
                    /* SUB									*/

                    }
                  break;
              }
            break;
          case 0x05:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x06:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x07:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x08:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_3:
                    {
                      /** 0000 0110 mx00 10ss rsrc rdst	add	%1%S1, %0 */
#line 531 "rx-decode.opc"
                      int mx AU = (op[1] >> 6) & 0x03;
#line 531 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 531 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 531 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 0000 0110 mx00 10ss rsrc rdst	add	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  mx = 0x%x,", mx);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("add	%1%S1, %0");
#line 531 "rx-decode.opc"
                      ID(add); SPm(ss, rsrc, mx); DR(rdst); F_OSZC;

                    }
                  break;
              }
            break;
          case 0x09:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x0a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x0b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x0c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_4:
                    {
                      /** 0000 0110 mx00 11ss rsrc rdst	mul	%1%S1, %0 */
#line 674 "rx-decode.opc"
                      int mx AU = (op[1] >> 6) & 0x03;
#line 674 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 674 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 674 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 0000 0110 mx00 11ss rsrc rdst	mul	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  mx = 0x%x,", mx);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mul	%1%S1, %0");
#line 674 "rx-decode.opc"
                      ID(mul); SPm(ss, rsrc, mx); DR(rdst); F_____;

                    }
                  break;
              }
            break;
          case 0x0d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x0e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x0f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x10:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_5:
                    {
                      /** 0000 0110 mx01 00ss rsrc rdst	and	%1%S1, %0 */
#line 444 "rx-decode.opc"
                      int mx AU = (op[1] >> 6) & 0x03;
#line 444 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 444 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 444 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 0000 0110 mx01 00ss rsrc rdst	and	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  mx = 0x%x,", mx);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("and	%1%S1, %0");
#line 444 "rx-decode.opc"
                      ID(and); SPm(ss, rsrc, mx); DR(rdst); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x11:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x12:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x13:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x14:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_6:
                    {
                      /** 0000 0110 mx01 01ss rsrc rdst			or	%1%S1, %0 */
#line 462 "rx-decode.opc"
                      int mx AU = (op[1] >> 6) & 0x03;
#line 462 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 462 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 462 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 0000 0110 mx01 01ss rsrc rdst			or	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  mx = 0x%x,", mx);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("or	%1%S1, %0");
#line 462 "rx-decode.opc"
                      ID(or); SPm(ss, rsrc, mx); DR(rdst); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x15:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x16:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x17:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x20:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_7:
                          {
                            /** 0000 0110 mx10 00sp 0000 0000 rsrc rdst	sbb	%1%S1, %0 */
#line 580 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 580 "rx-decode.opc"
                            int sp AU = op[1] & 0x03;
#line 580 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 580 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00sp 0000 0000 rsrc rdst	sbb	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  sp = 0x%x,", sp);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("sbb	%1%S1, %0");
#line 580 "rx-decode.opc"
                            ID(sbb); SPm(sp, rsrc, mx); DR(rdst); F_OSZC;

                          /*----------------------------------------------------------------------*/
                          /* ABS									*/

                          }
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_8:
                          {
                            /** 0000 0110 mx10 00ss 0000 0100 rsrc rdst	max	%1%S1, %0 */
#line 619 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 619 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 619 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 619 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00ss 0000 0100 rsrc rdst	max	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("max	%1%S1, %0");
#line 619 "rx-decode.opc"
                            ID(max); SPm(ss, rsrc, mx); DR(rdst);

                          /*----------------------------------------------------------------------*/
                          /* MIN									*/

                          }
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_9:
                          {
                            /** 0000 0110 mx10 00ss 0000 0101 rsrc rdst	min	%1%S1, %0 */
#line 631 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 631 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 631 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 631 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00ss 0000 0101 rsrc rdst	min	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("min	%1%S1, %0");
#line 631 "rx-decode.opc"
                            ID(min); SPm(ss, rsrc, mx); DR(rdst);

                          /*----------------------------------------------------------------------*/
                          /* MUL									*/

                          }
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_10:
                          {
                            /** 0000 0110 mx10 00ss 0000 0110 rsrc rdst	emul	%1%S1, %0 */
#line 689 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 689 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 689 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 689 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00ss 0000 0110 rsrc rdst	emul	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("emul	%1%S1, %0");
#line 689 "rx-decode.opc"
                            ID(emul); SPm(ss, rsrc, mx); DR(rdst);

                          /*----------------------------------------------------------------------*/
                          /* EMULU									*/

                          }
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_11:
                          {
                            /** 0000 0110 mx10 00ss 0000 0111 rsrc rdst	emulu	%1%S1, %0 */
#line 701 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 701 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 701 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 701 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00ss 0000 0111 rsrc rdst	emulu	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("emulu	%1%S1, %0");
#line 701 "rx-decode.opc"
                            ID(emulu); SPm(ss, rsrc, mx); DR(rdst);

                          /*----------------------------------------------------------------------*/
                          /* DIV									*/

                          }
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_12:
                          {
                            /** 0000 0110 mx10 00ss 0000 1000 rsrc rdst	div	%1%S1, %0 */
#line 713 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 713 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 713 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 713 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00ss 0000 1000 rsrc rdst	div	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("div	%1%S1, %0");
#line 713 "rx-decode.opc"
                            ID(div); SPm(ss, rsrc, mx); DR(rdst); F_O___;

                          /*----------------------------------------------------------------------*/
                          /* DIVU									*/

                          }
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_13:
                          {
                            /** 0000 0110 mx10 00ss 0000 1001 rsrc rdst	divu	%1%S1, %0 */
#line 725 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 725 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 725 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 725 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00ss 0000 1001 rsrc rdst	divu	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("divu	%1%S1, %0");
#line 725 "rx-decode.opc"
                            ID(divu); SPm(ss, rsrc, mx); DR(rdst); F_O___;

                          /*----------------------------------------------------------------------*/
                          /* SHIFT								*/

                          }
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_14:
                          {
                            /** 0000 0110 mx10 00ss 0000 1100 rsrc rdst	tst	%1%S1, %2 */
#line 498 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 498 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 498 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 498 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00ss 0000 1100 rsrc rdst	tst	%1%S1, %2 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("tst	%1%S1, %2");
#line 498 "rx-decode.opc"
                            ID(and); SPm(ss, rsrc, mx); S2R(rdst); F__SZ_;

                          /*----------------------------------------------------------------------*/
                          /* NEG									*/

                          }
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_15:
                          {
                            /** 0000 0110 mx10 00ss 0000 1101 rsrc rdst	xor	%1%S1, %0 */
#line 477 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 477 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 477 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 477 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00ss 0000 1101 rsrc rdst	xor	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("xor	%1%S1, %0");
#line 477 "rx-decode.opc"
                            ID(xor); SPm(ss, rsrc, mx); DR(rdst); F__SZ_;

                          /*----------------------------------------------------------------------*/
                          /* NOT									*/

                          }
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_16:
                          {
                            /** 0000 0110 mx10 00ss 0001 0000 rsrc rdst	xchg	%1%S1, %0 */
#line 411 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 411 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 411 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 411 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00ss 0001 0000 rsrc rdst	xchg	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("xchg	%1%S1, %0");
#line 411 "rx-decode.opc"
                            ID(xchg); DR(rdst); SPm(ss, rsrc, mx);

                          /*----------------------------------------------------------------------*/
                          /* STZ/STNZ								*/

                          }
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_17:
                          {
                            /** 0000 0110 mx10 00sd 0001 0001 rsrc rdst	itof	%1%S1, %0 */
#line 954 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 954 "rx-decode.opc"
                            int sd AU = op[1] & 0x03;
#line 954 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 954 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00sd 0001 0001 rsrc rdst	itof	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  sd = 0x%x,", sd);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("itof	%1%S1, %0");
#line 954 "rx-decode.opc"
                            ID(itof); DR (rdst); SPm(sd, rsrc, mx); F__SZ_;

                          /*----------------------------------------------------------------------*/
                          /* BIT OPS								*/

                          }
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_18:
                          {
                            /** 0000 0110 mx10 00sd 0001 0101 rsrc rdst	utof	%1%S1, %0 */
#line 1140 "rx-decode.opc"
                            int mx AU = (op[1] >> 6) & 0x03;
#line 1140 "rx-decode.opc"
                            int sd AU = op[1] & 0x03;
#line 1140 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 1140 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 mx10 00sd 0001 0101 rsrc rdst	utof	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  mx = 0x%x,", mx);
                                printf ("  sd = 0x%x,", sd);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("utof	%1%S1, %0");
#line 1140 "rx-decode.opc"
                            ID(utof); DR (rdst); SPm(sd, rsrc, mx); F__SZ_;

                          /*----------------------------------------------------------------------*/
                          /* RXv3 enhanced							*/

                          }
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x21:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x22:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x23:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x40:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x41:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x42:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x43:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x44:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x45:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x46:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x47:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x48:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x49:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x4a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x4b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x4c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x4d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x4e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x4f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x50:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x51:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x52:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x53:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x54:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x55:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x56:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x57:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x60:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x61:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x62:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x63:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x80:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x81:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x82:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x83:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0x84:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x85:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x86:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x87:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0x88:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x89:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x8a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x8b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0x8c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x8d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x8e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x8f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0x90:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x91:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x92:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x93:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0x94:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x95:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x96:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0x97:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0xa0:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x02:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        op_semantics_19:
                          {
                            /** 0000 0110 1010 00ss 0000 0010 rsrc rdst	adc	%1%S1, %0 */
#line 519 "rx-decode.opc"
                            int ss AU = op[1] & 0x03;
#line 519 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
#line 519 "rx-decode.opc"
                            int rdst AU = op[3] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 0000 0110 1010 00ss 0000 0010 rsrc rdst	adc	%1%S1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  ss = 0x%x,", ss);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("adc	%1%S1, %0");
#line 519 "rx-decode.opc"
                            ID(adc); SPm(ss, rsrc, 2); DR(rdst); F_OSZC;

                          /*----------------------------------------------------------------------*/
                          /* ADD									*/

                          }
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xa1:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x02:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_19;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xa2:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x02:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_19;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xa3:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x02:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_19;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xc0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0xc1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0xc2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0xc3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_1;
                  break;
              }
            break;
          case 0xc4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0xc5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0xc6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0xc7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_2;
                  break;
              }
            break;
          case 0xc8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0xc9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0xca:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0xcb:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_3;
                  break;
              }
            break;
          case 0xcc:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0xcd:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0xce:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0xcf:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_4;
                  break;
              }
            break;
          case 0xd0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0xd1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0xd2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0xd3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_5;
                  break;
              }
            break;
          case 0xd4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0xd5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0xd6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0xd7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_6;
                  break;
              }
            break;
          case 0xe0:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xe1:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xe2:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xe3:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_7;
                        break;
                    }
                  break;
                case 0x04:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_8;
                        break;
                    }
                  break;
                case 0x05:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_9;
                        break;
                    }
                  break;
                case 0x06:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_10;
                        break;
                    }
                  break;
                case 0x07:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_11;
                        break;
                    }
                  break;
                case 0x08:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_12;
                        break;
                    }
                  break;
                case 0x09:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_13;
                        break;
                    }
                  break;
                case 0x0c:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_14;
                        break;
                    }
                  break;
                case 0x0d:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_15;
                        break;
                    }
                  break;
                case 0x10:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_16;
                        break;
                    }
                  break;
                case 0x11:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_17;
                        break;
                    }
                  break;
                case 0x15:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_18;
                        break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x08:
    case 0x09:
    case 0x0a:
    case 0x0b:
    case 0x0c:
    case 0x0d:
    case 0x0e:
    case 0x0f:
        {
          /** 0000 1dsp			bra.s	%a0 */
#line 800 "rx-decode.opc"
          int dsp AU = op[0] & 0x07;
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0000 1dsp			bra.s	%a0 */",
                     op[0]);
              printf ("  dsp = 0x%x\n", dsp);
            }
          SYNTAX("bra.s	%a0");
#line 800 "rx-decode.opc"
          ID(branch); DC(pc + dsp3map[dsp]);

        }
      break;
    case 0x10:
    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:
        {
          /** 0001 n dsp			b%1.s	%a0 */
#line 790 "rx-decode.opc"
          int n AU = (op[0] >> 3) & 0x01;
#line 790 "rx-decode.opc"
          int dsp AU = op[0] & 0x07;
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0001 n dsp			b%1.s	%a0 */",
                     op[0]);
              printf ("  n = 0x%x,", n);
              printf ("  dsp = 0x%x\n", dsp);
            }
          SYNTAX("b%1.s	%a0");
#line 790 "rx-decode.opc"
          ID(branch); Scc(n); DC(pc + dsp3map[dsp]);

        }
      break;
    case 0x20:
    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 0x2f:
        {
          /** 0010 cond			b%1.b	%a0 */
#line 793 "rx-decode.opc"
          int cond AU = op[0] & 0x0f;
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0010 cond			b%1.b	%a0 */",
                     op[0]);
              printf ("  cond = 0x%x\n", cond);
            }
          SYNTAX("b%1.b	%a0");
#line 793 "rx-decode.opc"
          ID(branch); Scc(cond); DC(pc + IMMex (1));

        }
      break;
    case 0x2e:
        {
          /** 0010 1110			bra.b	%a0 */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0010 1110			bra.b	%a0 */",
                     op[0]);
            }
          SYNTAX("bra.b	%a0");
#line 803 "rx-decode.opc"
          ID(branch); DC(pc + IMMex(1));

        }
      break;
    case 0x38:
        {
          /** 0011 1000			bra.w	%a0 */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0011 1000			bra.w	%a0 */",
                     op[0]);
            }
          SYNTAX("bra.w	%a0");
#line 806 "rx-decode.opc"
          ID(branch); DC(pc + IMMex(2));

        }
      break;
    case 0x39:
        {
          /** 0011 1001			bsr.w	%a0 */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0011 1001			bsr.w	%a0 */",
                     op[0]);
            }
          SYNTAX("bsr.w	%a0");
#line 822 "rx-decode.opc"
          ID(jsr); DC(pc + IMMex(2));

        }
      break;
    case 0x3a:
    case 0x3b:
        {
          /** 0011 101c			b%1.w	%a0 */
#line 796 "rx-decode.opc"
          int c AU = op[0] & 0x01;
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0011 101c			b%1.w	%a0 */",
                     op[0]);
              printf ("  c = 0x%x\n", c);
            }
          SYNTAX("b%1.w	%a0");
#line 796 "rx-decode.opc"
          ID(branch); Scc(c); DC(pc + IMMex (2));


        }
      break;
    case 0x3c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_20:
              {
                /** 0011 11sz d dst sppp		mov%s	#%1, %0 */
#line 332 "rx-decode.opc"
                int sz AU = op[0] & 0x03;
#line 332 "rx-decode.opc"
                int d AU = (op[1] >> 7) & 0x01;
#line 332 "rx-decode.opc"
                int dst AU = (op[1] >> 4) & 0x07;
#line 332 "rx-decode.opc"
                int sppp AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0011 11sz d dst sppp		mov%s	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  sz = 0x%x,", sz);
                    printf ("  d = 0x%x,", d);
                    printf ("  dst = 0x%x,", dst);
                    printf ("  sppp = 0x%x\n", sppp);
                  }
                SYNTAX("mov%s	#%1, %0");
#line 332 "rx-decode.opc"
                ID(mov); sBWL (sz); DIs(dst, d*16+sppp, sz); SC(IMM(1)); F_____;

              }
            break;
        }
      break;
    case 0x3d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_20;
            break;
        }
      break;
    case 0x3e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_20;
            break;
        }
      break;
    case 0x3f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0011 1111 rega regb		rtsd	#%1, %2-%0 */
#line 429 "rx-decode.opc"
                int rega AU = (op[1] >> 4) & 0x0f;
#line 429 "rx-decode.opc"
                int regb AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0011 1111 rega regb		rtsd	#%1, %2-%0 */",
                           op[0], op[1]);
                    printf ("  rega = 0x%x,", rega);
                    printf ("  regb = 0x%x\n", regb);
                  }
                SYNTAX("rtsd	#%1, %2-%0");
#line 429 "rx-decode.opc"
                ID(rtsd); SC(IMM(1) * 4); S2R(rega); DR(regb);

              /*----------------------------------------------------------------------*/
              /* AND									*/

              }
            break;
        }
      break;
    case 0x40:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_21:
              {
                /** 0100 00ss rsrc rdst			sub	%2%S2, %1 */
#line 564 "rx-decode.opc"
                int ss AU = op[0] & 0x03;
#line 564 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 564 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0100 00ss rsrc rdst			sub	%2%S2, %1 */",
                           op[0], op[1]);
                    printf ("  ss = 0x%x,", ss);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("sub	%2%S2, %1");
#line 564 "rx-decode.opc"
                ID(sub); S2P(ss, rsrc); SR(rdst); DR(rdst); F_OSZC;

              }
            break;
        }
      break;
    case 0x41:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_21;
            break;
        }
      break;
    case 0x42:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_21;
            break;
        }
      break;
    case 0x43:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_21;
            break;
        }
      break;
    case 0x44:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_22:
              {
                /** 0100 01ss rsrc rdst		cmp	%2%S2, %1 */
#line 552 "rx-decode.opc"
                int ss AU = op[0] & 0x03;
#line 552 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 552 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0100 01ss rsrc rdst		cmp	%2%S2, %1 */",
                           op[0], op[1]);
                    printf ("  ss = 0x%x,", ss);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("cmp	%2%S2, %1");
#line 552 "rx-decode.opc"
                ID(sub); S2P(ss, rsrc); SR(rdst); F_OSZC;

              }
            break;
        }
      break;
    case 0x45:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_22;
            break;
        }
      break;
    case 0x46:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_22;
            break;
        }
      break;
    case 0x47:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_22;
            break;
        }
      break;
    case 0x48:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_23:
              {
                /** 0100 10ss rsrc rdst			add	%1%S1, %0 */
#line 528 "rx-decode.opc"
                int ss AU = op[0] & 0x03;
#line 528 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 528 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0100 10ss rsrc rdst			add	%1%S1, %0 */",
                           op[0], op[1]);
                    printf ("  ss = 0x%x,", ss);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("add	%1%S1, %0");
#line 528 "rx-decode.opc"
                ID(add); SP(ss, rsrc); DR(rdst); F_OSZC;

              }
            break;
        }
      break;
    case 0x49:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x4a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x4b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_23;
            break;
        }
      break;
    case 0x4c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_24:
              {
                /** 0100 11ss rsrc rdst			mul	%1%S1, %0 */
#line 671 "rx-decode.opc"
                int ss AU = op[0] & 0x03;
#line 671 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 671 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0100 11ss rsrc rdst			mul	%1%S1, %0 */",
                           op[0], op[1]);
                    printf ("  ss = 0x%x,", ss);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("mul	%1%S1, %0");
#line 671 "rx-decode.opc"
                ID(mul); SP(ss, rsrc); DR(rdst); F_____;

              }
            break;
        }
      break;
    case 0x4d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x4e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x4f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_24;
            break;
        }
      break;
    case 0x50:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_25:
              {
                /** 0101 00ss rsrc rdst			and	%1%S1, %0 */
#line 441 "rx-decode.opc"
                int ss AU = op[0] & 0x03;
#line 441 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 441 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0101 00ss rsrc rdst			and	%1%S1, %0 */",
                           op[0], op[1]);
                    printf ("  ss = 0x%x,", ss);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("and	%1%S1, %0");
#line 441 "rx-decode.opc"
                ID(and); SP(ss, rsrc); DR(rdst); F__SZ_;

              }
            break;
        }
      break;
    case 0x51:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_25;
            break;
        }
      break;
    case 0x52:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_25;
            break;
        }
      break;
    case 0x53:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_25;
            break;
        }
      break;
    case 0x54:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_26:
              {
                /** 0101 01ss rsrc rdst			or	%1%S1, %0 */
#line 459 "rx-decode.opc"
                int ss AU = op[0] & 0x03;
#line 459 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 459 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0101 01ss rsrc rdst			or	%1%S1, %0 */",
                           op[0], op[1]);
                    printf ("  ss = 0x%x,", ss);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("or	%1%S1, %0");
#line 459 "rx-decode.opc"
                ID(or); SP(ss, rsrc); DR(rdst); F__SZ_;

              }
            break;
        }
      break;
    case 0x55:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_26;
            break;
        }
      break;
    case 0x56:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_26;
            break;
        }
      break;
    case 0x57:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_26;
            break;
        }
      break;
    case 0x58:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_27:
              {
                /** 0101 1 s ss rsrc rdst	movu%s	%1, %0 */
#line 380 "rx-decode.opc"
                int s AU = (op[0] >> 2) & 0x01;
#line 380 "rx-decode.opc"
                int ss AU = op[0] & 0x03;
#line 380 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 380 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0101 1 s ss rsrc rdst	movu%s	%1, %0 */",
                           op[0], op[1]);
                    printf ("  s = 0x%x,", s);
                    printf ("  ss = 0x%x,", ss);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("movu%s	%1, %0");
#line 380 "rx-decode.opc"
                ID(mov); uBW(s); SD(ss, rsrc, s); DR(rdst); F_____;

              }
            break;
        }
      break;
    case 0x59:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_27;
            break;
        }
      break;
    case 0x5a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_27;
            break;
        }
      break;
    case 0x5b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_27;
            break;
        }
      break;
    case 0x5c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_27;
            break;
        }
      break;
    case 0x5d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_27;
            break;
        }
      break;
    case 0x5e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_27;
            break;
        }
      break;
    case 0x5f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_27;
            break;
        }
      break;
    case 0x60:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0110 0000 immm rdst			sub	#%2, %0 */
#line 561 "rx-decode.opc"
                int immm AU = (op[1] >> 4) & 0x0f;
#line 561 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 0000 immm rdst			sub	#%2, %0 */",
                           op[0], op[1]);
                    printf ("  immm = 0x%x,", immm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("sub	#%2, %0");
#line 561 "rx-decode.opc"
                ID(sub); S2C(immm); SR(rdst); DR(rdst); F_OSZC;

              }
            break;
        }
      break;
    case 0x61:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0110 0001 immm rdst			cmp	#%2, %1 */
#line 543 "rx-decode.opc"
                int immm AU = (op[1] >> 4) & 0x0f;
#line 543 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 0001 immm rdst			cmp	#%2, %1 */",
                           op[0], op[1]);
                    printf ("  immm = 0x%x,", immm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("cmp	#%2, %1");
#line 543 "rx-decode.opc"
                ID(sub); S2C(immm); SR(rdst); F_OSZC;

              }
            break;
        }
      break;
    case 0x62:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0110 0010 immm rdst			add	#%1, %0 */
#line 525 "rx-decode.opc"
                int immm AU = (op[1] >> 4) & 0x0f;
#line 525 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 0010 immm rdst			add	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  immm = 0x%x,", immm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("add	#%1, %0");
#line 525 "rx-decode.opc"
                ID(add); SC(immm); DR(rdst); F_OSZC;

              }
            break;
        }
      break;
    case 0x63:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0110 0011 immm rdst			mul	#%1, %0 */
#line 637 "rx-decode.opc"
                int immm AU = (op[1] >> 4) & 0x0f;
#line 637 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 0011 immm rdst			mul	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  immm = 0x%x,", immm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("mul	#%1, %0");
#line 637 "rx-decode.opc"
                if (immm == 1 && rdst == 0)
                  {
                    ID(nop2);
                    SYNTAX ("nop\t; mul\t#1, r0");
                  }
                else
                  {
                    ID(mul);
                  }
                DR(rdst); SC(immm); F_____;

              }
            break;
        }
      break;
    case 0x64:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0110 0100 immm rdst			and	#%1, %0 */
#line 435 "rx-decode.opc"
                int immm AU = (op[1] >> 4) & 0x0f;
#line 435 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 0100 immm rdst			and	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  immm = 0x%x,", immm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("and	#%1, %0");
#line 435 "rx-decode.opc"
                ID(and); SC(immm); DR(rdst); F__SZ_;

              }
            break;
        }
      break;
    case 0x65:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0110 0101 immm rdst			or	#%1, %0 */
#line 453 "rx-decode.opc"
                int immm AU = (op[1] >> 4) & 0x0f;
#line 453 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 0101 immm rdst			or	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  immm = 0x%x,", immm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("or	#%1, %0");
#line 453 "rx-decode.opc"
                ID(or); SC(immm); DR(rdst); F__SZ_;

              }
            break;
        }
      break;
    case 0x66:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0110 0110 immm rdst		mov%s	#%1, %0 */
#line 329 "rx-decode.opc"
                int immm AU = (op[1] >> 4) & 0x0f;
#line 329 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 0110 immm rdst		mov%s	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  immm = 0x%x,", immm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("mov%s	#%1, %0");
#line 329 "rx-decode.opc"
                ID(mov); DR(rdst); SC(immm); F_____;

              }
            break;
        }
      break;
    case 0x67:
        {
          /** 0110 0111			rtsd	#%1 */
          if (trace)
            {
              printf ("\033[33m%s\033[0m  %02x\n",
                     "/** 0110 0111			rtsd	#%1 */",
                     op[0]);
            }
          SYNTAX("rtsd	#%1");
#line 426 "rx-decode.opc"
          ID(rtsd); SC(IMM(1) * 4);

        }
      break;
    case 0x68:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_28:
              {
                /** 0110 100i mmmm rdst			shlr	#%2, %0 */
#line 751 "rx-decode.opc"
                int i AU = op[0] & 0x01;
#line 751 "rx-decode.opc"
                int mmmm AU = (op[1] >> 4) & 0x0f;
#line 751 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 100i mmmm rdst			shlr	#%2, %0 */",
                           op[0], op[1]);
                    printf ("  i = 0x%x,", i);
                    printf ("  mmmm = 0x%x,", mmmm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("shlr	#%2, %0");
#line 751 "rx-decode.opc"
                ID(shlr); S2C(i*16+mmmm); SR(rdst); DR(rdst); F__SZC;

              }
            break;
        }
      break;
    case 0x69:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_28;
            break;
        }
      break;
    case 0x6a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_29:
              {
                /** 0110 101i mmmm rdst			shar	#%2, %0 */
#line 741 "rx-decode.opc"
                int i AU = op[0] & 0x01;
#line 741 "rx-decode.opc"
                int mmmm AU = (op[1] >> 4) & 0x0f;
#line 741 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 101i mmmm rdst			shar	#%2, %0 */",
                           op[0], op[1]);
                    printf ("  i = 0x%x,", i);
                    printf ("  mmmm = 0x%x,", mmmm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("shar	#%2, %0");
#line 741 "rx-decode.opc"
                ID(shar); S2C(i*16+mmmm); SR(rdst); DR(rdst); F_0SZC;

              }
            break;
        }
      break;
    case 0x6b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_29;
            break;
        }
      break;
    case 0x6c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_30:
              {
                /** 0110 110i mmmm rdst			shll	#%2, %0 */
#line 731 "rx-decode.opc"
                int i AU = op[0] & 0x01;
#line 731 "rx-decode.opc"
                int mmmm AU = (op[1] >> 4) & 0x0f;
#line 731 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 110i mmmm rdst			shll	#%2, %0 */",
                           op[0], op[1]);
                    printf ("  i = 0x%x,", i);
                    printf ("  mmmm = 0x%x,", mmmm);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("shll	#%2, %0");
#line 731 "rx-decode.opc"
                ID(shll); S2C(i*16+mmmm); SR(rdst); DR(rdst); F_OSZC;

              }
            break;
        }
      break;
    case 0x6d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_30;
            break;
        }
      break;
    case 0x6e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0110 1110 dsta dstb		pushm	%1-%2 */
#line 393 "rx-decode.opc"
                int dsta AU = (op[1] >> 4) & 0x0f;
#line 393 "rx-decode.opc"
                int dstb AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 1110 dsta dstb		pushm	%1-%2 */",
                           op[0], op[1]);
                    printf ("  dsta = 0x%x,", dsta);
                    printf ("  dstb = 0x%x\n", dstb);
                  }
                SYNTAX("pushm	%1-%2");
#line 393 "rx-decode.opc"
                ID(pushm); SR(dsta); S2R(dstb); F_____;

              }
            break;
        }
      break;
    case 0x6f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
              {
                /** 0110 1111 dsta dstb		popm	%1-%2 */
#line 390 "rx-decode.opc"
                int dsta AU = (op[1] >> 4) & 0x0f;
#line 390 "rx-decode.opc"
                int dstb AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0110 1111 dsta dstb		popm	%1-%2 */",
                           op[0], op[1]);
                    printf ("  dsta = 0x%x,", dsta);
                    printf ("  dstb = 0x%x\n", dstb);
                  }
                SYNTAX("popm	%1-%2");
#line 390 "rx-decode.opc"
                ID(popm); SR(dsta); S2R(dstb); F_____;

              }
            break;
        }
      break;
    case 0x70:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_31:
              {
                /** 0111 00im rsrc rdst			add	#%1, %2, %0 */
#line 534 "rx-decode.opc"
                int im AU = op[0] & 0x03;
#line 534 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 534 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 00im rsrc rdst			add	#%1, %2, %0 */",
                           op[0], op[1]);
                    printf ("  im = 0x%x,", im);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("add	#%1, %2, %0");
#line 534 "rx-decode.opc"
                ID(add); SC(IMMex(im)); S2R(rsrc); DR(rdst); F_OSZC;

              }
            break;
        }
      break;
    case 0x71:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_31;
            break;
        }
      break;
    case 0x72:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_31;
            break;
        }
      break;
    case 0x73:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_31;
            break;
        }
      break;
    case 0x74:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
            op_semantics_32:
              {
                /** 0111 01im 0000 rsrc		cmp	#%2, %1%S1 */
#line 546 "rx-decode.opc"
                int im AU = op[0] & 0x03;
#line 546 "rx-decode.opc"
                int rsrc AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 01im 0000 rsrc		cmp	#%2, %1%S1 */",
                           op[0], op[1]);
                    printf ("  im = 0x%x,", im);
                    printf ("  rsrc = 0x%x\n", rsrc);
                  }
                SYNTAX("cmp	#%2, %1%S1");
#line 546 "rx-decode.opc"
                ID(sub); SR(rsrc); S2C(IMMex(im)); F_OSZC;

              }
            break;
          case 0x10:
            op_semantics_33:
              {
                /** 0111 01im 0001rdst			mul	#%1, %0 */
#line 649 "rx-decode.opc"
                int im AU = op[0] & 0x03;
#line 649 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 01im 0001rdst			mul	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  im = 0x%x,", im);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("mul	#%1, %0");
#line 649 "rx-decode.opc"
                int val = IMMex(im);
                if (val == 1 && rdst == 0)
                  {
                    SYNTAX("nop\t; mul\t#1, r0");
                    switch (im)
              	{
              	case 2: ID(nop4); break;
              	case 3: ID(nop5); break;
              	case 0: ID(nop6); break;
              	default:
              	  ID(mul);
              	  SYNTAX("mul	#%1, %0");
              	  break;
              	}
                  }
                else
                  {
                    ID(mul);
                  }
                DR(rdst); SC(val); F_____;

              }
            break;
          case 0x20:
            op_semantics_34:
              {
                /** 0111 01im 0010 rdst			and	#%1, %0 */
#line 438 "rx-decode.opc"
                int im AU = op[0] & 0x03;
#line 438 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 01im 0010 rdst			and	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  im = 0x%x,", im);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("and	#%1, %0");
#line 438 "rx-decode.opc"
                ID(and); SC(IMMex(im)); DR(rdst); F__SZ_;

              }
            break;
          case 0x30:
            op_semantics_35:
              {
                /** 0111 01im 0011 rdst			or	#%1, %0 */
#line 456 "rx-decode.opc"
                int im AU = op[0] & 0x03;
#line 456 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 01im 0011 rdst			or	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  im = 0x%x,", im);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("or	#%1, %0");
#line 456 "rx-decode.opc"
                ID(or); SC(IMMex(im)); DR(rdst); F__SZ_;

              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x75:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x00:
          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:
          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:
          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 0x40:
          case 0x41:
          case 0x42:
          case 0x43:
          case 0x44:
          case 0x45:
          case 0x46:
          case 0x47:
          case 0x48:
          case 0x49:
          case 0x4a:
          case 0x4b:
          case 0x4c:
          case 0x4d:
          case 0x4e:
          case 0x4f:
              {
                /** 0111 0101 0100 rdst		mov%s	#%1, %0 */
#line 310 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 0101 0100 rdst		mov%s	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("mov%s	#%1, %0");
#line 310 "rx-decode.opc"
                ID(mov); DR(rdst); SC(IMM (1)); F_____;

              }
            break;
          case 0x50:
          case 0x51:
          case 0x52:
          case 0x53:
          case 0x54:
          case 0x55:
          case 0x56:
          case 0x57:
          case 0x58:
          case 0x59:
          case 0x5a:
          case 0x5b:
          case 0x5c:
          case 0x5d:
          case 0x5e:
          case 0x5f:
              {
                /** 0111 0101 0101 rsrc			cmp	#%2, %1 */
#line 549 "rx-decode.opc"
                int rsrc AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 0101 0101 rsrc			cmp	#%2, %1 */",
                           op[0], op[1]);
                    printf ("  rsrc = 0x%x\n", rsrc);
                  }
                SYNTAX("cmp	#%2, %1");
#line 549 "rx-decode.opc"
                ID(sub); SR(rsrc); S2C(IMM(1)); F_OSZC;

              }
            break;
          case 0x60:
              {
                /** 0111 0101 0110 0000		int #%1 */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 0101 0110 0000		int #%1 */",
                           op[0], op[1]);
                  }
                SYNTAX("int #%1");
#line 1056 "rx-decode.opc"
                ID(int); SC(IMM(1));

              }
            break;
          case 0x70:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                    {
                      /** 0111 0101 0111 0000 0000 immm	mvtipl	#%1 */
#line 1023 "rx-decode.opc"
                      int immm AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 0111 0101 0111 0000 0000 immm	mvtipl	#%1 */",
                                 op[0], op[1], op[2]);
                          printf ("  immm = 0x%x\n", immm);
                        }
                      SYNTAX("mvtipl	#%1");
#line 1023 "rx-decode.opc"
                      ID(mvtipl); SC(immm);

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          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;
          case 0xa0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                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;
          case 0xa8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                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;
          case 0xb0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                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;
          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 0x76:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x00:
          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:
          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:
          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;
                    }
                  break;
                case 0x75:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_39;
                        break;
                    }
                  break;
                case 0x78:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_40;
                        break;
                    }
                  break;
                case 0x7c:
                    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 0x7d:
                    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 0x80:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_36;
                        break;
                    }
                  break;
                case 0x81:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_37;
                        break;
                    }
                  break;
                case 0x82:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_38;
                        break;
                    }
                  break;
                case 0x85:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_39;
                        break;
                    }
                  break;
                case 0x88:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_40;
                        break;
                    }
                  break;
                case 0x8c:
                    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 0x8d:
                    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 0x90:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_36;
                        break;
                    }
                  break;
                case 0x91:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_37;
                        break;
                    }
                  break;
                case 0x92:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_38;
                        break;
                    }
                  break;
                case 0x95:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_39;
                        break;
                    }
                  break;
                case 0x98:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_40;
                        break;
                    }
                  break;
                case 0x9c:
                    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 0x9d:
                    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 0xa0:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_36;
                        break;
                    }
                  break;
                case 0xa1:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_37;
                        break;
                    }
                  break;
                case 0xa2:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_38;
                        break;
                    }
                  break;
                case 0xa5:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_39;
                        break;
                    }
                  break;
                case 0xa8:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_40;
                        break;
                    }
                  break;
                case 0xac:
                    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 0xad:
                    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 0xb0:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_36;
                        break;
                    }
                  break;
                case 0xb1:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_37;
                        break;
                    }
                  break;
                case 0xb2:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_38;
                        break;
                    }
                  break;
                case 0xb5:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_39;
                        break;
                    }
                  break;
                case 0xb8:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_40;
                        break;
                    }
                  break;
                case 0xbc:
                    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 0xbd:
                    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 0xc0:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_36;
                        break;
                    }
                  break;
                case 0xc1:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_37;
                        break;
                    }
                  break;
                case 0xc2:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_38;
                        break;
                    }
                  break;
                case 0xc5:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_39;
                        break;
                    }
                  break;
                case 0xc8:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_40;
                        break;
                    }
                  break;
                case 0xcc:
                    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 0xcd:
                    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 0xd0:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_36;
                        break;
                    }
                  break;
                case 0xd1:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_37;
                        break;
                    }
                  break;
                case 0xd2:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_38;
                        break;
                    }
                  break;
                case 0xd5:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_39;
                        break;
                    }
                  break;
                case 0xd8:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_40;
                        break;
                    }
                  break;
                case 0xdc:
                    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 0xdd:
                    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 0xe0:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_36;
                        break;
                    }
                  break;
                case 0xe1:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_37;
                        break;
                    }
                  break;
                case 0xe2:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_38;
                        break;
                    }
                  break;
                case 0xe5:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_39;
                        break;
                    }
                  break;
                case 0xe8:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_40;
                        break;
                    }
                  break;
                case 0xec:
                    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 0xed:
                    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 0xf0:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_36;
                        break;
                    }
                  break;
                case 0xf1:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_37;
                        break;
                    }
                  break;
                case 0xf2:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_38;
                        break;
                    }
                  break;
                case 0xf5:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_39;
                        break;
                    }
                  break;
                case 0xf8:
                    GETBYTE ();
                    switch (op[3] & 0x00)
                    {
                      case 0x00:
                        goto op_semantics_40;
                        break;
                    }
                  break;
                case 0xfc:
                    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 0xfd:
                    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;
                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_49:
              {
                /** 0111 100b ittt rdst			bset	#%1, %0 */
#line 968 "rx-decode.opc"
                int b AU = op[0] & 0x01;
#line 968 "rx-decode.opc"
                int ittt AU = (op[1] >> 4) & 0x0f;
#line 968 "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 968 "rx-decode.opc"
                ID(bset); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;


              }
            break;
        }
      break;
    case 0x79:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_49;
            break;
        }
      break;
    case 0x7a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_50:
              {
                /** 0111 101b ittt rdst			bclr	#%1, %0 */
#line 980 "rx-decode.opc"
                int b AU = op[0] & 0x01;
#line 980 "rx-decode.opc"
                int ittt AU = (op[1] >> 4) & 0x0f;
#line 980 "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 980 "rx-decode.opc"
                ID(bclr); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____;


              }
            break;
        }
      break;
    case 0x7b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_50;
            break;
        }
      break;
    case 0x7c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_51:
              {
                /** 0111 110b ittt rdst			btst	#%2, %1 */
#line 992 "rx-decode.opc"
                int b AU = op[0] & 0x01;
#line 992 "rx-decode.opc"
                int ittt AU = (op[1] >> 4) & 0x0f;
#line 992 "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 992 "rx-decode.opc"
                ID(btst); BWL(LSIZE); S2C(b*16+ittt); SR(rdst); F___ZC;


              }
            break;
        }
      break;
    case 0x7d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_51;
            break;
        }
      break;
    case 0x7e:
        GETBYTE ();
        switch (op[1] & 0xf0)
        {
          case 0x00:
              {
                /** 0111 1110 0000 rdst			not	%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 0000 rdst			not	%0 */",
                           op[0], op[1]);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("not	%0");
#line 483 "rx-decode.opc"
                ID(xor); DR(rdst); SR(rdst); S2C(~0); F__SZ_;

              }
            break;
          case 0x10:
              {
                /** 0111 1110 0001 rdst			neg	%0 */
#line 504 "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 504 "rx-decode.opc"
                ID(sub); DR(rdst); SC(0); S2R(rdst); F_OSZC;

              }
            break;
          case 0x20:
              {
                /** 0111 1110 0010 rdst			abs	%0 */
#line 586 "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 586 "rx-decode.opc"
                ID(abs); DR(rdst); SR(rdst); F_OSZ_;

              }
            break;
          case 0x30:
              {
                /** 0111 1110 0011 rdst		sat	%0 */
#line 906 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1110 0011 rdst		sat	%0 */",
                           op[0], op[1]);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("sat	%0");
#line 906 "rx-decode.opc"
                ID(sat); DR (rdst);

              }
            break;
          case 0x40:
              {
                /** 0111 1110 0100 rdst			rorc	%0 */
#line 766 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1110 0100 rdst			rorc	%0 */",
                           op[0], op[1]);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("rorc	%0");
#line 766 "rx-decode.opc"
                ID(rorc); DR(rdst); F__SZC;

              }
            break;
          case 0x50:
              {
                /** 0111 1110 0101 rdst			rolc	%0 */
#line 763 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1110 0101 rdst			rolc	%0 */",
                           op[0], op[1]);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("rolc	%0");
#line 763 "rx-decode.opc"
                ID(rolc); DR(rdst); F__SZC;

              }
            break;
          case 0x80:
          case 0x90:
          case 0xa0:
              {
                /** 0111 1110 10sz rsrc		push%s	%1 */
#line 399 "rx-decode.opc"
                int sz AU = (op[1] >> 4) & 0x03;
#line 399 "rx-decode.opc"
                int rsrc AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1110 10sz rsrc		push%s	%1 */",
                           op[0], op[1]);
                    printf ("  sz = 0x%x,", sz);
                    printf ("  rsrc = 0x%x\n", rsrc);
                  }
                SYNTAX("push%s	%1");
#line 399 "rx-decode.opc"
                ID(mov); BWL(sz); OP(0, RX_Operand_Predec, 0, 0); SR(rsrc); F_____;

              }
            break;
          case 0xb0:
              {
                /** 0111 1110 1011 rdst		pop	%0 */
#line 396 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1110 1011 rdst		pop	%0 */",
                           op[0], op[1]);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("pop	%0");
#line 396 "rx-decode.opc"
                ID(mov); OP(1, RX_Operand_Postinc, 0, 0); DR(rdst); F_____;

              }
            break;
          case 0xc0:
          case 0xd0:
              {
                /** 0111 1110 110 crsrc			pushc	%1 */
#line 1029 "rx-decode.opc"
                int crsrc AU = op[1] & 0x1f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1110 110 crsrc			pushc	%1 */",
                           op[0], op[1]);
                    printf ("  crsrc = 0x%x\n", crsrc);
                  }
                SYNTAX("pushc	%1");
#line 1029 "rx-decode.opc"
                ID(mov); OP(0, RX_Operand_Predec, 0, 0); SR(crsrc + 16);

              }
            break;
          case 0xe0:
          case 0xf0:
              {
                /** 0111 1110 111 crdst			popc	%0 */
#line 1026 "rx-decode.opc"
                int crdst AU = op[1] & 0x1f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1110 111 crdst			popc	%0 */",
                           op[0], op[1]);
                    printf ("  crdst = 0x%x\n", crdst);
                  }
                SYNTAX("popc	%0");
#line 1026 "rx-decode.opc"
                ID(mov); OP(1, RX_Operand_Postinc, 0, 0); DR(crdst + 16);

              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x7f:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x00:
          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:
              {
                /** 0111 1111 0000 rsrc		jmp	%0 */
#line 816 "rx-decode.opc"
                int rsrc AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 0000 rsrc		jmp	%0 */",
                           op[0], op[1]);
                    printf ("  rsrc = 0x%x\n", rsrc);
                  }
                SYNTAX("jmp	%0");
#line 816 "rx-decode.opc"
                ID(branch); DR(rsrc);

              }
            break;
          case 0x10:
          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:
              {
                /** 0111 1111 0001 rsrc		jsr	%0 */
#line 819 "rx-decode.opc"
                int rsrc AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 0001 rsrc		jsr	%0 */",
                           op[0], op[1]);
                    printf ("  rsrc = 0x%x\n", rsrc);
                  }
                SYNTAX("jsr	%0");
#line 819 "rx-decode.opc"
                ID(jsr); DR(rsrc);

              }
            break;
          case 0x40:
          case 0x41:
          case 0x42:
          case 0x43:
          case 0x44:
          case 0x45:
          case 0x46:
          case 0x47:
          case 0x48:
          case 0x49:
          case 0x4a:
          case 0x4b:
          case 0x4c:
          case 0x4d:
          case 0x4e:
          case 0x4f:
              {
                /** 0111 1111 0100 rsrc		bra.l	%0 */
#line 812 "rx-decode.opc"
                int rsrc AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 0100 rsrc		bra.l	%0 */",
                           op[0], op[1]);
                    printf ("  rsrc = 0x%x\n", rsrc);
                  }
                SYNTAX("bra.l	%0");
#line 812 "rx-decode.opc"
                ID(branchrel); DR(rsrc);


              }
            break;
          case 0x50:
          case 0x51:
          case 0x52:
          case 0x53:
          case 0x54:
          case 0x55:
          case 0x56:
          case 0x57:
          case 0x58:
          case 0x59:
          case 0x5a:
          case 0x5b:
          case 0x5c:
          case 0x5d:
          case 0x5e:
          case 0x5f:
              {
                /** 0111 1111 0101 rsrc		bsr.l	%0 */
#line 828 "rx-decode.opc"
                int rsrc AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 0101 rsrc		bsr.l	%0 */",
                           op[0], op[1]);
                    printf ("  rsrc = 0x%x\n", rsrc);
                  }
                SYNTAX("bsr.l	%0");
#line 828 "rx-decode.opc"
                ID(jsrrel); DR(rsrc);

              }
            break;
          case 0x80:
          case 0x81:
          case 0x82:
              {
                /** 0111 1111 1000 00sz		suntil%s */
#line 852 "rx-decode.opc"
                int sz AU = op[1] & 0x03;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1000 00sz		suntil%s */",
                           op[0], op[1]);
                    printf ("  sz = 0x%x\n", sz);
                  }
                SYNTAX("suntil%s");
#line 852 "rx-decode.opc"
                ID(suntil); BWL(sz); F___ZC;

              }
            break;
          case 0x83:
              {
                /** 0111 1111 1000 0011		scmpu */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1000 0011		scmpu */",
                           op[0], op[1]);
                  }
                SYNTAX("scmpu");
#line 843 "rx-decode.opc"
                ID(scmpu); F___ZC;

              }
            break;
          case 0x84:
          case 0x85:
          case 0x86:
              {
                /** 0111 1111 1000 01sz		swhile%s */
#line 855 "rx-decode.opc"
                int sz AU = op[1] & 0x03;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1000 01sz		swhile%s */",
                           op[0], op[1]);
                    printf ("  sz = 0x%x\n", sz);
                  }
                SYNTAX("swhile%s");
#line 855 "rx-decode.opc"
                ID(swhile); BWL(sz); F___ZC;

              }
            break;
          case 0x87:
              {
                /** 0111 1111 1000 0111		smovu */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1000 0111		smovu */",
                           op[0], op[1]);
                  }
                SYNTAX("smovu");
#line 846 "rx-decode.opc"
                ID(smovu);

              }
            break;
          case 0x88:
          case 0x89:
          case 0x8a:
              {
                /** 0111 1111 1000 10sz		sstr%s */
#line 861 "rx-decode.opc"
                int sz AU = op[1] & 0x03;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1000 10sz		sstr%s */",
                           op[0], op[1]);
                    printf ("  sz = 0x%x\n", sz);
                  }
                SYNTAX("sstr%s");
#line 861 "rx-decode.opc"
                ID(sstr); BWL(sz);

              /*----------------------------------------------------------------------*/
              /* RMPA									*/

              }
            break;
          case 0x8b:
              {
                /** 0111 1111 1000 1011		smovb */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1000 1011		smovb */",
                           op[0], op[1]);
                  }
                SYNTAX("smovb");
#line 849 "rx-decode.opc"
                ID(smovb);

              }
            break;
          case 0x8c:
          case 0x8d:
          case 0x8e:
              {
                /** 0111 1111 1000 11sz		rmpa%s */
#line 867 "rx-decode.opc"
                int sz AU = op[1] & 0x03;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1000 11sz		rmpa%s */",
                           op[0], op[1]);
                    printf ("  sz = 0x%x\n", sz);
                  }
                SYNTAX("rmpa%s");
#line 867 "rx-decode.opc"
                ID(rmpa); BWL(sz); F_OS__;

              /*----------------------------------------------------------------------*/
              /* HI/LO stuff								*/

              }
            break;
          case 0x8f:
              {
                /** 0111 1111 1000 1111		smovf */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1000 1111		smovf */",
                           op[0], op[1]);
                  }
                SYNTAX("smovf");
#line 858 "rx-decode.opc"
                ID(smovf);

              }
            break;
          case 0x93:
              {
                /** 0111 1111 1001 0011		satr */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1001 0011		satr */",
                           op[0], op[1]);
                  }
                SYNTAX("satr");
#line 909 "rx-decode.opc"
                ID(satr);

              /*----------------------------------------------------------------------*/
              /* FLOAT								*/

              }
            break;
          case 0x94:
              {
                /** 0111 1111 1001 0100		rtfi */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1001 0100		rtfi */",
                           op[0], op[1]);
                  }
                SYNTAX("rtfi");
#line 1044 "rx-decode.opc"
                ID(rtfi);

              }
            break;
          case 0x95:
              {
                /** 0111 1111 1001 0101		rte */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1001 0101		rte */",
                           op[0], op[1]);
                  }
                SYNTAX("rte");
#line 1047 "rx-decode.opc"
                ID(rte);

              }
            break;
          case 0x96:
              {
                /** 0111 1111 1001 0110		wait */
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1001 0110		wait */",
                           op[0], op[1]);
                  }
                SYNTAX("wait");
#line 1059 "rx-decode.opc"
                ID(wait);

              /*----------------------------------------------------------------------*/
              /* SCcnd								*/

              }
            break;
          case 0xa0:
          case 0xa1:
          case 0xa2:
          case 0xa3:
          case 0xa4:
          case 0xa5:
          case 0xa6:
          case 0xa7:
          case 0xa8:
          case 0xa9:
          case 0xaa:
          case 0xab:
          case 0xac:
          case 0xad:
          case 0xae:
          case 0xaf:
              {
                /** 0111 1111 1010 rdst			setpsw	%0 */
#line 1020 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1010 rdst			setpsw	%0 */",
                           op[0], op[1]);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("setpsw	%0");
#line 1020 "rx-decode.opc"
                ID(setpsw); DF(rdst);

              }
            break;
          case 0xb0:
          case 0xb1:
          case 0xb2:
          case 0xb3:
          case 0xb4:
          case 0xb5:
          case 0xb6:
          case 0xb7:
          case 0xb8:
          case 0xb9:
          case 0xba:
          case 0xbb:
          case 0xbc:
          case 0xbd:
          case 0xbe:
          case 0xbf:
              {
                /** 0111 1111 1011 rdst			clrpsw	%0 */
#line 1017 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 0111 1111 1011 rdst			clrpsw	%0 */",
                           op[0], op[1]);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("clrpsw	%0");
#line 1017 "rx-decode.opc"
                ID(clrpsw); DF(rdst);

              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0x80:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_52:
              {
                /** 10sz 0dsp a dst b src	mov%s	%1, %0 */
#line 357 "rx-decode.opc"
                int sz AU = (op[0] >> 4) & 0x03;
#line 357 "rx-decode.opc"
                int dsp AU = op[0] & 0x07;
#line 357 "rx-decode.opc"
                int a AU = (op[1] >> 7) & 0x01;
#line 357 "rx-decode.opc"
                int dst AU = (op[1] >> 4) & 0x07;
#line 357 "rx-decode.opc"
                int b AU = (op[1] >> 3) & 0x01;
#line 357 "rx-decode.opc"
                int src AU = op[1] & 0x07;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 10sz 0dsp a dst b src	mov%s	%1, %0 */",
                           op[0], op[1]);
                    printf ("  sz = 0x%x,", sz);
                    printf ("  dsp = 0x%x,", dsp);
                    printf ("  a = 0x%x,", a);
                    printf ("  dst = 0x%x,", dst);
                    printf ("  b = 0x%x,", b);
                    printf ("  src = 0x%x\n", src);
                  }
                SYNTAX("mov%s	%1, %0");
#line 357 "rx-decode.opc"
                ID(mov); sBWL(sz); DIs(dst, dsp*4+a*2+b, sz); SR(src); F_____;

              }
            break;
        }
      break;
    case 0x81:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x82:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x83:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x84:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x85:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x86:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x87:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x88:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_53:
              {
                /** 10sz 1dsp a src b dst	mov%s	%1, %0 */
#line 354 "rx-decode.opc"
                int sz AU = (op[0] >> 4) & 0x03;
#line 354 "rx-decode.opc"
                int dsp AU = op[0] & 0x07;
#line 354 "rx-decode.opc"
                int a AU = (op[1] >> 7) & 0x01;
#line 354 "rx-decode.opc"
                int src AU = (op[1] >> 4) & 0x07;
#line 354 "rx-decode.opc"
                int b AU = (op[1] >> 3) & 0x01;
#line 354 "rx-decode.opc"
                int dst AU = op[1] & 0x07;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 10sz 1dsp a src b dst	mov%s	%1, %0 */",
                           op[0], op[1]);
                    printf ("  sz = 0x%x,", sz);
                    printf ("  dsp = 0x%x,", dsp);
                    printf ("  a = 0x%x,", a);
                    printf ("  src = 0x%x,", src);
                    printf ("  b = 0x%x,", b);
                    printf ("  dst = 0x%x\n", dst);
                  }
                SYNTAX("mov%s	%1, %0");
#line 354 "rx-decode.opc"
                ID(mov); sBWL(sz); DR(dst); SIs(src, dsp*4+a*2+b, sz); F_____;

              }
            break;
        }
      break;
    case 0x89:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x8a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x8b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x8c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x8d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x8e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x8f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x90:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x91:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x92:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x93:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x94:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x95:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x96:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x97:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0x98:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x99:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x9a:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x9b:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x9c:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x9d:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x9e:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0x9f:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0xa0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0xa1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0xa2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0xa3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0xa4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0xa5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0xa6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0xa7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_52;
            break;
        }
      break;
    case 0xa8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0xa9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0xaa:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0xab:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0xac:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0xad:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0xae:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0xaf:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_53;
            break;
        }
      break;
    case 0xb0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_54:
              {
                /** 1011 w dsp a src b dst	movu%s	%1, %0 */
#line 377 "rx-decode.opc"
                int w AU = (op[0] >> 3) & 0x01;
#line 377 "rx-decode.opc"
                int dsp AU = op[0] & 0x07;
#line 377 "rx-decode.opc"
                int a AU = (op[1] >> 7) & 0x01;
#line 377 "rx-decode.opc"
                int src AU = (op[1] >> 4) & 0x07;
#line 377 "rx-decode.opc"
                int b AU = (op[1] >> 3) & 0x01;
#line 377 "rx-decode.opc"
                int dst AU = op[1] & 0x07;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 1011 w dsp a src b dst	movu%s	%1, %0 */",
                           op[0], op[1]);
                    printf ("  w = 0x%x,", w);
                    printf ("  dsp = 0x%x,", dsp);
                    printf ("  a = 0x%x,", a);
                    printf ("  src = 0x%x,", src);
                    printf ("  b = 0x%x,", b);
                    printf ("  dst = 0x%x\n", dst);
                  }
                SYNTAX("movu%s	%1, %0");
#line 377 "rx-decode.opc"
                ID(mov); uBW(w); DR(dst); SIs(src, dsp*4+a*2+b, w); F_____;

              }
            break;
        }
      break;
    case 0xb1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xb2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xb3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xb4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xb5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xb6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xb7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xb8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xb9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xba:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xbb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xbc:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xbd:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xbe:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xbf:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_54;
            break;
        }
      break;
    case 0xc0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_55:
              {
                /** 11sz sd ss rsrc rdst	mov%s	%1, %0 */
#line 335 "rx-decode.opc"
                int sz AU = (op[0] >> 4) & 0x03;
#line 335 "rx-decode.opc"
                int sd AU = (op[0] >> 2) & 0x03;
#line 335 "rx-decode.opc"
                int ss AU = op[0] & 0x03;
#line 335 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 335 "rx-decode.opc"
                int rdst AU = op[1] & 0x0f;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 11sz sd ss rsrc rdst	mov%s	%1, %0 */",
                           op[0], op[1]);
                    printf ("  sz = 0x%x,", sz);
                    printf ("  sd = 0x%x,", sd);
                    printf ("  ss = 0x%x,", ss);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  rdst = 0x%x\n", rdst);
                  }
                SYNTAX("mov%s	%1, %0");
#line 335 "rx-decode.opc"
                if (sd == 3 && ss == 3 && sz == 2 && rsrc == 0 && rdst == 0)
                  {
                    ID(nop2);
                    SYNTAX ("nop\t; mov.l\tr0, r0");
                  }
                else
                  {
                    ID(mov); sBWL(sz); F_____;
                    if ((ss == 3) && (sd != 3))
              	{
              	  SD(ss, rdst, sz); DD(sd, rsrc, sz);
              	}
                    else
              	{
              	  SD(ss, rsrc, sz); DD(sd, rdst, sz);
              	}
                  }

              }
            break;
        }
      break;
    case 0xc1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xc2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xc3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xc4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xc5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xc6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xc7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xc8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xc9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xca:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xcb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xcc:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xcd:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xce:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xcf:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xd9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xda:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xdb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xdc:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xdd:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xde:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xdf:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe0:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe1:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe2:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe3:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe4:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe5:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe6:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe7:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xe9:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xea:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xeb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xec:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xed:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xee:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xef:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_55;
            break;
        }
      break;
    case 0xf0:
        GETBYTE ();
        switch (op[1] & 0x08)
        {
          case 0x00:
            op_semantics_56:
              {
                /** 1111 00sd rdst 0bit			bset	#%1, %0%S0 */
#line 960 "rx-decode.opc"
                int sd AU = op[0] & 0x03;
#line 960 "rx-decode.opc"
                int rdst AU = (op[1] >> 4) & 0x0f;
#line 960 "rx-decode.opc"
                int bit AU = op[1] & 0x07;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 1111 00sd rdst 0bit			bset	#%1, %0%S0 */",
                           op[0], op[1]);
                    printf ("  sd = 0x%x,", sd);
                    printf ("  rdst = 0x%x,", rdst);
                    printf ("  bit = 0x%x\n", bit);
                  }
                SYNTAX("bset	#%1, %0%S0");
#line 960 "rx-decode.opc"
                ID(bset); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE); F_____;

              }
            break;
          case 0x08:
            op_semantics_57:
              {
                /** 1111 00sd rdst 1bit			bclr	#%1, %0%S0 */
#line 972 "rx-decode.opc"
                int sd AU = op[0] & 0x03;
#line 972 "rx-decode.opc"
                int rdst AU = (op[1] >> 4) & 0x0f;
#line 972 "rx-decode.opc"
                int bit AU = op[1] & 0x07;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 1111 00sd rdst 1bit			bclr	#%1, %0%S0 */",
                           op[0], op[1]);
                    printf ("  sd = 0x%x,", sd);
                    printf ("  rdst = 0x%x,", rdst);
                    printf ("  bit = 0x%x\n", bit);
                  }
                SYNTAX("bclr	#%1, %0%S0");
#line 972 "rx-decode.opc"
                ID(bclr); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE); F_____;

              }
            break;
        }
      break;
    case 0xf1:
        GETBYTE ();
        switch (op[1] & 0x08)
        {
          case 0x00:
            goto op_semantics_56;
            break;
          case 0x08:
            goto op_semantics_57;
            break;
        }
      break;
    case 0xf2:
        GETBYTE ();
        switch (op[1] & 0x08)
        {
          case 0x00:
            goto op_semantics_56;
            break;
          case 0x08:
            goto op_semantics_57;
            break;
        }
      break;
    case 0xf3:
        GETBYTE ();
        switch (op[1] & 0x08)
        {
          case 0x00:
            goto op_semantics_56;
            break;
          case 0x08:
            goto op_semantics_57;
            break;
        }
      break;
    case 0xf4:
        GETBYTE ();
        switch (op[1] & 0x0c)
        {
          case 0x00:
          case 0x04:
            op_semantics_58:
              {
                /** 1111 01sd rdst 0bit			btst	#%2, %1%S1 */
#line 984 "rx-decode.opc"
                int sd AU = op[0] & 0x03;
#line 984 "rx-decode.opc"
                int rdst AU = (op[1] >> 4) & 0x0f;
#line 984 "rx-decode.opc"
                int bit AU = op[1] & 0x07;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 1111 01sd rdst 0bit			btst	#%2, %1%S1 */",
                           op[0], op[1]);
                    printf ("  sd = 0x%x,", sd);
                    printf ("  rdst = 0x%x,", rdst);
                    printf ("  bit = 0x%x\n", bit);
                  }
                SYNTAX("btst	#%2, %1%S1");
#line 984 "rx-decode.opc"
                ID(btst); BWL(BSIZE); S2C(bit); SD(sd, rdst, BSIZE); F___ZC;

              }
            break;
          case 0x08:
            op_semantics_59:
              {
                /** 1111 01ss rsrc 10sz		push%s	%1 */
#line 402 "rx-decode.opc"
                int ss AU = op[0] & 0x03;
#line 402 "rx-decode.opc"
                int rsrc AU = (op[1] >> 4) & 0x0f;
#line 402 "rx-decode.opc"
                int sz AU = op[1] & 0x03;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 1111 01ss rsrc 10sz		push%s	%1 */",
                           op[0], op[1]);
                    printf ("  ss = 0x%x,", ss);
                    printf ("  rsrc = 0x%x,", rsrc);
                    printf ("  sz = 0x%x\n", sz);
                  }
                SYNTAX("push%s	%1");
#line 402 "rx-decode.opc"
                ID(mov); BWL(sz); OP(0, RX_Operand_Predec, 0, 0); SD(ss, rsrc, sz); F_____;

              /*----------------------------------------------------------------------*/
              /* XCHG									*/

              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0xf5:
        GETBYTE ();
        switch (op[1] & 0x0c)
        {
          case 0x00:
          case 0x04:
            goto op_semantics_58;
            break;
          case 0x08:
            goto op_semantics_59;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0xf6:
        GETBYTE ();
        switch (op[1] & 0x0c)
        {
          case 0x00:
          case 0x04:
            goto op_semantics_58;
            break;
          case 0x08:
            goto op_semantics_59;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0xf7:
        GETBYTE ();
        switch (op[1] & 0x0c)
        {
          case 0x00:
          case 0x04:
            goto op_semantics_58;
            break;
          case 0x08:
            goto op_semantics_59;
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0xf8:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            op_semantics_60:
              {
                /** 1111 10sd rdst im sz	mov%s	#%1, %0 */
#line 313 "rx-decode.opc"
                int sd AU = op[0] & 0x03;
#line 313 "rx-decode.opc"
                int rdst AU = (op[1] >> 4) & 0x0f;
#line 313 "rx-decode.opc"
                int im AU = (op[1] >> 2) & 0x03;
#line 313 "rx-decode.opc"
                int sz AU = op[1] & 0x03;
                if (trace)
                  {
                    printf ("\033[33m%s\033[0m  %02x %02x\n",
                           "/** 1111 10sd rdst im sz	mov%s	#%1, %0 */",
                           op[0], op[1]);
                    printf ("  sd = 0x%x,", sd);
                    printf ("  rdst = 0x%x,", rdst);
                    printf ("  im = 0x%x,", im);
                    printf ("  sz = 0x%x\n", sz);
                  }
                SYNTAX("mov%s	#%1, %0");
#line 313 "rx-decode.opc"
                ID(mov); DD(sd, rdst, sz);
                if ((im == 1 && sz == 0)
                    || (im == 2 && sz == 1)
                    || (im == 0 && sz == 2))
                  {
                    BWL (sz);
                    SC(IMM(im));
                  }
                else
                  {
                    sBWL (sz);
                    SC(IMMex(im));
                  }
                 F_____;

              }
            break;
        }
      break;
    case 0xf9:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x00:
          case 0x01:
          case 0x02:
          case 0x04:
          case 0x05:
          case 0x06:
          case 0x08:
          case 0x09:
          case 0x0a:
          case 0x0c:
          case 0x0d:
          case 0x0e:
          case 0x10:
          case 0x11:
          case 0x12:
          case 0x14:
          case 0x15:
          case 0x16:
          case 0x18:
          case 0x19:
          case 0x1a:
          case 0x1c:
          case 0x1d:
          case 0x1e:
          case 0x20:
          case 0x21:
          case 0x22:
          case 0x24:
          case 0x25:
          case 0x26:
          case 0x28:
          case 0x29:
          case 0x2a:
          case 0x2c:
          case 0x2d:
          case 0x2e:
          case 0x30:
          case 0x31:
          case 0x32:
          case 0x34:
          case 0x35:
          case 0x36:
          case 0x38:
          case 0x39:
          case 0x3a:
          case 0x3c:
          case 0x3d:
          case 0x3e:
          case 0x40:
          case 0x41:
          case 0x42:
          case 0x44:
          case 0x45:
          case 0x46:
          case 0x48:
          case 0x49:
          case 0x4a:
          case 0x4c:
          case 0x4d:
          case 0x4e:
          case 0x50:
          case 0x51:
          case 0x52:
          case 0x54:
          case 0x55:
          case 0x56:
          case 0x58:
          case 0x59:
          case 0x5a:
          case 0x5c:
          case 0x5d:
          case 0x5e:
          case 0x60:
          case 0x61:
          case 0x62:
          case 0x64:
          case 0x65:
          case 0x66:
          case 0x68:
          case 0x69:
          case 0x6a:
          case 0x6c:
          case 0x6d:
          case 0x6e:
          case 0x70:
          case 0x71:
          case 0x72:
          case 0x74:
          case 0x75:
          case 0x76:
          case 0x78:
          case 0x79:
          case 0x7a:
          case 0x7c:
          case 0x7d:
          case 0x7e:
          case 0x80:
          case 0x81:
          case 0x82:
          case 0x84:
          case 0x85:
          case 0x86:
          case 0x88:
          case 0x89:
          case 0x8a:
          case 0x8c:
          case 0x8d:
          case 0x8e:
          case 0x90:
          case 0x91:
          case 0x92:
          case 0x94:
          case 0x95:
          case 0x96:
          case 0x98:
          case 0x99:
          case 0x9a:
          case 0x9c:
          case 0x9d:
          case 0x9e:
          case 0xa0:
          case 0xa1:
          case 0xa2:
          case 0xa4:
          case 0xa5:
          case 0xa6:
          case 0xa8:
          case 0xa9:
          case 0xaa:
          case 0xac:
          case 0xad:
          case 0xae:
          case 0xb0:
          case 0xb1:
          case 0xb2:
          case 0xb4:
          case 0xb5:
          case 0xb6:
          case 0xb8:
          case 0xb9:
          case 0xba:
          case 0xbc:
          case 0xbd:
          case 0xbe:
          case 0xc0:
          case 0xc1:
          case 0xc2:
          case 0xc4:
          case 0xc5:
          case 0xc6:
          case 0xc8:
          case 0xc9:
          case 0xca:
          case 0xcc:
          case 0xcd:
          case 0xce:
          case 0xd0:
          case 0xd1:
          case 0xd2:
          case 0xd4:
          case 0xd5:
          case 0xd6:
          case 0xd8:
          case 0xd9:
          case 0xda:
          case 0xdc:
          case 0xdd:
          case 0xde:
          case 0xe0:
          case 0xe1:
          case 0xe2:
          case 0xe4:
          case 0xe5:
          case 0xe6:
          case 0xe8:
          case 0xe9:
          case 0xea:
          case 0xec:
          case 0xed:
          case 0xee:
          case 0xf0:
          case 0xf1:
          case 0xf2:
          case 0xf4:
          case 0xf5:
          case 0xf6:
          case 0xf8:
          case 0xf9:
          case 0xfa:
          case 0xfc:
          case 0xfd:
          case 0xfe:
            goto op_semantics_60;
            break;
          case 0x03:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                    {
                      /** 1111 1001 0000 0011 rdst 0000	dmov.l	#%1, %0 */
#line 1211 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1001 0000 0011 rdst 0000	dmov.l	#%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("dmov.l	#%1, %0");
#line 1211 "rx-decode.opc"
                      ID(dmov); DDRL(rdst); SC(IMMex(0)); F_____;

                    }
                  break;
                case 0x02:
                case 0x03:
                    {
                      /** 1111 1001 0000 0011 rdst 001s	dmov%s	#%1, %0 */
#line 1208 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
#line 1208 "rx-decode.opc"
                      int s AU = op[2] & 0x01;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1001 0000 0011 rdst 001s	dmov%s	#%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  s = 0x%x\n", s);
                        }
                      SYNTAX("dmov%s	#%1, %0");
#line 1208 "rx-decode.opc"
                      ID(dmov); DDRH(rdst); DL(s); SC(IMMex(0)); F_____;

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0xfa:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_60;
            break;
        }
      break;
    case 0xfb:
        GETBYTE ();
        switch (op[1] & 0x00)
        {
          case 0x00:
            goto op_semantics_60;
            break;
        }
      break;
    case 0xfc:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x03:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1100 0000 0011 rsrc rdst	sbb	%1, %0 */
#line 576 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 576 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0000 0011 rsrc rdst	sbb	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("sbb	%1, %0");
#line 576 "rx-decode.opc"
                      ID(sbb); SR (rsrc); DR(rdst); F_OSZC;

                      /* FIXME: only supports .L */
                    }
                  break;
              }
            break;
          case 0x07:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1100 0000 0111 rsrc rdst	neg	%2, %0 */
#line 507 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 507 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0000 0111 rsrc rdst	neg	%2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("neg	%2, %0");
#line 507 "rx-decode.opc"
                      ID(sub); DR(rdst); SC(0); S2R(rsrc); F_OSZC;

                    /*----------------------------------------------------------------------*/
                    /* ADC									*/

                    }
                  break;
              }
            break;
          case 0x0b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1100 0000 1011 rsrc rdst	adc	%1, %0 */
#line 516 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 516 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0000 1011 rsrc rdst	adc	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("adc	%1, %0");
#line 516 "rx-decode.opc"
                      ID(adc); SR(rsrc); DR(rdst); F_OSZC;

                    }
                  break;
              }
            break;
          case 0x0f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1100 0000 1111 rsrc rdst	abs	%1, %0 */
#line 589 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 589 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0000 1111 rsrc rdst	abs	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("abs	%1, %0");
#line 589 "rx-decode.opc"
                      ID(abs); DR(rdst); SR(rsrc); F_OSZ_;

                    /*----------------------------------------------------------------------*/
                    /* MAX									*/

                    }
                  break;
              }
            break;
          case 0x10:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_61:
                    {
                      /** 1111 1100 0001 00ss rsrc rdst	max	%1%S1, %0 */
#line 608 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 608 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 608 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0001 00ss rsrc rdst	max	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("max	%1%S1, %0");
#line 608 "rx-decode.opc"
                      if (ss == 3 && rsrc == 0 && rdst == 0)
                        {
                          ID(nop3);
                          SYNTAX("nop\t; max\tr0, r0");
                        }
                      else
                        {
                          ID(max); SP(ss, rsrc); DR(rdst);
                        }

                    }
                  break;
              }
            break;
          case 0x11:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_61;
                  break;
              }
            break;
          case 0x12:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_61;
                  break;
              }
            break;
          case 0x13:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_61;
                  break;
              }
            break;
          case 0x14:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_62:
                    {
                      /** 1111 1100 0001 01ss rsrc rdst	min	%1%S1, %0 */
#line 628 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 628 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 628 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0001 01ss rsrc rdst	min	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("min	%1%S1, %0");
#line 628 "rx-decode.opc"
                      ID(min); SP(ss, rsrc); DR(rdst);

                    }
                  break;
              }
            break;
          case 0x15:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_62;
                  break;
              }
            break;
          case 0x16:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_62;
                  break;
              }
            break;
          case 0x17:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_62;
                  break;
              }
            break;
          case 0x18:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_63:
                    {
                      /** 1111 1100 0001 10ss rsrc rdst	emul	%1%S1, %0 */
#line 686 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 686 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 686 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0001 10ss rsrc rdst	emul	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("emul	%1%S1, %0");
#line 686 "rx-decode.opc"
                      ID(emul); SP(ss, rsrc); DR(rdst);

                    }
                  break;
              }
            break;
          case 0x19:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_63;
                  break;
              }
            break;
          case 0x1a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_63;
                  break;
              }
            break;
          case 0x1b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_63;
                  break;
              }
            break;
          case 0x1c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_64:
                    {
                      /** 1111 1100 0001 11ss rsrc rdst	emulu	%1%S1, %0 */
#line 698 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 698 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 698 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0001 11ss rsrc rdst	emulu	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("emulu	%1%S1, %0");
#line 698 "rx-decode.opc"
                      ID(emulu); SP(ss, rsrc); DR(rdst);

                    }
                  break;
              }
            break;
          case 0x1d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_64;
                  break;
              }
            break;
          case 0x1e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_64;
                  break;
              }
            break;
          case 0x1f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_64;
                  break;
              }
            break;
          case 0x20:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_65:
                    {
                      /** 1111 1100 0010 00ss rsrc rdst	div	%1%S1, %0 */
#line 710 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 710 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 710 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0010 00ss rsrc rdst	div	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("div	%1%S1, %0");
#line 710 "rx-decode.opc"
                      ID(div); SP(ss, rsrc); DR(rdst); F_O___;

                    }
                  break;
              }
            break;
          case 0x21:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_65;
                  break;
              }
            break;
          case 0x22:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_65;
                  break;
              }
            break;
          case 0x23:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_65;
                  break;
              }
            break;
          case 0x24:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_66:
                    {
                      /** 1111 1100 0010 01ss rsrc rdst	divu	%1%S1, %0 */
#line 722 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 722 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 722 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0010 01ss rsrc rdst	divu	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("divu	%1%S1, %0");
#line 722 "rx-decode.opc"
                      ID(divu); SP(ss, rsrc); DR(rdst); F_O___;

                    }
                  break;
              }
            break;
          case 0x25:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_66;
                  break;
              }
            break;
          case 0x26:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_66;
                  break;
              }
            break;
          case 0x27:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_66;
                  break;
              }
            break;
          case 0x30:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_67:
                    {
                      /** 1111 1100 0011 00ss rsrc rdst	tst	%1%S1, %2 */
#line 495 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 495 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 495 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0011 00ss rsrc rdst	tst	%1%S1, %2 */",
                                 op[0], op[1], op[2]);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("tst	%1%S1, %2");
#line 495 "rx-decode.opc"
                      ID(and); SP(ss, rsrc); S2R(rdst); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x31:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_67;
                  break;
              }
            break;
          case 0x32:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_67;
                  break;
              }
            break;
          case 0x33:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_67;
                  break;
              }
            break;
          case 0x34:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_68:
                    {
                      /** 1111 1100 0011 01ss rsrc rdst	xor	%1%S1, %0 */
#line 474 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 474 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 474 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0011 01ss rsrc rdst	xor	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("xor	%1%S1, %0");
#line 474 "rx-decode.opc"
                      ID(xor); SP(ss, rsrc); DR(rdst); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x35:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_68;
                  break;
              }
            break;
          case 0x36:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_68;
                  break;
              }
            break;
          case 0x37:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_68;
                  break;
              }
            break;
          case 0x3b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1100 0011 1011 rsrc rdst	not	%1, %0 */
#line 486 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 486 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0011 1011 rsrc rdst	not	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("not	%1, %0");
#line 486 "rx-decode.opc"
                      ID(xor); DR(rdst); SR(rsrc); S2C(~0); F__SZ_;

                    /*----------------------------------------------------------------------*/
                    /* TST									*/

                    }
                  break;
              }
            break;
          case 0x40:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_69:
                    {
                      /** 1111 1100 0100 00ss rsrc rdst	xchg	%1%S1, %0 */
#line 408 "rx-decode.opc"
                      int ss AU = op[1] & 0x03;
#line 408 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 408 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0100 00ss rsrc rdst	xchg	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  ss = 0x%x,", ss);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("xchg	%1%S1, %0");
#line 408 "rx-decode.opc"
                      ID(xchg); DR(rdst); SP(ss, rsrc);

                    }
                  break;
              }
            break;
          case 0x41:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_69;
                  break;
              }
            break;
          case 0x42:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_69;
                  break;
              }
            break;
          case 0x43:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_69;
                  break;
              }
            break;
          case 0x44:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_70:
                    {
                      /** 1111 1100 0100 01sd rsrc rdst	itof	%1%S1, %0 */
#line 951 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 951 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 951 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0100 01sd rsrc rdst	itof	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("itof	%1%S1, %0");
#line 951 "rx-decode.opc"
                      ID(itof); DR (rdst); SP(sd, rsrc); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x45:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_70;
                  break;
              }
            break;
          case 0x46:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_70;
                  break;
              }
            break;
          case 0x47:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_70;
                  break;
              }
            break;
          case 0x4b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1100 0100 1011 rsrc rdst	stz	%1, %0 */
#line 1077 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1077 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0100 1011 rsrc rdst	stz	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("stz	%1, %0");
#line 1077 "rx-decode.opc"
                      ID(stcc); SR(rsrc); DR(rdst); S2cc(RXC_z);

                    }
                  break;
              }
            break;
          case 0x4f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1100 0100 1111 rsrc rdst	stnz	%1, %0 */
#line 1080 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1080 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0100 1111 rsrc rdst	stnz	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("stnz	%1, %0");
#line 1080 "rx-decode.opc"
                      ID(stcc); SR(rsrc); DR(rdst); S2cc(RXC_nz);

                    }
                  break;
              }
            break;
          case 0x54:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_71:
                    {
                      /** 1111 1100 0101 01sd rsrc rdst	utof	%1%S1, %0 */
#line 1137 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 1137 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1137 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0101 01sd rsrc rdst	utof	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("utof	%1%S1, %0");
#line 1137 "rx-decode.opc"
                      ID(utof); DR (rdst); SP(sd, rsrc); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x55:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_71;
                  break;
              }
            break;
          case 0x56:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_71;
                  break;
              }
            break;
          case 0x57:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_71;
                  break;
              }
            break;
          case 0x5a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1100 0101 1010 rsrc rdst	bfmovz	%bf */
#line 1152 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1152 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0101 1010 rsrc rdst	bfmovz	%bf */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("bfmovz	%bf");
#line 1152 "rx-decode.opc"
                      ID(bfmovz); DR(rdst); SR(rsrc); S2C(IMM(2)); F_____;

                    }
                  break;
              }
            break;
          case 0x5e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1100 0101 1110 rsrc rdst	bfmov	%bf */
#line 1149 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1149 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0101 1110 rsrc rdst	bfmov	%bf */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("bfmov	%bf");
#line 1149 "rx-decode.opc"
                      ID(bfmov); DR(rdst); SR(rsrc); S2C(IMM(2)); F_____;

                    }
                  break;
              }
            break;
          case 0x60:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_72:
                    {
                      /** 1111 1100 0110 00sd rdst rsrc	bset	%1, %0%S0 */
#line 963 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 963 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
#line 963 "rx-decode.opc"
                      int rsrc AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0110 00sd rdst rsrc	bset	%1, %0%S0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  rsrc = 0x%x\n", rsrc);
                        }
                      SYNTAX("bset	%1, %0%S0");
#line 963 "rx-decode.opc"
                      ID(bset); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____;
                      if (sd == 3) /* bset reg,reg */
                        BWL(LSIZE);

                    }
                  break;
              }
            break;
          case 0x61:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_72;
                  break;
              }
            break;
          case 0x62:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_72;
                  break;
              }
            break;
          case 0x63:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_72;
                  break;
              }
            break;
          case 0x64:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_73:
                    {
                      /** 1111 1100 0110 01sd rdst rsrc	bclr	%1, %0%S0 */
#line 975 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 975 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
#line 975 "rx-decode.opc"
                      int rsrc AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0110 01sd rdst rsrc	bclr	%1, %0%S0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  rsrc = 0x%x\n", rsrc);
                        }
                      SYNTAX("bclr	%1, %0%S0");
#line 975 "rx-decode.opc"
                      ID(bclr); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____;
                      if (sd == 3) /* bset reg,reg */
                        BWL(LSIZE);

                    }
                  break;
              }
            break;
          case 0x65:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_73;
                  break;
              }
            break;
          case 0x66:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_73;
                  break;
              }
            break;
          case 0x67:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_73;
                  break;
              }
            break;
          case 0x68:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_74:
                    {
                      /** 1111 1100 0110 10sd rdst rsrc	btst	%2, %1%S1 */
#line 987 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 987 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
#line 987 "rx-decode.opc"
                      int rsrc AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0110 10sd rdst rsrc	btst	%2, %1%S1 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  rsrc = 0x%x\n", rsrc);
                        }
                      SYNTAX("btst	%2, %1%S1");
#line 987 "rx-decode.opc"
                      ID(btst); BWL(BSIZE); S2R(rsrc); SD(sd, rdst, BSIZE); F___ZC;
                      if (sd == 3) /* bset reg,reg */
                        BWL(LSIZE);

                    }
                  break;
              }
            break;
          case 0x69:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_74;
                  break;
              }
            break;
          case 0x6a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_74;
                  break;
              }
            break;
          case 0x6b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_74;
                  break;
              }
            break;
          case 0x6c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_75:
                    {
                      /** 1111 1100 0110 11sd rdst rsrc	bnot	%1, %0%S0 */
#line 999 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 999 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
#line 999 "rx-decode.opc"
                      int rsrc AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0110 11sd rdst rsrc	bnot	%1, %0%S0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  rsrc = 0x%x\n", rsrc);
                        }
                      SYNTAX("bnot	%1, %0%S0");
#line 999 "rx-decode.opc"
                      ID(bnot); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE);
                      if (sd == 3) /* bset reg,reg */
                        BWL(LSIZE);

                    }
                  break;
              }
            break;
          case 0x6d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_75;
                  break;
              }
            break;
          case 0x6e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_75;
                  break;
              }
            break;
          case 0x6f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_75;
                  break;
              }
            break;
          case 0x78:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x08:
                  op_semantics_76:
                    {
                      /** 1111 1100 0111 10sz rdst 1000	dmov.d	%1, %0 */
#line 1185 "rx-decode.opc"
                      int sz AU = op[1] & 0x03;
#line 1185 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 0111 10sz rdst 1000	dmov.d	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sz = 0x%x,", sz);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("dmov.d	%1, %0");
#line 1185 "rx-decode.opc"
                      int rsrc;
                      rx_disp(0, sz, rdst, RX_Double, ld);
                      rsrc = GETBYTE();
                      if (rsrc & 0x0f)
                        UNSUPPORTED();
                      else {
                        ID(dmov); SDR(rsrc >> 4); F_____;
                      }

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x79:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x08:
                  goto op_semantics_76;
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x7a:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x08:
                  goto op_semantics_76;
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x80:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_77:
                    {
                      /** 1111 1100 1000 00sd rsrc rdst	fsub	%1%S1, %0 */
#line 930 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 930 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 930 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1000 00sd rsrc rdst	fsub	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("fsub	%1%S1, %0");
#line 930 "rx-decode.opc"
                      ID(fsub); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x81:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_77;
                  break;
              }
            break;
          case 0x82:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_77;
                  break;
              }
            break;
          case 0x83:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_77;
                  break;
              }
            break;
          case 0x84:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_78:
                    {
                      /** 1111 1100 1000 01sd rsrc rdst	fcmp	%1%S1, %0 */
#line 924 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 924 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 924 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1000 01sd rsrc rdst	fcmp	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("fcmp	%1%S1, %0");
#line 924 "rx-decode.opc"
                      ID(fcmp); DR(rdst); SD(sd, rsrc, LSIZE); F_OSZ_;

                    }
                  break;
              }
            break;
          case 0x85:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_78;
                  break;
              }
            break;
          case 0x86:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_78;
                  break;
              }
            break;
          case 0x87:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_78;
                  break;
              }
            break;
          case 0x88:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_79:
                    {
                      /** 1111 1100 1000 10sd rsrc rdst	fadd	%1%S1, %0 */
#line 918 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 918 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 918 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1000 10sd rsrc rdst	fadd	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("fadd	%1%S1, %0");
#line 918 "rx-decode.opc"
                      ID(fadd); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x89:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_79;
                  break;
              }
            break;
          case 0x8a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_79;
                  break;
              }
            break;
          case 0x8b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_79;
                  break;
              }
            break;
          case 0x8c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_80:
                    {
                      /** 1111 1100 1000 11sd rsrc rdst	fmul	%1%S1, %0 */
#line 939 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 939 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 939 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1000 11sd rsrc rdst	fmul	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("fmul	%1%S1, %0");
#line 939 "rx-decode.opc"
                      ID(fmul); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x8d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_80;
                  break;
              }
            break;
          case 0x8e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_80;
                  break;
              }
            break;
          case 0x8f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_80;
                  break;
              }
            break;
          case 0x90:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_81:
                    {
                      /** 1111 1100 1001 00sd rsrc rdst	fdiv	%1%S1, %0 */
#line 945 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 945 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 945 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1001 00sd rsrc rdst	fdiv	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("fdiv	%1%S1, %0");
#line 945 "rx-decode.opc"
                      ID(fdiv); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x91:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_81;
                  break;
              }
            break;
          case 0x92:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_81;
                  break;
              }
            break;
          case 0x93:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_81;
                  break;
              }
            break;
          case 0x94:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_82:
                    {
                      /** 1111 1100 1001 01sd rsrc rdst	ftoi	%1%S1, %0 */
#line 933 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 933 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 933 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1001 01sd rsrc rdst	ftoi	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("ftoi	%1%S1, %0");
#line 933 "rx-decode.opc"
                      ID(ftoi); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x95:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_82;
                  break;
              }
            break;
          case 0x96:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_82;
                  break;
              }
            break;
          case 0x97:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_82;
                  break;
              }
            break;
          case 0x98:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_83:
                    {
                      /** 1111 1100 1001 10sd rsrc rdst	round	%1%S1, %0 */
#line 948 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 948 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 948 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1001 10sd rsrc rdst	round	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("round	%1%S1, %0");
#line 948 "rx-decode.opc"
                      ID(round); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x99:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_83;
                  break;
              }
            break;
          case 0x9a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_83;
                  break;
              }
            break;
          case 0x9b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_83;
                  break;
              }
            break;
          case 0xa0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_84:
                    {
                      /** 1111 1100 1010 00sd rsrc rdst	fsqrt	%1%S1, %0 */
#line 1131 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 1131 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1131 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1010 00sd rsrc rdst	fsqrt	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("fsqrt	%1%S1, %0");
#line 1131 "rx-decode.opc"
                      ID(fsqrt); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_;

                    }
                  break;
              }
            break;
          case 0xa1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_84;
                  break;
              }
            break;
          case 0xa2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_84;
                  break;
              }
            break;
          case 0xa3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_84;
                  break;
              }
            break;
          case 0xa4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_85:
                    {
                      /** 1111 1100 1010 01sd rsrc rdst	ftou	%1%S1, %0 */
#line 1134 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 1134 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1134 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1010 01sd rsrc rdst	ftou	%1%S1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("ftou	%1%S1, %0");
#line 1134 "rx-decode.opc"
                      ID(ftou); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_;

                    }
                  break;
              }
            break;
          case 0xa5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_85;
                  break;
              }
            break;
          case 0xa6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_85;
                  break;
              }
            break;
          case 0xa7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_85;
                  break;
              }
            break;
          case 0xc8:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x08:
                  op_semantics_86:
                    {
                      /** 1111 1100 1100 10sz rsrc 1000	dmov.d	%1, %0 */
#line 1198 "rx-decode.opc"
                      int sz AU = op[1] & 0x03;
#line 1198 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1100 10sz rsrc 1000	dmov.d	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sz = 0x%x,", sz);
                          printf ("  rsrc = 0x%x\n", rsrc);
                        }
                      SYNTAX("dmov.d	%1, %0");
#line 1198 "rx-decode.opc"
                      int rdst;
                      rx_disp(1, sz, rsrc, RX_Double, ld);
                      rdst = GETBYTE();
                      if (rdst & 0x0f)
                        UNSUPPORTED();
                      else {
                        ID(dmov); DDR(rdst >> 4); F_____;
                      }

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xc9:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x08:
                  goto op_semantics_86;
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xca:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x08:
                  goto op_semantics_86;
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0xd0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_87:
                    {
                      /** 1111 1100 1101 sz sd rdst cond	sc%1%s	%0 */
#line 1065 "rx-decode.opc"
                      int sz AU = (op[1] >> 2) & 0x03;
#line 1065 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 1065 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
#line 1065 "rx-decode.opc"
                      int cond AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 1101 sz sd rdst cond	sc%1%s	%0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sz = 0x%x,", sz);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  cond = 0x%x\n", cond);
                        }
                      SYNTAX("sc%1%s	%0");
#line 1065 "rx-decode.opc"
                      ID(sccnd); BWL(sz); DD (sd, rdst, sz); Scc(cond);

                    /*----------------------------------------------------------------------*/
                    /* RXv2 enhanced							*/

                    }
                  break;
              }
            break;
          case 0xd1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xd2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xd3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xd4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xd5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xd6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xd7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xd8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xd9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xda:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xdb:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_87;
                  break;
              }
            break;
          case 0xe0:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  op_semantics_88:
                    {
                      /** 1111 1100 111bit sd rdst cond	bm%2	#%1, %0%S0 */
#line 1008 "rx-decode.opc"
                      int bit AU = (op[1] >> 2) & 0x07;
#line 1008 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 1008 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
#line 1008 "rx-decode.opc"
                      int cond AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 111bit sd rdst cond	bm%2	#%1, %0%S0 */",
                                 op[0], op[1], op[2]);
                          printf ("  bit = 0x%x,", bit);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  cond = 0x%x\n", cond);
                        }
                      SYNTAX("bm%2	#%1, %0%S0");
#line 1008 "rx-decode.opc"
                      ID(bmcc); BWL(BSIZE); S2cc(cond); SC(bit); DD(sd, rdst, BSIZE);

                    }
                  break;
                case 0x0f:
                  op_semantics_89:
                    {
                      /** 1111 1100 111bit sd rdst 1111	bnot	#%1, %0%S0 */
#line 996 "rx-decode.opc"
                      int bit AU = (op[1] >> 2) & 0x07;
#line 996 "rx-decode.opc"
                      int sd AU = op[1] & 0x03;
#line 996 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1100 111bit sd rdst 1111	bnot	#%1, %0%S0 */",
                                 op[0], op[1], op[2]);
                          printf ("  bit = 0x%x,", bit);
                          printf ("  sd = 0x%x,", sd);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("bnot	#%1, %0%S0");
#line 996 "rx-decode.opc"
                      ID(bnot); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE);

                    }
                  break;
              }
            break;
          case 0xe1:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xe2:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xe3:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xe4:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xe5:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xe6:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xe7:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xe8:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xe9:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xea:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xeb:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xec:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xed:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xee:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xef:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf0:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf1:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf2:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf3:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf4:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf5:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf6:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf7:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf8:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xf9:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xfa:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xfb:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xfc:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xfd:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xfe:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          case 0xff:
              GETBYTE ();
              switch (op[2] & 0x0f)
              {
                case 0x00:
                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:
                  goto op_semantics_88;
                  break;
                case 0x0f:
                  goto op_semantics_89;
                  break;
              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0xfd:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x00:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_90:
                    {
                      /** 1111 1101 0000 a000 srca srcb	mulhi	%1, %2, %0 */
#line 873 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 873 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 873 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0000 a000 srca srcb	mulhi	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("mulhi	%1, %2, %0");
#line 873 "rx-decode.opc"
                      ID(mulhi); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x01:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_91:
                    {
                      /** 1111 1101 0000 a001 srca srcb	mullo	%1, %2, %0 */
#line 876 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 876 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 876 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0000 a001 srca srcb	mullo	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("mullo	%1, %2, %0");
#line 876 "rx-decode.opc"
                      ID(mullo); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x02:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_92:
                    {
                      /** 1111 1101 0000 a010 srca srcb	mullh	%1, %2, %0 */
#line 1104 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 1104 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1104 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0000 a010 srca srcb	mullh	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("mullh	%1, %2, %0");
#line 1104 "rx-decode.opc"
                      ID(mullh); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x03:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_93:
                    {
                      /** 1111 1101 0000 a011 srca srcb 	emula	%1, %2, %0 */
#line 1089 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 1089 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1089 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0000 a011 srca srcb 	emula	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("emula	%1, %2, %0");
#line 1089 "rx-decode.opc"
                      ID(emula); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x04:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_94:
                    {
                      /** 1111 1101 0000 a100 srca srcb	machi	%1, %2, %0 */
#line 879 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 879 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 879 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0000 a100 srca srcb	machi	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("machi	%1, %2, %0");
#line 879 "rx-decode.opc"
                      ID(machi); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x05:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_95:
                    {
                      /** 1111 1101 0000 a101 srca srcb	maclo	%1, %2, %0 */
#line 882 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 882 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 882 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0000 a101 srca srcb	maclo	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("maclo	%1, %2, %0");
#line 882 "rx-decode.opc"
                      ID(maclo); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x06:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_96:
                    {
                      /** 1111 1101 0000 a110 srca srcb	maclh	%1, %2, %0 */
#line 1092 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 1092 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1092 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0000 a110 srca srcb	maclh	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("maclh	%1, %2, %0");
#line 1092 "rx-decode.opc"
                      ID(maclh); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x07:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_97:
                    {
                      /** 1111 1101 0000 a111 srca srcb 	emaca	%1, %2, %0 */
#line 1083 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 1083 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1083 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0000 a111 srca srcb 	emaca	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("emaca	%1, %2, %0");
#line 1083 "rx-decode.opc"
                      ID(emaca); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x08:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_90;
                  break;
              }
            break;
          case 0x09:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_91;
                  break;
              }
            break;
          case 0x0a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_92;
                  break;
              }
            break;
          case 0x0b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_93;
                  break;
              }
            break;
          case 0x0c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_94;
                  break;
              }
            break;
          case 0x0d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_95;
                  break;
              }
            break;
          case 0x0e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_96;
                  break;
              }
            break;
          case 0x0f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_97;
                  break;
              }
            break;
          case 0x17:
              GETBYTE ();
              switch (op[2] & 0x70)
              {
                case 0x00:
                    {
                      /** 1111 1101 0001 0111 a000 rsrc	mvtachi	%1, %0 */
#line 885 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 885 "rx-decode.opc"
                      int rsrc AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 0111 a000 rsrc	mvtachi	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  rsrc = 0x%x\n", rsrc);
                        }
                      SYNTAX("mvtachi	%1, %0");
#line 885 "rx-decode.opc"
                      ID(mvtachi); DR(a+32); SR(rsrc); F_____;

                    }
                  break;
                case 0x10:
                    {
                      /** 1111 1101 0001 0111 a001 rsrc	mvtaclo	%1, %0 */
#line 888 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 888 "rx-decode.opc"
                      int rsrc AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 0111 a001 rsrc	mvtaclo	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  rsrc = 0x%x\n", rsrc);
                        }
                      SYNTAX("mvtaclo	%1, %0");
#line 888 "rx-decode.opc"
                      ID(mvtaclo); DR(a+32); SR(rsrc); F_____;

                    }
                  break;
                case 0x30:
                    {
                      /** 1111 1101 0001 0111 a011 rdst	mvtacgu	%0, %1 */
#line 1110 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 1110 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 0111 a011 rdst	mvtacgu	%0, %1 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mvtacgu	%0, %1");
#line 1110 "rx-decode.opc"
                      ID(mvtacgu); DR(a+32); SR(rdst); F_____;

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x18:
              GETBYTE ();
              switch (op[2] & 0x6f)
              {
                case 0x00:
                    {
                      /** 1111 1101 0001 1000 a00i 0000	racw	#%1, %0 */
#line 900 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 900 "rx-decode.opc"
                      int i AU = (op[2] >> 4) & 0x01;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 1000 a00i 0000	racw	#%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  i = 0x%x\n", i);
                        }
                      SYNTAX("racw	#%1, %0");
#line 900 "rx-decode.opc"
                      ID(racw); SC(i+1); DR(a+32); F_____;

                    /*----------------------------------------------------------------------*/
                    /* SAT									*/

                    }
                  break;
                case 0x40:
                    {
                      /** 1111 1101 0001 1000 a10i 0000	rdacw	#%1, %0 */
#line 1119 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 1119 "rx-decode.opc"
                      int i AU = (op[2] >> 4) & 0x01;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 1000 a10i 0000	rdacw	#%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  i = 0x%x\n", i);
                        }
                      SYNTAX("rdacw	#%1, %0");
#line 1119 "rx-decode.opc"
                      ID(rdacw); SC(i+1); DR(a+32); F_____;

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x19:
              GETBYTE ();
              switch (op[2] & 0x6f)
              {
                case 0x00:
                    {
                      /** 1111 1101 0001 1001 a00i 0000	racl	#%1, %0 */
#line 1113 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 1113 "rx-decode.opc"
                      int i AU = (op[2] >> 4) & 0x01;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 1001 a00i 0000	racl	#%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  i = 0x%x\n", i);
                        }
                      SYNTAX("racl	#%1, %0");
#line 1113 "rx-decode.opc"
                      ID(racl); SC(i+1); DR(a+32); F_____;

                    }
                  break;
                case 0x40:
                    {
                      /** 1111 1101 0001 1001 a10i 0000	rdacl	#%1, %0 */
#line 1116 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 1116 "rx-decode.opc"
                      int i AU = (op[2] >> 4) & 0x01;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 1001 a10i 0000	rdacl	#%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  i = 0x%x\n", i);
                        }
                      SYNTAX("rdacl	#%1, %0");
#line 1116 "rx-decode.opc"
                      ID(rdacl); SC(i+1); DR(a+32); F_____;

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x1e:
              GETBYTE ();
              switch (op[2] & 0x30)
              {
                case 0x00:
                  op_semantics_98:
                    {
                      /** 1111 1101 0001 111i a m00 rdst	mvfachi	#%2, %1, %0 */
#line 891 "rx-decode.opc"
                      int i AU = op[1] & 0x01;
#line 891 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 891 "rx-decode.opc"
                      int m AU = (op[2] >> 6) & 0x01;
#line 891 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 111i a m00 rdst	mvfachi	#%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  i = 0x%x,", i);
                          printf ("  a = 0x%x,", a);
                          printf ("  m = 0x%x,", m);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mvfachi	#%2, %1, %0");
#line 891 "rx-decode.opc"
                      ID(mvfachi); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____;

                    }
                  break;
                case 0x10:
                  op_semantics_99:
                    {
                      /** 1111 1101 0001 111i a m01 rdst	mvfaclo	#%2, %1, %0 */
#line 897 "rx-decode.opc"
                      int i AU = op[1] & 0x01;
#line 897 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 897 "rx-decode.opc"
                      int m AU = (op[2] >> 6) & 0x01;
#line 897 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 111i a m01 rdst	mvfaclo	#%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  i = 0x%x,", i);
                          printf ("  a = 0x%x,", a);
                          printf ("  m = 0x%x,", m);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mvfaclo	#%2, %1, %0");
#line 897 "rx-decode.opc"
                      ID(mvfaclo); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____;

                    }
                  break;
                case 0x20:
                  op_semantics_100:
                    {
                      /** 1111 1101 0001 111i a m10 rdst	mvfacmi	#%2, %1, %0 */
#line 894 "rx-decode.opc"
                      int i AU = op[1] & 0x01;
#line 894 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 894 "rx-decode.opc"
                      int m AU = (op[2] >> 6) & 0x01;
#line 894 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 111i a m10 rdst	mvfacmi	#%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  i = 0x%x,", i);
                          printf ("  a = 0x%x,", a);
                          printf ("  m = 0x%x,", m);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mvfacmi	#%2, %1, %0");
#line 894 "rx-decode.opc"
                      ID(mvfacmi); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____;

                    }
                  break;
                case 0x30:
                  op_semantics_101:
                    {
                      /** 1111 1101 0001 111i a m11 rdst	mvfacgu	#%2, %1, %0 */
#line 1107 "rx-decode.opc"
                      int i AU = op[1] & 0x01;
#line 1107 "rx-decode.opc"
                      int a AU = (op[2] >> 7) & 0x01;
#line 1107 "rx-decode.opc"
                      int m AU = (op[2] >> 6) & 0x01;
#line 1107 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0001 111i a m11 rdst	mvfacgu	#%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  i = 0x%x,", i);
                          printf ("  a = 0x%x,", a);
                          printf ("  m = 0x%x,", m);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mvfacgu	#%2, %1, %0");
#line 1107 "rx-decode.opc"
                      ID(mvfacgu); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____;

                    }
                  break;
              }
            break;
          case 0x1f:
              GETBYTE ();
              switch (op[2] & 0x30)
              {
                case 0x00:
                  goto op_semantics_98;
                  break;
                case 0x10:
                  goto op_semantics_99;
                  break;
                case 0x20:
                  goto op_semantics_100;
                  break;
                case 0x30:
                  goto op_semantics_101;
                  break;
              }
            break;
          case 0x20:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_102:
                    {
                      /** 1111 1101 0010 0p sz rdst rsrc	mov%s	%1, %0 */
#line 369 "rx-decode.opc"
                      int p AU = (op[1] >> 2) & 0x01;
#line 369 "rx-decode.opc"
                      int sz AU = op[1] & 0x03;
#line 369 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
#line 369 "rx-decode.opc"
                      int rsrc AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0010 0p sz rdst rsrc	mov%s	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  p = 0x%x,", p);
                          printf ("  sz = 0x%x,", sz);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  rsrc = 0x%x\n", rsrc);
                        }
                      SYNTAX("mov%s	%1, %0");
#line 369 "rx-decode.opc"
                      ID(mov); sBWL (sz); SR(rsrc); F_____;
                      OP(0, p ? RX_Operand_Predec : RX_Operand_Postinc, rdst, 0);

                    }
                  break;
              }
            break;
          case 0x21:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_102;
                  break;
              }
            break;
          case 0x22:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_102;
                  break;
              }
            break;
          case 0x24:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_102;
                  break;
              }
            break;
          case 0x25:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_102;
                  break;
              }
            break;
          case 0x26:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_102;
                  break;
              }
            break;
          case 0x27:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1101 0010 0111 rdst rsrc	movco	%1, [%0] */
#line 1071 "rx-decode.opc"
                      int rdst AU = (op[2] >> 4) & 0x0f;
#line 1071 "rx-decode.opc"
                      int rsrc AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0010 0111 rdst rsrc	movco	%1, [%0] */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  rsrc = 0x%x\n", rsrc);
                        }
                      SYNTAX("movco	%1, [%0]");
#line 1071 "rx-decode.opc"
                       ID(movco); SR(rsrc); DR(rdst); F_____;

                    }
                  break;
              }
            break;
          case 0x28:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_103:
                    {
                      /** 1111 1101 0010 1p sz rsrc rdst	mov%s	%1, %0 */
#line 373 "rx-decode.opc"
                      int p AU = (op[1] >> 2) & 0x01;
#line 373 "rx-decode.opc"
                      int sz AU = op[1] & 0x03;
#line 373 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 373 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0010 1p sz rsrc rdst	mov%s	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  p = 0x%x,", p);
                          printf ("  sz = 0x%x,", sz);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mov%s	%1, %0");
#line 373 "rx-decode.opc"
                      ID(mov); sBWL (sz); DR(rdst); F_____;
                      OP(1, p ? RX_Operand_Predec : RX_Operand_Postinc, rsrc, 0);

                    }
                  break;
              }
            break;
          case 0x29:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_103;
                  break;
              }
            break;
          case 0x2a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_103;
                  break;
              }
            break;
          case 0x2c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_103;
                  break;
              }
            break;
          case 0x2d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_103;
                  break;
              }
            break;
          case 0x2e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_103;
                  break;
              }
            break;
          case 0x2f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1101 0010 1111 rsrc rdst	movli	[%1], %0 */
#line 1074 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1074 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0010 1111 rsrc rdst	movli	[%1], %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("movli	[%1], %0");
#line 1074 "rx-decode.opc"
                       ID(movli); SR(rsrc); DR(rdst); F_____;

                    }
                  break;
              }
            break;
          case 0x38:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_104:
                    {
                      /** 1111 1101 0011 1p sz rsrc rdst	movu%s	%1, %0 */
#line 383 "rx-decode.opc"
                      int p AU = (op[1] >> 2) & 0x01;
#line 383 "rx-decode.opc"
                      int sz AU = op[1] & 0x03;
#line 383 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 383 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0011 1p sz rsrc rdst	movu%s	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  p = 0x%x,", p);
                          printf ("  sz = 0x%x,", sz);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("movu%s	%1, %0");
#line 383 "rx-decode.opc"
                      ID(mov); uBW (sz); DR(rdst); F_____;
                       OP(1, p ? RX_Operand_Predec : RX_Operand_Postinc, rsrc, 0);

                    /*----------------------------------------------------------------------*/
                    /* PUSH/POP								*/

                    }
                  break;
              }
            break;
          case 0x39:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_104;
                  break;
              }
            break;
          case 0x3a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_104;
                  break;
              }
            break;
          case 0x3c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_104;
                  break;
              }
            break;
          case 0x3d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_104;
                  break;
              }
            break;
          case 0x3e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_104;
                  break;
              }
            break;
          case 0x44:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_105:
                    {
                      /** 1111 1101 0100 a100 srca srcb	msbhi	%1, %2, %0 */
#line 1095 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 1095 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1095 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0100 a100 srca srcb	msbhi	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("msbhi	%1, %2, %0");
#line 1095 "rx-decode.opc"
                      ID(msbhi); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x45:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_106:
                    {
                      /** 1111 1101 0100 a101 srca srcb	msblo	%1, %2, %0 */
#line 1101 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 1101 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1101 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0100 a101 srca srcb	msblo	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("msblo	%1, %2, %0");
#line 1101 "rx-decode.opc"
                      ID(msblo); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x46:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_107:
                    {
                      /** 1111 1101 0100 a110 srca srcb	msblh	%1, %2, %0 */
#line 1098 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 1098 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1098 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0100 a110 srca srcb	msblh	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("msblh	%1, %2, %0");
#line 1098 "rx-decode.opc"
                      ID(msblh); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x47:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_108:
                    {
                      /** 1111 1101 0100 a111 srca srcb 	emsba	%1, %2, %0 */
#line 1086 "rx-decode.opc"
                      int a AU = (op[1] >> 3) & 0x01;
#line 1086 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1086 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0100 a111 srca srcb 	emsba	%1, %2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  a = 0x%x,", a);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("emsba	%1, %2, %0");
#line 1086 "rx-decode.opc"
                      ID(emsba); DR(a+32); SR(srca); S2R(srcb); F_____;

                    }
                  break;
              }
            break;
          case 0x4c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_105;
                  break;
              }
            break;
          case 0x4d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_106;
                  break;
              }
            break;
          case 0x4e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_107;
                  break;
              }
            break;
          case 0x4f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_108;
                  break;
              }
            break;
          case 0x60:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1101 0110 0000 rsrc rdst	shlr	%2, %0 */
#line 754 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 754 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0110 0000 rsrc rdst	shlr	%2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("shlr	%2, %0");
#line 754 "rx-decode.opc"
                      ID(shlr); S2R(rsrc); SR(rdst); DR(rdst); F__SZC;

                    }
                  break;
              }
            break;
          case 0x61:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1101 0110 0001 rsrc rdst	shar	%2, %0 */
#line 744 "rx-decode.opc"
                      int rsrc 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 0001 rsrc rdst	shar	%2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("shar	%2, %0");
#line 744 "rx-decode.opc"
                      ID(shar); S2R(rsrc); SR(rdst); DR(rdst); F_0SZC;

                    }
                  break;
              }
            break;
          case 0x62:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1101 0110 0010 rsrc rdst	shll	%2, %0 */
#line 734 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 734 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0110 0010 rsrc rdst	shll	%2, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("shll	%2, %0");
#line 734 "rx-decode.opc"
                      ID(shll); S2R(rsrc); SR(rdst); DR(rdst); F_OSZC;

                    }
                  break;
              }
            break;
          case 0x64:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1101 0110 0100 rsrc rdst	rotr	%1, %0 */
#line 778 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 778 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0110 0100 rsrc rdst	rotr	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("rotr	%1, %0");
#line 778 "rx-decode.opc"
                      ID(rotr); SR(rsrc); DR(rdst); F__SZC;

                    }
                  break;
              }
            break;
          case 0x65:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1101 0110 0101 rsrc rdst	revw	%1, %0 */
#line 781 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 781 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0110 0101 rsrc rdst	revw	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("revw	%1, %0");
#line 781 "rx-decode.opc"
                      ID(revw); SR(rsrc); DR(rdst);

                    }
                  break;
              }
            break;
          case 0x66:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1101 0110 0110 rsrc rdst	rotl	%1, %0 */
#line 772 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 772 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0110 0110 rsrc rdst	rotl	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("rotl	%1, %0");
#line 772 "rx-decode.opc"
                      ID(rotl); SR(rsrc); DR(rdst); F__SZC;

                    }
                  break;
              }
            break;
          case 0x67:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                    {
                      /** 1111 1101 0110 0111 rsrc rdst	revl	%1, %0 */
#line 784 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 784 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0110 0111 rsrc rdst	revl	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("revl	%1, %0");
#line 784 "rx-decode.opc"
                      ID(revl); SR(rsrc); DR(rdst);

                    /*----------------------------------------------------------------------*/
                    /* BRANCH								*/

                    }
                  break;
              }
            break;
          case 0x68:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_109:
                    {
                      /** 1111 1101 0110 100c rsrc rdst	mvtc	%1, %0 */
#line 1035 "rx-decode.opc"
                      int c AU = op[1] & 0x01;
#line 1035 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1035 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0110 100c rsrc rdst	mvtc	%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  c = 0x%x,", c);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mvtc	%1, %0");
#line 1035 "rx-decode.opc"
                      ID(mov); SR(rsrc); DR(c*16+rdst + 16);

                    }
                  break;
              }
            break;
          case 0x69:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_109;
                  break;
              }
            break;
          case 0x6a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_110:
                    {
                      /** 1111 1101 0110 101s rsrc rdst	mvfc	%1, %0 */
#line 1038 "rx-decode.opc"
                      int s AU = op[1] & 0x01;
#line 1038 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 1038 "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 1038 "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_110;
                  break;
              }
            break;
          case 0x6c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_111:
                    {
                      /** 1111 1101 0110 110i mmmm rdst	rotr	#%1, %0 */
#line 775 "rx-decode.opc"
                      int i AU = op[1] & 0x01;
#line 775 "rx-decode.opc"
                      int mmmm AU = (op[2] >> 4) & 0x0f;
#line 775 "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 775 "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_111;
                  break;
              }
            break;
          case 0x6e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_112:
                    {
                      /** 1111 1101 0110 111i mmmm rdst	rotl	#%1, %0 */
#line 769 "rx-decode.opc"
                      int i AU = op[1] & 0x01;
#line 769 "rx-decode.opc"
                      int mmmm AU = (op[2] >> 4) & 0x0f;
#line 769 "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 769 "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_112;
                  break;
              }
            break;
          case 0x70:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x20:
                  op_semantics_113:
                    {
                      /** 1111 1101 0111 im00 0010rdst	adc	#%1, %0 */
#line 513 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 513 "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 513 "rx-decode.opc"
                      ID(adc); SC(IMMex(im)); DR(rdst); F_OSZC;

                    }
                  break;
                case 0x40:
                  op_semantics_114:
                    {
                      /** 1111 1101 0111 im00 0100rdst	max	#%1, %0 */
#line 595 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 595 "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 595 "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_115:
                    {
                      /** 1111 1101 0111 im00 0101rdst	min	#%1, %0 */
#line 625 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 625 "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 625 "rx-decode.opc"
                      ID(min); DR(rdst); SC(IMMex(im));

                    }
                  break;
                case 0x60:
                  op_semantics_116:
                    {
                      /** 1111 1101 0111 im00 0110rdst	emul	#%1, %0 */
#line 683 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 683 "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 683 "rx-decode.opc"
                      ID(emul); DR(rdst); SC(IMMex(im));

                    }
                  break;
                case 0x70:
                  op_semantics_117:
                    {
                      /** 1111 1101 0111 im00 0111rdst	emulu	#%1, %0 */
#line 695 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 695 "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 695 "rx-decode.opc"
                      ID(emulu); DR(rdst); SC(IMMex(im));

                    }
                  break;
                case 0x80:
                  op_semantics_118:
                    {
                      /** 1111 1101 0111 im00 1000rdst	div	#%1, %0 */
#line 707 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 707 "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 707 "rx-decode.opc"
                      ID(div); DR(rdst); SC(IMMex(im)); F_O___;

                    }
                  break;
                case 0x90:
                  op_semantics_119:
                    {
                      /** 1111 1101 0111 im00 1001rdst	divu	#%1, %0 */
#line 719 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 719 "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 719 "rx-decode.opc"
                      ID(divu); DR(rdst); SC(IMMex(im)); F_O___;

                    }
                  break;
                case 0xc0:
                  op_semantics_120:
                    {
                      /** 1111 1101 0111 im00 1100rdst	tst	#%1, %2 */
#line 492 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 492 "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 492 "rx-decode.opc"
                      ID(and); SC(IMMex(im)); S2R(rdst); F__SZ_;

                    }
                  break;
                case 0xd0:
                  op_semantics_121:
                    {
                      /** 1111 1101 0111 im00 1101rdst	xor	#%1, %0 */
#line 471 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 471 "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 471 "rx-decode.opc"
                      ID(xor); SC(IMMex(im)); DR(rdst); F__SZ_;

                    }
                  break;
                case 0xe0:
                  op_semantics_122:
                    {
                      /** 1111 1101 0111 im00 1110rdst	stz	#%1, %0 */
#line 417 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 417 "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 417 "rx-decode.opc"
                      ID(stcc); SC(IMMex(im)); DR(rdst); S2cc(RXC_z);

                    }
                  break;
                case 0xf0:
                  op_semantics_123:
                    {
                      /** 1111 1101 0111 im00 1111rdst	stnz	#%1, %0 */
#line 420 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 420 "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 420 "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 927 "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 927 "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 921 "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 921 "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 915 "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 915 "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 936 "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);
                        }
                      SYNTAX("fmul	#%1, %0");
#line 936 "rx-decode.opc"
                      ID(fmul); DR(rdst); SC(IMM(0)); F__SZ_;

                    }
                  break;
                case 0x40:
                    {
                      /** 1111 1101 0111 0010 0100 rdst	fdiv	#%1, %0 */
#line 942 "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 0100 rdst	fdiv	#%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("fdiv	#%1, %0");
#line 942 "rx-decode.opc"
                      ID(fdiv); DR(rdst); SC(IMM(0)); F__SZ_;

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x73:
              GETBYTE ();
              switch (op[2] & 0xe0)
              {
                case 0x00:
                  op_semantics_124:
                    {
                      /** 1111 1101 0111 im11 000crdst	mvtc	#%1, %0 */
#line 1032 "rx-decode.opc"
                      int im AU = (op[1] >> 2) & 0x03;
#line 1032 "rx-decode.opc"
                      int crdst AU = op[2] & 0x1f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0111 im11 000crdst	mvtc	#%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  im = 0x%x,", im);
                          printf ("  crdst = 0x%x\n", crdst);
                        }
                      SYNTAX("mvtc	#%1, %0");
#line 1032 "rx-decode.opc"
                      ID(mov); SC(IMMex(im)); DR(crdst + 16);

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x74:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x20:
                  goto op_semantics_113;
                  break;
                case 0x40:
                  goto op_semantics_114;
                  break;
                case 0x50:
                  goto op_semantics_115;
                  break;
                case 0x60:
                  goto op_semantics_116;
                  break;
                case 0x70:
                  goto op_semantics_117;
                  break;
                case 0x80:
                  goto op_semantics_118;
                  break;
                case 0x90:
                  goto op_semantics_119;
                  break;
                case 0xc0:
                  goto op_semantics_120;
                  break;
                case 0xd0:
                  goto op_semantics_121;
                  break;
                case 0xe0:
                  goto op_semantics_122;
                  break;
                case 0xf0:
                  goto op_semantics_123;
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x75:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x80:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        op_semantics_125:
                          {
                            /** 1111 1101 0111 0101 1000 rdst rsrc 0000	dmov.l	%1, %0 */
#line 1176 "rx-decode.opc"
                            int rdst AU = op[2] & 0x0f;
#line 1176 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0101 1000 rdst rsrc 0000	dmov.l	%1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rdst = 0x%x,", rdst);
                                printf ("  rsrc = 0x%x\n", rsrc);
                              }
                            SYNTAX("dmov.l	%1, %0");
#line 1176 "rx-decode.opc"
                            ID(dmov); DR(rdst); SDRL(rsrc); F_____;

                          }
                        break;
                      case 0x02:
                        op_semantics_126:
                          {
                            /** 1111 1101 0111 0101 1000 rdst rsrc 0010	dmov.l	%1, %0 */
#line 1173 "rx-decode.opc"
                            int rdst AU = op[2] & 0x0f;
#line 1173 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0101 1000 rdst rsrc 0010	dmov.l	%1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rdst = 0x%x,", rdst);
                                printf ("  rsrc = 0x%x\n", rsrc);
                              }
                            SYNTAX("dmov.l	%1, %0");
#line 1173 "rx-decode.opc"
                            ID(dmov); DR(rdst); SDRH(rsrc); F_____;

                          }
                        break;
                      case 0x04:
                        op_semantics_127:
                          {
                            /** 1111 1101 0111 0101 1000 rdst rsrc 0100	mvfdc	%1, %0 */
#line 1226 "rx-decode.opc"
                            int rdst AU = op[2] & 0x0f;
#line 1226 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0101 1000 rdst rsrc 0100	mvfdc	%1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rdst = 0x%x,", rdst);
                                printf ("  rsrc = 0x%x\n", rsrc);
                              }
                            SYNTAX("mvfdc	%1, %0");
#line 1226 "rx-decode.opc"
                            ID(mvfdc); DR(rdst); SCR(rsrc); F_____;

                          }
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x81:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x82:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x83:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x84:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x85:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x86:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x87:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x88:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x89:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8a:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8b:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8c:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8d:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8e:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8f:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_125;
                        break;
                      case 0x02:
                        goto op_semantics_126;
                        break;
                      case 0x04:
                        goto op_semantics_127;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x76:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0xc0:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        op_semantics_128:
                          {
                            /** 1111 1101 0111 0110 1100 rsrc 0000 0000 	save	%1 */
#line 1161 "rx-decode.opc"
                            int rsrc AU = op[2] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0110 1100 rsrc 0000 0000 	save	%1 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rsrc = 0x%x\n", rsrc);
                              }
                            SYNTAX("save	%1");
#line 1161 "rx-decode.opc"
                            ID(save); SR(rsrc); F_____;

                          }
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xc1:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xc2:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xc3:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xc4:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xc5:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xc6:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xc7:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xc8:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xc9:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xca:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xcb:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xcc:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xcd:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xce:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xcf:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_128;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd0:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        op_semantics_129:
                          {
                            /** 1111 1101 0111 0110 1101 rsrc 0000 0000 	rstr	%1 */
#line 1155 "rx-decode.opc"
                            int rsrc AU = op[2] & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0110 1101 rsrc 0000 0000 	rstr	%1 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rsrc = 0x%x\n", rsrc);
                              }
                            SYNTAX("rstr	%1");
#line 1155 "rx-decode.opc"
                            ID(rstr); SR(rsrc); F_____;

                          }
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd1:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd2:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd3:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd4:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd5:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd6:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd7:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd8:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xd9:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xda:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xdb:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xdc:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xdd:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xde:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xdf:
                    GETBYTE ();
                    switch (op[3] & 0xff)
                    {
                      case 0x00:
                        goto op_semantics_129;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0xe0:
                    {
                      /** 1111 1101 0111 0110 1110 0000	save	#%1 */
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0111 0110 1110 0000	save	#%1 */",
                                 op[0], op[1], op[2]);
                        }
                      SYNTAX("save	#%1");
#line 1164 "rx-decode.opc"
                      ID(save); SC(IMM(1)); F_____;

                    }
                  break;
                case 0xf0:
                    {
                      /** 1111 1101 0111 0110 1111 0000 	rstr	#%1 */
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 0111 0110 1111 0000 	rstr	#%1 */",
                                 op[0], op[1], op[2]);
                        }
                      SYNTAX("rstr	#%1");
#line 1158 "rx-decode.opc"
                      ID(rstr); SC(IMM(1)); F_____;

                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x77:
              GETBYTE ();
              switch (op[2] & 0xff)
              {
                case 0x00:
                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:
                case 0x10:
                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_124;
                  break;
                case 0x80:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        op_semantics_130:
                          {
                            /** 1111 1101 0111 0111 1000 rsrc rdst 0000	dmov.l	%1, %0 */
#line 1170 "rx-decode.opc"
                            int rsrc AU = op[2] & 0x0f;
#line 1170 "rx-decode.opc"
                            int rdst AU = (op[3] >> 4) & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0111 1000 rsrc rdst 0000	dmov.l	%1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("dmov.l	%1, %0");
#line 1170 "rx-decode.opc"
                            ID(dmov); DDRL(rdst); SR(rsrc); F_____;

                          }
                        break;
                      case 0x02:
                      case 0x03:
                        op_semantics_131:
                          {
                            /** 1111 1101 0111 0111 1000 rsrc rdst 001s	dmov%s	%1, %0 */
#line 1167 "rx-decode.opc"
                            int rsrc AU = op[2] & 0x0f;
#line 1167 "rx-decode.opc"
                            int rdst AU = (op[3] >> 4) & 0x0f;
#line 1167 "rx-decode.opc"
                            int s AU = op[3] & 0x01;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0111 1000 rsrc rdst 001s	dmov%s	%1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x,", rdst);
                                printf ("  s = 0x%x\n", s);
                              }
                            SYNTAX("dmov%s	%1, %0");
#line 1167 "rx-decode.opc"
                            ID(dmov); DDRH(rdst); SR(rsrc); DL(s); F_____;

                          }
                        break;
                      case 0x04:
                        op_semantics_132:
                          {
                            /** 1111 1101 0111 0111 1000 rdst rsrc 0100	mvtdc	%1, %0 */
#line 1232 "rx-decode.opc"
                            int rdst AU = op[2] & 0x0f;
#line 1232 "rx-decode.opc"
                            int rsrc AU = (op[3] >> 4) & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0111 1000 rdst rsrc 0100	mvtdc	%1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rdst = 0x%x,", rdst);
                                printf ("  rsrc = 0x%x\n", rsrc);
                              }
                            SYNTAX("mvtdc	%1, %0");
#line 1232 "rx-decode.opc"
                            ID(mvtdc); DCR(rdst); SR(rsrc); F_____;

                          }
                        break;
                      case 0x09:
                        op_semantics_133:
                          {
                            /** 1111 1101 0111 0111 1000 rsrc rdst 1001	itod	%1, %0 */
#line 1274 "rx-decode.opc"
                            int rsrc AU = op[2] & 0x0f;
#line 1274 "rx-decode.opc"
                            int rdst AU = (op[3] >> 4) & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0111 1000 rsrc rdst 1001	itod	%1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("itod	%1, %0");
#line 1274 "rx-decode.opc"
                            ID(itod); DDR(rdst); SR(rsrc); F_____;

                          }
                        break;
                      case 0x0a:
                        op_semantics_134:
                          {
                            /** 1111 1101 0111 0111 1000 rsrc rdst 1010	ftod	%1, %0 */
#line 1271 "rx-decode.opc"
                            int rsrc AU = op[2] & 0x0f;
#line 1271 "rx-decode.opc"
                            int rdst AU = (op[3] >> 4) & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0111 1000 rsrc rdst 1010	ftod	%1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("ftod	%1, %0");
#line 1271 "rx-decode.opc"
                            ID(ftod); DDR(rdst); SR(rsrc); F_____;

                          }
                        break;
                      case 0x0d:
                        op_semantics_135:
                          {
                            /** 1111 1101 0111 0111 1000 rsrc rdst 1101	utod	%1, %0 */
#line 1277 "rx-decode.opc"
                            int rsrc AU = op[2] & 0x0f;
#line 1277 "rx-decode.opc"
                            int rdst AU = (op[3] >> 4) & 0x0f;
                            if (trace)
                              {
                                printf ("\033[33m%s\033[0m  %02x %02x %02x %02x\n",
                                       "/** 1111 1101 0111 0111 1000 rsrc rdst 1101	utod	%1, %0 */",
                                       op[0], op[1], op[2], op[3]);
                                printf ("  rsrc = 0x%x,", rsrc);
                                printf ("  rdst = 0x%x\n", rdst);
                              }
                            SYNTAX("utod	%1, %0");
#line 1277 "rx-decode.opc"
                            ID(dsqrt); DDR(rdst); SR(rsrc); F_____;

                          }
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x81:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x82:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x83:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x84:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x85:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x86:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x87:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x88:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x89:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8a:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8b:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8c:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8d:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8e:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                case 0x8f:
                    GETBYTE ();
                    switch (op[3] & 0x0f)
                    {
                      case 0x00:
                        goto op_semantics_130;
                        break;
                      case 0x02:
                      case 0x03:
                        goto op_semantics_131;
                        break;
                      case 0x04:
                        goto op_semantics_132;
                        break;
                      case 0x09:
                        goto op_semantics_133;
                        break;
                      case 0x0a:
                        goto op_semantics_134;
                        break;
                      case 0x0d:
                        goto op_semantics_135;
                        break;
                      default: UNSUPPORTED(); break;
                    }
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x78:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x20:
                  goto op_semantics_113;
                  break;
                case 0x40:
                  goto op_semantics_114;
                  break;
                case 0x50:
                  goto op_semantics_115;
                  break;
                case 0x60:
                  goto op_semantics_116;
                  break;
                case 0x70:
                  goto op_semantics_117;
                  break;
                case 0x80:
                  goto op_semantics_118;
                  break;
                case 0x90:
                  goto op_semantics_119;
                  break;
                case 0xc0:
                  goto op_semantics_120;
                  break;
                case 0xd0:
                  goto op_semantics_121;
                  break;
                case 0xe0:
                  goto op_semantics_122;
                  break;
                case 0xf0:
                  goto op_semantics_123;
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x7b:
              GETBYTE ();
              switch (op[2] & 0xe0)
              {
                case 0x00:
                  goto op_semantics_124;
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x7c:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x20:
                  goto op_semantics_113;
                  break;
                case 0x40:
                  goto op_semantics_114;
                  break;
                case 0x50:
                  goto op_semantics_115;
                  break;
                case 0x60:
                  goto op_semantics_116;
                  break;
                case 0x70:
                  goto op_semantics_117;
                  break;
                case 0x80:
                  goto op_semantics_118;
                  break;
                case 0x90:
                  goto op_semantics_119;
                  break;
                case 0xc0:
                  goto op_semantics_120;
                  break;
                case 0xd0:
                  goto op_semantics_121;
                  break;
                case 0xe0:
                  goto op_semantics_122;
                  break;
                case 0xf0:
                  goto op_semantics_123;
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x7f:
              GETBYTE ();
              switch (op[2] & 0xe0)
              {
                case 0x00:
                  goto op_semantics_124;
                  break;
                default: UNSUPPORTED(); break;
              }
            break;
          case 0x80:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_136:
                    {
                      /** 1111 1101 100immmm rsrc rdst	shlr	#%2, %1, %0 */
#line 757 "rx-decode.opc"
                      int immmm AU = op[1] & 0x1f;
#line 757 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 757 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 100immmm rsrc rdst	shlr	#%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  immmm = 0x%x,", immmm);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("shlr	#%2, %1, %0");
#line 757 "rx-decode.opc"
                      ID(shlr); S2C(immmm); SR(rsrc); DR(rdst); F__SZC;

                    /*----------------------------------------------------------------------*/
                    /* ROTATE								*/

                    }
                  break;
              }
            break;
          case 0x81:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x82:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x83:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x84:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x85:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x86:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x87:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x88:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x89:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x8a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x8b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x8c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x8d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x8e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x8f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x90:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x91:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x92:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x93:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x94:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x95:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x96:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x97:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x98:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x99:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x9a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x9b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x9c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x9d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x9e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0x9f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_136;
                  break;
              }
            break;
          case 0xa0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_137:
                    {
                      /** 1111 1101 101immmm rsrc rdst	shar	#%2, %1, %0 */
#line 747 "rx-decode.opc"
                      int immmm AU = op[1] & 0x1f;
#line 747 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 747 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 101immmm rsrc rdst	shar	#%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  immmm = 0x%x,", immmm);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("shar	#%2, %1, %0");
#line 747 "rx-decode.opc"
                      ID(shar); S2C(immmm); SR(rsrc); DR(rdst); F_0SZC;


                    }
                  break;
              }
            break;
          case 0xa1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xa2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xa3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xa4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xa5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xa6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xa7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xa8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xa9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xaa:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xab:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xac:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xad:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xae:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xaf:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xb9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xba:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xbb:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xbc:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xbd:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xbe:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xbf:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_137;
                  break;
              }
            break;
          case 0xc0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_138:
                    {
                      /** 1111 1101 110immmm rsrc rdst	shll	#%2, %1, %0 */
#line 737 "rx-decode.opc"
                      int immmm AU = op[1] & 0x1f;
#line 737 "rx-decode.opc"
                      int rsrc AU = (op[2] >> 4) & 0x0f;
#line 737 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 110immmm rsrc rdst	shll	#%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  immmm = 0x%x,", immmm);
                          printf ("  rsrc = 0x%x,", rsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("shll	#%2, %1, %0");
#line 737 "rx-decode.opc"
                      ID(shll); S2C(immmm); SR(rsrc); DR(rdst); F_OSZC;


                    }
                  break;
              }
            break;
          case 0xc1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xc2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xc3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xc4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xc5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xc6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xc7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xc8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xc9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xca:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xcb:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xcc:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xcd:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xce:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xcf:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xd9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xda:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xdb:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xdc:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xdd:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xde:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xdf:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_138;
                  break;
              }
            break;
          case 0xe0:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  op_semantics_139:
                    {
                      /** 1111 1101 111 bittt cond rdst	bm%2	#%1, %0%S0 */
#line 1011 "rx-decode.opc"
                      int bittt AU = op[1] & 0x1f;
#line 1011 "rx-decode.opc"
                      int cond AU = (op[2] >> 4) & 0x0f;
#line 1011 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 111 bittt cond rdst	bm%2	#%1, %0%S0 */",
                                 op[0], op[1], op[2]);
                          printf ("  bittt = 0x%x,", bittt);
                          printf ("  cond = 0x%x,", cond);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("bm%2	#%1, %0%S0");
#line 1011 "rx-decode.opc"
                      ID(bmcc); BWL(LSIZE); S2cc(cond); SC(bittt); DR(rdst);

                    /*----------------------------------------------------------------------*/
                    /* CONTROL REGISTERS							*/

                    }
                  break;
                case 0xf0:
                  op_semantics_140:
                    {
                      /** 1111 1101 111bittt 1111 rdst	bnot	#%1, %0 */
#line 1004 "rx-decode.opc"
                      int bittt AU = op[1] & 0x1f;
#line 1004 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1101 111bittt 1111 rdst	bnot	#%1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  bittt = 0x%x,", bittt);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("bnot	#%1, %0");
#line 1004 "rx-decode.opc"
                      ID(bnot); BWL(LSIZE); SC(bittt); DR(rdst);


                    }
                  break;
              }
            break;
          case 0xe1:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xe2:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xe3:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xe4:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xe5:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xe6:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xe7:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xe8:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xe9:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xea:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xeb:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xec:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xed:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xee:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xef:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf0:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf1:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf2:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf3:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf4:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf5:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf6:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf7:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf8:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xf9:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xfa:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xfb:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xfc:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xfd:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xfe:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          case 0xff:
              GETBYTE ();
              switch (op[2] & 0xf0)
              {
                case 0x00:
                case 0x10:
                case 0x20:
                case 0x30:
                case 0x40:
                case 0x50:
                case 0x60:
                case 0x70:
                case 0x80:
                case 0x90:
                case 0xa0:
                case 0xb0:
                case 0xc0:
                case 0xd0:
                case 0xe0:
                  goto op_semantics_139;
                  break;
                case 0xf0:
                  goto op_semantics_140;
                  break;
              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0xfe:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x00:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_141:
                    {
                      /** 1111 1110 00sz isrc bsrc rdst	mov%s	%0, [%1, %2] */
#line 363 "rx-decode.opc"
                      int sz AU = (op[1] >> 4) & 0x03;
#line 363 "rx-decode.opc"
                      int isrc AU = op[1] & 0x0f;
#line 363 "rx-decode.opc"
                      int bsrc AU = (op[2] >> 4) & 0x0f;
#line 363 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1110 00sz isrc bsrc rdst	mov%s	%0, [%1, %2] */",
                                 op[0], op[1], op[2]);
                          printf ("  sz = 0x%x,", sz);
                          printf ("  isrc = 0x%x,", isrc);
                          printf ("  bsrc = 0x%x,", bsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mov%s	%0, [%1, %2]");
#line 363 "rx-decode.opc"
                      ID(movbir); sBWL(sz); DR(rdst); SRR(isrc); S2R(bsrc); F_____;

                    }
                  break;
              }
            break;
          case 0x01:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x02:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x03:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x04:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x05:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x06:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x07:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x08:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x09:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x0a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x0b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x0c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x0d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x0e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x0f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x10:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x11:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x12:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x13:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x14:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x15:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x16:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x17:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x18:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x19:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x1a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x1b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x1c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x1d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x1e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x1f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x20:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x21:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x22:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x23:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x24:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x25:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x26:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x27:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x28:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x29:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x2a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x2b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x2c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x2d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x2e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x2f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_141;
                  break;
              }
            break;
          case 0x40:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_142:
                    {
                      /** 1111 1110 01sz isrc bsrc rdst	mov%s	[%1, %2], %0 */
#line 360 "rx-decode.opc"
                      int sz AU = (op[1] >> 4) & 0x03;
#line 360 "rx-decode.opc"
                      int isrc AU = op[1] & 0x0f;
#line 360 "rx-decode.opc"
                      int bsrc AU = (op[2] >> 4) & 0x0f;
#line 360 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1110 01sz isrc bsrc rdst	mov%s	[%1, %2], %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sz = 0x%x,", sz);
                          printf ("  isrc = 0x%x,", isrc);
                          printf ("  bsrc = 0x%x,", bsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("mov%s	[%1, %2], %0");
#line 360 "rx-decode.opc"
                      ID(movbi); sBWL(sz); DR(rdst); SRR(isrc); S2R(bsrc); F_____;

                    }
                  break;
              }
            break;
          case 0x41:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x42:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x43:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x44:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x45:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x46:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x47:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x48:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x49:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x4a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x4b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x4c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x4d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x4e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x4f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x50:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x51:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x52:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x53:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x54:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x55:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x56:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x57:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x58:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x59:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x5a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x5b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x5c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x5d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x5e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x5f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x60:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x61:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x62:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x63:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x64:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x65:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x66:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x67:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x68:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x69:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x6a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x6b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x6c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x6d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x6e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0x6f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_142;
                  break;
              }
            break;
          case 0xc0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_143:
                    {
                      /** 1111 1110 11sz isrc bsrc rdst	movu%s	[%1, %2], %0 */
#line 366 "rx-decode.opc"
                      int sz AU = (op[1] >> 4) & 0x03;
#line 366 "rx-decode.opc"
                      int isrc AU = op[1] & 0x0f;
#line 366 "rx-decode.opc"
                      int bsrc AU = (op[2] >> 4) & 0x0f;
#line 366 "rx-decode.opc"
                      int rdst AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1110 11sz isrc bsrc rdst	movu%s	[%1, %2], %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  sz = 0x%x,", sz);
                          printf ("  isrc = 0x%x,", isrc);
                          printf ("  bsrc = 0x%x,", bsrc);
                          printf ("  rdst = 0x%x\n", rdst);
                        }
                      SYNTAX("movu%s	[%1, %2], %0");
#line 366 "rx-decode.opc"
                      ID(movbi); uBW(sz); DR(rdst); SRR(isrc); S2R(bsrc); F_____;

                    }
                  break;
              }
            break;
          case 0xc1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xc2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xc3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xc4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xc5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xc6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xc7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xc8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xc9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xca:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xcb:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xcc:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xcd:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xce:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xcf:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xd9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xda:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xdb:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xdc:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xdd:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xde:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xdf:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xe9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xea:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xeb:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xec:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xed:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xee:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          case 0xef:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_143;
                  break;
              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    case 0xff:
        GETBYTE ();
        switch (op[1] & 0xff)
        {
          case 0x00:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_144:
                    {
                      /** 1111 1111 0000 rdst srca srcb	sub	%2, %1, %0 */
#line 570 "rx-decode.opc"
                      int rdst AU = op[1] & 0x0f;
#line 570 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 570 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1111 0000 rdst srca srcb	sub	%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("sub	%2, %1, %0");
#line 570 "rx-decode.opc"
                      ID(sub); DR(rdst); SR(srcb); S2R(srca); F_OSZC;

                    /*----------------------------------------------------------------------*/
                    /* SBB									*/

                    }
                  break;
              }
            break;
          case 0x01:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x02:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x03:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x04:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x05:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x06:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x07:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x08:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x09:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x0a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x0b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x0c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x0d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x0e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x0f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_144;
                  break;
              }
            break;
          case 0x20:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_145:
                    {
                      /** 1111 1111 0010 rdst srca srcb	add	%2, %1, %0 */
#line 537 "rx-decode.opc"
                      int rdst AU = op[1] & 0x0f;
#line 537 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 537 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1111 0010 rdst srca srcb	add	%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("add	%2, %1, %0");
#line 537 "rx-decode.opc"
                      ID(add); DR(rdst); SR(srcb); S2R(srca); F_OSZC;

                    /*----------------------------------------------------------------------*/
                    /* CMP									*/

                    }
                  break;
              }
            break;
          case 0x21:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x22:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x23:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x24:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x25:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x26:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x27:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x28:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x29:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x2a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x2b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x2c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x2d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x2e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x2f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_145;
                  break;
              }
            break;
          case 0x30:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_146:
                    {
                      /** 1111 1111 0011 rdst srca srcb	mul 	%2, %1, %0 */
#line 677 "rx-decode.opc"
                      int rdst AU = op[1] & 0x0f;
#line 677 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 677 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1111 0011 rdst srca srcb	mul 	%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("mul 	%2, %1, %0");
#line 677 "rx-decode.opc"
                      ID(mul); DR(rdst); SR(srcb); S2R(srca); F_____;

                    /*----------------------------------------------------------------------*/
                    /* EMUL									*/

                    }
                  break;
              }
            break;
          case 0x31:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x32:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x33:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x34:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x35:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x36:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x37:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x38:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x39:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x3a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x3b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x3c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x3d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x3e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x3f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_146;
                  break;
              }
            break;
          case 0x40:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_147:
                    {
                      /** 1111 1111 0100 rdst srca srcb	and	%2, %1, %0 */
#line 447 "rx-decode.opc"
                      int rdst AU = op[1] & 0x0f;
#line 447 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 447 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1111 0100 rdst srca srcb	and	%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("and	%2, %1, %0");
#line 447 "rx-decode.opc"
                      ID(and); DR(rdst); SR(srcb); S2R(srca); F__SZ_;

                    /*----------------------------------------------------------------------*/
                    /* OR									*/

                    }
                  break;
              }
            break;
          case 0x41:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x42:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x43:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x44:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x45:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x46:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x47:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x48:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x49:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x4a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x4b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x4c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x4d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x4e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x4f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_147;
                  break;
              }
            break;
          case 0x50:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_148:
                    {
                      /** 1111 1111 0101 rdst srca srcb	or	%2, %1, %0 */
#line 465 "rx-decode.opc"
                      int rdst AU = op[1] & 0x0f;
#line 465 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 465 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1111 0101 rdst srca srcb	or	%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("or	%2, %1, %0");
#line 465 "rx-decode.opc"
                      ID(or); DR(rdst); SR(srcb); S2R(srca); F__SZ_;

                    /*----------------------------------------------------------------------*/
                    /* XOR									*/

                    }
                  break;
              }
            break;
          case 0x51:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x52:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x53:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x54:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x55:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x56:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x57:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x58:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x59:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x5a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x5b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x5c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x5d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x5e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x5f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_148;
                  break;
              }
            break;
          case 0x60:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_149:
                    {
                      /** 1111 1111 0110 rdst srca srcb	xor	%2, %1, %0 */
#line 1146 "rx-decode.opc"
                      int rdst AU = op[1] & 0x0f;
#line 1146 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1146 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1111 0110 rdst srca srcb	xor	%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("xor	%2, %1, %0");
#line 1146 "rx-decode.opc"
                      ID(xor); DR(rdst); SR(srcb); S2R(srca); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x61:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x62:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x63:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x64:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x65:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x66:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x67:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x68:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x69:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x6a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x6b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x6c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x6d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x6e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x6f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_149;
                  break;
              }
            break;
          case 0x80:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_150:
                    {
                      /** 1111 1111 1000 rdst srca srcb	fsub	%2, %1, %0 */
#line 1125 "rx-decode.opc"
                      int rdst AU = op[1] & 0x0f;
#line 1125 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1125 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1111 1000 rdst srca srcb	fsub	%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("fsub	%2, %1, %0");
#line 1125 "rx-decode.opc"
                      ID(fsub); DR(rdst); SR(srcb); S2R(srca); F__SZ_;

                    }
                  break;
              }
            break;
          case 0x81:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x82:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x83:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x84:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x85:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x86:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x87:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x88:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x89:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x8a:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x8b:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x8c:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x8d:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x8e:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0x8f:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_150;
                  break;
              }
            break;
          case 0xa0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_151:
                    {
                      /** 1111 1111 1010 rdst srca srcb	fadd	%2, %1, %0 */
#line 1122 "rx-decode.opc"
                      int rdst AU = op[1] & 0x0f;
#line 1122 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1122 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1111 1010 rdst srca srcb	fadd	%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("fadd	%2, %1, %0");
#line 1122 "rx-decode.opc"
                      ID(fadd); DR(rdst); SR(srcb); S2R(srca); F__SZ_;

                    }
                  break;
              }
            break;
          case 0xa1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xa2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xa3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xa4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xa5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xa6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xa7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xa8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xa9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xaa:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xab:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xac:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xad:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xae:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xaf:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_151;
                  break;
              }
            break;
          case 0xb0:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  op_semantics_152:
                    {
                      /** 1111 1111 1011 rdst srca srcb	fmul	%2, %1, %0 */
#line 1128 "rx-decode.opc"
                      int rdst AU = op[1] & 0x0f;
#line 1128 "rx-decode.opc"
                      int srca AU = (op[2] >> 4) & 0x0f;
#line 1128 "rx-decode.opc"
                      int srcb AU = op[2] & 0x0f;
                      if (trace)
                        {
                          printf ("\033[33m%s\033[0m  %02x %02x %02x\n",
                                 "/** 1111 1111 1011 rdst srca srcb	fmul	%2, %1, %0 */",
                                 op[0], op[1], op[2]);
                          printf ("  rdst = 0x%x,", rdst);
                          printf ("  srca = 0x%x,", srca);
                          printf ("  srcb = 0x%x\n", srcb);
                        }
                      SYNTAX("fmul	%2, %1, %0");
#line 1128 "rx-decode.opc"
                      ID(fmul); DR(rdst); SR(srcb); S2R(srca); F__SZ_;

                    }
                  break;
              }
            break;
          case 0xb1:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xb2:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xb3:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xb4:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xb5:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xb6:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xb7:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xb8:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xb9:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xba:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xbb:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xbc:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xbd:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xbe:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          case 0xbf:
              GETBYTE ();
              switch (op[2] & 0x00)
              {
                case 0x00:
                  goto op_semantics_152;
                  break;
              }
            break;
          default: UNSUPPORTED(); break;
        }
      break;
    default: UNSUPPORTED(); break;
  }
#line 1280 "rx-decode.opc"

  return rx->n_bytes;
}
