Annotation of qemu/m68k-dis.c, revision 1.1

1.1     ! root        1: /* This file is composed of several different files from the upstream
        !             2:    sourceware.org CVS.  Original file boundaries marked with **** */
        !             3: 
        !             4: #include <string.h>
        !             5: #include <math.h>
        !             6: #include <stdio.h>
        !             7: 
        !             8: #include "dis-asm.h"
        !             9: 
        !            10: /* **** foatformat.h from sourceware.org CVS 2005-08-14.  */
        !            11: /* IEEE floating point support declarations, for GDB, the GNU Debugger.
        !            12:    Copyright 1991, 1994, 1995, 1997, 2000, 2003 Free Software Foundation, Inc.
        !            13: 
        !            14: This file is part of GDB.
        !            15: 
        !            16: This program is free software; you can redistribute it and/or modify
        !            17: it under the terms of the GNU General Public License as published by
        !            18: the Free Software Foundation; either version 2 of the License, or
        !            19: (at your option) any later version.
        !            20: 
        !            21: This program is distributed in the hope that it will be useful,
        !            22: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            23: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            24: GNU General Public License for more details.
        !            25: 
        !            26: You should have received a copy of the GNU General Public License
        !            27: along with this program; if not, write to the Free Software
        !            28: Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
        !            29: 
        !            30: #if !defined (FLOATFORMAT_H)
        !            31: #define FLOATFORMAT_H 1
        !            32: 
        !            33: /*#include "ansidecl.h" */
        !            34: 
        !            35: /* A floatformat consists of a sign bit, an exponent and a mantissa.  Once the
        !            36:    bytes are concatenated according to the byteorder flag, then each of those
        !            37:    fields is contiguous.  We number the bits with 0 being the most significant
        !            38:    (i.e. BITS_BIG_ENDIAN type numbering), and specify which bits each field
        !            39:    contains with the *_start and *_len fields.  */
        !            40: 
        !            41: /* What is the order of the bytes. */
        !            42: 
        !            43: enum floatformat_byteorders {
        !            44: 
        !            45:   /* Standard little endian byte order.
        !            46:      EX: 1.2345678e10 => 00 00 80 c5 e0 fe 06 42 */
        !            47: 
        !            48:   floatformat_little,
        !            49: 
        !            50:   /* Standard big endian byte order.
        !            51:      EX: 1.2345678e10 => 42 06 fe e0 c5 80 00 00 */
        !            52: 
        !            53:   floatformat_big,
        !            54: 
        !            55:   /* Little endian byte order but big endian word order.
        !            56:      EX: 1.2345678e10 => e0 fe 06 42 00 00 80 c5 */
        !            57: 
        !            58:   floatformat_littlebyte_bigword
        !            59: 
        !            60: };
        !            61: 
        !            62: enum floatformat_intbit { floatformat_intbit_yes, floatformat_intbit_no };
        !            63: 
        !            64: struct floatformat
        !            65: {
        !            66:   enum floatformat_byteorders byteorder;
        !            67:   unsigned int totalsize;      /* Total size of number in bits */
        !            68: 
        !            69:   /* Sign bit is always one bit long.  1 means negative, 0 means positive.  */
        !            70:   unsigned int sign_start;
        !            71: 
        !            72:   unsigned int exp_start;
        !            73:   unsigned int exp_len;
        !            74:   /* Bias added to a "true" exponent to form the biased exponent.  It
        !            75:      is intentionally signed as, otherwize, -exp_bias can turn into a
        !            76:      very large number (e.g., given the exp_bias of 0x3fff and a 64
        !            77:      bit long, the equation (long)(1 - exp_bias) evaluates to
        !            78:      4294950914) instead of -16382).  */
        !            79:   int exp_bias;
        !            80:   /* Exponent value which indicates NaN.  This is the actual value stored in
        !            81:      the float, not adjusted by the exp_bias.  This usually consists of all
        !            82:      one bits.  */
        !            83:   unsigned int exp_nan;
        !            84: 
        !            85:   unsigned int man_start;
        !            86:   unsigned int man_len;
        !            87: 
        !            88:   /* Is the integer bit explicit or implicit?  */
        !            89:   enum floatformat_intbit intbit;
        !            90: 
        !            91:   /* Internal name for debugging. */
        !            92:   const char *name;
        !            93: 
        !            94:   /* Validator method.  */
        !            95:   int (*is_valid) (const struct floatformat *fmt, const char *from);
        !            96: };
        !            97: 
        !            98: /* floatformats for IEEE single and double, big and little endian.  */
        !            99: 
        !           100: extern const struct floatformat floatformat_ieee_single_big;
        !           101: extern const struct floatformat floatformat_ieee_single_little;
        !           102: extern const struct floatformat floatformat_ieee_double_big;
        !           103: extern const struct floatformat floatformat_ieee_double_little;
        !           104: 
        !           105: /* floatformat for ARM IEEE double, little endian bytes and big endian words */
        !           106: 
        !           107: extern const struct floatformat floatformat_ieee_double_littlebyte_bigword;
        !           108: 
        !           109: /* floatformats for various extendeds.  */
        !           110: 
        !           111: extern const struct floatformat floatformat_i387_ext;
        !           112: extern const struct floatformat floatformat_m68881_ext;
        !           113: extern const struct floatformat floatformat_i960_ext;
        !           114: extern const struct floatformat floatformat_m88110_ext;
        !           115: extern const struct floatformat floatformat_m88110_harris_ext;
        !           116: extern const struct floatformat floatformat_arm_ext_big;
        !           117: extern const struct floatformat floatformat_arm_ext_littlebyte_bigword;
        !           118: /* IA-64 Floating Point register spilt into memory.  */
        !           119: extern const struct floatformat floatformat_ia64_spill_big;
        !           120: extern const struct floatformat floatformat_ia64_spill_little;
        !           121: extern const struct floatformat floatformat_ia64_quad_big;
        !           122: extern const struct floatformat floatformat_ia64_quad_little;
        !           123: 
        !           124: /* Convert from FMT to a double.
        !           125:    FROM is the address of the extended float.
        !           126:    Store the double in *TO.  */
        !           127: 
        !           128: extern void
        !           129: floatformat_to_double (const struct floatformat *, const char *, double *);
        !           130: 
        !           131: /* The converse: convert the double *FROM to FMT
        !           132:    and store where TO points.  */
        !           133: 
        !           134: extern void
        !           135: floatformat_from_double (const struct floatformat *, const double *, char *);
        !           136: 
        !           137: /* Return non-zero iff the data at FROM is a valid number in format FMT.  */
        !           138: 
        !           139: extern int
        !           140: floatformat_is_valid (const struct floatformat *fmt, const char *from);
        !           141: 
        !           142: #endif /* defined (FLOATFORMAT_H) */
        !           143: /* **** End of floatformat.h */
        !           144: /* **** m68k-dis.h from sourceware.org CVS 2005-08-14.  */
        !           145: /* Opcode table header for m680[01234]0/m6888[12]/m68851.
        !           146:    Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2001,
        !           147:    2003, 2004 Free Software Foundation, Inc.
        !           148: 
        !           149:    This file is part of GDB, GAS, and the GNU binutils.
        !           150: 
        !           151:    GDB, GAS, and the GNU binutils are free software; you can redistribute
        !           152:    them and/or modify them under the terms of the GNU General Public
        !           153:    License as published by the Free Software Foundation; either version
        !           154:    1, or (at your option) any later version.
        !           155: 
        !           156:    GDB, GAS, and the GNU binutils are distributed in the hope that they
        !           157:    will be useful, but WITHOUT ANY WARRANTY; without even the implied
        !           158:    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
        !           159:    the GNU General Public License for more details.
        !           160: 
        !           161:    You should have received a copy of the GNU General Public License
        !           162:    along with this file; see the file COPYING.  If not, write to the Free
        !           163:    Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
        !           164:    02110-1301, USA.  */
        !           165: 
        !           166: /* These are used as bit flags for the arch field in the m68k_opcode
        !           167:    structure.  */
        !           168: #define        _m68k_undef  0
        !           169: #define        m68000   0x001
        !           170: #define        m68008   m68000 /* Synonym for -m68000.  otherwise unused.  */
        !           171: #define        m68010   0x002
        !           172: #define        m68020   0x004
        !           173: #define        m68030   0x008
        !           174: #define m68ec030 m68030 /* Similar enough to -m68030 to ignore differences;
        !           175:                           gas will deal with the few differences.  */
        !           176: #define        m68040   0x010
        !           177: /* There is no 68050.  */
        !           178: #define m68060   0x020
        !           179: #define        m68881   0x040
        !           180: #define        m68882   m68881 /* Synonym for -m68881.  otherwise unused.  */
        !           181: #define        m68851   0x080
        !           182: #define cpu32   0x100          /* e.g., 68332 */
        !           183: 
        !           184: #define mcfmac   0x200         /* ColdFire MAC. */
        !           185: #define mcfemac  0x400         /* ColdFire EMAC. */
        !           186: #define cfloat   0x800         /* ColdFire FPU.  */
        !           187: #define mcfhwdiv 0x1000                /* ColdFire hardware divide.  */
        !           188: 
        !           189: #define mcfisa_a 0x2000                /* ColdFire ISA_A.  */
        !           190: #define mcfisa_aa 0x4000       /* ColdFire ISA_A+.  */
        !           191: #define mcfisa_b 0x8000                /* ColdFire ISA_B.  */
        !           192: #define mcfusp   0x10000       /* ColdFire USP instructions.  */
        !           193: 
        !           194: #define mcf5200  0x20000
        !           195: #define mcf5206e 0x40000
        !           196: #define mcf521x  0x80000
        !           197: #define mcf5249  0x100000
        !           198: #define mcf528x  0x200000
        !           199: #define mcf5307  0x400000
        !           200: #define mcf5407  0x800000
        !           201: #define mcf5470  0x1000000
        !           202: #define mcf5480  0x2000000
        !           203: 
        !           204:  /* Handy aliases.  */
        !           205: #define        m68040up   (m68040 | m68060)
        !           206: #define        m68030up   (m68030 | m68040up)
        !           207: #define        m68020up   (m68020 | m68030up)
        !           208: #define        m68010up   (m68010 | cpu32 | m68020up)
        !           209: #define        m68000up   (m68000 | m68010up)
        !           210: 
        !           211: #define        mfloat  (m68881 | m68882 | m68040 | m68060)
        !           212: #define        mmmu    (m68851 | m68030 | m68040 | m68060)
        !           213: 
        !           214: /* The structure used to hold information for an opcode.  */
        !           215: 
        !           216: struct m68k_opcode
        !           217: {
        !           218:   /* The opcode name.  */
        !           219:   const char *name;
        !           220:   /* The pseudo-size of the instruction(in bytes).  Used to determine
        !           221:      number of bytes necessary to disassemble the instruction.  */
        !           222:   unsigned int size;
        !           223:   /* The opcode itself.  */
        !           224:   unsigned long opcode;
        !           225:   /* The mask used by the disassembler.  */
        !           226:   unsigned long match;
        !           227:   /* The arguments.  */
        !           228:   const char *args;
        !           229:   /* The architectures which support this opcode.  */
        !           230:   unsigned int arch;
        !           231: };
        !           232: 
        !           233: /* The structure used to hold information for an opcode alias.  */
        !           234: 
        !           235: struct m68k_opcode_alias
        !           236: {
        !           237:   /* The alias name.  */
        !           238:   const char *alias;
        !           239:   /* The instruction for which this is an alias.  */
        !           240:   const char *primary;
        !           241: };
        !           242: 
        !           243: /* We store four bytes of opcode for all opcodes because that is the
        !           244:    most any of them need.  The actual length of an instruction is
        !           245:    always at least 2 bytes, and is as much longer as necessary to hold
        !           246:    the operands it has.
        !           247: 
        !           248:    The match field is a mask saying which bits must match particular
        !           249:    opcode in order for an instruction to be an instance of that
        !           250:    opcode.
        !           251: 
        !           252:    The args field is a string containing two characters for each
        !           253:    operand of the instruction.  The first specifies the kind of
        !           254:    operand; the second, the place it is stored.  */
        !           255: 
        !           256: /* Kinds of operands:
        !           257:    Characters used: AaBbCcDdEeFfGgHIiJkLlMmnOopQqRrSsTtU VvWwXxYyZz01234|*~%;@!&$?/<>#^+-
        !           258: 
        !           259:    D  data register only.  Stored as 3 bits.
        !           260:    A  address register only.  Stored as 3 bits.
        !           261:    a  address register indirect only.  Stored as 3 bits.
        !           262:    R  either kind of register.  Stored as 4 bits.
        !           263:    r  either kind of register indirect only.  Stored as 4 bits.
        !           264:       At the moment, used only for cas2 instruction.
        !           265:    F  floating point coprocessor register only.   Stored as 3 bits.
        !           266:    O  an offset (or width): immediate data 0-31 or data register.
        !           267:       Stored as 6 bits in special format for BF... insns.
        !           268:    +  autoincrement only.  Stored as 3 bits (number of the address register).
        !           269:    -  autodecrement only.  Stored as 3 bits (number of the address register).
        !           270:    Q  quick immediate data.  Stored as 3 bits.
        !           271:       This matches an immediate operand only when value is in range 1 .. 8.
        !           272:    M  moveq immediate data.  Stored as 8 bits.
        !           273:       This matches an immediate operand only when value is in range -128..127
        !           274:    T  trap vector immediate data.  Stored as 4 bits.
        !           275: 
        !           276:    k  K-factor for fmove.p instruction.   Stored as a 7-bit constant or
        !           277:       a three bit register offset, depending on the field type.
        !           278: 
        !           279:    #  immediate data.  Stored in special places (b, w or l)
        !           280:       which say how many bits to store.
        !           281:    ^  immediate data for floating point instructions.   Special places
        !           282:       are offset by 2 bytes from '#'...
        !           283:    B  pc-relative address, converted to an offset
        !           284:       that is treated as immediate data.
        !           285:    d  displacement and register.  Stores the register as 3 bits
        !           286:       and stores the displacement in the entire second word.
        !           287: 
        !           288:    C  the CCR.  No need to store it; this is just for filtering validity.
        !           289:    S  the SR.  No need to store, just as with CCR.
        !           290:    U  the USP.  No need to store, just as with CCR.
        !           291:    E  the MAC ACC.  No need to store, just as with CCR.
        !           292:    e  the EMAC ACC[0123].
        !           293:    G  the MAC/EMAC MACSR.  No need to store, just as with CCR.
        !           294:    g  the EMAC ACCEXT{01,23}.
        !           295:    H  the MASK.  No need to store, just as with CCR.
        !           296:    i  the MAC/EMAC scale factor.
        !           297: 
        !           298:    I  Coprocessor ID.   Not printed if 1.   The Coprocessor ID is always
        !           299:       extracted from the 'd' field of word one, which means that an extended
        !           300:       coprocessor opcode can be skipped using the 'i' place, if needed.
        !           301: 
        !           302:    s  System Control register for the floating point coprocessor.
        !           303: 
        !           304:    J  Misc register for movec instruction, stored in 'j' format.
        !           305:        Possible values:
        !           306:        0x000   SFC     Source Function Code reg        [60, 40, 30, 20, 10]
        !           307:        0x001   DFC     Data Function Code reg          [60, 40, 30, 20, 10]
        !           308:        0x002   CACR    Cache Control Register          [60, 40, 30, 20, mcf]
        !           309:        0x003   TC      MMU Translation Control         [60, 40]
        !           310:        0x004   ITT0    Instruction Transparent
        !           311:                                Translation reg 0       [60, 40]
        !           312:        0x005   ITT1    Instruction Transparent
        !           313:                                Translation reg 1       [60, 40]
        !           314:        0x006   DTT0    Data Transparent
        !           315:                                Translation reg 0       [60, 40]
        !           316:        0x007   DTT1    Data Transparent
        !           317:                                Translation reg 1       [60, 40]
        !           318:        0x008   BUSCR   Bus Control Register            [60]
        !           319:        0x800   USP     User Stack Pointer              [60, 40, 30, 20, 10]
        !           320:         0x801   VBR     Vector Base reg                 [60, 40, 30, 20, 10, mcf]
        !           321:        0x802   CAAR    Cache Address Register          [        30, 20]
        !           322:        0x803   MSP     Master Stack Pointer            [    40, 30, 20]
        !           323:        0x804   ISP     Interrupt Stack Pointer         [    40, 30, 20]
        !           324:        0x805   MMUSR   MMU Status reg                  [    40]
        !           325:        0x806   URP     User Root Pointer               [60, 40]
        !           326:        0x807   SRP     Supervisor Root Pointer         [60, 40]
        !           327:        0x808   PCR     Processor Configuration reg     [60]
        !           328:        0xC00   ROMBAR  ROM Base Address Register       [520X]
        !           329:        0xC04   RAMBAR0 RAM Base Address Register 0     [520X]
        !           330:        0xC05   RAMBAR1 RAM Base Address Register 0     [520X]
        !           331:        0xC0F   MBAR0   RAM Base Address Register 0     [520X]
        !           332:         0xC04   FLASHBAR FLASH Base Address Register    [mcf528x]
        !           333:         0xC05   RAMBAR  Static RAM Base Address Register [mcf528x]
        !           334: 
        !           335:     L  Register list of the type d0-d7/a0-a7 etc.
        !           336:        (New!  Improved!  Can also hold fp0-fp7, as well!)
        !           337:        The assembler tries to see if the registers match the insn by
        !           338:        looking at where the insn wants them stored.
        !           339: 
        !           340:     l  Register list like L, but with all the bits reversed.
        !           341:        Used for going the other way. . .
        !           342: 
        !           343:     c  cache identifier which may be "nc" for no cache, "ic"
        !           344:        for instruction cache, "dc" for data cache, or "bc"
        !           345:        for both caches.  Used in cinv and cpush.  Always
        !           346:        stored in position "d".
        !           347: 
        !           348:     u  Any register, with ``upper'' or ``lower'' specification.  Used
        !           349:        in the mac instructions with size word.
        !           350: 
        !           351:  The remainder are all stored as 6 bits using an address mode and a
        !           352:  register number; they differ in which addressing modes they match.
        !           353: 
        !           354:    *  all                                      (modes 0-6,7.0-4)
        !           355:    ~  alterable memory                         (modes 2-6,7.0,7.1)
        !           356:                                                (not 0,1,7.2-4)
        !           357:    %  alterable                                        (modes 0-6,7.0,7.1)
        !           358:                                                (not 7.2-4)
        !           359:    ;  data                                     (modes 0,2-6,7.0-4)
        !           360:                                                (not 1)
        !           361:    @  data, but not immediate                  (modes 0,2-6,7.0-3)
        !           362:                                                (not 1,7.4)
        !           363:    !  control                                  (modes 2,5,6,7.0-3)
        !           364:                                                (not 0,1,3,4,7.4)
        !           365:    &  alterable control                                (modes 2,5,6,7.0,7.1)
        !           366:                                                (not 0,1,3,4,7.2-4)
        !           367:    $  alterable data                           (modes 0,2-6,7.0,7.1)
        !           368:                                                (not 1,7.2-4)
        !           369:    ?  alterable control, or data register      (modes 0,2,5,6,7.0,7.1)
        !           370:                                                (not 1,3,4,7.2-4)
        !           371:    /  control, or data register                        (modes 0,2,5,6,7.0-3)
        !           372:                                                (not 1,3,4,7.4)
        !           373:    >  *save operands                           (modes 2,4,5,6,7.0,7.1)
        !           374:                                                (not 0,1,3,7.2-4)
        !           375:    <  *restore operands                                (modes 2,3,5,6,7.0-3)
        !           376:                                                (not 0,1,4,7.4)
        !           377: 
        !           378:    coldfire move operands:
        !           379:    m                                           (modes 0-4)
        !           380:    n                                           (modes 5,7.2)
        !           381:    o                                           (modes 6,7.0,7.1,7.3,7.4)
        !           382:    p                                           (modes 0-5)
        !           383: 
        !           384:    coldfire bset/bclr/btst/mulsl/mulul operands:
        !           385:    q                                           (modes 0,2-5)
        !           386:    v                                           (modes 0,2-5,7.0,7.1)
        !           387:    b                                            (modes 0,2-5,7.2)
        !           388:    w                                            (modes 2-5,7.2)
        !           389:    y                                           (modes 2,5)
        !           390:    z                                           (modes 2,5,7.2)
        !           391:    x  mov3q immediate operand.
        !           392:    4                                           (modes 2,3,4,5)
        !           393:   */
        !           394: 
        !           395: /* For the 68851:  */
        !           396: /* I didn't use much imagination in choosing the
        !           397:    following codes, so many of them aren't very
        !           398:    mnemonic. -rab
        !           399: 
        !           400:    0  32 bit pmmu register
        !           401:        Possible values:
        !           402:        000     TC      Translation Control Register (68030, 68851)
        !           403: 
        !           404:    1  16 bit pmmu register
        !           405:        111     AC      Access Control (68851)
        !           406: 
        !           407:    2  8 bit pmmu register
        !           408:        100     CAL     Current Access Level (68851)
        !           409:        101     VAL     Validate Access Level (68851)
        !           410:        110     SCC     Stack Change Control (68851)
        !           411: 
        !           412:    3  68030-only pmmu registers (32 bit)
        !           413:        010     TT0     Transparent Translation reg 0
        !           414:                        (aka Access Control reg 0 -- AC0 -- on 68ec030)
        !           415:        011     TT1     Transparent Translation reg 1
        !           416:                        (aka Access Control reg 1 -- AC1 -- on 68ec030)
        !           417: 
        !           418:    W  wide pmmu registers
        !           419:        Possible values:
        !           420:        001     DRP     Dma Root Pointer (68851)
        !           421:        010     SRP     Supervisor Root Pointer (68030, 68851)
        !           422:        011     CRP     Cpu Root Pointer (68030, 68851)
        !           423: 
        !           424:    f   function code register (68030, 68851)
        !           425:        0       SFC
        !           426:        1       DFC
        !           427: 
        !           428:    V   VAL register only (68851)
        !           429: 
        !           430:    X   BADx, BACx (16 bit)
        !           431:        100     BAD     Breakpoint Acknowledge Data (68851)
        !           432:        101     BAC     Breakpoint Acknowledge Control (68851)
        !           433: 
        !           434:    Y   PSR (68851) (MMUSR on 68030) (ACUSR on 68ec030)
        !           435:    Z   PCSR (68851)
        !           436: 
        !           437:    |   memory          (modes 2-6, 7.*)
        !           438: 
        !           439:    t  address test level (68030 only)
        !           440:       Stored as 3 bits, range 0-7.
        !           441:       Also used for breakpoint instruction now.
        !           442: 
        !           443: */
        !           444: 
        !           445: /* Places to put an operand, for non-general operands:
        !           446:    Characters used: BbCcDdFfGgHhIijkLlMmNnostWw123456789/
        !           447: 
        !           448:    s  source, low bits of first word.
        !           449:    d  dest, shifted 9 in first word
        !           450:    1  second word, shifted 12
        !           451:    2  second word, shifted 6
        !           452:    3  second word, shifted 0
        !           453:    4  third word, shifted 12
        !           454:    5  third word, shifted 6
        !           455:    6  third word, shifted 0
        !           456:    7  second word, shifted 7
        !           457:    8  second word, shifted 10
        !           458:    9  second word, shifted 5
        !           459:    D  store in both place 1 and place 3; for divul and divsl.
        !           460:    B  first word, low byte, for branch displacements
        !           461:    W  second word (entire), for branch displacements
        !           462:    L  second and third words (entire), for branch displacements
        !           463:       (also overloaded for move16)
        !           464:    b  second word, low byte
        !           465:    w  second word (entire) [variable word/long branch offset for dbra]
        !           466:    W  second word (entire) (must be signed 16 bit value)
        !           467:    l  second and third word (entire)
        !           468:    g  variable branch offset for bra and similar instructions.
        !           469:       The place to store depends on the magnitude of offset.
        !           470:    t  store in both place 7 and place 8; for floating point operations
        !           471:    c  branch offset for cpBcc operations.
        !           472:       The place to store is word two if bit six of word one is zero,
        !           473:       and words two and three if bit six of word one is one.
        !           474:    i  Increment by two, to skip over coprocessor extended operands.   Only
        !           475:       works with the 'I' format.
        !           476:    k  Dynamic K-factor field.   Bits 6-4 of word 2, used as a register number.
        !           477:       Also used for dynamic fmovem instruction.
        !           478:    C  floating point coprocessor constant - 7 bits.  Also used for static
        !           479:       K-factors...
        !           480:    j  Movec register #, stored in 12 low bits of second word.
        !           481:    m  For M[S]ACx; 4 bits split with MSB shifted 6 bits in first word
        !           482:       and remaining 3 bits of register shifted 9 bits in first word.
        !           483:       Indicate upper/lower in 1 bit shifted 7 bits in second word.
        !           484:       Use with `R' or `u' format.
        !           485:    n  `m' withouth upper/lower indication. (For M[S]ACx; 4 bits split
        !           486:       with MSB shifted 6 bits in first word and remaining 3 bits of
        !           487:       register shifted 9 bits in first word.  No upper/lower
        !           488:       indication is done.)  Use with `R' or `u' format.
        !           489:    o  For M[S]ACw; 4 bits shifted 12 in second word (like `1').
        !           490:       Indicate upper/lower in 1 bit shifted 7 bits in second word.
        !           491:       Use with `R' or `u' format.
        !           492:    M  For M[S]ACw; 4 bits in low bits of first word.  Indicate
        !           493:       upper/lower in 1 bit shifted 6 bits in second word.  Use with
        !           494:       `R' or `u' format.
        !           495:    N  For M[S]ACw; 4 bits in low bits of second word.  Indicate
        !           496:       upper/lower in 1 bit shifted 6 bits in second word.  Use with
        !           497:       `R' or `u' format.
        !           498:    h  shift indicator (scale factor), 1 bit shifted 10 in second word
        !           499: 
        !           500:  Places to put operand, for general operands:
        !           501:    d  destination, shifted 6 bits in first word
        !           502:    b  source, at low bit of first word, and immediate uses one byte
        !           503:    w  source, at low bit of first word, and immediate uses two bytes
        !           504:    l  source, at low bit of first word, and immediate uses four bytes
        !           505:    s  source, at low bit of first word.
        !           506:       Used sometimes in contexts where immediate is not allowed anyway.
        !           507:    f  single precision float, low bit of 1st word, immediate uses 4 bytes
        !           508:    F  double precision float, low bit of 1st word, immediate uses 8 bytes
        !           509:    x  extended precision float, low bit of 1st word, immediate uses 12 bytes
        !           510:    p  packed float, low bit of 1st word, immediate uses 12 bytes
        !           511:    G  EMAC accumulator, load  (bit 4 2nd word, !bit8 first word)
        !           512:    H  EMAC accumulator, non load  (bit 4 2nd word, bit 8 first word)
        !           513:    F  EMAC ACCx
        !           514:    f  EMAC ACCy
        !           515:    I  MAC/EMAC scale factor
        !           516:    /  Like 's', but set 2nd word, bit 5 if trailing_ampersand set
        !           517:    ]  first word, bit 10
        !           518: */
        !           519: 
        !           520: extern const struct m68k_opcode m68k_opcodes[];
        !           521: extern const struct m68k_opcode_alias m68k_opcode_aliases[];
        !           522: 
        !           523: extern const int m68k_numopcodes, m68k_numaliases;
        !           524: 
        !           525: /* **** End of m68k-opcode.h */
        !           526: /* **** m68k-dis.c from sourceware.org CVS 2005-08-14.  */
        !           527: /* Print Motorola 68k instructions.
        !           528:    Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
        !           529:    1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
        !           530:    Free Software Foundation, Inc.
        !           531: 
        !           532:    This file is free software; you can redistribute it and/or modify
        !           533:    it under the terms of the GNU General Public License as published by
        !           534:    the Free Software Foundation; either version 2 of the License, or
        !           535:    (at your option) any later version.
        !           536: 
        !           537:    This program is distributed in the hope that it will be useful,
        !           538:    but WITHOUT ANY WARRANTY; without even the implied warranty of
        !           539:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !           540:    GNU General Public License for more details.
        !           541: 
        !           542:    You should have received a copy of the GNU General Public License
        !           543:    along with this program; if not, write to the Free Software
        !           544:    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
        !           545:    MA 02110-1301, USA.  */
        !           546: 
        !           547: /* Local function prototypes.  */
        !           548: 
        !           549: const char * const fpcr_names[] =
        !           550: {
        !           551:   "", "%fpiar", "%fpsr", "%fpiar/%fpsr", "%fpcr",
        !           552:   "%fpiar/%fpcr", "%fpsr/%fpcr", "%fpiar/%fpsr/%fpcr"
        !           553: };
        !           554: 
        !           555: static char *const reg_names[] =
        !           556: {
        !           557:   "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",
        !           558:   "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%fp", "%sp",
        !           559:   "%ps", "%pc"
        !           560: };
        !           561: 
        !           562: /* Name of register halves for MAC/EMAC.
        !           563:    Seperate from reg_names since 'spu', 'fpl' look weird.  */
        !           564: static char *const reg_half_names[] =
        !           565: {
        !           566:   "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",
        !           567:   "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%a7",
        !           568:   "%ps", "%pc"
        !           569: };
        !           570: 
        !           571: /* Sign-extend an (unsigned char).  */
        !           572: #if __STDC__ == 1
        !           573: #define COERCE_SIGNED_CHAR(ch) ((signed char) (ch))
        !           574: #else
        !           575: #define COERCE_SIGNED_CHAR(ch) ((int) (((ch) ^ 0x80) & 0xFF) - 128)
        !           576: #endif
        !           577: 
        !           578: /* Get a 1 byte signed integer.  */
        !           579: #define NEXTBYTE(p)  (p += 2, FETCH_DATA (info, p), COERCE_SIGNED_CHAR(p[-1]))
        !           580: 
        !           581: /* Get a 2 byte signed integer.  */
        !           582: #define COERCE16(x) ((int) (((x) ^ 0x8000) - 0x8000))
        !           583: #define NEXTWORD(p)  \
        !           584:   (p += 2, FETCH_DATA (info, p), \
        !           585:    COERCE16 ((p[-2] << 8) + p[-1]))
        !           586: 
        !           587: /* Get a 4 byte signed integer.  */
        !           588: #define COERCE32(x) ((bfd_signed_vma) ((x) ^ 0x80000000) - 0x80000000)
        !           589: #define NEXTLONG(p)  \
        !           590:   (p += 4, FETCH_DATA (info, p), \
        !           591:    (COERCE32 ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1])))
        !           592: 
        !           593: /* Get a 4 byte unsigned integer.  */
        !           594: #define NEXTULONG(p)  \
        !           595:   (p += 4, FETCH_DATA (info, p), \
        !           596:    (unsigned int) ((((((p[-4] << 8) + p[-3]) << 8) + p[-2]) << 8) + p[-1]))
        !           597: 
        !           598: /* Get a single precision float.  */
        !           599: #define NEXTSINGLE(val, p) \
        !           600:   (p += 4, FETCH_DATA (info, p), \
        !           601:    floatformat_to_double (&floatformat_ieee_single_big, (char *) p - 4, &val))
        !           602: 
        !           603: /* Get a double precision float.  */
        !           604: #define NEXTDOUBLE(val, p) \
        !           605:   (p += 8, FETCH_DATA (info, p), \
        !           606:    floatformat_to_double (&floatformat_ieee_double_big, (char *) p - 8, &val))
        !           607: 
        !           608: /* Get an extended precision float.  */
        !           609: #define NEXTEXTEND(val, p) \
        !           610:   (p += 12, FETCH_DATA (info, p), \
        !           611:    floatformat_to_double (&floatformat_m68881_ext, (char *) p - 12, &val))
        !           612: 
        !           613: /* Need a function to convert from packed to double
        !           614:    precision.   Actually, it's easier to print a
        !           615:    packed number than a double anyway, so maybe
        !           616:    there should be a special case to handle this... */
        !           617: #define NEXTPACKED(p) \
        !           618:   (p += 12, FETCH_DATA (info, p), 0.0)
        !           619: 
        !           620: /* Maximum length of an instruction.  */
        !           621: #define MAXLEN 22
        !           622: 
        !           623: #include <setjmp.h>
        !           624: 
        !           625: struct private
        !           626: {
        !           627:   /* Points to first byte not fetched.  */
        !           628:   bfd_byte *max_fetched;
        !           629:   bfd_byte the_buffer[MAXLEN];
        !           630:   bfd_vma insn_start;
        !           631:   jmp_buf bailout;
        !           632: };
        !           633: 
        !           634: /* Make sure that bytes from INFO->PRIVATE_DATA->BUFFER (inclusive)
        !           635:    to ADDR (exclusive) are valid.  Returns 1 for success, longjmps
        !           636:    on error.  */
        !           637: #define FETCH_DATA(info, addr) \
        !           638:   ((addr) <= ((struct private *) (info->private_data))->max_fetched \
        !           639:    ? 1 : fetch_data ((info), (addr)))
        !           640: 
        !           641: static int
        !           642: fetch_data (struct disassemble_info *info, bfd_byte *addr)
        !           643: {
        !           644:   int status;
        !           645:   struct private *priv = (struct private *)info->private_data;
        !           646:   bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer);
        !           647: 
        !           648:   status = (*info->read_memory_func) (start,
        !           649:                                      priv->max_fetched,
        !           650:                                      addr - priv->max_fetched,
        !           651:                                      info);
        !           652:   if (status != 0)
        !           653:     {
        !           654:       (*info->memory_error_func) (status, start, info);
        !           655:       longjmp (priv->bailout, 1);
        !           656:     }
        !           657:   else
        !           658:     priv->max_fetched = addr;
        !           659:   return 1;
        !           660: }
        !           661: 
        !           662: /* This function is used to print to the bit-bucket.  */
        !           663: static int
        !           664: dummy_printer (FILE *file ATTRIBUTE_UNUSED,
        !           665:               const char *format ATTRIBUTE_UNUSED,
        !           666:               ...)
        !           667: {
        !           668:   return 0;
        !           669: }
        !           670: 
        !           671: static void
        !           672: dummy_print_address (bfd_vma vma ATTRIBUTE_UNUSED,
        !           673:                     struct disassemble_info *info ATTRIBUTE_UNUSED)
        !           674: {
        !           675: }
        !           676: 
        !           677: /* Fetch BITS bits from a position in the instruction specified by CODE.
        !           678:    CODE is a "place to put an argument", or 'x' for a destination
        !           679:    that is a general address (mode and register).
        !           680:    BUFFER contains the instruction.  */
        !           681: 
        !           682: static int
        !           683: fetch_arg (unsigned char *buffer,
        !           684:           int code,
        !           685:           int bits,
        !           686:           disassemble_info *info)
        !           687: {
        !           688:   int val = 0;
        !           689: 
        !           690:   switch (code)
        !           691:     {
        !           692:     case '/': /* MAC/EMAC mask bit.  */
        !           693:       val = buffer[3] >> 5;
        !           694:       break;
        !           695: 
        !           696:     case 'G': /* EMAC ACC load.  */
        !           697:       val = ((buffer[3] >> 3) & 0x2) | ((~buffer[1] >> 7) & 0x1);
        !           698:       break;
        !           699: 
        !           700:     case 'H': /* EMAC ACC !load.  */
        !           701:       val = ((buffer[3] >> 3) & 0x2) | ((buffer[1] >> 7) & 0x1);
        !           702:       break;
        !           703: 
        !           704:     case ']': /* EMAC ACCEXT bit.  */
        !           705:       val = buffer[0] >> 2;
        !           706:       break;
        !           707: 
        !           708:     case 'I': /* MAC/EMAC scale factor.  */
        !           709:       val = buffer[2] >> 1;
        !           710:       break;
        !           711: 
        !           712:     case 'F': /* EMAC ACCx.  */
        !           713:       val = buffer[0] >> 1;
        !           714:       break;
        !           715: 
        !           716:     case 'f':
        !           717:       val = buffer[1];
        !           718:       break;
        !           719: 
        !           720:     case 's':
        !           721:       val = buffer[1];
        !           722:       break;
        !           723: 
        !           724:     case 'd':                  /* Destination, for register or quick.  */
        !           725:       val = (buffer[0] << 8) + buffer[1];
        !           726:       val >>= 9;
        !           727:       break;
        !           728: 
        !           729:     case 'x':                  /* Destination, for general arg.  */
        !           730:       val = (buffer[0] << 8) + buffer[1];
        !           731:       val >>= 6;
        !           732:       break;
        !           733: 
        !           734:     case 'k':
        !           735:       FETCH_DATA (info, buffer + 3);
        !           736:       val = (buffer[3] >> 4);
        !           737:       break;
        !           738: 
        !           739:     case 'C':
        !           740:       FETCH_DATA (info, buffer + 3);
        !           741:       val = buffer[3];
        !           742:       break;
        !           743: 
        !           744:     case '1':
        !           745:       FETCH_DATA (info, buffer + 3);
        !           746:       val = (buffer[2] << 8) + buffer[3];
        !           747:       val >>= 12;
        !           748:       break;
        !           749: 
        !           750:     case '2':
        !           751:       FETCH_DATA (info, buffer + 3);
        !           752:       val = (buffer[2] << 8) + buffer[3];
        !           753:       val >>= 6;
        !           754:       break;
        !           755: 
        !           756:     case '3':
        !           757:     case 'j':
        !           758:       FETCH_DATA (info, buffer + 3);
        !           759:       val = (buffer[2] << 8) + buffer[3];
        !           760:       break;
        !           761: 
        !           762:     case '4':
        !           763:       FETCH_DATA (info, buffer + 5);
        !           764:       val = (buffer[4] << 8) + buffer[5];
        !           765:       val >>= 12;
        !           766:       break;
        !           767: 
        !           768:     case '5':
        !           769:       FETCH_DATA (info, buffer + 5);
        !           770:       val = (buffer[4] << 8) + buffer[5];
        !           771:       val >>= 6;
        !           772:       break;
        !           773: 
        !           774:     case '6':
        !           775:       FETCH_DATA (info, buffer + 5);
        !           776:       val = (buffer[4] << 8) + buffer[5];
        !           777:       break;
        !           778: 
        !           779:     case '7':
        !           780:       FETCH_DATA (info, buffer + 3);
        !           781:       val = (buffer[2] << 8) + buffer[3];
        !           782:       val >>= 7;
        !           783:       break;
        !           784: 
        !           785:     case '8':
        !           786:       FETCH_DATA (info, buffer + 3);
        !           787:       val = (buffer[2] << 8) + buffer[3];
        !           788:       val >>= 10;
        !           789:       break;
        !           790: 
        !           791:     case '9':
        !           792:       FETCH_DATA (info, buffer + 3);
        !           793:       val = (buffer[2] << 8) + buffer[3];
        !           794:       val >>= 5;
        !           795:       break;
        !           796: 
        !           797:     case 'e':
        !           798:       val = (buffer[1] >> 6);
        !           799:       break;
        !           800: 
        !           801:     case 'm':
        !           802:       val = (buffer[1] & 0x40 ? 0x8 : 0)
        !           803:        | ((buffer[0] >> 1) & 0x7)
        !           804:        | (buffer[3] & 0x80 ? 0x10 : 0);
        !           805:       break;
        !           806: 
        !           807:     case 'n':
        !           808:       val = (buffer[1] & 0x40 ? 0x8 : 0) | ((buffer[0] >> 1) & 0x7);
        !           809:       break;
        !           810: 
        !           811:     case 'o':
        !           812:       val = (buffer[2] >> 4) | (buffer[3] & 0x80 ? 0x10 : 0);
        !           813:       break;
        !           814: 
        !           815:     case 'M':
        !           816:       val = (buffer[1] & 0xf) | (buffer[3] & 0x40 ? 0x10 : 0);
        !           817:       break;
        !           818: 
        !           819:     case 'N':
        !           820:       val = (buffer[3] & 0xf) | (buffer[3] & 0x40 ? 0x10 : 0);
        !           821:       break;
        !           822: 
        !           823:     case 'h':
        !           824:       val = buffer[2] >> 2;
        !           825:       break;
        !           826: 
        !           827:     default:
        !           828:       abort ();
        !           829:     }
        !           830: 
        !           831:   switch (bits)
        !           832:     {
        !           833:     case 1:
        !           834:       return val & 1;
        !           835:     case 2:
        !           836:       return val & 3;
        !           837:     case 3:
        !           838:       return val & 7;
        !           839:     case 4:
        !           840:       return val & 017;
        !           841:     case 5:
        !           842:       return val & 037;
        !           843:     case 6:
        !           844:       return val & 077;
        !           845:     case 7:
        !           846:       return val & 0177;
        !           847:     case 8:
        !           848:       return val & 0377;
        !           849:     case 12:
        !           850:       return val & 07777;
        !           851:     default:
        !           852:       abort ();
        !           853:     }
        !           854: }
        !           855: 
        !           856: /* Check if an EA is valid for a particular code.  This is required
        !           857:    for the EMAC instructions since the type of source address determines
        !           858:    if it is a EMAC-load instruciton if the EA is mode 2-5, otherwise it
        !           859:    is a non-load EMAC instruction and the bits mean register Ry.
        !           860:    A similar case exists for the movem instructions where the register
        !           861:    mask is interpreted differently for different EAs.  */
        !           862: 
        !           863: static bfd_boolean
        !           864: m68k_valid_ea (char code, int val)
        !           865: {
        !           866:   int mode, mask;
        !           867: #define M(n0,n1,n2,n3,n4,n5,n6,n70,n71,n72,n73,n74) \
        !           868:   (n0 | n1 << 1 | n2 << 2 | n3 << 3 | n4 << 4 | n5 << 5 | n6 << 6 \
        !           869:    | n70 << 7 | n71 << 8 | n72 << 9 | n73 << 10 | n74 << 11)
        !           870: 
        !           871:   switch (code)
        !           872:     {
        !           873:     case '*':
        !           874:       mask = M (1,1,1,1,1,1,1,1,1,1,1,1);
        !           875:       break;
        !           876:     case '~':
        !           877:       mask = M (0,0,1,1,1,1,1,1,1,0,0,0);
        !           878:       break;
        !           879:     case '%':
        !           880:       mask = M (1,1,1,1,1,1,1,1,1,0,0,0);
        !           881:       break;
        !           882:     case ';':
        !           883:       mask = M (1,0,1,1,1,1,1,1,1,1,1,1);
        !           884:       break;
        !           885:     case '@':
        !           886:       mask = M (1,0,1,1,1,1,1,1,1,1,1,0);
        !           887:       break;
        !           888:     case '!':
        !           889:       mask = M (0,0,1,0,0,1,1,1,1,1,1,0);
        !           890:       break;
        !           891:     case '&':
        !           892:       mask = M (0,0,1,0,0,1,1,1,1,0,0,0);
        !           893:       break;
        !           894:     case '$':
        !           895:       mask = M (1,0,1,1,1,1,1,1,1,0,0,0);
        !           896:       break;
        !           897:     case '?':
        !           898:       mask = M (1,0,1,0,0,1,1,1,1,0,0,0);
        !           899:       break;
        !           900:     case '/':
        !           901:       mask = M (1,0,1,0,0,1,1,1,1,1,1,0);
        !           902:       break;
        !           903:     case '|':
        !           904:       mask = M (0,0,1,0,0,1,1,1,1,1,1,0);
        !           905:       break;
        !           906:     case '>':
        !           907:       mask = M (0,0,1,0,1,1,1,1,1,0,0,0);
        !           908:       break;
        !           909:     case '<':
        !           910:       mask = M (0,0,1,1,0,1,1,1,1,1,1,0);
        !           911:       break;
        !           912:     case 'm':
        !           913:       mask = M (1,1,1,1,1,0,0,0,0,0,0,0);
        !           914:       break;
        !           915:     case 'n':
        !           916:       mask = M (0,0,0,0,0,1,0,0,0,1,0,0);
        !           917:       break;
        !           918:     case 'o':
        !           919:       mask = M (0,0,0,0,0,0,1,1,1,0,1,1);
        !           920:       break;
        !           921:     case 'p':
        !           922:       mask = M (1,1,1,1,1,1,0,0,0,0,0,0);
        !           923:       break;
        !           924:     case 'q':
        !           925:       mask = M (1,0,1,1,1,1,0,0,0,0,0,0);
        !           926:       break;
        !           927:     case 'v':
        !           928:       mask = M (1,0,1,1,1,1,0,1,1,0,0,0);
        !           929:       break;
        !           930:     case 'b':
        !           931:       mask = M (1,0,1,1,1,1,0,0,0,1,0,0);
        !           932:       break;
        !           933:     case 'w':
        !           934:       mask = M (0,0,1,1,1,1,0,0,0,1,0,0);
        !           935:       break;
        !           936:     case 'y':
        !           937:       mask = M (0,0,1,0,0,1,0,0,0,0,0,0);
        !           938:       break;
        !           939:     case 'z':
        !           940:       mask = M (0,0,1,0,0,1,0,0,0,1,0,0);
        !           941:       break;
        !           942:     case '4':
        !           943:       mask = M (0,0,1,1,1,1,0,0,0,0,0,0);
        !           944:       break;
        !           945:     default:
        !           946:       abort ();
        !           947:     }
        !           948: #undef M
        !           949: 
        !           950:   mode = (val >> 3) & 7;
        !           951:   if (mode == 7)
        !           952:     mode += val & 7;
        !           953:   return (mask & (1 << mode)) != 0;
        !           954: }
        !           955: 
        !           956: /* Print a base register REGNO and displacement DISP, on INFO->STREAM.
        !           957:    REGNO = -1 for pc, -2 for none (suppressed).  */
        !           958: 
        !           959: static void
        !           960: print_base (int regno, bfd_vma disp, disassemble_info *info)
        !           961: {
        !           962:   if (regno == -1)
        !           963:     {
        !           964:       (*info->fprintf_func) (info->stream, "%%pc@(");
        !           965:       (*info->print_address_func) (disp, info);
        !           966:     }
        !           967:   else
        !           968:     {
        !           969:       char buf[50];
        !           970: 
        !           971:       if (regno == -2)
        !           972:        (*info->fprintf_func) (info->stream, "@(");
        !           973:       else if (regno == -3)
        !           974:        (*info->fprintf_func) (info->stream, "%%zpc@(");
        !           975:       else
        !           976:        (*info->fprintf_func) (info->stream, "%s@(", reg_names[regno]);
        !           977: 
        !           978:       sprintf_vma (buf, disp);
        !           979:       (*info->fprintf_func) (info->stream, "%s", buf);
        !           980:     }
        !           981: }
        !           982: 
        !           983: /* Print an indexed argument.  The base register is BASEREG (-1 for pc).
        !           984:    P points to extension word, in buffer.
        !           985:    ADDR is the nominal core address of that extension word.  */
        !           986: 
        !           987: static unsigned char *
        !           988: print_indexed (int basereg,
        !           989:               unsigned char *p,
        !           990:               bfd_vma addr,
        !           991:               disassemble_info *info)
        !           992: {
        !           993:   int word;
        !           994:   static char *const scales[] = { "", ":2", ":4", ":8" };
        !           995:   bfd_vma base_disp;
        !           996:   bfd_vma outer_disp;
        !           997:   char buf[40];
        !           998:   char vmabuf[50];
        !           999: 
        !          1000:   word = NEXTWORD (p);
        !          1001: 
        !          1002:   /* Generate the text for the index register.
        !          1003:      Where this will be output is not yet determined.  */
        !          1004:   sprintf (buf, "%s:%c%s",
        !          1005:           reg_names[(word >> 12) & 0xf],
        !          1006:           (word & 0x800) ? 'l' : 'w',
        !          1007:           scales[(word >> 9) & 3]);
        !          1008: 
        !          1009:   /* Handle the 68000 style of indexing.  */
        !          1010: 
        !          1011:   if ((word & 0x100) == 0)
        !          1012:     {
        !          1013:       base_disp = word & 0xff;
        !          1014:       if ((base_disp & 0x80) != 0)
        !          1015:        base_disp -= 0x100;
        !          1016:       if (basereg == -1)
        !          1017:        base_disp += addr;
        !          1018:       print_base (basereg, base_disp, info);
        !          1019:       (*info->fprintf_func) (info->stream, ",%s)", buf);
        !          1020:       return p;
        !          1021:     }
        !          1022: 
        !          1023:   /* Handle the generalized kind.  */
        !          1024:   /* First, compute the displacement to add to the base register.  */
        !          1025:   if (word & 0200)
        !          1026:     {
        !          1027:       if (basereg == -1)
        !          1028:        basereg = -3;
        !          1029:       else
        !          1030:        basereg = -2;
        !          1031:     }
        !          1032:   if (word & 0100)
        !          1033:     buf[0] = '\0';
        !          1034:   base_disp = 0;
        !          1035:   switch ((word >> 4) & 3)
        !          1036:     {
        !          1037:     case 2:
        !          1038:       base_disp = NEXTWORD (p);
        !          1039:       break;
        !          1040:     case 3:
        !          1041:       base_disp = NEXTLONG (p);
        !          1042:     }
        !          1043:   if (basereg == -1)
        !          1044:     base_disp += addr;
        !          1045: 
        !          1046:   /* Handle single-level case (not indirect).  */
        !          1047:   if ((word & 7) == 0)
        !          1048:     {
        !          1049:       print_base (basereg, base_disp, info);
        !          1050:       if (buf[0] != '\0')
        !          1051:        (*info->fprintf_func) (info->stream, ",%s", buf);
        !          1052:       (*info->fprintf_func) (info->stream, ")");
        !          1053:       return p;
        !          1054:     }
        !          1055: 
        !          1056:   /* Two level.  Compute displacement to add after indirection.  */
        !          1057:   outer_disp = 0;
        !          1058:   switch (word & 3)
        !          1059:     {
        !          1060:     case 2:
        !          1061:       outer_disp = NEXTWORD (p);
        !          1062:       break;
        !          1063:     case 3:
        !          1064:       outer_disp = NEXTLONG (p);
        !          1065:     }
        !          1066: 
        !          1067:   print_base (basereg, base_disp, info);
        !          1068:   if ((word & 4) == 0 && buf[0] != '\0')
        !          1069:     {
        !          1070:       (*info->fprintf_func) (info->stream, ",%s", buf);
        !          1071:       buf[0] = '\0';
        !          1072:     }
        !          1073:   sprintf_vma (vmabuf, outer_disp);
        !          1074:   (*info->fprintf_func) (info->stream, ")@(%s", vmabuf);
        !          1075:   if (buf[0] != '\0')
        !          1076:     (*info->fprintf_func) (info->stream, ",%s", buf);
        !          1077:   (*info->fprintf_func) (info->stream, ")");
        !          1078: 
        !          1079:   return p;
        !          1080: }
        !          1081: 
        !          1082: /* Returns number of bytes "eaten" by the operand, or
        !          1083:    return -1 if an invalid operand was found, or -2 if
        !          1084:    an opcode tabe error was found.
        !          1085:    ADDR is the pc for this arg to be relative to.  */
        !          1086: 
        !          1087: static int
        !          1088: print_insn_arg (const char *d,
        !          1089:                unsigned char *buffer,
        !          1090:                unsigned char *p0,
        !          1091:                bfd_vma addr,
        !          1092:                disassemble_info *info)
        !          1093: {
        !          1094:   int val = 0;
        !          1095:   int place = d[1];
        !          1096:   unsigned char *p = p0;
        !          1097:   int regno;
        !          1098:   const char *regname;
        !          1099:   unsigned char *p1;
        !          1100:   double flval;
        !          1101:   int flt_p;
        !          1102:   bfd_signed_vma disp;
        !          1103:   unsigned int uval;
        !          1104: 
        !          1105:   switch (*d)
        !          1106:     {
        !          1107:     case 'c':          /* Cache identifier.  */
        !          1108:       {
        !          1109:         static char *const cacheFieldName[] = { "nc", "dc", "ic", "bc" };
        !          1110:         val = fetch_arg (buffer, place, 2, info);
        !          1111:         (*info->fprintf_func) (info->stream, cacheFieldName[val]);
        !          1112:         break;
        !          1113:       }
        !          1114: 
        !          1115:     case 'a':          /* Address register indirect only. Cf. case '+'.  */
        !          1116:       {
        !          1117:         (*info->fprintf_func)
        !          1118:          (info->stream,
        !          1119:           "%s@",
        !          1120:           reg_names[fetch_arg (buffer, place, 3, info) + 8]);
        !          1121:         break;
        !          1122:       }
        !          1123: 
        !          1124:     case '_':          /* 32-bit absolute address for move16.  */
        !          1125:       {
        !          1126:         uval = NEXTULONG (p);
        !          1127:        (*info->print_address_func) (uval, info);
        !          1128:         break;
        !          1129:       }
        !          1130: 
        !          1131:     case 'C':
        !          1132:       (*info->fprintf_func) (info->stream, "%%ccr");
        !          1133:       break;
        !          1134: 
        !          1135:     case 'S':
        !          1136:       (*info->fprintf_func) (info->stream, "%%sr");
        !          1137:       break;
        !          1138: 
        !          1139:     case 'U':
        !          1140:       (*info->fprintf_func) (info->stream, "%%usp");
        !          1141:       break;
        !          1142: 
        !          1143:     case 'E':
        !          1144:       (*info->fprintf_func) (info->stream, "%%acc");
        !          1145:       break;
        !          1146: 
        !          1147:     case 'G':
        !          1148:       (*info->fprintf_func) (info->stream, "%%macsr");
        !          1149:       break;
        !          1150: 
        !          1151:     case 'H':
        !          1152:       (*info->fprintf_func) (info->stream, "%%mask");
        !          1153:       break;
        !          1154: 
        !          1155:     case 'J':
        !          1156:       {
        !          1157:        /* FIXME: There's a problem here, different m68k processors call the
        !          1158:           same address different names. This table can't get it right
        !          1159:           because it doesn't know which processor it's disassembling for.  */
        !          1160:        static const struct { char *name; int value; } names[]
        !          1161:          = {{"%sfc", 0x000}, {"%dfc", 0x001}, {"%cacr", 0x002},
        !          1162:             {"%tc",  0x003}, {"%itt0",0x004}, {"%itt1", 0x005},
        !          1163:              {"%dtt0",0x006}, {"%dtt1",0x007}, {"%buscr",0x008},
        !          1164:             {"%usp", 0x800}, {"%vbr", 0x801}, {"%caar", 0x802},
        !          1165:             {"%msp", 0x803}, {"%isp", 0x804},
        !          1166:             {"%flashbar", 0xc04}, {"%rambar", 0xc05}, /* mcf528x added these.  */
        !          1167: 
        !          1168:             /* Should we be calling this psr like we do in case 'Y'?  */
        !          1169:             {"%mmusr",0x805},
        !          1170: 
        !          1171:              {"%urp", 0x806}, {"%srp", 0x807}, {"%pcr", 0x808}};
        !          1172: 
        !          1173:        val = fetch_arg (buffer, place, 12, info);
        !          1174:        for (regno = sizeof names / sizeof names[0] - 1; regno >= 0; regno--)
        !          1175:          if (names[regno].value == val)
        !          1176:            {
        !          1177:              (*info->fprintf_func) (info->stream, "%s", names[regno].name);
        !          1178:              break;
        !          1179:            }
        !          1180:        if (regno < 0)
        !          1181:          (*info->fprintf_func) (info->stream, "%d", val);
        !          1182:       }
        !          1183:       break;
        !          1184: 
        !          1185:     case 'Q':
        !          1186:       val = fetch_arg (buffer, place, 3, info);
        !          1187:       /* 0 means 8, except for the bkpt instruction... */
        !          1188:       if (val == 0 && d[1] != 's')
        !          1189:        val = 8;
        !          1190:       (*info->fprintf_func) (info->stream, "#%d", val);
        !          1191:       break;
        !          1192: 
        !          1193:     case 'x':
        !          1194:       val = fetch_arg (buffer, place, 3, info);
        !          1195:       /* 0 means -1.  */
        !          1196:       if (val == 0)
        !          1197:        val = -1;
        !          1198:       (*info->fprintf_func) (info->stream, "#%d", val);
        !          1199:       break;
        !          1200: 
        !          1201:     case 'M':
        !          1202:       if (place == 'h')
        !          1203:        {
        !          1204:          static char *const scalefactor_name[] = { "<<", ">>" };
        !          1205:          val = fetch_arg (buffer, place, 1, info);
        !          1206:          (*info->fprintf_func) (info->stream, scalefactor_name[val]);
        !          1207:        }
        !          1208:       else
        !          1209:        {
        !          1210:          val = fetch_arg (buffer, place, 8, info);
        !          1211:          if (val & 0x80)
        !          1212:            val = val - 0x100;
        !          1213:          (*info->fprintf_func) (info->stream, "#%d", val);
        !          1214:        }
        !          1215:       break;
        !          1216: 
        !          1217:     case 'T':
        !          1218:       val = fetch_arg (buffer, place, 4, info);
        !          1219:       (*info->fprintf_func) (info->stream, "#%d", val);
        !          1220:       break;
        !          1221: 
        !          1222:     case 'D':
        !          1223:       (*info->fprintf_func) (info->stream, "%s",
        !          1224:                             reg_names[fetch_arg (buffer, place, 3, info)]);
        !          1225:       break;
        !          1226: 
        !          1227:     case 'A':
        !          1228:       (*info->fprintf_func)
        !          1229:        (info->stream, "%s",
        !          1230:         reg_names[fetch_arg (buffer, place, 3, info) + 010]);
        !          1231:       break;
        !          1232: 
        !          1233:     case 'R':
        !          1234:       (*info->fprintf_func)
        !          1235:        (info->stream, "%s",
        !          1236:         reg_names[fetch_arg (buffer, place, 4, info)]);
        !          1237:       break;
        !          1238: 
        !          1239:     case 'r':
        !          1240:       regno = fetch_arg (buffer, place, 4, info);
        !          1241:       if (regno > 7)
        !          1242:        (*info->fprintf_func) (info->stream, "%s@", reg_names[regno]);
        !          1243:       else
        !          1244:        (*info->fprintf_func) (info->stream, "@(%s)", reg_names[regno]);
        !          1245:       break;
        !          1246: 
        !          1247:     case 'F':
        !          1248:       (*info->fprintf_func)
        !          1249:        (info->stream, "%%fp%d",
        !          1250:         fetch_arg (buffer, place, 3, info));
        !          1251:       break;
        !          1252: 
        !          1253:     case 'O':
        !          1254:       val = fetch_arg (buffer, place, 6, info);
        !          1255:       if (val & 0x20)
        !          1256:        (*info->fprintf_func) (info->stream, "%s", reg_names[val & 7]);
        !          1257:       else
        !          1258:        (*info->fprintf_func) (info->stream, "%d", val);
        !          1259:       break;
        !          1260: 
        !          1261:     case '+':
        !          1262:       (*info->fprintf_func)
        !          1263:        (info->stream, "%s@+",
        !          1264:         reg_names[fetch_arg (buffer, place, 3, info) + 8]);
        !          1265:       break;
        !          1266: 
        !          1267:     case '-':
        !          1268:       (*info->fprintf_func)
        !          1269:        (info->stream, "%s@-",
        !          1270:         reg_names[fetch_arg (buffer, place, 3, info) + 8]);
        !          1271:       break;
        !          1272: 
        !          1273:     case 'k':
        !          1274:       if (place == 'k')
        !          1275:        (*info->fprintf_func)
        !          1276:          (info->stream, "{%s}",
        !          1277:           reg_names[fetch_arg (buffer, place, 3, info)]);
        !          1278:       else if (place == 'C')
        !          1279:        {
        !          1280:          val = fetch_arg (buffer, place, 7, info);
        !          1281:          if (val > 63)         /* This is a signed constant.  */
        !          1282:            val -= 128;
        !          1283:          (*info->fprintf_func) (info->stream, "{#%d}", val);
        !          1284:        }
        !          1285:       else
        !          1286:        return -2;
        !          1287:       break;
        !          1288: 
        !          1289:     case '#':
        !          1290:     case '^':
        !          1291:       p1 = buffer + (*d == '#' ? 2 : 4);
        !          1292:       if (place == 's')
        !          1293:        val = fetch_arg (buffer, place, 4, info);
        !          1294:       else if (place == 'C')
        !          1295:        val = fetch_arg (buffer, place, 7, info);
        !          1296:       else if (place == '8')
        !          1297:        val = fetch_arg (buffer, place, 3, info);
        !          1298:       else if (place == '3')
        !          1299:        val = fetch_arg (buffer, place, 8, info);
        !          1300:       else if (place == 'b')
        !          1301:        val = NEXTBYTE (p1);
        !          1302:       else if (place == 'w' || place == 'W')
        !          1303:        val = NEXTWORD (p1);
        !          1304:       else if (place == 'l')
        !          1305:        val = NEXTLONG (p1);
        !          1306:       else
        !          1307:        return -2;
        !          1308:       (*info->fprintf_func) (info->stream, "#%d", val);
        !          1309:       break;
        !          1310: 
        !          1311:     case 'B':
        !          1312:       if (place == 'b')
        !          1313:        disp = NEXTBYTE (p);
        !          1314:       else if (place == 'B')
        !          1315:        disp = COERCE_SIGNED_CHAR (buffer[1]);
        !          1316:       else if (place == 'w' || place == 'W')
        !          1317:        disp = NEXTWORD (p);
        !          1318:       else if (place == 'l' || place == 'L' || place == 'C')
        !          1319:        disp = NEXTLONG (p);
        !          1320:       else if (place == 'g')
        !          1321:        {
        !          1322:          disp = NEXTBYTE (buffer);
        !          1323:          if (disp == 0)
        !          1324:            disp = NEXTWORD (p);
        !          1325:          else if (disp == -1)
        !          1326:            disp = NEXTLONG (p);
        !          1327:        }
        !          1328:       else if (place == 'c')
        !          1329:        {
        !          1330:          if (buffer[1] & 0x40)         /* If bit six is one, long offset.  */
        !          1331:            disp = NEXTLONG (p);
        !          1332:          else
        !          1333:            disp = NEXTWORD (p);
        !          1334:        }
        !          1335:       else
        !          1336:        return -2;
        !          1337: 
        !          1338:       (*info->print_address_func) (addr + disp, info);
        !          1339:       break;
        !          1340: 
        !          1341:     case 'd':
        !          1342:       val = NEXTWORD (p);
        !          1343:       (*info->fprintf_func)
        !          1344:        (info->stream, "%s@(%d)",
        !          1345:         reg_names[fetch_arg (buffer, place, 3, info) + 8], val);
        !          1346:       break;
        !          1347: 
        !          1348:     case 's':
        !          1349:       (*info->fprintf_func) (info->stream, "%s",
        !          1350:                             fpcr_names[fetch_arg (buffer, place, 3, info)]);
        !          1351:       break;
        !          1352: 
        !          1353:     case 'e':
        !          1354:       val = fetch_arg(buffer, place, 2, info);
        !          1355:       (*info->fprintf_func) (info->stream, "%%acc%d", val);
        !          1356:       break;
        !          1357: 
        !          1358:     case 'g':
        !          1359:       val = fetch_arg(buffer, place, 1, info);
        !          1360:       (*info->fprintf_func) (info->stream, "%%accext%s", val==0 ? "01" : "23");
        !          1361:       break;
        !          1362: 
        !          1363:     case 'i':
        !          1364:       val = fetch_arg(buffer, place, 2, info);
        !          1365:       if (val == 1)
        !          1366:        (*info->fprintf_func) (info->stream, "<<");
        !          1367:       else if (val == 3)
        !          1368:        (*info->fprintf_func) (info->stream, ">>");
        !          1369:       else
        !          1370:        return -1;
        !          1371:       break;
        !          1372: 
        !          1373:     case 'I':
        !          1374:       /* Get coprocessor ID... */
        !          1375:       val = fetch_arg (buffer, 'd', 3, info);
        !          1376: 
        !          1377:       if (val != 1)                            /* Unusual coprocessor ID?  */
        !          1378:        (*info->fprintf_func) (info->stream, "(cpid=%d) ", val);
        !          1379:       break;
        !          1380: 
        !          1381:     case '4':
        !          1382:     case '*':
        !          1383:     case '~':
        !          1384:     case '%':
        !          1385:     case ';':
        !          1386:     case '@':
        !          1387:     case '!':
        !          1388:     case '$':
        !          1389:     case '?':
        !          1390:     case '/':
        !          1391:     case '&':
        !          1392:     case '|':
        !          1393:     case '<':
        !          1394:     case '>':
        !          1395:     case 'm':
        !          1396:     case 'n':
        !          1397:     case 'o':
        !          1398:     case 'p':
        !          1399:     case 'q':
        !          1400:     case 'v':
        !          1401:     case 'b':
        !          1402:     case 'w':
        !          1403:     case 'y':
        !          1404:     case 'z':
        !          1405:       if (place == 'd')
        !          1406:        {
        !          1407:          val = fetch_arg (buffer, 'x', 6, info);
        !          1408:          val = ((val & 7) << 3) + ((val >> 3) & 7);
        !          1409:        }
        !          1410:       else
        !          1411:        val = fetch_arg (buffer, 's', 6, info);
        !          1412: 
        !          1413:       /* If the <ea> is invalid for *d, then reject this match.  */
        !          1414:       if (!m68k_valid_ea (*d, val))
        !          1415:        return -1;
        !          1416: 
        !          1417:       /* Get register number assuming address register.  */
        !          1418:       regno = (val & 7) + 8;
        !          1419:       regname = reg_names[regno];
        !          1420:       switch (val >> 3)
        !          1421:        {
        !          1422:        case 0:
        !          1423:          (*info->fprintf_func) (info->stream, "%s", reg_names[val]);
        !          1424:          break;
        !          1425: 
        !          1426:        case 1:
        !          1427:          (*info->fprintf_func) (info->stream, "%s", regname);
        !          1428:          break;
        !          1429: 
        !          1430:        case 2:
        !          1431:          (*info->fprintf_func) (info->stream, "%s@", regname);
        !          1432:          break;
        !          1433: 
        !          1434:        case 3:
        !          1435:          (*info->fprintf_func) (info->stream, "%s@+", regname);
        !          1436:          break;
        !          1437: 
        !          1438:        case 4:
        !          1439:          (*info->fprintf_func) (info->stream, "%s@-", regname);
        !          1440:          break;
        !          1441: 
        !          1442:        case 5:
        !          1443:          val = NEXTWORD (p);
        !          1444:          (*info->fprintf_func) (info->stream, "%s@(%d)", regname, val);
        !          1445:          break;
        !          1446: 
        !          1447:        case 6:
        !          1448:          p = print_indexed (regno, p, addr, info);
        !          1449:          break;
        !          1450: 
        !          1451:        case 7:
        !          1452:          switch (val & 7)
        !          1453:            {
        !          1454:            case 0:
        !          1455:              val = NEXTWORD (p);
        !          1456:              (*info->print_address_func) (val, info);
        !          1457:              break;
        !          1458: 
        !          1459:            case 1:
        !          1460:              uval = NEXTULONG (p);
        !          1461:              (*info->print_address_func) (uval, info);
        !          1462:              break;
        !          1463: 
        !          1464:            case 2:
        !          1465:              val = NEXTWORD (p);
        !          1466:              (*info->fprintf_func) (info->stream, "%%pc@(");
        !          1467:              (*info->print_address_func) (addr + val, info);
        !          1468:              (*info->fprintf_func) (info->stream, ")");
        !          1469:              break;
        !          1470: 
        !          1471:            case 3:
        !          1472:              p = print_indexed (-1, p, addr, info);
        !          1473:              break;
        !          1474: 
        !          1475:            case 4:
        !          1476:              flt_p = 1;        /* Assume it's a float... */
        !          1477:              switch (place)
        !          1478:              {
        !          1479:                case 'b':
        !          1480:                  val = NEXTBYTE (p);
        !          1481:                  flt_p = 0;
        !          1482:                  break;
        !          1483: 
        !          1484:                case 'w':
        !          1485:                  val = NEXTWORD (p);
        !          1486:                  flt_p = 0;
        !          1487:                  break;
        !          1488: 
        !          1489:                case 'l':
        !          1490:                  val = NEXTLONG (p);
        !          1491:                  flt_p = 0;
        !          1492:                  break;
        !          1493: 
        !          1494:                case 'f':
        !          1495:                  NEXTSINGLE (flval, p);
        !          1496:                  break;
        !          1497: 
        !          1498:                case 'F':
        !          1499:                  NEXTDOUBLE (flval, p);
        !          1500:                  break;
        !          1501: 
        !          1502:                case 'x':
        !          1503:                  NEXTEXTEND (flval, p);
        !          1504:                  break;
        !          1505: 
        !          1506:                case 'p':
        !          1507:                  flval = NEXTPACKED (p);
        !          1508:                  break;
        !          1509: 
        !          1510:                default:
        !          1511:                  return -1;
        !          1512:              }
        !          1513:              if (flt_p)        /* Print a float? */
        !          1514:                (*info->fprintf_func) (info->stream, "#%g", flval);
        !          1515:              else
        !          1516:                (*info->fprintf_func) (info->stream, "#%d", val);
        !          1517:              break;
        !          1518: 
        !          1519:            default:
        !          1520:              return -1;
        !          1521:            }
        !          1522:        }
        !          1523: 
        !          1524:       /* If place is '/', then this is the case of the mask bit for
        !          1525:         mac/emac loads. Now that the arg has been printed, grab the
        !          1526:         mask bit and if set, add a '&' to the arg.  */
        !          1527:       if (place == '/')
        !          1528:        {
        !          1529:          val = fetch_arg (buffer, place, 1, info);
        !          1530:          if (val)
        !          1531:            info->fprintf_func (info->stream, "&");
        !          1532:        }
        !          1533:       break;
        !          1534: 
        !          1535:     case 'L':
        !          1536:     case 'l':
        !          1537:        if (place == 'w')
        !          1538:          {
        !          1539:            char doneany;
        !          1540:            p1 = buffer + 2;
        !          1541:            val = NEXTWORD (p1);
        !          1542:            /* Move the pointer ahead if this point is farther ahead
        !          1543:               than the last.  */
        !          1544:            p = p1 > p ? p1 : p;
        !          1545:            if (val == 0)
        !          1546:              {
        !          1547:                (*info->fprintf_func) (info->stream, "#0");
        !          1548:                break;
        !          1549:              }
        !          1550:            if (*d == 'l')
        !          1551:              {
        !          1552:                int newval = 0;
        !          1553: 
        !          1554:                for (regno = 0; regno < 16; ++regno)
        !          1555:                  if (val & (0x8000 >> regno))
        !          1556:                    newval |= 1 << regno;
        !          1557:                val = newval;
        !          1558:              }
        !          1559:            val &= 0xffff;
        !          1560:            doneany = 0;
        !          1561:            for (regno = 0; regno < 16; ++regno)
        !          1562:              if (val & (1 << regno))
        !          1563:                {
        !          1564:                  int first_regno;
        !          1565: 
        !          1566:                  if (doneany)
        !          1567:                    (*info->fprintf_func) (info->stream, "/");
        !          1568:                  doneany = 1;
        !          1569:                  (*info->fprintf_func) (info->stream, "%s", reg_names[regno]);
        !          1570:                  first_regno = regno;
        !          1571:                  while (val & (1 << (regno + 1)))
        !          1572:                    ++regno;
        !          1573:                  if (regno > first_regno)
        !          1574:                    (*info->fprintf_func) (info->stream, "-%s",
        !          1575:                                           reg_names[regno]);
        !          1576:                }
        !          1577:          }
        !          1578:        else if (place == '3')
        !          1579:          {
        !          1580:            /* `fmovem' insn.  */
        !          1581:            char doneany;
        !          1582:            val = fetch_arg (buffer, place, 8, info);
        !          1583:            if (val == 0)
        !          1584:              {
        !          1585:                (*info->fprintf_func) (info->stream, "#0");
        !          1586:                break;
        !          1587:              }
        !          1588:            if (*d == 'l')
        !          1589:              {
        !          1590:                int newval = 0;
        !          1591: 
        !          1592:                for (regno = 0; regno < 8; ++regno)
        !          1593:                  if (val & (0x80 >> regno))
        !          1594:                    newval |= 1 << regno;
        !          1595:                val = newval;
        !          1596:              }
        !          1597:            val &= 0xff;
        !          1598:            doneany = 0;
        !          1599:            for (regno = 0; regno < 8; ++regno)
        !          1600:              if (val & (1 << regno))
        !          1601:                {
        !          1602:                  int first_regno;
        !          1603:                  if (doneany)
        !          1604:                    (*info->fprintf_func) (info->stream, "/");
        !          1605:                  doneany = 1;
        !          1606:                  (*info->fprintf_func) (info->stream, "%%fp%d", regno);
        !          1607:                  first_regno = regno;
        !          1608:                  while (val & (1 << (regno + 1)))
        !          1609:                    ++regno;
        !          1610:                  if (regno > first_regno)
        !          1611:                    (*info->fprintf_func) (info->stream, "-%%fp%d", regno);
        !          1612:                }
        !          1613:          }
        !          1614:        else if (place == '8')
        !          1615:          {
        !          1616:            /* fmoveml for FP status registers.  */
        !          1617:            (*info->fprintf_func) (info->stream, "%s",
        !          1618:                                   fpcr_names[fetch_arg (buffer, place, 3,
        !          1619:                                                         info)]);
        !          1620:          }
        !          1621:        else
        !          1622:          return -2;
        !          1623:       break;
        !          1624: 
        !          1625:     case 'X':
        !          1626:       place = '8';
        !          1627:     case 'Y':
        !          1628:     case 'Z':
        !          1629:     case 'W':
        !          1630:     case '0':
        !          1631:     case '1':
        !          1632:     case '2':
        !          1633:     case '3':
        !          1634:       {
        !          1635:        int val = fetch_arg (buffer, place, 5, info);
        !          1636:        char *name = 0;
        !          1637: 
        !          1638:        switch (val)
        !          1639:          {
        !          1640:          case 2: name = "%tt0"; break;
        !          1641:          case 3: name = "%tt1"; break;
        !          1642:          case 0x10: name = "%tc"; break;
        !          1643:          case 0x11: name = "%drp"; break;
        !          1644:          case 0x12: name = "%srp"; break;
        !          1645:          case 0x13: name = "%crp"; break;
        !          1646:          case 0x14: name = "%cal"; break;
        !          1647:          case 0x15: name = "%val"; break;
        !          1648:          case 0x16: name = "%scc"; break;
        !          1649:          case 0x17: name = "%ac"; break;
        !          1650:          case 0x18: name = "%psr"; break;
        !          1651:          case 0x19: name = "%pcsr"; break;
        !          1652:          case 0x1c:
        !          1653:          case 0x1d:
        !          1654:            {
        !          1655:              int break_reg = ((buffer[3] >> 2) & 7);
        !          1656: 
        !          1657:              (*info->fprintf_func)
        !          1658:                (info->stream, val == 0x1c ? "%%bad%d" : "%%bac%d",
        !          1659:                 break_reg);
        !          1660:            }
        !          1661:            break;
        !          1662:          default:
        !          1663:            (*info->fprintf_func) (info->stream, "<mmu register %d>", val);
        !          1664:          }
        !          1665:        if (name)
        !          1666:          (*info->fprintf_func) (info->stream, "%s", name);
        !          1667:       }
        !          1668:       break;
        !          1669: 
        !          1670:     case 'f':
        !          1671:       {
        !          1672:        int fc = fetch_arg (buffer, place, 5, info);
        !          1673: 
        !          1674:        if (fc == 1)
        !          1675:          (*info->fprintf_func) (info->stream, "%%dfc");
        !          1676:        else if (fc == 0)
        !          1677:          (*info->fprintf_func) (info->stream, "%%sfc");
        !          1678:        else
        !          1679:          /* xgettext:c-format */
        !          1680:          (*info->fprintf_func) (info->stream, _("<function code %d>"), fc);
        !          1681:       }
        !          1682:       break;
        !          1683: 
        !          1684:     case 'V':
        !          1685:       (*info->fprintf_func) (info->stream, "%%val");
        !          1686:       break;
        !          1687: 
        !          1688:     case 't':
        !          1689:       {
        !          1690:        int level = fetch_arg (buffer, place, 3, info);
        !          1691: 
        !          1692:        (*info->fprintf_func) (info->stream, "%d", level);
        !          1693:       }
        !          1694:       break;
        !          1695: 
        !          1696:     case 'u':
        !          1697:       {
        !          1698:        short is_upper = 0;
        !          1699:        int reg = fetch_arg (buffer, place, 5, info);
        !          1700: 
        !          1701:        if (reg & 0x10)
        !          1702:          {
        !          1703:            is_upper = 1;
        !          1704:            reg &= 0xf;
        !          1705:          }
        !          1706:        (*info->fprintf_func) (info->stream, "%s%s",
        !          1707:                               reg_half_names[reg],
        !          1708:                               is_upper ? "u" : "l");
        !          1709:       }
        !          1710:       break;
        !          1711: 
        !          1712:     default:
        !          1713:       return -2;
        !          1714:     }
        !          1715: 
        !          1716:   return p - p0;
        !          1717: }
        !          1718: 
        !          1719: /* Try to match the current instruction to best and if so, return the
        !          1720:    number of bytes consumed from the instruction stream, else zero.  */
        !          1721: 
        !          1722: static int
        !          1723: match_insn_m68k (bfd_vma memaddr,
        !          1724:                 disassemble_info * info,
        !          1725:                 const struct m68k_opcode * best,
        !          1726:                 struct private * priv)
        !          1727: {
        !          1728:   unsigned char *save_p;
        !          1729:   unsigned char *p;
        !          1730:   const char *d;
        !          1731: 
        !          1732:   bfd_byte *buffer = priv->the_buffer;
        !          1733:   fprintf_ftype save_printer = info->fprintf_func;
        !          1734:   void (* save_print_address) (bfd_vma, struct disassemble_info *)
        !          1735:     = info->print_address_func;
        !          1736: 
        !          1737:   /* Point at first word of argument data,
        !          1738:      and at descriptor for first argument.  */
        !          1739:   p = buffer + 2;
        !          1740: 
        !          1741:   /* Figure out how long the fixed-size portion of the instruction is.
        !          1742:      The only place this is stored in the opcode table is
        !          1743:      in the arguments--look for arguments which specify fields in the 2nd
        !          1744:      or 3rd words of the instruction.  */
        !          1745:   for (d = best->args; *d; d += 2)
        !          1746:     {
        !          1747:       /* I don't think it is necessary to be checking d[0] here;
        !          1748:         I suspect all this could be moved to the case statement below.  */
        !          1749:       if (d[0] == '#')
        !          1750:        {
        !          1751:          if (d[1] == 'l' && p - buffer < 6)
        !          1752:            p = buffer + 6;
        !          1753:          else if (p - buffer < 4 && d[1] != 'C' && d[1] != '8')
        !          1754:            p = buffer + 4;
        !          1755:        }
        !          1756: 
        !          1757:       if ((d[0] == 'L' || d[0] == 'l') && d[1] == 'w' && p - buffer < 4)
        !          1758:        p = buffer + 4;
        !          1759: 
        !          1760:       switch (d[1])
        !          1761:        {
        !          1762:        case '1':
        !          1763:        case '2':
        !          1764:        case '3':
        !          1765:        case '7':
        !          1766:        case '8':
        !          1767:        case '9':
        !          1768:        case 'i':
        !          1769:          if (p - buffer < 4)
        !          1770:            p = buffer + 4;
        !          1771:          break;
        !          1772:        case '4':
        !          1773:        case '5':
        !          1774:        case '6':
        !          1775:          if (p - buffer < 6)
        !          1776:            p = buffer + 6;
        !          1777:          break;
        !          1778:        default:
        !          1779:          break;
        !          1780:        }
        !          1781:     }
        !          1782: 
        !          1783:   /* pflusha is an exceptions.  It takes no arguments but is two words
        !          1784:      long.  Recognize it by looking at the lower 16 bits of the mask.  */
        !          1785:   if (p - buffer < 4 && (best->match & 0xFFFF) != 0)
        !          1786:     p = buffer + 4;
        !          1787: 
        !          1788:   /* lpstop is another exception.  It takes a one word argument but is
        !          1789:      three words long.  */
        !          1790:   if (p - buffer < 6
        !          1791:       && (best->match & 0xffff) == 0xffff
        !          1792:       && best->args[0] == '#'
        !          1793:       && best->args[1] == 'w')
        !          1794:     {
        !          1795:       /* Copy the one word argument into the usual location for a one
        !          1796:         word argument, to simplify printing it.  We can get away with
        !          1797:         this because we know exactly what the second word is, and we
        !          1798:         aren't going to print anything based on it.  */
        !          1799:       p = buffer + 6;
        !          1800:       FETCH_DATA (info, p);
        !          1801:       buffer[2] = buffer[4];
        !          1802:       buffer[3] = buffer[5];
        !          1803:     }
        !          1804: 
        !          1805:   FETCH_DATA (info, p);
        !          1806: 
        !          1807:   d = best->args;
        !          1808: 
        !          1809:   save_p = p;
        !          1810:   info->print_address_func = dummy_print_address;
        !          1811:   info->fprintf_func = (fprintf_ftype) dummy_printer;
        !          1812: 
        !          1813:   /* We scan the operands twice.  The first time we don't print anything,
        !          1814:      but look for errors.  */
        !          1815:   for (; *d; d += 2)
        !          1816:     {
        !          1817:       int eaten = print_insn_arg (d, buffer, p, memaddr + (p - buffer), info);
        !          1818: 
        !          1819:       if (eaten >= 0)
        !          1820:        p += eaten;
        !          1821:       else if (eaten == -1)
        !          1822:        {
        !          1823:          info->fprintf_func = save_printer;
        !          1824:          info->print_address_func = save_print_address;
        !          1825:          return 0;
        !          1826:        }
        !          1827:       else
        !          1828:        {
        !          1829:          info->fprintf_func (info->stream,
        !          1830:                              /* xgettext:c-format */
        !          1831:                              _("<internal error in opcode table: %s %s>\n"),
        !          1832:                              best->name,  best->args);
        !          1833:          info->fprintf_func = save_printer;
        !          1834:          info->print_address_func = save_print_address;
        !          1835:          return 2;
        !          1836:        }
        !          1837:     }
        !          1838: 
        !          1839:   p = save_p;
        !          1840:   info->fprintf_func = save_printer;
        !          1841:   info->print_address_func = save_print_address;
        !          1842: 
        !          1843:   d = best->args;
        !          1844: 
        !          1845:   info->fprintf_func (info->stream, "%s", best->name);
        !          1846: 
        !          1847:   if (*d)
        !          1848:     info->fprintf_func (info->stream, " ");
        !          1849: 
        !          1850:   while (*d)
        !          1851:     {
        !          1852:       p += print_insn_arg (d, buffer, p, memaddr + (p - buffer), info);
        !          1853:       d += 2;
        !          1854: 
        !          1855:       if (*d && *(d - 2) != 'I' && *d != 'k')
        !          1856:        info->fprintf_func (info->stream, ",");
        !          1857:     }
        !          1858: 
        !          1859:   return p - buffer;
        !          1860: }
        !          1861: 
        !          1862: /* Print the m68k instruction at address MEMADDR in debugged memory,
        !          1863:    on INFO->STREAM.  Returns length of the instruction, in bytes.  */
        !          1864: 
        !          1865: int
        !          1866: print_insn_m68k (bfd_vma memaddr, disassemble_info *info)
        !          1867: {
        !          1868:   int i;
        !          1869:   const char *d;
        !          1870:   unsigned int arch_mask;
        !          1871:   struct private priv;
        !          1872:   bfd_byte *buffer = priv.the_buffer;
        !          1873:   int major_opcode;
        !          1874:   static int numopcodes[16];
        !          1875:   static const struct m68k_opcode **opcodes[16];
        !          1876:   int val;
        !          1877: 
        !          1878:   if (!opcodes[0])
        !          1879:     {
        !          1880:       /* Speed up the matching by sorting the opcode
        !          1881:         table on the upper four bits of the opcode.  */
        !          1882:       const struct m68k_opcode **opc_pointer[16];
        !          1883: 
        !          1884:       /* First count how many opcodes are in each of the sixteen buckets.  */
        !          1885:       for (i = 0; i < m68k_numopcodes; i++)
        !          1886:        numopcodes[(m68k_opcodes[i].opcode >> 28) & 15]++;
        !          1887: 
        !          1888:       /* Then create a sorted table of pointers
        !          1889:         that point into the unsorted table.  */
        !          1890:       opc_pointer[0] = malloc (sizeof (struct m68k_opcode *)
        !          1891:                                * m68k_numopcodes);
        !          1892:       opcodes[0] = opc_pointer[0];
        !          1893: 
        !          1894:       for (i = 1; i < 16; i++)
        !          1895:        {
        !          1896:          opc_pointer[i] = opc_pointer[i - 1] + numopcodes[i - 1];
        !          1897:          opcodes[i] = opc_pointer[i];
        !          1898:        }
        !          1899: 
        !          1900:       for (i = 0; i < m68k_numopcodes; i++)
        !          1901:        *opc_pointer[(m68k_opcodes[i].opcode >> 28) & 15]++ = &m68k_opcodes[i];
        !          1902:     }
        !          1903: 
        !          1904:   info->private_data = (PTR) &priv;
        !          1905:   /* Tell objdump to use two bytes per chunk
        !          1906:      and six bytes per line for displaying raw data.  */
        !          1907:   info->bytes_per_chunk = 2;
        !          1908:   info->bytes_per_line = 6;
        !          1909:   info->display_endian = BFD_ENDIAN_BIG;
        !          1910:   priv.max_fetched = priv.the_buffer;
        !          1911:   priv.insn_start = memaddr;
        !          1912: 
        !          1913:   if (setjmp (priv.bailout) != 0)
        !          1914:     /* Error return.  */
        !          1915:     return -1;
        !          1916: 
        !          1917:   switch (info->mach)
        !          1918:     {
        !          1919:     default:
        !          1920:     case 0:
        !          1921:       arch_mask = (unsigned int) -1;
        !          1922:       break;
        !          1923:     case bfd_mach_m68000:
        !          1924:       arch_mask = m68000|m68881|m68851;
        !          1925:       break;
        !          1926:     case bfd_mach_m68008:
        !          1927:       arch_mask = m68008|m68881|m68851;
        !          1928:       break;
        !          1929:     case bfd_mach_m68010:
        !          1930:       arch_mask = m68010|m68881|m68851;
        !          1931:       break;
        !          1932:     case bfd_mach_m68020:
        !          1933:       arch_mask = m68020|m68881|m68851;
        !          1934:       break;
        !          1935:     case bfd_mach_m68030:
        !          1936:       arch_mask = m68030|m68881|m68851;
        !          1937:       break;
        !          1938:     case bfd_mach_m68040:
        !          1939:       arch_mask = m68040|m68881|m68851;
        !          1940:       break;
        !          1941:     case bfd_mach_m68060:
        !          1942:       arch_mask = m68060|m68881|m68851;
        !          1943:       break;
        !          1944:     case bfd_mach_mcf5200:
        !          1945:       arch_mask = mcfisa_a;
        !          1946:       break;
        !          1947:     case bfd_mach_mcf521x:
        !          1948:     case bfd_mach_mcf528x:
        !          1949:       arch_mask = mcfisa_a|mcfhwdiv|mcfisa_aa|mcfusp|mcfemac;
        !          1950:       break;
        !          1951:     case bfd_mach_mcf5206e:
        !          1952:       arch_mask = mcfisa_a|mcfhwdiv|mcfmac;
        !          1953:       break;
        !          1954:     case bfd_mach_mcf5249:
        !          1955:       arch_mask = mcfisa_a|mcfhwdiv|mcfemac;
        !          1956:       break;
        !          1957:     case bfd_mach_mcf5307:
        !          1958:       arch_mask = mcfisa_a|mcfhwdiv|mcfmac;
        !          1959:       break;
        !          1960:     case bfd_mach_mcf5407:
        !          1961:       arch_mask = mcfisa_a|mcfhwdiv|mcfisa_b|mcfmac;
        !          1962:       break;
        !          1963:     case bfd_mach_mcf547x:
        !          1964:     case bfd_mach_mcf548x:
        !          1965:     case bfd_mach_mcfv4e:
        !          1966:       arch_mask = mcfisa_a|mcfhwdiv|mcfisa_b|mcfusp|cfloat|mcfemac;
        !          1967:       break;
        !          1968:     }
        !          1969: 
        !          1970:   FETCH_DATA (info, buffer + 2);
        !          1971:   major_opcode = (buffer[0] >> 4) & 15;
        !          1972: 
        !          1973:   for (i = 0; i < numopcodes[major_opcode]; i++)
        !          1974:     {
        !          1975:       const struct m68k_opcode *opc = opcodes[major_opcode][i];
        !          1976:       unsigned long opcode = opc->opcode;
        !          1977:       unsigned long match = opc->match;
        !          1978: 
        !          1979:       if (((0xff & buffer[0] & (match >> 24)) == (0xff & (opcode >> 24)))
        !          1980:          && ((0xff & buffer[1] & (match >> 16)) == (0xff & (opcode >> 16)))
        !          1981:          /* Only fetch the next two bytes if we need to.  */
        !          1982:          && (((0xffff & match) == 0)
        !          1983:              ||
        !          1984:              (FETCH_DATA (info, buffer + 4)
        !          1985:               && ((0xff & buffer[2] & (match >> 8)) == (0xff & (opcode >> 8)))
        !          1986:               && ((0xff & buffer[3] & match) == (0xff & opcode)))
        !          1987:              )
        !          1988:          && (opc->arch & arch_mask) != 0)
        !          1989:        {
        !          1990:          /* Don't use for printout the variants of divul and divsl
        !          1991:             that have the same register number in two places.
        !          1992:             The more general variants will match instead.  */
        !          1993:          for (d = opc->args; *d; d += 2)
        !          1994:            if (d[1] == 'D')
        !          1995:              break;
        !          1996: 
        !          1997:          /* Don't use for printout the variants of most floating
        !          1998:             point coprocessor instructions which use the same
        !          1999:             register number in two places, as above.  */
        !          2000:          if (*d == '\0')
        !          2001:            for (d = opc->args; *d; d += 2)
        !          2002:              if (d[1] == 't')
        !          2003:                break;
        !          2004: 
        !          2005:          /* Don't match fmovel with more than one register;
        !          2006:             wait for fmoveml.  */
        !          2007:          if (*d == '\0')
        !          2008:            {
        !          2009:              for (d = opc->args; *d; d += 2)
        !          2010:                {
        !          2011:                  if (d[0] == 's' && d[1] == '8')
        !          2012:                    {
        !          2013:                      val = fetch_arg (buffer, d[1], 3, info);
        !          2014:                      if ((val & (val - 1)) != 0)
        !          2015:                        break;
        !          2016:                    }
        !          2017:                }
        !          2018:            }
        !          2019: 
        !          2020:          if (*d == '\0')
        !          2021:            if ((val = match_insn_m68k (memaddr, info, opc, & priv)))
        !          2022:              return val;
        !          2023:        }
        !          2024:     }
        !          2025: 
        !          2026:   /* Handle undefined instructions.  */
        !          2027:   info->fprintf_func (info->stream, "0%o", (buffer[0] << 8) + buffer[1]);
        !          2028:   return 2;
        !          2029: }
        !          2030: /* **** End of m68k-dis.c */
        !          2031: /* **** m68k-opc.h from sourceware.org CVS 2005-08-14.  */
        !          2032: /* Opcode table for m680[012346]0/m6888[12]/m68851/mcf5200.
        !          2033:    Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
        !          2034:    2000, 2001, 2003, 2004, 2005
        !          2035:    Free Software Foundation, Inc.
        !          2036: 
        !          2037:    This file is part of GDB, GAS, and the GNU binutils.
        !          2038: 
        !          2039:    GDB, GAS, and the GNU binutils are free software; you can redistribute
        !          2040:    them and/or modify them under the terms of the GNU General Public
        !          2041:    License as published by the Free Software Foundation; either version
        !          2042:    1, or (at your option) any later version.
        !          2043: 
        !          2044:    GDB, GAS, and the GNU binutils are distributed in the hope that they
        !          2045:    will be useful, but WITHOUT ANY WARRANTY; without even the implied
        !          2046:    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
        !          2047:    the GNU General Public License for more details.
        !          2048: 
        !          2049:    You should have received a copy of the GNU General Public License
        !          2050:    along with this file; see the file COPYING.  If not, write to the Free
        !          2051:    Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
        !          2052:    02110-1301, USA.  */
        !          2053: 
        !          2054: #define one(x) ((unsigned int) (x) << 16)
        !          2055: #define two(x, y) (((unsigned int) (x) << 16) + (y))
        !          2056: 
        !          2057: /* The assembler requires that all instances of the same mnemonic must
        !          2058:    be consecutive.  If they aren't, the assembler will bomb at
        !          2059:    runtime.  */
        !          2060: 
        !          2061: const struct m68k_opcode m68k_opcodes[] =
        !          2062: {
        !          2063: {"abcd", 2,    one(0140400),   one(0170770), "DsDd", m68000up },
        !          2064: {"abcd", 2,    one(0140410),   one(0170770), "-s-d", m68000up },
        !          2065: 
        !          2066: {"addaw", 2,   one(0150300),   one(0170700), "*wAd", m68000up },
        !          2067: {"addal", 2,   one(0150700),   one(0170700), "*lAd", m68000up | mcfisa_a },
        !          2068: 
        !          2069: {"addib", 4,   one(0003000),   one(0177700), "#b$s", m68000up },
        !          2070: {"addiw", 4,   one(0003100),   one(0177700), "#w$s", m68000up },
        !          2071: {"addil", 6,   one(0003200),   one(0177700), "#l$s", m68000up },
        !          2072: {"addil", 6,   one(0003200),   one(0177700), "#lDs", mcfisa_a },
        !          2073: 
        !          2074: {"addqb", 2,   one(0050000),   one(0170700), "Qd$b", m68000up },
        !          2075: {"addqw", 2,   one(0050100),   one(0170700), "Qd%w", m68000up },
        !          2076: {"addql", 2,   one(0050200),   one(0170700), "Qd%l", m68000up | mcfisa_a },
        !          2077: 
        !          2078: /* The add opcode can generate the adda, addi, and addq instructions.  */
        !          2079: {"addb", 2,    one(0050000),   one(0170700), "Qd$b", m68000up },
        !          2080: {"addb", 4,    one(0003000),   one(0177700), "#b$s", m68000up },
        !          2081: {"addb", 2,    one(0150000),   one(0170700), ";bDd", m68000up },
        !          2082: {"addb", 2,    one(0150400),   one(0170700), "Dd~b", m68000up },
        !          2083: {"addw", 2,    one(0050100),   one(0170700), "Qd%w", m68000up },
        !          2084: {"addw", 2,    one(0150300),   one(0170700), "*wAd", m68000up },
        !          2085: {"addw", 4,    one(0003100),   one(0177700), "#w$s", m68000up },
        !          2086: {"addw", 2,    one(0150100),   one(0170700), "*wDd", m68000up },
        !          2087: {"addw", 2,    one(0150500),   one(0170700), "Dd~w", m68000up },
        !          2088: {"addl", 2,    one(0050200),   one(0170700), "Qd%l", m68000up | mcfisa_a },
        !          2089: {"addl", 6,    one(0003200),   one(0177700), "#l$s", m68000up },
        !          2090: {"addl", 6,    one(0003200),   one(0177700), "#lDs", mcfisa_a },
        !          2091: {"addl", 2,    one(0150700),   one(0170700), "*lAd", m68000up | mcfisa_a },
        !          2092: {"addl", 2,    one(0150200),   one(0170700), "*lDd", m68000up | mcfisa_a },
        !          2093: {"addl", 2,    one(0150600),   one(0170700), "Dd~l", m68000up | mcfisa_a },
        !          2094: 
        !          2095: {"addxb", 2,   one(0150400),   one(0170770), "DsDd", m68000up },
        !          2096: {"addxb", 2,   one(0150410),   one(0170770), "-s-d", m68000up },
        !          2097: {"addxw", 2,   one(0150500),   one(0170770), "DsDd", m68000up },
        !          2098: {"addxw", 2,   one(0150510),   one(0170770), "-s-d", m68000up },
        !          2099: {"addxl", 2,   one(0150600),   one(0170770), "DsDd", m68000up | mcfisa_a },
        !          2100: {"addxl", 2,   one(0150610),   one(0170770), "-s-d", m68000up },
        !          2101: 
        !          2102: {"andib", 4,   one(0001000),   one(0177700), "#b$s", m68000up },
        !          2103: {"andib", 4,   one(0001074),   one(0177777), "#bCs", m68000up },
        !          2104: {"andiw", 4,   one(0001100),   one(0177700), "#w$s", m68000up },
        !          2105: {"andiw", 4,   one(0001174),   one(0177777), "#wSs", m68000up },
        !          2106: {"andil", 6,   one(0001200),   one(0177700), "#l$s", m68000up },
        !          2107: {"andil", 6,   one(0001200),   one(0177700), "#lDs", mcfisa_a },
        !          2108: {"andi", 4,    one(0001100),   one(0177700), "#w$s", m68000up },
        !          2109: {"andi", 4,    one(0001074),   one(0177777), "#bCs", m68000up },
        !          2110: {"andi", 4,    one(0001174),   one(0177777), "#wSs", m68000up },
        !          2111: 
        !          2112: /* The and opcode can generate the andi instruction.  */
        !          2113: {"andb", 4,    one(0001000),   one(0177700), "#b$s", m68000up },
        !          2114: {"andb", 4,    one(0001074),   one(0177777), "#bCs", m68000up },
        !          2115: {"andb", 2,    one(0140000),   one(0170700), ";bDd", m68000up },
        !          2116: {"andb", 2,    one(0140400),   one(0170700), "Dd~b", m68000up },
        !          2117: {"andw", 4,    one(0001100),   one(0177700), "#w$s", m68000up },
        !          2118: {"andw", 4,    one(0001174),   one(0177777), "#wSs", m68000up },
        !          2119: {"andw", 2,    one(0140100),   one(0170700), ";wDd", m68000up },
        !          2120: {"andw", 2,    one(0140500),   one(0170700), "Dd~w", m68000up },
        !          2121: {"andl", 6,    one(0001200),   one(0177700), "#l$s", m68000up },
        !          2122: {"andl", 6,    one(0001200),   one(0177700), "#lDs", mcfisa_a },
        !          2123: {"andl", 2,    one(0140200),   one(0170700), ";lDd", m68000up | mcfisa_a },
        !          2124: {"andl", 2,    one(0140600),   one(0170700), "Dd~l", m68000up | mcfisa_a },
        !          2125: {"and", 4,     one(0001100),   one(0177700), "#w$w", m68000up },
        !          2126: {"and", 4,     one(0001074),   one(0177777), "#bCs", m68000up },
        !          2127: {"and", 4,     one(0001174),   one(0177777), "#wSs", m68000up },
        !          2128: {"and", 2,     one(0140100),   one(0170700), ";wDd", m68000up },
        !          2129: {"and", 2,     one(0140500),   one(0170700), "Dd~w", m68000up },
        !          2130: 
        !          2131: {"aslb", 2,    one(0160400),   one(0170770), "QdDs", m68000up },
        !          2132: {"aslb", 2,    one(0160440),   one(0170770), "DdDs", m68000up },
        !          2133: {"aslw", 2,    one(0160500),   one(0170770), "QdDs", m68000up },
        !          2134: {"aslw", 2,    one(0160540),   one(0170770), "DdDs", m68000up },
        !          2135: {"aslw", 2,    one(0160700),   one(0177700), "~s",   m68000up },
        !          2136: {"asll", 2,    one(0160600),   one(0170770), "QdDs", m68000up | mcfisa_a },
        !          2137: {"asll", 2,    one(0160640),   one(0170770), "DdDs", m68000up | mcfisa_a },
        !          2138: 
        !          2139: {"asrb", 2,    one(0160000),   one(0170770), "QdDs", m68000up },
        !          2140: {"asrb", 2,    one(0160040),   one(0170770), "DdDs", m68000up },
        !          2141: {"asrw", 2,    one(0160100),   one(0170770), "QdDs", m68000up },
        !          2142: {"asrw", 2,    one(0160140),   one(0170770), "DdDs", m68000up },
        !          2143: {"asrw", 2,    one(0160300),   one(0177700), "~s",   m68000up },
        !          2144: {"asrl", 2,    one(0160200),   one(0170770), "QdDs", m68000up | mcfisa_a },
        !          2145: {"asrl", 2,    one(0160240),   one(0170770), "DdDs", m68000up | mcfisa_a },
        !          2146: 
        !          2147: {"bhiw", 2,    one(0061000),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2148: {"blsw", 2,    one(0061400),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2149: {"bccw", 2,    one(0062000),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2150: {"bcsw", 2,    one(0062400),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2151: {"bnew", 2,    one(0063000),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2152: {"beqw", 2,    one(0063400),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2153: {"bvcw", 2,    one(0064000),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2154: {"bvsw", 2,    one(0064400),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2155: {"bplw", 2,    one(0065000),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2156: {"bmiw", 2,    one(0065400),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2157: {"bgew", 2,    one(0066000),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2158: {"bltw", 2,    one(0066400),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2159: {"bgtw", 2,    one(0067000),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2160: {"blew", 2,    one(0067400),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2161: 
        !          2162: {"bhil", 2,    one(0061377),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2163: {"blsl", 2,    one(0061777),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2164: {"bccl", 2,    one(0062377),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2165: {"bcsl", 2,    one(0062777),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2166: {"bnel", 2,    one(0063377),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2167: {"beql", 2,    one(0063777),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2168: {"bvcl", 2,    one(0064377),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2169: {"bvsl", 2,    one(0064777),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2170: {"bpll", 2,    one(0065377),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2171: {"bmil", 2,    one(0065777),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2172: {"bgel", 2,    one(0066377),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2173: {"bltl", 2,    one(0066777),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2174: {"bgtl", 2,    one(0067377),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2175: {"blel", 2,    one(0067777),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2176: 
        !          2177: {"bhis", 2,    one(0061000),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2178: {"blss", 2,    one(0061400),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2179: {"bccs", 2,    one(0062000),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2180: {"bcss", 2,    one(0062400),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2181: {"bnes", 2,    one(0063000),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2182: {"beqs", 2,    one(0063400),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2183: {"bvcs", 2,    one(0064000),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2184: {"bvss", 2,    one(0064400),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2185: {"bpls", 2,    one(0065000),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2186: {"bmis", 2,    one(0065400),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2187: {"bges", 2,    one(0066000),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2188: {"blts", 2,    one(0066400),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2189: {"bgts", 2,    one(0067000),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2190: {"bles", 2,    one(0067400),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2191: 
        !          2192: {"jhi", 2,     one(0061000),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2193: {"jls", 2,     one(0061400),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2194: {"jcc", 2,     one(0062000),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2195: {"jcs", 2,     one(0062400),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2196: {"jne", 2,     one(0063000),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2197: {"jeq", 2,     one(0063400),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2198: {"jvc", 2,     one(0064000),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2199: {"jvs", 2,     one(0064400),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2200: {"jpl", 2,     one(0065000),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2201: {"jmi", 2,     one(0065400),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2202: {"jge", 2,     one(0066000),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2203: {"jlt", 2,     one(0066400),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2204: {"jgt", 2,     one(0067000),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2205: {"jle", 2,     one(0067400),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          2206: 
        !          2207: {"bchg", 2,    one(0000500),   one(0170700), "Dd$s", m68000up | mcfisa_a },
        !          2208: {"bchg", 4,    one(0004100),   one(0177700), "#b$s", m68000up },
        !          2209: {"bchg", 4,    one(0004100),   one(0177700), "#bqs", mcfisa_a },
        !          2210: 
        !          2211: {"bclr", 2,    one(0000600),   one(0170700), "Dd$s", m68000up | mcfisa_a },
        !          2212: {"bclr", 4,    one(0004200),   one(0177700), "#b$s", m68000up },
        !          2213: {"bclr", 4,    one(0004200),   one(0177700), "#bqs", mcfisa_a },
        !          2214: 
        !          2215: {"bfchg", 4,   two(0165300, 0), two(0177700, 0170000), "?sO2O3",   m68020up },
        !          2216: {"bfclr", 4,   two(0166300, 0), two(0177700, 0170000), "?sO2O3",   m68020up },
        !          2217: {"bfexts", 4,  two(0165700, 0), two(0177700, 0100000), "/sO2O3D1", m68020up },
        !          2218: {"bfextu", 4,  two(0164700, 0), two(0177700, 0100000), "/sO2O3D1", m68020up },
        !          2219: {"bfffo", 4,   two(0166700, 0), two(0177700, 0100000), "/sO2O3D1", m68020up },
        !          2220: {"bfins", 4,   two(0167700, 0), two(0177700, 0100000), "D1?sO2O3", m68020up },
        !          2221: {"bfset", 4,   two(0167300, 0), two(0177700, 0170000), "?sO2O3",   m68020up },
        !          2222: {"bftst", 4,   two(0164300, 0), two(0177700, 0170000), "/sO2O3",   m68020up },
        !          2223: 
        !          2224: {"bgnd", 2,    one(0045372),   one(0177777), "", cpu32 },
        !          2225: 
        !          2226: {"bitrev", 2,  one(0000300),   one(0177770), "Ds", mcfisa_aa},
        !          2227: 
        !          2228: {"bkpt", 2,    one(0044110),   one(0177770), "ts", m68010up },
        !          2229: 
        !          2230: {"braw", 2,    one(0060000),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2231: {"bral", 2,    one(0060377),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2232: {"bras", 2,    one(0060000),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2233: 
        !          2234: {"bset", 2,    one(0000700),   one(0170700), "Dd$s", m68000up | mcfisa_a },
        !          2235: {"bset", 2,    one(0000700),   one(0170700), "Ddvs", mcfisa_a },
        !          2236: {"bset", 4,    one(0004300),   one(0177700), "#b$s", m68000up },
        !          2237: {"bset", 4,    one(0004300),   one(0177700), "#bqs", mcfisa_a },
        !          2238: 
        !          2239: {"bsrw", 2,    one(0060400),   one(0177777), "BW", m68000up | mcfisa_a },
        !          2240: {"bsrl", 2,    one(0060777),   one(0177777), "BL", m68020up | cpu32 | mcfisa_b},
        !          2241: {"bsrs", 2,    one(0060400),   one(0177400), "BB", m68000up | mcfisa_a },
        !          2242: 
        !          2243: {"btst", 2,    one(0000400),   one(0170700), "Dd;b", m68000up | mcfisa_a },
        !          2244: {"btst", 4,    one(0004000),   one(0177700), "#b@s", m68000up },
        !          2245: {"btst", 4,    one(0004000),   one(0177700), "#bqs", mcfisa_a },
        !          2246: 
        !          2247: {"byterev", 2, one(0001300),   one(0177770), "Ds", mcfisa_aa},
        !          2248: 
        !          2249: {"callm", 4,   one(0003300),   one(0177700), "#b!s", m68020 },
        !          2250: 
        !          2251: {"cas2w", 6,    two(0006374,0), two(0177777,0007070), "D3D6D2D5r1r4", m68020up },
        !          2252: {"cas2w", 6,    two(0006374,0), two(0177777,0007070), "D3D6D2D5R1R4", m68020up },
        !          2253: {"cas2l", 6,    two(0007374,0), two(0177777,0007070), "D3D6D2D5r1r4", m68020up },
        !          2254: {"cas2l", 6,    two(0007374,0), two(0177777,0007070), "D3D6D2D5R1R4", m68020up },
        !          2255: 
        !          2256: {"casb", 4,    two(0005300, 0), two(0177700, 0177070), "D3D2~s", m68020up },
        !          2257: {"casw", 4,    two(0006300, 0), two(0177700, 0177070), "D3D2~s", m68020up },
        !          2258: {"casl", 4,    two(0007300, 0), two(0177700, 0177070), "D3D2~s", m68020up },
        !          2259: 
        !          2260: {"chk2b", 4,   two(0000300,0004000), two(0177700,07777), "!sR1", m68020up | cpu32 },
        !          2261: {"chk2w", 4,   two(0001300,0004000),   two(0177700,07777), "!sR1", m68020up | cpu32 },
        !          2262: {"chk2l", 4,   two(0002300,0004000),   two(0177700,07777), "!sR1", m68020up | cpu32 },
        !          2263: 
        !          2264: {"chkl", 2,    one(0040400),           one(0170700), ";lDd", m68000up },
        !          2265: {"chkw", 2,    one(0040600),           one(0170700), ";wDd", m68000up },
        !          2266: 
        !          2267: #define SCOPE_LINE (0x1 << 3)
        !          2268: #define SCOPE_PAGE (0x2 << 3)
        !          2269: #define SCOPE_ALL  (0x3 << 3)
        !          2270: 
        !          2271: {"cinva", 2,   one(0xf400|SCOPE_ALL),  one(0xff38), "ce",   m68040up },
        !          2272: {"cinvl", 2,   one(0xf400|SCOPE_LINE), one(0xff38), "ceas", m68040up },
        !          2273: {"cinvp", 2,   one(0xf400|SCOPE_PAGE), one(0xff38), "ceas", m68040up },
        !          2274: 
        !          2275: {"cpusha", 2,  one(0xf420|SCOPE_ALL),  one(0xff38), "ce",   m68040up },
        !          2276: {"cpushl", 2,  one(0xf420|SCOPE_LINE), one(0xff38), "ceas", m68040up | mcfisa_a },
        !          2277: {"cpushp", 2,  one(0xf420|SCOPE_PAGE), one(0xff38), "ceas", m68040up },
        !          2278: 
        !          2279: #undef SCOPE_LINE
        !          2280: #undef SCOPE_PAGE
        !          2281: #undef SCOPE_ALL
        !          2282: 
        !          2283: {"clrb", 2,    one(0041000),   one(0177700), "$s", m68000up | mcfisa_a },
        !          2284: {"clrw", 2,    one(0041100),   one(0177700), "$s", m68000up | mcfisa_a },
        !          2285: {"clrl", 2,    one(0041200),   one(0177700), "$s", m68000up | mcfisa_a },
        !          2286: 
        !          2287: {"cmp2b", 4,   two(0000300,0), two(0177700,07777), "!sR1", m68020up | cpu32 },
        !          2288: {"cmp2w", 4,   two(0001300,0), two(0177700,07777), "!sR1", m68020up | cpu32 },
        !          2289: {"cmp2l", 4,   two(0002300,0), two(0177700,07777), "!sR1", m68020up | cpu32 },
        !          2290: 
        !          2291: {"cmpaw", 2,   one(0130300),   one(0170700), "*wAd", m68000up },
        !          2292: {"cmpal", 2,   one(0130700),   one(0170700), "*lAd", m68000up | mcfisa_a },
        !          2293: 
        !          2294: {"cmpib", 4,   one(0006000),   one(0177700), "#b@s", m68000up },
        !          2295: {"cmpib", 4,   one(0006000),   one(0177700), "#bDs", mcfisa_b },
        !          2296: {"cmpiw", 4,   one(0006100),   one(0177700), "#w@s", m68000up },
        !          2297: {"cmpiw", 4,   one(0006100),   one(0177700), "#wDs", mcfisa_b },
        !          2298: {"cmpil", 6,   one(0006200),   one(0177700), "#l@s", m68000up },
        !          2299: {"cmpil", 6,   one(0006200),   one(0177700), "#lDs", mcfisa_a },
        !          2300: 
        !          2301: {"cmpmb", 2,   one(0130410),   one(0170770), "+s+d", m68000up },
        !          2302: {"cmpmw", 2,   one(0130510),   one(0170770), "+s+d", m68000up },
        !          2303: {"cmpml", 2,   one(0130610),   one(0170770), "+s+d", m68000up },
        !          2304: 
        !          2305: /* The cmp opcode can generate the cmpa, cmpm, and cmpi instructions.  */
        !          2306: {"cmpb", 4,    one(0006000),   one(0177700), "#b@s", m68000up },
        !          2307: {"cmpb", 4,    one(0006000),   one(0177700), "#bDs", mcfisa_b },
        !          2308: {"cmpb", 2,    one(0130410),   one(0170770), "+s+d", m68000up },
        !          2309: {"cmpb", 2,    one(0130000),   one(0170700), ";bDd", m68000up },
        !          2310: {"cmpb", 2,    one(0130000),   one(0170700), "*bDd", mcfisa_b },
        !          2311: {"cmpw", 2,    one(0130300),   one(0170700), "*wAd", m68000up },
        !          2312: {"cmpw", 4,    one(0006100),   one(0177700), "#w@s", m68000up },
        !          2313: {"cmpw", 4,    one(0006100),   one(0177700), "#wDs", mcfisa_b },
        !          2314: {"cmpw", 2,    one(0130510),   one(0170770), "+s+d", m68000up },
        !          2315: {"cmpw", 2,    one(0130100),   one(0170700), "*wDd", m68000up | mcfisa_b },
        !          2316: {"cmpl", 2,    one(0130700),   one(0170700), "*lAd", m68000up | mcfisa_a },
        !          2317: {"cmpl", 6,    one(0006200),   one(0177700), "#l@s", m68000up },
        !          2318: {"cmpl", 6,    one(0006200),   one(0177700), "#lDs", mcfisa_a },
        !          2319: {"cmpl", 2,    one(0130610),   one(0170770), "+s+d", m68000up },
        !          2320: {"cmpl", 2,    one(0130200),   one(0170700), "*lDd", m68000up | mcfisa_a },
        !          2321: 
        !          2322: {"dbcc", 2,    one(0052310),   one(0177770), "DsBw", m68000up },
        !          2323: {"dbcs", 2,    one(0052710),   one(0177770), "DsBw", m68000up },
        !          2324: {"dbeq", 2,    one(0053710),   one(0177770), "DsBw", m68000up },
        !          2325: {"dbf", 2,     one(0050710),   one(0177770), "DsBw", m68000up },
        !          2326: {"dbge", 2,    one(0056310),   one(0177770), "DsBw", m68000up },
        !          2327: {"dbgt", 2,    one(0057310),   one(0177770), "DsBw", m68000up },
        !          2328: {"dbhi", 2,    one(0051310),   one(0177770), "DsBw", m68000up },
        !          2329: {"dble", 2,    one(0057710),   one(0177770), "DsBw", m68000up },
        !          2330: {"dbls", 2,    one(0051710),   one(0177770), "DsBw", m68000up },
        !          2331: {"dblt", 2,    one(0056710),   one(0177770), "DsBw", m68000up },
        !          2332: {"dbmi", 2,    one(0055710),   one(0177770), "DsBw", m68000up },
        !          2333: {"dbne", 2,    one(0053310),   one(0177770), "DsBw", m68000up },
        !          2334: {"dbpl", 2,    one(0055310),   one(0177770), "DsBw", m68000up },
        !          2335: {"dbt", 2,     one(0050310),   one(0177770), "DsBw", m68000up },
        !          2336: {"dbvc", 2,    one(0054310),   one(0177770), "DsBw", m68000up },
        !          2337: {"dbvs", 2,    one(0054710),   one(0177770), "DsBw", m68000up },
        !          2338: 
        !          2339: {"divsw", 2,   one(0100700),   one(0170700), ";wDd", m68000up | mcfhwdiv },
        !          2340: 
        !          2341: {"divsl", 4,   two(0046100,0006000),two(0177700,0107770),";lD3D1", m68020up|cpu32 },
        !          2342: {"divsl", 4,   two(0046100,0004000),two(0177700,0107770),";lDD",   m68020up|cpu32 },
        !          2343: {"divsl", 4,   two(0046100,0004000),two(0177700,0107770),"qsDD",   mcfhwdiv },
        !          2344: 
        !          2345: {"divsll", 4,  two(0046100,0004000),two(0177700,0107770),";lD3D1",m68020up|cpu32 },
        !          2346: {"divsll", 4,  two(0046100,0004000),two(0177700,0107770),";lDD",  m68020up|cpu32 },
        !          2347: 
        !          2348: {"divuw", 2,   one(0100300),           one(0170700), ";wDd", m68000up | mcfhwdiv },
        !          2349: 
        !          2350: {"divul", 4,   two(0046100,0002000),two(0177700,0107770),";lD3D1", m68020up|cpu32 },
        !          2351: {"divul", 4,   two(0046100,0000000),two(0177700,0107770),";lDD",   m68020up|cpu32 },
        !          2352: {"divul", 4,   two(0046100,0000000),two(0177700,0107770),"qsDD",   mcfhwdiv },
        !          2353: 
        !          2354: {"divull", 4,  two(0046100,0000000),two(0177700,0107770),";lD3D1",m68020up|cpu32 },
        !          2355: {"divull", 4,  two(0046100,0000000),two(0177700,0107770),";lDD",  m68020up|cpu32 },
        !          2356: 
        !          2357: {"eorib", 4,   one(0005000),   one(0177700), "#b$s", m68000up },
        !          2358: {"eorib", 4,   one(0005074),   one(0177777), "#bCs", m68000up },
        !          2359: {"eoriw", 4,   one(0005100),   one(0177700), "#w$s", m68000up },
        !          2360: {"eoriw", 4,   one(0005174),   one(0177777), "#wSs", m68000up },
        !          2361: {"eoril", 6,   one(0005200),   one(0177700), "#l$s", m68000up },
        !          2362: {"eoril", 6,   one(0005200),   one(0177700), "#lDs", mcfisa_a },
        !          2363: {"eori", 4,    one(0005074),   one(0177777), "#bCs", m68000up },
        !          2364: {"eori", 4,    one(0005174),   one(0177777), "#wSs", m68000up },
        !          2365: {"eori", 4,    one(0005100),   one(0177700), "#w$s", m68000up },
        !          2366: 
        !          2367: /* The eor opcode can generate the eori instruction.  */
        !          2368: {"eorb", 4,    one(0005000),   one(0177700), "#b$s", m68000up },
        !          2369: {"eorb", 4,    one(0005074),   one(0177777), "#bCs", m68000up },
        !          2370: {"eorb", 2,    one(0130400),   one(0170700), "Dd$s", m68000up },
        !          2371: {"eorw", 4,    one(0005100),   one(0177700), "#w$s", m68000up },
        !          2372: {"eorw", 4,    one(0005174),   one(0177777), "#wSs", m68000up },
        !          2373: {"eorw", 2,    one(0130500),   one(0170700), "Dd$s", m68000up },
        !          2374: {"eorl", 6,    one(0005200),   one(0177700), "#l$s", m68000up },
        !          2375: {"eorl", 6,    one(0005200),   one(0177700), "#lDs", mcfisa_a },
        !          2376: {"eorl", 2,    one(0130600),   one(0170700), "Dd$s", m68000up | mcfisa_a },
        !          2377: {"eor", 4,     one(0005074),   one(0177777), "#bCs", m68000up },
        !          2378: {"eor", 4,     one(0005174),   one(0177777), "#wSs", m68000up },
        !          2379: {"eor", 4,     one(0005100),   one(0177700), "#w$s", m68000up },
        !          2380: {"eor", 2,     one(0130500),   one(0170700), "Dd$s", m68000up },
        !          2381:                
        !          2382: {"exg", 2,     one(0140500),   one(0170770), "DdDs", m68000up },
        !          2383: {"exg", 2,     one(0140510),   one(0170770), "AdAs", m68000up },
        !          2384: {"exg", 2,     one(0140610),   one(0170770), "DdAs", m68000up },
        !          2385: {"exg", 2,     one(0140610),   one(0170770), "AsDd", m68000up },
        !          2386: 
        !          2387: {"extw", 2,    one(0044200),   one(0177770), "Ds", m68000up|mcfisa_a },
        !          2388: {"extl", 2,    one(0044300),   one(0177770), "Ds", m68000up|mcfisa_a },
        !          2389: {"extbl", 2,   one(0044700),   one(0177770), "Ds", m68020up|cpu32|mcfisa_a },
        !          2390: 
        !          2391: {"ff1", 2,     one(0002300), one(0177770), "Ds", mcfisa_aa},
        !          2392: 
        !          2393: /* float stuff starts here */
        !          2394: 
        !          2395: {"fabsb", 4,   two(0xF000, 0x5818), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2396: {"fabsb", 4,   two(0xF000, 0x5818), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2397: {"fabsd", 4,   two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2398: {"fabsd", 4,   two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiFt", cfloat },
        !          2399: {"fabsd", 4,   two(0xF000, 0x5418), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2400: {"fabsd", 4,   two(0xF000, 0x5418), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2401: {"fabsl", 4,   two(0xF000, 0x4018), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2402: {"fabsl", 4,   two(0xF000, 0x4018), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2403: {"fabsp", 4,   two(0xF000, 0x4C18), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2404: {"fabss", 4,   two(0xF000, 0x4418), two(0xF1C0, 0xFC7F), "Ii;fF7", cfloat },
        !          2405: {"fabss", 4,   two(0xF000, 0x4418), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2406: {"fabsw", 4,   two(0xF000, 0x5018), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2407: {"fabsw", 4,   two(0xF000, 0x5018), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2408: {"fabsx", 4,   two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2409: {"fabsx", 4,   two(0xF000, 0x4818), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2410: {"fabsx", 4,   two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2411: 
        !          2412: {"fsabsb", 4,  two(0xF000, 0x5858), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          2413: {"fsabsb", 4,  two(0xF000, 0x5858), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2414: {"fsabsd", 4,  two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2415: {"fsabsd", 4,  two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiFt", cfloat },
        !          2416: {"fsabsd", 4,  two(0xF000, 0x5458), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          2417: {"fsabsd", 4,  two(0xF000, 0x5458), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2418: {"fsabsl", 4,  two(0xF000, 0x4058), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          2419: {"fsabsl", 4,  two(0xF000, 0x4058), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2420: {"fsabsp", 4,  two(0xF000, 0x4C58), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          2421: {"fsabss", 4,  two(0xF000, 0x4258), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2422: {"fsabss", 4,  two(0xF000, 0x4458), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          2423: {"fsabsw", 4,  two(0xF000, 0x5058), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          2424: {"fsabsw", 4,  two(0xF000, 0x5058), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2425: {"fsabsx", 4,  two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          2426: {"fsabsx", 4,  two(0xF000, 0x4858), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          2427: {"fsabsx", 4,  two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiFt",   m68040up },
        !          2428: 
        !          2429: {"fdabsb", 4,  two(0xF000, 0x585C), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2430: {"fdabsb", 4,  two(0xF000, 0x585c), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up},
        !          2431: {"fdabsd", 4,  two(0xF000, 0x005C), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2432: {"fdabsd", 4,  two(0xF000, 0x005C), two(0xF1C0, 0xE07F), "IiFt", cfloat },
        !          2433: {"fdabsd", 4,  two(0xF000, 0x545C), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2434: {"fdabsd", 4,  two(0xF000, 0x545c), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up},
        !          2435: {"fdabsl", 4,  two(0xF000, 0x405C), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2436: {"fdabsl", 4,  two(0xF000, 0x405c), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up},
        !          2437: {"fdabsp", 4,  two(0xF000, 0x4C5c), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up},
        !          2438: {"fdabss", 4,  two(0xF000, 0x425C), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2439: {"fdabss", 4,  two(0xF000, 0x445c), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up},
        !          2440: {"fdabsw", 4,  two(0xF000, 0x505C), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2441: {"fdabsw", 4,  two(0xF000, 0x505c), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up},
        !          2442: {"fdabsx", 4,  two(0xF000, 0x005c), two(0xF1C0, 0xE07F), "IiF8F7", m68040up},
        !          2443: {"fdabsx", 4,  two(0xF000, 0x485c), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up},
        !          2444: {"fdabsx", 4,  two(0xF000, 0x005c), two(0xF1C0, 0xE07F), "IiFt",   m68040up},
        !          2445: 
        !          2446: {"facosb", 4,  two(0xF000, 0x581C), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2447: {"facosd", 4,  two(0xF000, 0x541C), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2448: {"facosl", 4,  two(0xF000, 0x401C), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2449: {"facosp", 4,  two(0xF000, 0x4C1C), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2450: {"facoss", 4,  two(0xF000, 0x441C), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2451: {"facosw", 4,  two(0xF000, 0x501C), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2452: {"facosx", 4,  two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2453: {"facosx", 4,  two(0xF000, 0x481C), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2454: {"facosx", 4,  two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2455: 
        !          2456: {"faddb", 4,   two(0xF000, 0x5822), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2457: {"faddb", 4,   two(0xF000, 0x5822), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2458: {"faddd", 4,   two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2459: {"faddd", 4,   two(0xF000, 0x5422), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2460: {"faddd", 4,   two(0xF000, 0x5422), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2461: {"faddd", 4,   two(0xF000, 0x5422), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2462: {"faddl", 4,   two(0xF000, 0x4022), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2463: {"faddl", 4,   two(0xF000, 0x4022), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2464: {"faddp", 4,   two(0xF000, 0x4C22), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2465: {"fadds", 4,   two(0xF000, 0x4422), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2466: {"fadds", 4,   two(0xF000, 0x4422), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2467: {"faddw", 4,   two(0xF000, 0x5022), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2468: {"faddw", 4,   two(0xF000, 0x5022), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2469: {"faddx", 4,   two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2470: {"faddx", 4,   two(0xF000, 0x4822), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2471: 
        !          2472: {"fsaddb", 4,  two(0xF000, 0x5862), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          2473: {"fsaddb", 4,  two(0xF000, 0x5862), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2474: {"fsaddd", 4,  two(0xF000, 0x0066), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2475: {"fsaddd", 4,  two(0xF000, 0x5462), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          2476: {"fsaddd", 4,  two(0xF000, 0x5462), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2477: {"fsaddl", 4,  two(0xF000, 0x4062), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          2478: {"fsaddl", 4,  two(0xF000, 0x4062), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2479: {"fsaddp", 4,  two(0xF000, 0x4C62), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          2480: {"fsadds", 4,  two(0xF000, 0x4462), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          2481: {"fsadds", 4,  two(0xF000, 0x4862), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2482: {"fsaddw", 4,  two(0xF000, 0x5062), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          2483: {"fsaddw", 4,  two(0xF000, 0x5062), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2484: {"fsaddx", 4,  two(0xF000, 0x0062), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          2485: {"fsaddx", 4,  two(0xF000, 0x4862), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          2486: 
        !          2487: {"fdaddb", 4,  two(0xF000, 0x5826), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2488: {"fdaddb", 4,  two(0xF000, 0x5866), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          2489: {"fdaddd", 4,  two(0xF000, 0x0066), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2490: {"fdaddd", 4,  two(0xF000, 0x5426), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2491: {"fdaddd", 4,  two(0xF000, 0x5466), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          2492: {"fdaddl", 4,  two(0xF000, 0x4026), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2493: {"fdaddl", 4,  two(0xF000, 0x4066), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          2494: {"fdaddp", 4,  two(0xF000, 0x4C66), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          2495: {"fdadds", 4,  two(0xF000, 0x4466), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          2496: {"fdadds", 4,  two(0xF000, 0x4826), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2497: {"fdaddw", 4,  two(0xF000, 0x5026), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2498: {"fdaddw", 4,  two(0xF000, 0x5066), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          2499: {"fdaddx", 4,  two(0xF000, 0x0066), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          2500: {"fdaddx", 4,  two(0xF000, 0x4866), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          2501: 
        !          2502: {"fasinb", 4,  two(0xF000, 0x580C), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2503: {"fasind", 4,  two(0xF000, 0x540C), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2504: {"fasinl", 4,  two(0xF000, 0x400C), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2505: {"fasinp", 4,  two(0xF000, 0x4C0C), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2506: {"fasins", 4,  two(0xF000, 0x440C), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2507: {"fasinw", 4,  two(0xF000, 0x500C), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2508: {"fasinx", 4,  two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2509: {"fasinx", 4,  two(0xF000, 0x480C), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2510: {"fasinx", 4,  two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2511: 
        !          2512: {"fatanb", 4,  two(0xF000, 0x580A), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2513: {"fatand", 4,  two(0xF000, 0x540A), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2514: {"fatanl", 4,  two(0xF000, 0x400A), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2515: {"fatanp", 4,  two(0xF000, 0x4C0A), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2516: {"fatans", 4,  two(0xF000, 0x440A), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2517: {"fatanw", 4,  two(0xF000, 0x500A), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2518: {"fatanx", 4,  two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2519: {"fatanx", 4,  two(0xF000, 0x480A), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2520: {"fatanx", 4,  two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2521: 
        !          2522: {"fatanhb", 4, two(0xF000, 0x580D), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2523: {"fatanhd", 4, two(0xF000, 0x540D), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2524: {"fatanhl", 4, two(0xF000, 0x400D), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2525: {"fatanhp", 4, two(0xF000, 0x4C0D), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2526: {"fatanhs", 4, two(0xF000, 0x440D), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2527: {"fatanhw", 4, two(0xF000, 0x500D), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2528: {"fatanhx", 4, two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2529: {"fatanhx", 4, two(0xF000, 0x480D), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2530: {"fatanhx", 4, two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2531: 
        !          2532: {"fbeq", 2,    one(0xF081),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2533: {"fbf", 2,     one(0xF080),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2534: {"fbge", 2,    one(0xF093),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2535: {"fbgl", 2,    one(0xF096),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2536: {"fbgle", 2,   one(0xF097),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2537: {"fbgt", 2,    one(0xF092),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2538: {"fble", 2,    one(0xF095),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2539: {"fblt", 2,    one(0xF094),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2540: {"fbne", 2,    one(0xF08E),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2541: {"fbnge", 2,   one(0xF09C),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2542: {"fbngl", 2,   one(0xF099),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2543: {"fbngle", 2,  one(0xF098),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2544: {"fbngt", 2,   one(0xF09D),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2545: {"fbnle", 2,   one(0xF09A),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2546: {"fbnlt", 2,   one(0xF09B),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2547: {"fboge", 2,   one(0xF083),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2548: {"fbogl", 2,   one(0xF086),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2549: {"fbogt", 2,   one(0xF082),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2550: {"fbole", 2,   one(0xF085),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2551: {"fbolt", 2,   one(0xF084),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2552: {"fbor", 2,    one(0xF087),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2553: {"fbseq", 2,   one(0xF091),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2554: {"fbsf", 2,    one(0xF090),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2555: {"fbsne", 2,   one(0xF09E),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2556: {"fbst", 2,    one(0xF09F),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2557: {"fbt", 2,     one(0xF08F),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2558: {"fbueq", 2,   one(0xF089),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2559: {"fbuge", 2,   one(0xF08B),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2560: {"fbugt", 2,   one(0xF08A),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2561: {"fbule", 2,   one(0xF08D),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2562: {"fbult", 2,   one(0xF08C),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2563: {"fbun", 2,    one(0xF088),            one(0xF1FF), "IdBW", mfloat | cfloat },
        !          2564: 
        !          2565: {"fbeql", 2,   one(0xF0C1),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2566: {"fbfl", 2,    one(0xF0C0),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2567: {"fbgel", 2,   one(0xF0D3),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2568: {"fbgll", 2,   one(0xF0D6),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2569: {"fbglel", 2,  one(0xF0D7),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2570: {"fbgtl", 2,   one(0xF0D2),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2571: {"fblel", 2,   one(0xF0D5),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2572: {"fbltl", 2,   one(0xF0D4),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2573: {"fbnel", 2,   one(0xF0CE),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2574: {"fbngel", 2,  one(0xF0DC),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2575: {"fbngll", 2,  one(0xF0D9),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2576: {"fbnglel", 2, one(0xF0D8),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2577: {"fbngtl", 2,  one(0xF0DD),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2578: {"fbnlel", 2,  one(0xF0DA),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2579: {"fbnltl", 2,  one(0xF0DB),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2580: {"fbogel", 2,  one(0xF0C3),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2581: {"fbogll", 2,  one(0xF0C6),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2582: {"fbogtl", 2,  one(0xF0C2),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2583: {"fbolel", 2,  one(0xF0C5),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2584: {"fboltl", 2,  one(0xF0C4),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2585: {"fborl", 2,   one(0xF0C7),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2586: {"fbseql", 2,  one(0xF0D1),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2587: {"fbsfl", 2,   one(0xF0D0),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2588: {"fbsnel", 2,  one(0xF0DE),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2589: {"fbstl", 2,   one(0xF0DF),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2590: {"fbtl", 2,    one(0xF0CF),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2591: {"fbueql", 2,  one(0xF0C9),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2592: {"fbugel", 2,  one(0xF0CB),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2593: {"fbugtl", 2,  one(0xF0CA),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2594: {"fbulel", 2,  one(0xF0CD),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2595: {"fbultl", 2,  one(0xF0CC),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2596: {"fbunl", 2,   one(0xF0C8),            one(0xF1FF), "IdBC", mfloat | cfloat },
        !          2597: 
        !          2598: {"fjeq", 2,    one(0xF081),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2599: {"fjf", 2,     one(0xF080),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2600: {"fjge", 2,    one(0xF093),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2601: {"fjgl", 2,    one(0xF096),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2602: {"fjgle", 2,   one(0xF097),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2603: {"fjgt", 2,    one(0xF092),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2604: {"fjle", 2,    one(0xF095),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2605: {"fjlt", 2,    one(0xF094),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2606: {"fjne", 2,    one(0xF08E),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2607: {"fjnge", 2,   one(0xF09C),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2608: {"fjngl", 2,   one(0xF099),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2609: {"fjngle", 2,  one(0xF098),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2610: {"fjngt", 2,   one(0xF09D),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2611: {"fjnle", 2,   one(0xF09A),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2612: {"fjnlt", 2,   one(0xF09B),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2613: {"fjoge", 2,   one(0xF083),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2614: {"fjogl", 2,   one(0xF086),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2615: {"fjogt", 2,   one(0xF082),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2616: {"fjole", 2,   one(0xF085),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2617: {"fjolt", 2,   one(0xF084),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2618: {"fjor", 2,    one(0xF087),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2619: {"fjseq", 2,   one(0xF091),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2620: {"fjsf", 2,    one(0xF090),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2621: {"fjsne", 2,   one(0xF09E),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2622: {"fjst", 2,    one(0xF09F),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2623: {"fjt", 2,     one(0xF08F),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2624: {"fjueq", 2,   one(0xF089),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2625: {"fjuge", 2,   one(0xF08B),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2626: {"fjugt", 2,   one(0xF08A),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2627: {"fjule", 2,   one(0xF08D),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2628: {"fjult", 2,   one(0xF08C),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2629: {"fjun", 2,    one(0xF088),            one(0xF1BF), "IdBc", mfloat | cfloat },
        !          2630: 
        !          2631: {"fcmpb", 4,   two(0xF000, 0x5838), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2632: {"fcmpb", 4,   two(0xF000, 0x5838), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2633: {"fcmpd", 4,   two(0xF000, 0x5438), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2634: {"fcmpd", 4,   two(0xF000, 0x5438), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2635: {"fcmpd", 4,   two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2636: {"fcmpl", 4,   two(0xF000, 0x4038), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2637: {"fcmpl", 4,   two(0xF000, 0x4038), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2638: {"fcmpp", 4,   two(0xF000, 0x4C38), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2639: {"fcmps", 4,   two(0xF000, 0x4438), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2640: {"fcmps", 4,   two(0xF000, 0x4438), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2641: {"fcmpw", 4,   two(0xF000, 0x5038), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2642: {"fcmpw", 4,   two(0xF000, 0x5038), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2643: {"fcmpx", 4,   two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2644: {"fcmpx", 4,   two(0xF000, 0x4838), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2645: 
        !          2646: {"fcosb", 4,   two(0xF000, 0x581D), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2647: {"fcosd", 4,   two(0xF000, 0x541D), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2648: {"fcosl", 4,   two(0xF000, 0x401D), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2649: {"fcosp", 4,   two(0xF000, 0x4C1D), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2650: {"fcoss", 4,   two(0xF000, 0x441D), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2651: {"fcosw", 4,   two(0xF000, 0x501D), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2652: {"fcosx", 4,   two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2653: {"fcosx", 4,   two(0xF000, 0x481D), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2654: {"fcosx", 4,   two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2655: 
        !          2656: {"fcoshb", 4,  two(0xF000, 0x5819), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2657: {"fcoshd", 4,  two(0xF000, 0x5419), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2658: {"fcoshl", 4,  two(0xF000, 0x4019), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2659: {"fcoshp", 4,  two(0xF000, 0x4C19), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2660: {"fcoshs", 4,  two(0xF000, 0x4419), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2661: {"fcoshw", 4,  two(0xF000, 0x5019), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2662: {"fcoshx", 4,  two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2663: {"fcoshx", 4,  two(0xF000, 0x4819), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2664: {"fcoshx", 4,  two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2665: 
        !          2666: {"fdbeq", 4,   two(0xF048, 0x0001), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2667: {"fdbf", 4,    two(0xF048, 0x0000), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2668: {"fdbge", 4,   two(0xF048, 0x0013), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2669: {"fdbgl", 4,   two(0xF048, 0x0016), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2670: {"fdbgle", 4,  two(0xF048, 0x0017), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2671: {"fdbgt", 4,   two(0xF048, 0x0012), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2672: {"fdble", 4,   two(0xF048, 0x0015), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2673: {"fdblt", 4,   two(0xF048, 0x0014), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2674: {"fdbne", 4,   two(0xF048, 0x000E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2675: {"fdbnge", 4,  two(0xF048, 0x001C), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2676: {"fdbngl", 4,  two(0xF048, 0x0019), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2677: {"fdbngle", 4, two(0xF048, 0x0018), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2678: {"fdbngt", 4,  two(0xF048, 0x001D), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2679: {"fdbnle", 4,  two(0xF048, 0x001A), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2680: {"fdbnlt", 4,  two(0xF048, 0x001B), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2681: {"fdboge", 4,  two(0xF048, 0x0003), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2682: {"fdbogl", 4,  two(0xF048, 0x0006), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2683: {"fdbogt", 4,  two(0xF048, 0x0002), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2684: {"fdbole", 4,  two(0xF048, 0x0005), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2685: {"fdbolt", 4,  two(0xF048, 0x0004), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2686: {"fdbor", 4,   two(0xF048, 0x0007), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2687: {"fdbseq", 4,  two(0xF048, 0x0011), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2688: {"fdbsf", 4,   two(0xF048, 0x0010), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2689: {"fdbsne", 4,  two(0xF048, 0x001E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2690: {"fdbst", 4,   two(0xF048, 0x001F), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2691: {"fdbt", 4,    two(0xF048, 0x000F), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2692: {"fdbueq", 4,  two(0xF048, 0x0009), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2693: {"fdbuge", 4,  two(0xF048, 0x000B), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2694: {"fdbugt", 4,  two(0xF048, 0x000A), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2695: {"fdbule", 4,  two(0xF048, 0x000D), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2696: {"fdbult", 4,  two(0xF048, 0x000C), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2697: {"fdbun", 4,   two(0xF048, 0x0008), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
        !          2698: 
        !          2699: {"fdivb", 4,   two(0xF000, 0x5820), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2700: {"fdivb", 4,   two(0xF000, 0x5820), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2701: {"fdivd", 4,   two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2702: {"fdivd", 4,   two(0xF000, 0x5420), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2703: {"fdivd", 4,   two(0xF000, 0x5420), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2704: {"fdivl", 4,   two(0xF000, 0x4020), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2705: {"fdivl", 4,   two(0xF000, 0x4020), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2706: {"fdivp", 4,   two(0xF000, 0x4C20), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2707: {"fdivs", 4,   two(0xF000, 0x4420), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2708: {"fdivs", 4,   two(0xF000, 0x4420), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2709: {"fdivw", 4,   two(0xF000, 0x5020), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2710: {"fdivw", 4,   two(0xF000, 0x5020), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2711: {"fdivx", 4,   two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2712: {"fdivx", 4,   two(0xF000, 0x4820), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2713: 
        !          2714: {"fsdivb", 4,  two(0xF000, 0x5860), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          2715: {"fsdivb", 4,  two(0xF000, 0x5860), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2716: {"fsdivd", 4,  two(0xF000, 0x0060), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2717: {"fsdivd", 4,  two(0xF000, 0x5460), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          2718: {"fsdivd", 4,  two(0xF000, 0x5460), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2719: {"fsdivl", 4,  two(0xF000, 0x4060), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          2720: {"fsdivl", 4,  two(0xF000, 0x4060), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2721: {"fsdivp", 4,  two(0xF000, 0x4C60), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          2722: {"fsdivs", 4,  two(0xF000, 0x4460), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          2723: {"fsdivs", 4,  two(0xF000, 0x4460), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2724: {"fsdivw", 4,  two(0xF000, 0x5060), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          2725: {"fsdivw", 4,  two(0xF000, 0x5060), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2726: {"fsdivx", 4,  two(0xF000, 0x0060), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          2727: {"fsdivx", 4,  two(0xF000, 0x4860), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          2728: 
        !          2729: {"fddivb", 4,  two(0xF000, 0x5864), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          2730: {"fddivb", 4,  two(0xF000, 0x5864), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2731: {"fddivd", 4,  two(0xF000, 0x0064), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2732: {"fddivd", 4,  two(0xF000, 0x5464), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          2733: {"fddivd", 4,  two(0xF000, 0x5464), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2734: {"fddivl", 4,  two(0xF000, 0x4064), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          2735: {"fddivl", 4,  two(0xF000, 0x4064), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2736: {"fddivp", 4,  two(0xF000, 0x4C64), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          2737: {"fddivs", 4,  two(0xF000, 0x4464), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          2738: {"fddivs", 4,  two(0xF000, 0x4464), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2739: {"fddivw", 4,  two(0xF000, 0x5064), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          2740: {"fddivw", 4,  two(0xF000, 0x5064), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2741: {"fddivx", 4,  two(0xF000, 0x0064), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          2742: {"fddivx", 4,  two(0xF000, 0x4864), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          2743: 
        !          2744: {"fetoxb", 4,  two(0xF000, 0x5810), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2745: {"fetoxd", 4,  two(0xF000, 0x5410), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2746: {"fetoxl", 4,  two(0xF000, 0x4010), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2747: {"fetoxp", 4,  two(0xF000, 0x4C10), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2748: {"fetoxs", 4,  two(0xF000, 0x4410), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2749: {"fetoxw", 4,  two(0xF000, 0x5010), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2750: {"fetoxx", 4,  two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2751: {"fetoxx", 4,  two(0xF000, 0x4810), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2752: {"fetoxx", 4,  two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2753: 
        !          2754: {"fetoxm1b", 4,        two(0xF000, 0x5808), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2755: {"fetoxm1d", 4,        two(0xF000, 0x5408), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2756: {"fetoxm1l", 4,        two(0xF000, 0x4008), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2757: {"fetoxm1p", 4,        two(0xF000, 0x4C08), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2758: {"fetoxm1s", 4,        two(0xF000, 0x4408), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2759: {"fetoxm1w", 4,        two(0xF000, 0x5008), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2760: {"fetoxm1x", 4,        two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2761: {"fetoxm1x", 4,        two(0xF000, 0x4808), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2762: {"fetoxm1x", 4,        two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2763: 
        !          2764: {"fgetexpb", 4,        two(0xF000, 0x581E), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2765: {"fgetexpd", 4,        two(0xF000, 0x541E), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2766: {"fgetexpl", 4,        two(0xF000, 0x401E), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2767: {"fgetexpp", 4,        two(0xF000, 0x4C1E), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2768: {"fgetexps", 4,        two(0xF000, 0x441E), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2769: {"fgetexpw", 4,        two(0xF000, 0x501E), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2770: {"fgetexpx", 4,        two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2771: {"fgetexpx", 4,        two(0xF000, 0x481E), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2772: {"fgetexpx", 4,        two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2773: 
        !          2774: {"fgetmanb", 4,        two(0xF000, 0x581F), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2775: {"fgetmand", 4,        two(0xF000, 0x541F), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2776: {"fgetmanl", 4,        two(0xF000, 0x401F), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2777: {"fgetmanp", 4,        two(0xF000, 0x4C1F), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2778: {"fgetmans", 4,        two(0xF000, 0x441F), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2779: {"fgetmanw", 4,        two(0xF000, 0x501F), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2780: {"fgetmanx", 4,        two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2781: {"fgetmanx", 4,        two(0xF000, 0x481F), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2782: {"fgetmanx", 4,        two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2783: 
        !          2784: {"fintb", 4,   two(0xF000, 0x5801), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2785: {"fintb", 4,   two(0xF000, 0x5801), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2786: {"fintd", 4,   two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2787: {"fintd", 4,   two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiFt", cfloat },
        !          2788: {"fintd", 4,   two(0xF000, 0x5401), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2789: {"fintd", 4,   two(0xF000, 0x5401), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2790: {"fintl", 4,   two(0xF000, 0x4001), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2791: {"fintl", 4,   two(0xF000, 0x4001), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2792: {"fintp", 4,   two(0xF000, 0x4C01), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2793: {"fints", 4,   two(0xF000, 0x4401), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2794: {"fints", 4,   two(0xF000, 0x4401), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2795: {"fintw", 4,   two(0xF000, 0x5001), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2796: {"fintw", 4,   two(0xF000, 0x5001), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2797: {"fintx", 4,   two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2798: {"fintx", 4,   two(0xF000, 0x4801), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2799: {"fintx", 4,   two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2800: 
        !          2801: {"fintrzb", 4, two(0xF000, 0x5803), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2802: {"fintrzb", 4, two(0xF000, 0x5803), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2803: {"fintrzd", 4, two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2804: {"fintrzd", 4, two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiFt",   cfloat },
        !          2805: {"fintrzd", 4, two(0xF000, 0x5403), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2806: {"fintrzd", 4, two(0xF000, 0x5403), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2807: {"fintrzl", 4, two(0xF000, 0x4003), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2808: {"fintrzl", 4, two(0xF000, 0x4003), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2809: {"fintrzp", 4, two(0xF000, 0x4C03), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2810: {"fintrzs", 4, two(0xF000, 0x4403), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2811: {"fintrzs", 4, two(0xF000, 0x4403), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2812: {"fintrzw", 4, two(0xF000, 0x5003), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2813: {"fintrzw", 4, two(0xF000, 0x5003), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2814: {"fintrzx", 4, two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2815: {"fintrzx", 4, two(0xF000, 0x4803), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2816: {"fintrzx", 4, two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2817: 
        !          2818: {"flog10b", 4, two(0xF000, 0x5815), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2819: {"flog10d", 4, two(0xF000, 0x5415), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2820: {"flog10l", 4, two(0xF000, 0x4015), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2821: {"flog10p", 4, two(0xF000, 0x4C15), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2822: {"flog10s", 4, two(0xF000, 0x4415), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2823: {"flog10w", 4, two(0xF000, 0x5015), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2824: {"flog10x", 4, two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2825: {"flog10x", 4, two(0xF000, 0x4815), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2826: {"flog10x", 4, two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2827: 
        !          2828: {"flog2b", 4,  two(0xF000, 0x5816), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2829: {"flog2d", 4,  two(0xF000, 0x5416), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2830: {"flog2l", 4,  two(0xF000, 0x4016), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2831: {"flog2p", 4,  two(0xF000, 0x4C16), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2832: {"flog2s", 4,  two(0xF000, 0x4416), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2833: {"flog2w", 4,  two(0xF000, 0x5016), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2834: {"flog2x", 4,  two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2835: {"flog2x", 4,  two(0xF000, 0x4816), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2836: {"flog2x", 4,  two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2837: 
        !          2838: {"flognb", 4,  two(0xF000, 0x5814), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2839: {"flognd", 4,  two(0xF000, 0x5414), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2840: {"flognl", 4,  two(0xF000, 0x4014), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2841: {"flognp", 4,  two(0xF000, 0x4C14), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2842: {"flogns", 4,  two(0xF000, 0x4414), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2843: {"flognw", 4,  two(0xF000, 0x5014), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2844: {"flognx", 4,  two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2845: {"flognx", 4,  two(0xF000, 0x4814), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2846: {"flognx", 4,  two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2847: 
        !          2848: {"flognp1b", 4,        two(0xF000, 0x5806), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2849: {"flognp1d", 4,        two(0xF000, 0x5406), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2850: {"flognp1l", 4,        two(0xF000, 0x4006), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2851: {"flognp1p", 4,        two(0xF000, 0x4C06), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2852: {"flognp1s", 4,        two(0xF000, 0x4406), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2853: {"flognp1w", 4,        two(0xF000, 0x5006), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2854: {"flognp1x", 4,        two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2855: {"flognp1x", 4,        two(0xF000, 0x4806), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2856: {"flognp1x", 4,        two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          2857: 
        !          2858: {"fmodb", 4,   two(0xF000, 0x5821), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2859: {"fmodd", 4,   two(0xF000, 0x5421), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2860: {"fmodl", 4,   two(0xF000, 0x4021), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2861: {"fmodp", 4,   two(0xF000, 0x4C21), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2862: {"fmods", 4,   two(0xF000, 0x4421), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2863: {"fmodw", 4,   two(0xF000, 0x5021), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2864: {"fmodx", 4,   two(0xF000, 0x0021), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          2865: {"fmodx", 4,   two(0xF000, 0x4821), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2866: 
        !          2867: {"fmoveb", 4,  two(0xF000, 0x5800), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2868: {"fmoveb", 4,  two(0xF000, 0x7800), two(0xF1C0, 0xFC7F), "IiF7bs", cfloat },
        !          2869: {"fmoveb", 4,  two(0xF000, 0x5800), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2870: {"fmoveb", 4,  two(0xF000, 0x7800), two(0xF1C0, 0xFC7F), "IiF7$b", mfloat },
        !          2871: {"fmoved", 4,  two(0xF000, 0x5400), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2872: {"fmoved", 4,  two(0xF000, 0x7400), two(0xF1C0, 0xFC7F), "IiF7~F", mfloat },
        !          2873: {"fmoved", 4,  two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2874: {"fmoved", 4,  two(0xF000, 0x5400), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2875: {"fmoved", 4,  two(0xF000, 0x7400), two(0xF1C0, 0xFC7F), "IiF7ws", cfloat },
        !          2876: {"fmovel", 4,  two(0xF000, 0x4000), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2877: {"fmovel", 4,  two(0xF000, 0x6000), two(0xF1C0, 0xFC7F), "IiF7$l", mfloat },
        !          2878: /* FIXME: the next two variants should not permit moving an address
        !          2879:    register to anything but the floating point instruction register.  */
        !          2880: {"fmovel", 4,  two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8%s", mfloat },
        !          2881: {"fmovel", 4,  two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ls8", mfloat },
        !          2882: {"fmovel", 4,  two(0xF000, 0x4000), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2883: {"fmovel", 4,  two(0xF000, 0x6000), two(0xF1C0, 0xFC7F), "IiF7bs", cfloat },
        !          2884:   /* Move the FP control registers.  */
        !          2885: {"fmovel", 4,  two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8ps", cfloat },
        !          2886: {"fmovel", 4,  two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Iibss8", cfloat },
        !          2887: {"fmovep", 4,  two(0xF000, 0x4C00), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2888: {"fmovep", 4,  two(0xF000, 0x6C00), two(0xF1C0, 0xFC00), "IiF7~pkC", mfloat },
        !          2889: {"fmovep", 4,  two(0xF000, 0x7C00), two(0xF1C0, 0xFC0F), "IiF7~pDk", mfloat },
        !          2890: {"fmoves", 4,  two(0xF000, 0x4400), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          2891: {"fmoves", 4,  two(0xF000, 0x6400), two(0xF1C0, 0xFC7F), "IiF7$f", mfloat },
        !          2892: {"fmoves", 4,  two(0xF000, 0x4400), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2893: {"fmoves", 4,  two(0xF000, 0x6400), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2894: {"fmovew", 4,  two(0xF000, 0x5000), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          2895: {"fmovew", 4,  two(0xF000, 0x7000), two(0xF1C0, 0xFC7F), "IiF7$w", mfloat },
        !          2896: {"fmovew", 4,  two(0xF000, 0x5000), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2897: {"fmovew", 4,  two(0xF000, 0x7000), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2898: {"fmovex", 4,  two(0xF000, 0x0000), two(0xF1FF, 0xE07F), "IiF8F7", mfloat },
        !          2899: {"fmovex", 4,  two(0xF000, 0x4800), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          2900: {"fmovex", 4,  two(0xF000, 0x6800), two(0xF1C0, 0xFC7F), "IiF7~x", mfloat },
        !          2901: 
        !          2902: {"fsmoveb", 4, two(0xF000, 0x5840), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          2903: {"fsmoveb", 4, two(0xF000, 0x5840), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2904: {"fsmoveb", 4, two(0xF000, 0x7840), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2905: {"fsmoved", 4, two(0xF000, 0x0040), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2906: {"fsmoved", 4, two(0xF000, 0x5440), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          2907: {"fsmoved", 4, two(0xF000, 0x5440), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2908: {"fsmoved", 4, two(0xF000, 0x7440), two(0xF1C0, 0xFC7F), "IiF7ws", cfloat },
        !          2909: {"fsmovel", 4, two(0xF000, 0x4040), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          2910: {"fsmovel", 4, two(0xF000, 0x4040), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2911: {"fsmovel", 4, two(0xF000, 0x6040), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2912: {"fsmoves", 4, two(0xF000, 0x4440), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          2913: {"fsmoves", 4, two(0xF000, 0x4440), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2914: {"fsmoves", 4, two(0xF000, 0x6440), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2915: {"fsmovew", 4, two(0xF000, 0x5040), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          2916: {"fsmovew", 4, two(0xF000, 0x5040), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2917: {"fsmovew", 4, two(0xF000, 0x7040), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2918: {"fsmovex", 4, two(0xF000, 0x0040), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          2919: {"fsmovex", 4, two(0xF000, 0x4840), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          2920: {"fsmovep", 4, two(0xF000, 0x4C40), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          2921: 
        !          2922: {"fdmoveb", 4, two(0xF000, 0x5844), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          2923: {"fdmoveb", 4, two(0xF000, 0x5844), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2924: {"fdmoveb", 4, two(0xF000, 0x7844), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2925: {"fdmoved", 4, two(0xF000, 0x0044), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2926: {"fdmoved", 4, two(0xF000, 0x5444), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          2927: {"fdmoved", 4, two(0xF000, 0x5444), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2928: {"fdmoved", 4, two(0xF000, 0x7444), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2929: {"fdmovel", 4, two(0xF000, 0x4044), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          2930: {"fdmovel", 4, two(0xF000, 0x4044), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2931: {"fdmovel", 4, two(0xF000, 0x6044), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2932: {"fdmoves", 4, two(0xF000, 0x4444), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          2933: {"fdmoves", 4, two(0xF000, 0x4444), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2934: {"fdmoves", 4, two(0xF000, 0x6444), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2935: {"fdmovew", 4, two(0xF000, 0x5044), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          2936: {"fdmovew", 4, two(0xF000, 0x5044), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2937: {"fdmovew", 4, two(0xF000, 0x7044), two(0xF1C0, 0xFC7F), "IiF7qs", cfloat },
        !          2938: {"fdmovex", 4, two(0xF000, 0x0044), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          2939: {"fdmovex", 4, two(0xF000, 0x4844), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          2940: {"fdmovep", 4, two(0xF000, 0x4C44), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          2941: 
        !          2942: {"fmovecrx", 4,        two(0xF000, 0x5C00), two(0xF1FF, 0xFC00), "Ii#CF7", mfloat },
        !          2943: 
        !          2944: {"fmovemd", 4, two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "Iizsl3", cfloat },
        !          2945: {"fmovemd", 4, two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "Iizs#3", cfloat },
        !          2946: {"fmovemd", 4, two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "Ii#3ys", cfloat },
        !          2947: {"fmovemd", 4, two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "Iil3ys", cfloat },
        !          2948: 
        !          2949: {"fmovemx", 4, two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat },
        !          2950: {"fmovemx", 4, two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat },
        !          2951: {"fmovemx", 4, two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk", mfloat },
        !          2952: {"fmovemx", 4, two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk", mfloat },
        !          2953: {"fmovemx", 4, two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat },
        !          2954: {"fmovemx", 4, two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s", mfloat },
        !          2955: {"fmovemx", 4, two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3", mfloat },
        !          2956: {"fmovemx", 4, two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3", mfloat },
        !          2957: {"fmovemx", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat },
        !          2958: {"fmovemx", 4, two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat },
        !          2959: {"fmovemx", 4, two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3", mfloat },
        !          2960: {"fmovemx", 4, two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3", mfloat },
        !          2961: 
        !          2962: {"fmoveml", 4, two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8%s", mfloat },
        !          2963: {"fmoveml", 4, two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8~s", mfloat },
        !          2964: /* FIXME: In the next instruction, we should only permit %dn if the
        !          2965:    target is a single register.  We should only permit %an if the
        !          2966:    target is a single %fpiar.  */
        !          2967: {"fmoveml", 4, two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*lL8", mfloat },
        !          2968: 
        !          2969: {"fmovem", 4,  two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "IizsL3", cfloat },
        !          2970: {"fmovem", 4,  two(0xF000, 0xD000), two(0xFFC0, 0xFF00), "Iizs#3", cfloat },
        !          2971: {"fmovem", 4,  two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "Ii#3ys", cfloat },
        !          2972: {"fmovem", 4,  two(0xF000, 0xF000), two(0xFFC0, 0xFF00), "IiL3ys", cfloat },
        !          2973: 
        !          2974: {"fmovem", 4,  two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat },
        !          2975: {"fmovem", 4,  two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat },
        !          2976: {"fmovem", 4,  two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3", mfloat },
        !          2977: {"fmovem", 4,  two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3", mfloat },
        !          2978: {"fmovem", 4,  two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat },
        !          2979: {"fmovem", 4,  two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat },
        !          2980: {"fmovem", 4,  two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s", mfloat },
        !          2981: {"fmovem", 4,  two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat },
        !          2982: {"fmovem", 4,  two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3", mfloat },
        !          2983: {"fmovem", 4,  two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk", mfloat },
        !          2984: {"fmovem", 4,  two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3", mfloat },
        !          2985: {"fmovem", 4,  two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk", mfloat },
        !          2986: {"fmovem", 4,  two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8%s", mfloat },
        !          2987: {"fmovem", 4,  two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ss8", mfloat },
        !          2988: {"fmovem", 4,  two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8~s", mfloat },
        !          2989: {"fmovem", 4,  two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*sL8", mfloat },
        !          2990: 
        !          2991: {"fmulb", 4,   two(0xF000, 0x5823), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          2992: {"fmulb", 4,   two(0xF000, 0x5823), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2993: {"fmuld", 4,   two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          2994: {"fmuld", 4,   two(0xF000, 0x5423), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          2995: {"fmuld", 4,   two(0xF000, 0x5423), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          2996: {"fmull", 4,   two(0xF000, 0x4023), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          2997: {"fmull", 4,   two(0xF000, 0x4023), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          2998: {"fmulp", 4,   two(0xF000, 0x4C23), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          2999: {"fmuls", 4,   two(0xF000, 0x4423), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3000: {"fmuls", 4,   two(0xF000, 0x4423), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3001: {"fmulw", 4,   two(0xF000, 0x5023), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3002: {"fmulw", 4,   two(0xF000, 0x5023), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3003: {"fmulx", 4,   two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3004: {"fmulx", 4,   two(0xF000, 0x4823), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3005: 
        !          3006: {"fsmulb", 4,  two(0xF000, 0x5863), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          3007: {"fsmulb", 4,  two(0xF000, 0x5863), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3008: {"fsmuld", 4,  two(0xF000, 0x0063), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3009: {"fsmuld", 4,  two(0xF000, 0x5463), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          3010: {"fsmuld", 4,  two(0xF000, 0x5463), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3011: {"fsmull", 4,  two(0xF000, 0x4063), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          3012: {"fsmull", 4,  two(0xF000, 0x4063), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3013: {"fsmulp", 4,  two(0xF000, 0x4C63), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          3014: {"fsmuls", 4,  two(0xF000, 0x4463), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          3015: {"fsmuls", 4,  two(0xF000, 0x4463), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3016: {"fsmulw", 4,  two(0xF000, 0x5063), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          3017: {"fsmulw", 4,  two(0xF000, 0x5063), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3018: {"fsmulx", 4,  two(0xF000, 0x0063), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          3019: {"fsmulx", 4,  two(0xF000, 0x4863), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          3020: 
        !          3021: {"fdmulb", 4,  two(0xF000, 0x5867), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          3022: {"fdmulb", 4,  two(0xF000, 0x5867), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3023: {"fdmuld", 4,  two(0xF000, 0x0067), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3024: {"fdmuld", 4,  two(0xF000, 0x5467), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          3025: {"fdmuld", 4,  two(0xF000, 0x5467), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3026: {"fdmull", 4,  two(0xF000, 0x4067), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          3027: {"fdmull", 4,  two(0xF000, 0x4067), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3028: {"fdmulp", 4,  two(0xF000, 0x4C67), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          3029: {"fdmuls", 4,  two(0xF000, 0x4467), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          3030: {"fdmuls", 4,  two(0xF000, 0x4467), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3031: {"fdmulw", 4,  two(0xF000, 0x5067), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          3032: {"fdmulw", 4,  two(0xF000, 0x5067), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3033: {"fdmulx", 4,  two(0xF000, 0x0067), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          3034: {"fdmulx", 4,  two(0xF000, 0x4867), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          3035: 
        !          3036: {"fnegb", 4,   two(0xF000, 0x581A), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3037: {"fnegb", 4,   two(0xF000, 0x581A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3038: {"fnegd", 4,   two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3039: {"fnegd", 4,   two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiFt",   cfloat },
        !          3040: {"fnegd", 4,   two(0xF000, 0x541A), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3041: {"fnegd", 4,   two(0xF000, 0x541A), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3042: {"fnegl", 4,   two(0xF000, 0x401A), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3043: {"fnegl", 4,   two(0xF000, 0x401A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3044: {"fnegp", 4,   two(0xF000, 0x4C1A), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3045: {"fnegs", 4,   two(0xF000, 0x441A), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3046: {"fnegs", 4,   two(0xF000, 0x441A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3047: {"fnegw", 4,   two(0xF000, 0x501A), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3048: {"fnegw", 4,   two(0xF000, 0x501A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3049: {"fnegx", 4,   two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3050: {"fnegx", 4,   two(0xF000, 0x481A), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3051: {"fnegx", 4,   two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3052: 
        !          3053: {"fsnegb", 4,  two(0xF000, 0x585A), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          3054: {"fsnegb", 4,  two(0xF000, 0x585A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3055: {"fsnegd", 4,  two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3056: {"fsnegd", 4,  two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiFt",   cfloat },
        !          3057: {"fsnegd", 4,  two(0xF000, 0x545A), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          3058: {"fsnegd", 4,  two(0xF000, 0x545A), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3059: {"fsnegl", 4,  two(0xF000, 0x405A), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          3060: {"fsnegl", 4,  two(0xF000, 0x405A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3061: {"fsnegp", 4,  two(0xF000, 0x4C5A), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          3062: {"fsnegs", 4,  two(0xF000, 0x445A), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          3063: {"fsnegs", 4,  two(0xF000, 0x445A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3064: {"fsnegw", 4,  two(0xF000, 0x505A), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          3065: {"fsnegw", 4,  two(0xF000, 0x505A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3066: {"fsnegx", 4,  two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          3067: {"fsnegx", 4,  two(0xF000, 0x485A), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          3068: {"fsnegx", 4,  two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiFt",   m68040up },
        !          3069: 
        !          3070: {"fdnegb", 4,  two(0xF000, 0x585E), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          3071: {"fdnegb", 4,  two(0xF000, 0x585E), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3072: {"fdnegd", 4,  two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3073: {"fdnegd", 4,  two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiFt",   cfloat },
        !          3074: {"fdnegd", 4,  two(0xF000, 0x545E), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          3075: {"fdnegd", 4,  two(0xF000, 0x545E), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3076: {"fdnegl", 4,  two(0xF000, 0x405E), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          3077: {"fdnegl", 4,  two(0xF000, 0x405E), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3078: {"fdnegp", 4,  two(0xF000, 0x4C5E), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          3079: {"fdnegs", 4,  two(0xF000, 0x445E), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          3080: {"fdnegs", 4,  two(0xF000, 0x445E), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3081: {"fdnegw", 4,  two(0xF000, 0x505E), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          3082: {"fdnegw", 4,  two(0xF000, 0x505E), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3083: {"fdnegx", 4,  two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          3084: {"fdnegx", 4,  two(0xF000, 0x485E), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          3085: {"fdnegx", 4,  two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiFt",   m68040up },
        !          3086: 
        !          3087: {"fnop", 4,    two(0xF280, 0x0000), two(0xFFFF, 0xFFFF), "Ii", mfloat | cfloat },
        !          3088: 
        !          3089: {"fremb", 4,   two(0xF000, 0x5825), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3090: {"fremd", 4,   two(0xF000, 0x5425), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3091: {"freml", 4,   two(0xF000, 0x4025), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3092: {"fremp", 4,   two(0xF000, 0x4C25), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3093: {"frems", 4,   two(0xF000, 0x4425), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3094: {"fremw", 4,   two(0xF000, 0x5025), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3095: {"fremx", 4,   two(0xF000, 0x0025), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3096: {"fremx", 4,   two(0xF000, 0x4825), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3097: 
        !          3098: {"frestore", 2,        one(0xF140),            one(0xF1C0), "Id<s", mfloat },
        !          3099: {"frestore", 2,        one(0xF140),            one(0xF1C0), "Idys", cfloat },
        !          3100: 
        !          3101: {"fsave", 2,   one(0xF100),            one(0xF1C0), "Id>s", mfloat },
        !          3102: {"fsave", 2,   one(0xF100),            one(0xF1C0), "Idzs", cfloat },
        !          3103: 
        !          3104: {"fscaleb", 4, two(0xF000, 0x5826), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3105: {"fscaled", 4, two(0xF000, 0x5426), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3106: {"fscalel", 4, two(0xF000, 0x4026), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3107: {"fscalep", 4, two(0xF000, 0x4C26), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3108: {"fscales", 4, two(0xF000, 0x4426), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3109: {"fscalew", 4, two(0xF000, 0x5026), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3110: {"fscalex", 4, two(0xF000, 0x0026), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3111: {"fscalex", 4, two(0xF000, 0x4826), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3112: 
        !          3113: /* $ is necessary to prevent the assembler from using PC-relative.
        !          3114:    If @ were used, "label: fseq label" could produce "ftrapeq", 2,
        !          3115:    because "label" became "pc@label".  */
        !          3116: {"fseq", 4,    two(0xF040, 0x0001), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3117: {"fsf", 4,     two(0xF040, 0x0000), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3118: {"fsge", 4,    two(0xF040, 0x0013), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3119: {"fsgl", 4,    two(0xF040, 0x0016), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3120: {"fsgle", 4,   two(0xF040, 0x0017), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3121: {"fsgt", 4,    two(0xF040, 0x0012), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3122: {"fsle", 4,    two(0xF040, 0x0015), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3123: {"fslt", 4,    two(0xF040, 0x0014), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3124: {"fsne", 4,    two(0xF040, 0x000E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3125: {"fsnge", 4,   two(0xF040, 0x001C), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3126: {"fsngl", 4,   two(0xF040, 0x0019), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3127: {"fsngle", 4,  two(0xF040, 0x0018), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3128: {"fsngt", 4,   two(0xF040, 0x001D), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3129: {"fsnle", 4,   two(0xF040, 0x001A), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3130: {"fsnlt", 4,   two(0xF040, 0x001B), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3131: {"fsoge", 4,   two(0xF040, 0x0003), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3132: {"fsogl", 4,   two(0xF040, 0x0006), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3133: {"fsogt", 4,   two(0xF040, 0x0002), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3134: {"fsole", 4,   two(0xF040, 0x0005), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3135: {"fsolt", 4,   two(0xF040, 0x0004), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3136: {"fsor", 4,    two(0xF040, 0x0007), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3137: {"fsseq", 4,   two(0xF040, 0x0011), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3138: {"fssf", 4,    two(0xF040, 0x0010), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3139: {"fssne", 4,   two(0xF040, 0x001E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3140: {"fsst", 4,    two(0xF040, 0x001F), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3141: {"fst", 4,     two(0xF040, 0x000F), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3142: {"fsueq", 4,   two(0xF040, 0x0009), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3143: {"fsuge", 4,   two(0xF040, 0x000B), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3144: {"fsugt", 4,   two(0xF040, 0x000A), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3145: {"fsule", 4,   two(0xF040, 0x000D), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3146: {"fsult", 4,   two(0xF040, 0x000C), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3147: {"fsun", 4,    two(0xF040, 0x0008), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
        !          3148: 
        !          3149: {"fsgldivb", 4,        two(0xF000, 0x5824), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3150: {"fsgldivd", 4,        two(0xF000, 0x5424), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3151: {"fsgldivl", 4,        two(0xF000, 0x4024), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3152: {"fsgldivp", 4,        two(0xF000, 0x4C24), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3153: {"fsgldivs", 4,        two(0xF000, 0x4424), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3154: {"fsgldivw", 4,        two(0xF000, 0x5024), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3155: {"fsgldivx", 4,        two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3156: {"fsgldivx", 4,        two(0xF000, 0x4824), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3157: {"fsgldivx", 4,        two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3158: 
        !          3159: {"fsglmulb", 4,        two(0xF000, 0x5827), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3160: {"fsglmuld", 4,        two(0xF000, 0x5427), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3161: {"fsglmull", 4,        two(0xF000, 0x4027), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3162: {"fsglmulp", 4,        two(0xF000, 0x4C27), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3163: {"fsglmuls", 4,        two(0xF000, 0x4427), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3164: {"fsglmulw", 4,        two(0xF000, 0x5027), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3165: {"fsglmulx", 4,        two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3166: {"fsglmulx", 4,        two(0xF000, 0x4827), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3167: {"fsglmulx", 4,        two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3168: 
        !          3169: {"fsinb", 4,   two(0xF000, 0x580E), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3170: {"fsind", 4,   two(0xF000, 0x540E), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3171: {"fsinl", 4,   two(0xF000, 0x400E), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3172: {"fsinp", 4,   two(0xF000, 0x4C0E), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3173: {"fsins", 4,   two(0xF000, 0x440E), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3174: {"fsinw", 4,   two(0xF000, 0x500E), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3175: {"fsinx", 4,   two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3176: {"fsinx", 4,   two(0xF000, 0x480E), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3177: {"fsinx", 4,   two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3178: 
        !          3179: {"fsincosb", 4,        two(0xF000, 0x5830), two(0xF1C0, 0xFC78), "Ii;bF3F7", mfloat },
        !          3180: {"fsincosd", 4,        two(0xF000, 0x5430), two(0xF1C0, 0xFC78), "Ii;FF3F7", mfloat },
        !          3181: {"fsincosl", 4,        two(0xF000, 0x4030), two(0xF1C0, 0xFC78), "Ii;lF3F7", mfloat },
        !          3182: {"fsincosp", 4,        two(0xF000, 0x4C30), two(0xF1C0, 0xFC78), "Ii;pF3F7", mfloat },
        !          3183: {"fsincoss", 4,        two(0xF000, 0x4430), two(0xF1C0, 0xFC78), "Ii;fF3F7", mfloat },
        !          3184: {"fsincosw", 4,        two(0xF000, 0x5030), two(0xF1C0, 0xFC78), "Ii;wF3F7", mfloat },
        !          3185: {"fsincosx", 4,        two(0xF000, 0x0030), two(0xF1C0, 0xE078), "IiF8F3F7", mfloat },
        !          3186: {"fsincosx", 4,        two(0xF000, 0x4830), two(0xF1C0, 0xFC78), "Ii;xF3F7", mfloat },
        !          3187: 
        !          3188: {"fsinhb", 4,  two(0xF000, 0x5802), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3189: {"fsinhd", 4,  two(0xF000, 0x5402), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3190: {"fsinhl", 4,  two(0xF000, 0x4002), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3191: {"fsinhp", 4,  two(0xF000, 0x4C02), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3192: {"fsinhs", 4,  two(0xF000, 0x4402), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3193: {"fsinhw", 4,  two(0xF000, 0x5002), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3194: {"fsinhx", 4,  two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3195: {"fsinhx", 4,  two(0xF000, 0x4802), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3196: {"fsinhx", 4,  two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3197: 
        !          3198: {"fsqrtb", 4,  two(0xF000, 0x5804), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3199: {"fsqrtb", 4,  two(0xF000, 0x5804), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3200: {"fsqrtd", 4,  two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3201: {"fsqrtd", 4,  two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiFt",   cfloat },
        !          3202: {"fsqrtd", 4,  two(0xF000, 0x5404), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3203: {"fsqrtd", 4,  two(0xF000, 0x5404), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3204: {"fsqrtl", 4,  two(0xF000, 0x4004), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3205: {"fsqrtl", 4,  two(0xF000, 0x4004), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3206: {"fsqrtp", 4,  two(0xF000, 0x4C04), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3207: {"fsqrts", 4,  two(0xF000, 0x4404), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3208: {"fsqrts", 4,  two(0xF000, 0x4404), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3209: {"fsqrtw", 4,  two(0xF000, 0x5004), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3210: {"fsqrtw", 4,  two(0xF000, 0x5004), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3211: {"fsqrtx", 4,  two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3212: {"fsqrtx", 4,  two(0xF000, 0x4804), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3213: {"fsqrtx", 4,  two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3214: 
        !          3215: {"fssqrtb", 4, two(0xF000, 0x5841), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          3216: {"fssqrtb", 4, two(0xF000, 0x5841), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3217: {"fssqrtd", 4, two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3218: {"fssqrtd", 4, two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiFt",   cfloat },
        !          3219: {"fssqrtd", 4, two(0xF000, 0x5441), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          3220: {"fssqrtd", 4, two(0xF000, 0x5441), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3221: {"fssqrtl", 4, two(0xF000, 0x4041), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          3222: {"fssqrtl", 4, two(0xF000, 0x4041), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3223: {"fssqrtp", 4, two(0xF000, 0x4C41), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          3224: {"fssqrts", 4, two(0xF000, 0x4441), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          3225: {"fssqrts", 4, two(0xF000, 0x4441), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3226: {"fssqrtw", 4, two(0xF000, 0x5041), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          3227: {"fssqrtw", 4, two(0xF000, 0x5041), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3228: {"fssqrtx", 4, two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          3229: {"fssqrtx", 4, two(0xF000, 0x4841), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          3230: {"fssqrtx", 4, two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiFt",   m68040up },
        !          3231: 
        !          3232: {"fdsqrtb", 4, two(0xF000, 0x5845), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          3233: {"fdsqrtb", 4, two(0xF000, 0x5845), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3234: {"fdsqrtd", 4, two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3235: {"fdsqrtd", 4, two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiFt",   cfloat },
        !          3236: {"fdsqrtd", 4, two(0xF000, 0x5445), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          3237: {"fdsqrtl", 4, two(0xF000, 0x4045), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          3238: {"fdsqrtl", 4, two(0xF000, 0x4045), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3239: {"fdsqrtp", 4, two(0xF000, 0x4C45), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          3240: {"fdsqrts", 4, two(0xF000, 0x4445), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          3241: {"fdsqrts", 4, two(0xF000, 0x4445), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3242: {"fdsqrtw", 4, two(0xF000, 0x5045), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          3243: {"fdsqrtw", 4, two(0xF000, 0x5045), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3244: {"fdsqrtx", 4, two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          3245: {"fdsqrtx", 4, two(0xF000, 0x4845), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          3246: {"fdsqrtx", 4, two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiFt",   m68040up },
        !          3247: 
        !          3248: {"fsubb", 4,   two(0xF000, 0x5828), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3249: {"fsubb", 4,   two(0xF000, 0x5828), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3250: {"fsubd", 4,   two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3251: {"fsubd", 4,   two(0xF000, 0x5428), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3252: {"fsubd", 4,   two(0xF000, 0x5428), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3253: {"fsubl", 4,   two(0xF000, 0x4028), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3254: {"fsubl", 4,   two(0xF000, 0x4028), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3255: {"fsubp", 4,   two(0xF000, 0x4C28), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3256: {"fsubs", 4,   two(0xF000, 0x4428), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3257: {"fsubs", 4,   two(0xF000, 0x4428), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3258: {"fsubw", 4,   two(0xF000, 0x5028), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3259: {"fsubw", 4,   two(0xF000, 0x5028), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3260: {"fsubx", 4,   two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3261: {"fsubx", 4,   two(0xF000, 0x4828), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3262: {"fsubx", 4,   two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3263: 
        !          3264: {"fssubb", 4,  two(0xF000, 0x5828), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3265: {"fssubb", 4,  two(0xF000, 0x5868), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          3266: {"fssubd", 4,  two(0xF000, 0x0068), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3267: {"fssubd", 4,  two(0xF000, 0x5468), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          3268: {"fssubd", 4,  two(0xF000, 0x5468), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3269: {"fssubl", 4,  two(0xF000, 0x4068), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          3270: {"fssubl", 4,  two(0xF000, 0x4068), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3271: {"fssubp", 4,  two(0xF000, 0x4C68), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          3272: {"fssubs", 4,  two(0xF000, 0x4468), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          3273: {"fssubs", 4,  two(0xF000, 0x4468), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3274: {"fssubw", 4,  two(0xF000, 0x5068), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          3275: {"fssubw", 4,  two(0xF000, 0x5068), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3276: {"fssubx", 4,  two(0xF000, 0x0068), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          3277: {"fssubx", 4,  two(0xF000, 0x4868), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          3278: {"fssubx", 4,  two(0xF000, 0x0068), two(0xF1C0, 0xE07F), "IiFt",   m68040up },
        !          3279: 
        !          3280: {"fdsubb", 4,  two(0xF000, 0x586A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3281: {"fdsubb", 4,  two(0xF000, 0x586c), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040up },
        !          3282: {"fdsubd", 4,  two(0xF000, 0x006A), two(0xF1C0, 0xE07F), "IiF8F7", cfloat },
        !          3283: {"fdsubd", 4,  two(0xF000, 0x546A), two(0xF1C0, 0xFC7F), "IiwsF7", cfloat },
        !          3284: {"fdsubd", 4,  two(0xF000, 0x546c), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040up },
        !          3285: {"fdsubl", 4,  two(0xF000, 0x406A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3286: {"fdsubl", 4,  two(0xF000, 0x406c), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040up },
        !          3287: {"fdsubp", 4,  two(0xF000, 0x4C6c), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040up },
        !          3288: {"fdsubs", 4,  two(0xF000, 0x446A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3289: {"fdsubs", 4,  two(0xF000, 0x446c), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040up },
        !          3290: {"fdsubw", 4,  two(0xF000, 0x506A), two(0xF1C0, 0xFC7F), "IibsF7", cfloat },
        !          3291: {"fdsubw", 4,  two(0xF000, 0x506c), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040up },
        !          3292: {"fdsubx", 4,  two(0xF000, 0x006c), two(0xF1C0, 0xE07F), "IiF8F7", m68040up },
        !          3293: {"fdsubx", 4,  two(0xF000, 0x486c), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040up },
        !          3294: {"fdsubx", 4,  two(0xF000, 0x006c), two(0xF1C0, 0xE07F), "IiFt",   m68040up },
        !          3295: 
        !          3296: {"ftanb", 4,   two(0xF000, 0x580F), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3297: {"ftand", 4,   two(0xF000, 0x540F), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3298: {"ftanl", 4,   two(0xF000, 0x400F), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3299: {"ftanp", 4,   two(0xF000, 0x4C0F), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3300: {"ftans", 4,   two(0xF000, 0x440F), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3301: {"ftanw", 4,   two(0xF000, 0x500F), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3302: {"ftanx", 4,   two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3303: {"ftanx", 4,   two(0xF000, 0x480F), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3304: {"ftanx", 4,   two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3305: 
        !          3306: {"ftanhb", 4,  two(0xF000, 0x5809), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3307: {"ftanhd", 4,  two(0xF000, 0x5409), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3308: {"ftanhl", 4,  two(0xF000, 0x4009), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3309: {"ftanhp", 4,  two(0xF000, 0x4C09), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3310: {"ftanhs", 4,  two(0xF000, 0x4409), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3311: {"ftanhw", 4,  two(0xF000, 0x5009), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3312: {"ftanhx", 4,  two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3313: {"ftanhx", 4,  two(0xF000, 0x4809), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3314: {"ftanhx", 4,  two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3315: 
        !          3316: {"ftentoxb", 4,        two(0xF000, 0x5812), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3317: {"ftentoxd", 4,        two(0xF000, 0x5412), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3318: {"ftentoxl", 4,        two(0xF000, 0x4012), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3319: {"ftentoxp", 4,        two(0xF000, 0x4C12), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3320: {"ftentoxs", 4,        two(0xF000, 0x4412), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3321: {"ftentoxw", 4,        two(0xF000, 0x5012), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3322: {"ftentoxx", 4,        two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3323: {"ftentoxx", 4,        two(0xF000, 0x4812), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3324: {"ftentoxx", 4,        two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3325: 
        !          3326: {"ftrapeq", 4, two(0xF07C, 0x0001), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3327: {"ftrapf", 4,  two(0xF07C, 0x0000), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3328: {"ftrapge", 4, two(0xF07C, 0x0013), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3329: {"ftrapgl", 4, two(0xF07C, 0x0016), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3330: {"ftrapgle", 4,        two(0xF07C, 0x0017), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3331: {"ftrapgt", 4, two(0xF07C, 0x0012), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3332: {"ftraple", 4, two(0xF07C, 0x0015), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3333: {"ftraplt", 4, two(0xF07C, 0x0014), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3334: {"ftrapne", 4, two(0xF07C, 0x000E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3335: {"ftrapnge", 4,        two(0xF07C, 0x001C), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3336: {"ftrapngl", 4,        two(0xF07C, 0x0019), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3337: {"ftrapngle", 4,two(0xF07C, 0x0018), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3338: {"ftrapngt", 4,        two(0xF07C, 0x001D), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3339: {"ftrapnle", 4,        two(0xF07C, 0x001A), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3340: {"ftrapnlt", 4,        two(0xF07C, 0x001B), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3341: {"ftrapoge", 4,        two(0xF07C, 0x0003), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3342: {"ftrapogl", 4,        two(0xF07C, 0x0006), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3343: {"ftrapogt", 4,        two(0xF07C, 0x0002), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3344: {"ftrapole", 4,        two(0xF07C, 0x0005), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3345: {"ftrapolt", 4,        two(0xF07C, 0x0004), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3346: {"ftrapor", 4, two(0xF07C, 0x0007), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3347: {"ftrapseq", 4,        two(0xF07C, 0x0011), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3348: {"ftrapsf", 4, two(0xF07C, 0x0010), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3349: {"ftrapsne", 4,        two(0xF07C, 0x001E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3350: {"ftrapst", 4, two(0xF07C, 0x001F), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3351: {"ftrapt", 4,  two(0xF07C, 0x000F), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3352: {"ftrapueq", 4,        two(0xF07C, 0x0009), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3353: {"ftrapuge", 4,        two(0xF07C, 0x000B), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3354: {"ftrapugt", 4,        two(0xF07C, 0x000A), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3355: {"ftrapule", 4,        two(0xF07C, 0x000D), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3356: {"ftrapult", 4,        two(0xF07C, 0x000C), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3357: {"ftrapun", 4, two(0xF07C, 0x0008), two(0xF1FF, 0xFFFF), "Ii", mfloat },
        !          3358: 
        !          3359: {"ftrapeqw", 4,        two(0xF07A, 0x0001), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3360: {"ftrapfw", 4, two(0xF07A, 0x0000), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3361: {"ftrapgew", 4,        two(0xF07A, 0x0013), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3362: {"ftrapglw", 4,        two(0xF07A, 0x0016), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3363: {"ftrapglew", 4,two(0xF07A, 0x0017), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3364: {"ftrapgtw", 4,        two(0xF07A, 0x0012), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3365: {"ftraplew", 4,        two(0xF07A, 0x0015), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3366: {"ftrapltw", 4,        two(0xF07A, 0x0014), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3367: {"ftrapnew", 4,        two(0xF07A, 0x000E), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3368: {"ftrapngew", 4,two(0xF07A, 0x001C), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3369: {"ftrapnglw", 4,two(0xF07A, 0x0019), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3370: {"ftrapnglew", 4,two(0xF07A, 0x0018), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3371: {"ftrapngtw", 4,two(0xF07A, 0x001D), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3372: {"ftrapnlew", 4,two(0xF07A, 0x001A), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3373: {"ftrapnltw", 4,two(0xF07A, 0x001B), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3374: {"ftrapogew", 4,two(0xF07A, 0x0003), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3375: {"ftrapoglw", 4,two(0xF07A, 0x0006), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3376: {"ftrapogtw", 4,two(0xF07A, 0x0002), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3377: {"ftrapolew", 4,two(0xF07A, 0x0005), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3378: {"ftrapoltw", 4,two(0xF07A, 0x0004), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3379: {"ftraporw", 4,        two(0xF07A, 0x0007), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3380: {"ftrapseqw", 4,two(0xF07A, 0x0011), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3381: {"ftrapsfw", 4,        two(0xF07A, 0x0010), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3382: {"ftrapsnew", 4,two(0xF07A, 0x001E), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3383: {"ftrapstw", 4,        two(0xF07A, 0x001F), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3384: {"ftraptw", 4, two(0xF07A, 0x000F), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3385: {"ftrapueqw", 4,two(0xF07A, 0x0009), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3386: {"ftrapugew", 4,two(0xF07A, 0x000B), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3387: {"ftrapugtw", 4,two(0xF07A, 0x000A), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3388: {"ftrapulew", 4,two(0xF07A, 0x000D), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3389: {"ftrapultw", 4,two(0xF07A, 0x000C), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3390: {"ftrapunw", 4,        two(0xF07A, 0x0008), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
        !          3391: 
        !          3392: {"ftrapeql", 4,        two(0xF07B, 0x0001), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3393: {"ftrapfl", 4, two(0xF07B, 0x0000), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3394: {"ftrapgel", 4,        two(0xF07B, 0x0013), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3395: {"ftrapgll", 4,        two(0xF07B, 0x0016), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3396: {"ftrapglel", 4,two(0xF07B, 0x0017), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3397: {"ftrapgtl", 4,        two(0xF07B, 0x0012), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3398: {"ftraplel", 4,        two(0xF07B, 0x0015), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3399: {"ftrapltl", 4,        two(0xF07B, 0x0014), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3400: {"ftrapnel", 4,        two(0xF07B, 0x000E), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3401: {"ftrapngel", 4,two(0xF07B, 0x001C), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3402: {"ftrapngll", 4,two(0xF07B, 0x0019), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3403: {"ftrapnglel", 4,two(0xF07B, 0x0018), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3404: {"ftrapngtl", 4,two(0xF07B, 0x001D), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3405: {"ftrapnlel", 4,two(0xF07B, 0x001A), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3406: {"ftrapnltl", 4,two(0xF07B, 0x001B), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3407: {"ftrapogel", 4,two(0xF07B, 0x0003), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3408: {"ftrapogll", 4,two(0xF07B, 0x0006), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3409: {"ftrapogtl", 4,two(0xF07B, 0x0002), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3410: {"ftrapolel", 4,two(0xF07B, 0x0005), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3411: {"ftrapoltl", 4,two(0xF07B, 0x0004), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3412: {"ftraporl", 4,        two(0xF07B, 0x0007), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3413: {"ftrapseql", 4,two(0xF07B, 0x0011), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3414: {"ftrapsfl", 4,        two(0xF07B, 0x0010), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3415: {"ftrapsnel", 4,two(0xF07B, 0x001E), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3416: {"ftrapstl", 4,        two(0xF07B, 0x001F), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3417: {"ftraptl", 4, two(0xF07B, 0x000F), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3418: {"ftrapueql", 4,two(0xF07B, 0x0009), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3419: {"ftrapugel", 4,two(0xF07B, 0x000B), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3420: {"ftrapugtl", 4,two(0xF07B, 0x000A), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3421: {"ftrapulel", 4,two(0xF07B, 0x000D), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3422: {"ftrapultl", 4,two(0xF07B, 0x000C), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3423: {"ftrapunl", 4,        two(0xF07B, 0x0008), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
        !          3424: 
        !          3425: {"ftstb", 4,   two(0xF000, 0x583A), two(0xF1C0, 0xFC7F), "Ii;b", mfloat },
        !          3426: {"ftstb", 4,   two(0xF000, 0x583A), two(0xF1C0, 0xFC7F), "Iibs", cfloat },
        !          3427: {"ftstd", 4,   two(0xF000, 0x003A), two(0xF1C0, 0xE07F), "IiF8", cfloat },
        !          3428: {"ftstd", 4,   two(0xF000, 0x543A), two(0xF1C0, 0xFC7F), "Ii;F", mfloat },
        !          3429: {"ftstd", 4,   two(0xF000, 0x543A), two(0xF1C0, 0xFC7F), "Iibs", cfloat },
        !          3430: {"ftstl", 4,   two(0xF000, 0x403A), two(0xF1C0, 0xFC7F), "Ii;l", mfloat },
        !          3431: {"ftstl", 4,   two(0xF000, 0x403A), two(0xF1C0, 0xFC7F), "Iibs", cfloat },
        !          3432: {"ftstp", 4,   two(0xF000, 0x4C3A), two(0xF1C0, 0xFC7F), "Ii;p", mfloat },
        !          3433: {"ftsts", 4,   two(0xF000, 0x443A), two(0xF1C0, 0xFC7F), "Ii;f", mfloat },
        !          3434: {"ftsts", 4,   two(0xF000, 0x443A), two(0xF1C0, 0xFC7F), "Iibs", cfloat },
        !          3435: {"ftstw", 4,   two(0xF000, 0x503A), two(0xF1C0, 0xFC7F), "Ii;w", mfloat },
        !          3436: {"ftstw", 4,   two(0xF000, 0x503A), two(0xF1C0, 0xFC7F), "Iibs", cfloat },
        !          3437: {"ftstx", 4,   two(0xF000, 0x003A), two(0xF1C0, 0xE07F), "IiF8", mfloat },
        !          3438: {"ftstx", 4,   two(0xF000, 0x483A), two(0xF1C0, 0xFC7F), "Ii;x", mfloat },
        !          3439: 
        !          3440: {"ftwotoxb", 4,        two(0xF000, 0x5811), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
        !          3441: {"ftwotoxd", 4,        two(0xF000, 0x5411), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
        !          3442: {"ftwotoxl", 4,        two(0xF000, 0x4011), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
        !          3443: {"ftwotoxp", 4,        two(0xF000, 0x4C11), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
        !          3444: {"ftwotoxs", 4,        two(0xF000, 0x4411), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
        !          3445: {"ftwotoxw", 4,        two(0xF000, 0x5011), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
        !          3446: {"ftwotoxx", 4,        two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
        !          3447: {"ftwotoxx", 4,        two(0xF000, 0x4811), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
        !          3448: {"ftwotoxx", 4,        two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiFt",   mfloat },
        !          3449: 
        !          3450: {"halt", 2,    one(0045310),   one(0177777), "",     m68060 | mcfisa_a },
        !          3451: 
        !          3452: {"illegal", 2, one(0045374),   one(0177777), "",     m68000up | mcfisa_a },
        !          3453: {"intouch", 2, one(0xf428),    one(0xfff8), "As",    mcfisa_b },
        !          3454: 
        !          3455: {"jmp", 2,     one(0047300),   one(0177700), "!s", m68000up | mcfisa_a },
        !          3456: 
        !          3457: {"jra", 2,     one(0060000),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          3458: {"jra", 2,     one(0047300),   one(0177700), "!s", m68000up | mcfisa_a },
        !          3459: 
        !          3460: {"jsr", 2,     one(0047200),   one(0177700), "!s", m68000up | mcfisa_a },
        !          3461: 
        !          3462: {"jbsr", 2,    one(0060400),   one(0177400), "Bg", m68000up | mcfisa_a },
        !          3463: {"jbsr", 2,    one(0047200),   one(0177700), "!s", m68000up | mcfisa_a },
        !          3464: 
        !          3465: {"lea", 2,     one(0040700),   one(0170700), "!sAd", m68000up | mcfisa_a },
        !          3466: 
        !          3467: {"lpstop", 6,  two(0174000,0000700),two(0177777,0177777),"#w", cpu32|m68060 },
        !          3468: 
        !          3469: {"linkw", 4,   one(0047120),   one(0177770), "As#w", m68000up | mcfisa_a },
        !          3470: {"linkl", 6,   one(0044010),   one(0177770), "As#l", m68020up | cpu32 },
        !          3471: {"link", 4,    one(0047120),   one(0177770), "As#W", m68000up | mcfisa_a },
        !          3472: {"link", 6,    one(0044010),   one(0177770), "As#l", m68020up | cpu32 },
        !          3473: 
        !          3474: {"lslb", 2,    one(0160410),   one(0170770), "QdDs", m68000up },
        !          3475: {"lslb", 2,    one(0160450),   one(0170770), "DdDs", m68000up },
        !          3476: {"lslw", 2,    one(0160510),   one(0170770), "QdDs", m68000up },
        !          3477: {"lslw", 2,    one(0160550),   one(0170770), "DdDs", m68000up },
        !          3478: {"lslw", 2,    one(0161700),   one(0177700), "~s",   m68000up },
        !          3479: {"lsll", 2,    one(0160610),   one(0170770), "QdDs", m68000up | mcfisa_a },
        !          3480: {"lsll", 2,    one(0160650),   one(0170770), "DdDs", m68000up | mcfisa_a },
        !          3481: 
        !          3482: {"lsrb", 2,    one(0160010),   one(0170770), "QdDs", m68000up },
        !          3483: {"lsrb", 2,    one(0160050),   one(0170770), "DdDs", m68000up },
        !          3484: {"lsrw", 2,    one(0160110),   one(0170770), "QdDs", m68000up },
        !          3485: {"lsrw", 2,    one(0160150),   one(0170770), "DdDs", m68000up },
        !          3486: {"lsrw", 2,    one(0161300),   one(0177700), "~s",   m68000up },
        !          3487: {"lsrl", 2,    one(0160210),   one(0170770), "QdDs", m68000up | mcfisa_a },
        !          3488: {"lsrl", 2,    one(0160250),   one(0170770), "DdDs", m68000up | mcfisa_a },
        !          3489: 
        !          3490: {"macw", 4,    two(0xa080, 0x0000), two(0xf180, 0x0910), "uNuoiI4/Rn", mcfmac },
        !          3491: {"macw", 4,    two(0xa080, 0x0200), two(0xf180, 0x0910), "uNuoMh4/Rn", mcfmac },
        !          3492: {"macw", 4,    two(0xa080, 0x0000), two(0xf180, 0x0f10), "uNuo4/Rn", mcfmac },
        !          3493: {"macw", 4,    two(0xa000, 0x0000), two(0xf1b0, 0x0900), "uMumiI", mcfmac },
        !          3494: {"macw", 4,    two(0xa000, 0x0200), two(0xf1b0, 0x0900), "uMumMh", mcfmac },
        !          3495: {"macw", 4,    two(0xa000, 0x0000), two(0xf1b0, 0x0f00), "uMum", mcfmac },
        !          3496: 
        !          3497: {"macw", 4,    two(0xa000, 0x0000), two(0xf100, 0x0900), "uNuoiI4/RneG", mcfemac },/* Ry,Rx,SF,<ea>,accX.  */
        !          3498: {"macw", 4,    two(0xa000, 0x0200), two(0xf100, 0x0900), "uNuoMh4/RneG", mcfemac },/* Ry,Rx,+1/-1,<ea>,accX.  */
        !          3499: {"macw", 4,    two(0xa000, 0x0000), two(0xf100, 0x0f00), "uNuo4/RneG", mcfemac },/* Ry,Rx,<ea>,accX.  */
        !          3500: {"macw", 4,    two(0xa000, 0x0000), two(0xf130, 0x0900), "uMumiIeH", mcfemac },/* Ry,Rx,SF,accX.  */
        !          3501: {"macw", 4,    two(0xa000, 0x0200), two(0xf130, 0x0900), "uMumMheH", mcfemac },/* Ry,Rx,+1/-1,accX.  */
        !          3502: {"macw", 4,    two(0xa000, 0x0000), two(0xf130, 0x0f00), "uMumeH", mcfemac }, /* Ry,Rx,accX.  */
        !          3503: 
        !          3504: {"macl", 4,    two(0xa080, 0x0800), two(0xf180, 0x0910), "RNRoiI4/Rn", mcfmac },
        !          3505: {"macl", 4,    two(0xa080, 0x0a00), two(0xf180, 0x0910), "RNRoMh4/Rn", mcfmac },
        !          3506: {"macl", 4,    two(0xa080, 0x0800), two(0xf180, 0x0f10), "RNRo4/Rn", mcfmac },
        !          3507: {"macl", 4,    two(0xa000, 0x0800), two(0xf1b0, 0x0b00), "RMRmiI", mcfmac },
        !          3508: {"macl", 4,    two(0xa000, 0x0a00), two(0xf1b0, 0x0b00), "RMRmMh", mcfmac },
        !          3509: {"macl", 4,    two(0xa000, 0x0800), two(0xf1b0, 0x0800), "RMRm", mcfmac },
        !          3510: 
        !          3511: {"macl", 4,    two(0xa000, 0x0800), two(0xf100, 0x0900), "R3R1iI4/RneG", mcfemac },
        !          3512: {"macl", 4,    two(0xa000, 0x0a00), two(0xf100, 0x0900), "R3R1Mh4/RneG", mcfemac },
        !          3513: {"macl", 4,    two(0xa000, 0x0800), two(0xf100, 0x0f00), "R3R14/RneG", mcfemac },
        !          3514: {"macl", 4,    two(0xa000, 0x0800), two(0xf130, 0x0900), "RMRmiIeH", mcfemac },
        !          3515: {"macl", 4,    two(0xa000, 0x0a00), two(0xf130, 0x0900), "RMRmMheH", mcfemac },
        !          3516: {"macl", 4,    two(0xa000, 0x0800), two(0xf130, 0x0f00), "RMRmeH", mcfemac },
        !          3517: 
        !          3518: /* NOTE: The mcf5200 family programmer's reference manual does not
        !          3519:    indicate the byte form of the movea instruction is invalid (as it
        !          3520:    is on 68000 family cpus).  However, experiments on the 5202 yeild
        !          3521:    unexpected results.  The value is copied, but it is not sign extended
        !          3522:    (as is done with movea.w) and the top three bytes in the address
        !          3523:    register are not disturbed.  I don't know if this is the intended
        !          3524:    behavior --- it could be a hole in instruction decoding (Motorola
        !          3525:    decided not to trap all invalid instructions for performance reasons)
        !          3526:    --- but I suspect that it is not.
        !          3527: 
        !          3528:    I reported this to Motorola ISD Technical Communications Support,
        !          3529:    which replied that other coldfire assemblers reject movea.b.  For
        !          3530:    this reason I've decided to not allow moveab.
        !          3531: 
        !          3532:        [email protected] - 97/01/24.  */
        !          3533: 
        !          3534: {"moveal", 2,  one(0020100),   one(0170700), "*lAd", m68000up | mcfisa_a },
        !          3535: {"moveaw", 2,  one(0030100),   one(0170700), "*wAd", m68000up | mcfisa_a },
        !          3536: 
        !          3537: {"movclrl", 2, one(0xA1C0),    one(0xf9f0), "eFRs", mcfemac },
        !          3538: 
        !          3539: {"movec", 4,   one(0047173),   one(0177777), "R1Jj", m68010up | mcfisa_a },
        !          3540: {"movec", 4,   one(0047173),   one(0177777), "R1#j", m68010up | mcfisa_a },
        !          3541: {"movec", 4,   one(0047172),   one(0177777), "JjR1", m68010up },
        !          3542: {"movec", 4,   one(0047172),   one(0177777), "#jR1", m68010up },
        !          3543: 
        !          3544: {"movemw", 4,  one(0044200),   one(0177700), "Lw&s", m68000up },
        !          3545: {"movemw", 4,  one(0044240),   one(0177770), "lw-s", m68000up },
        !          3546: {"movemw", 4,  one(0044200),   one(0177700), "#w>s", m68000up },
        !          3547: {"movemw", 4,  one(0046200),   one(0177700), "<sLw", m68000up },
        !          3548: {"movemw", 4,  one(0046200),   one(0177700), "<s#w", m68000up },
        !          3549: {"moveml", 4,  one(0044300),   one(0177700), "Lw&s", m68000up },
        !          3550: {"moveml", 4,  one(0044340),   one(0177770), "lw-s", m68000up },
        !          3551: {"moveml", 4,  one(0044300),   one(0177700), "#w>s", m68000up },
        !          3552: {"moveml", 4,  one(0046300),   one(0177700), "<sLw", m68000up },
        !          3553: {"moveml", 4,  one(0046300),   one(0177700), "<s#w", m68000up },
        !          3554: /* FIXME: need specifier for mode 2 and 5 to simplify below insn patterns.  */
        !          3555: {"moveml", 4,  one(0044320),   one(0177770), "Lwas", mcfisa_a },
        !          3556: {"moveml", 4,  one(0044320),   one(0177770), "#was", mcfisa_a },
        !          3557: {"moveml", 4,  one(0044350),   one(0177770), "Lwds", mcfisa_a },
        !          3558: {"moveml", 4,  one(0044350),   one(0177770), "#wds", mcfisa_a },
        !          3559: {"moveml", 4,  one(0046320),   one(0177770), "asLw", mcfisa_a },
        !          3560: {"moveml", 4,  one(0046320),   one(0177770), "as#w", mcfisa_a },
        !          3561: {"moveml", 4,  one(0046350),   one(0177770), "dsLw", mcfisa_a },
        !          3562: {"moveml", 4,  one(0046350),   one(0177770), "ds#w", mcfisa_a },
        !          3563: 
        !          3564: {"movepw", 2,  one(0000410),   one(0170770), "dsDd", m68000up },
        !          3565: {"movepw", 2,  one(0000610),   one(0170770), "Ddds", m68000up },
        !          3566: {"movepl", 2,  one(0000510),   one(0170770), "dsDd", m68000up },
        !          3567: {"movepl", 2,  one(0000710),   one(0170770), "Ddds", m68000up },
        !          3568: 
        !          3569: {"moveq", 2,   one(0070000),   one(0170400), "MsDd", m68000up | mcfisa_a },
        !          3570: {"moveq", 2,   one(0070000),   one(0170400), "#BDd", m68000up | mcfisa_a },
        !          3571: 
        !          3572: /* The move opcode can generate the movea and moveq instructions.  */
        !          3573: {"moveb", 2,   one(0010000),   one(0170000), ";b$d", m68000up },
        !          3574: {"moveb", 2,   one(0010000),   one(0170070), "Ds$d", mcfisa_a },
        !          3575: {"moveb", 2,   one(0010020),   one(0170070), "as$d", mcfisa_a },
        !          3576: {"moveb", 2,   one(0010030),   one(0170070), "+s$d", mcfisa_a },
        !          3577: {"moveb", 2,   one(0010040),   one(0170070), "-s$d", mcfisa_a },
        !          3578: {"moveb", 2,   one(0010000),   one(0170000), "nsqd", mcfisa_a },
        !          3579: {"moveb", 2,   one(0010000),   one(0170700), "obDd", mcfisa_a },
        !          3580: {"moveb", 2,   one(0010200),   one(0170700), "obad", mcfisa_a },
        !          3581: {"moveb", 2,   one(0010300),   one(0170700), "ob+d", mcfisa_a },
        !          3582: {"moveb", 2,   one(0010400),   one(0170700), "ob-d", mcfisa_a },
        !          3583: {"moveb", 2,   one(0010000),   one(0170000), "obnd", mcfisa_b },
        !          3584: 
        !          3585: {"movew", 2,   one(0030000),   one(0170000), "*w%d", m68000up },
        !          3586: {"movew", 2,   one(0030000),   one(0170000), "ms%d", mcfisa_a },
        !          3587: {"movew", 2,   one(0030000),   one(0170000), "nspd", mcfisa_a },
        !          3588: {"movew", 2,   one(0030000),   one(0170000), "owmd", mcfisa_a },
        !          3589: {"movew", 2,   one(0030000),   one(0170000), "ownd", mcfisa_b },
        !          3590: {"movew", 2,   one(0040300),   one(0177700), "Ss$s", m68000up },
        !          3591: {"movew", 2,   one(0040300),   one(0177770), "SsDs", mcfisa_a },
        !          3592: {"movew", 2,   one(0041300),   one(0177700), "Cs$s", m68010up },
        !          3593: {"movew", 2,   one(0041300),   one(0177770), "CsDs", mcfisa_a },
        !          3594: {"movew", 2,   one(0042300),   one(0177700), ";wCd", m68000up },
        !          3595: {"movew", 2,   one(0042300),   one(0177700), "DsCd", mcfisa_a },
        !          3596: {"movew", 4,   one(0042374),   one(0177777), "#wCd", mcfisa_a },
        !          3597: {"movew", 2,   one(0043300),   one(0177700), ";wSd", m68000up },
        !          3598: {"movew", 2,   one(0043300),   one(0177700), "DsSd", mcfisa_a },
        !          3599: {"movew", 4,   one(0043374),   one(0177777), "#wSd", mcfisa_a },
        !          3600: 
        !          3601: {"movel", 2,   one(0070000),   one(0170400), "MsDd", m68000up | mcfisa_a },
        !          3602: {"movel", 2,   one(0020000),   one(0170000), "*l%d", m68000up },
        !          3603: {"movel", 2,   one(0020000),   one(0170000), "ms%d", mcfisa_a },
        !          3604: {"movel", 2,   one(0020000),   one(0170000), "nspd", mcfisa_a },
        !          3605: {"movel", 2,   one(0020000),   one(0170000), "olmd", mcfisa_a },
        !          3606: {"movel", 2,   one(0020000),   one(0170000), "olnd", mcfisa_b },
        !          3607: {"movel", 2,   one(0047140),   one(0177770), "AsUd", m68000up | mcfusp },
        !          3608: {"movel", 2,   one(0047150),   one(0177770), "UdAs", m68000up | mcfusp },
        !          3609: {"movel", 2,   one(0120600),   one(0177760), "EsRs", mcfmac },
        !          3610: {"movel", 2,   one(0120400),   one(0177760), "RsEs", mcfmac },
        !          3611: {"movel", 6,   one(0120474),   one(0177777), "#lEs", mcfmac },
        !          3612: {"movel", 2,   one(0124600),   one(0177760), "GsRs", mcfmac },
        !          3613: {"movel", 2,   one(0124400),   one(0177760), "RsGs", mcfmac },
        !          3614: {"movel", 6,   one(0124474),   one(0177777), "#lGs", mcfmac },
        !          3615: {"movel", 2,   one(0126600),   one(0177760), "HsRs", mcfmac },
        !          3616: {"movel", 2,   one(0126400),   one(0177760), "RsHs", mcfmac },
        !          3617: {"movel", 6,   one(0126474),   one(0177777), "#lHs", mcfmac },
        !          3618: {"movel", 2,   one(0124700),   one(0177777), "GsCs", mcfmac },
        !          3619: 
        !          3620: {"movel", 2,   one(0xa180),    one(0xf9f0), "eFRs", mcfemac }, /* ACCx,Rx.  */
        !          3621: {"movel", 2,   one(0xab80),    one(0xfbf0), "g]Rs", mcfemac }, /* ACCEXTx,Rx.  */
        !          3622: {"movel", 2,   one(0xa980),    one(0xfff0), "G-Rs", mcfemac }, /* macsr,Rx.  */
        !          3623: {"movel", 2,   one(0xad80),    one(0xfff0), "H-Rs", mcfemac }, /* mask,Rx.  */
        !          3624: {"movel", 2,   one(0xa110),    one(0xf9fc), "efeF", mcfemac }, /* ACCy,ACCx.  */
        !          3625: {"movel", 2,   one(0xa9c0),    one(0xffff), "G-C-", mcfemac }, /* macsr,ccr.  */
        !          3626: {"movel", 2,   one(0xa100),    one(0xf9f0), "RseF", mcfemac }, /* Rx,ACCx.  */
        !          3627: {"movel", 6,   one(0xa13c),    one(0xf9ff), "#leF", mcfemac }, /* #,ACCx.  */
        !          3628: {"movel", 2,   one(0xab00),    one(0xfbc0), "Rsg]", mcfemac }, /* Rx,ACCEXTx.  */
        !          3629: {"movel", 6,   one(0xab3c),    one(0xfbff), "#lg]", mcfemac }, /* #,ACCEXTx.  */
        !          3630: {"movel", 2,   one(0xa900),    one(0xffc0), "RsG-", mcfemac }, /* Rx,macsr.  */
        !          3631: {"movel", 6,   one(0xa93c),    one(0xffff), "#lG-", mcfemac }, /* #,macsr.  */
        !          3632: {"movel", 2,   one(0xad00),    one(0xffc0), "RsH-", mcfemac }, /* Rx,mask.  */
        !          3633: {"movel", 6,   one(0xad3c),    one(0xffff), "#lH-", mcfemac }, /* #,mask.  */
        !          3634: 
        !          3635: {"move", 2,    one(0030000),   one(0170000), "*w%d", m68000up },
        !          3636: {"move", 2,    one(0030000),   one(0170000), "ms%d", mcfisa_a },
        !          3637: {"move", 2,    one(0030000),   one(0170000), "nspd", mcfisa_a },
        !          3638: {"move", 2,    one(0030000),   one(0170000), "owmd", mcfisa_a },
        !          3639: {"move", 2,    one(0030000),   one(0170000), "ownd", mcfisa_b },
        !          3640: {"move", 2,    one(0040300),   one(0177700), "Ss$s", m68000up },
        !          3641: {"move", 2,    one(0040300),   one(0177770), "SsDs", mcfisa_a },
        !          3642: {"move", 2,    one(0041300),   one(0177700), "Cs$s", m68010up },
        !          3643: {"move", 2,    one(0041300),   one(0177770), "CsDs", mcfisa_a },
        !          3644: {"move", 2,    one(0042300),   one(0177700), ";wCd", m68000up },
        !          3645: {"move", 2,    one(0042300),   one(0177700), "DsCd", mcfisa_a },
        !          3646: {"move", 4,    one(0042374),   one(0177777), "#wCd", mcfisa_a },
        !          3647: {"move", 2,    one(0043300),   one(0177700), ";wSd", m68000up },
        !          3648: {"move", 2,    one(0043300),   one(0177700), "DsSd", mcfisa_a },
        !          3649: {"move", 4,    one(0043374),   one(0177777), "#wSd", mcfisa_a },
        !          3650: 
        !          3651: {"move", 2,    one(0047140),   one(0177770), "AsUd", m68000up },
        !          3652: {"move", 2,    one(0047150),   one(0177770), "UdAs", m68000up },
        !          3653: 
        !          3654: {"mov3ql", 2,  one(0120500),   one(0170700), "xd%s", mcfisa_b },
        !          3655: {"mvsb", 2,    one(0070400),   one(0170700), "*bDd", mcfisa_b },
        !          3656: {"mvsw", 2,    one(0070500),   one(0170700), "*wDd", mcfisa_b },
        !          3657: {"mvzb", 2,    one(0070600),   one(0170700), "*bDd", mcfisa_b },
        !          3658: {"mvzw", 2,    one(0070700),   one(0170700), "*wDd", mcfisa_b },
        !          3659: 
        !          3660: {"movesb", 4,  two(0007000, 0),     two(0177700, 07777), "~sR1", m68010up },
        !          3661: {"movesb", 4,  two(0007000, 04000), two(0177700, 07777), "R1~s", m68010up },
        !          3662: {"movesw", 4,  two(0007100, 0),     two(0177700, 07777), "~sR1", m68010up },
        !          3663: {"movesw", 4,  two(0007100, 04000), two(0177700, 07777), "R1~s", m68010up },
        !          3664: {"movesl", 4,  two(0007200, 0),     two(0177700, 07777), "~sR1", m68010up },
        !          3665: {"movesl", 4,  two(0007200, 04000), two(0177700, 07777), "R1~s", m68010up },
        !          3666: 
        !          3667: {"move16", 4,  two(0xf620, 0x8000), two(0xfff8, 0x8fff), "+s+1", m68040up },
        !          3668: {"move16", 2,  one(0xf600),            one(0xfff8), "+s_L", m68040up },
        !          3669: {"move16", 2,  one(0xf608),            one(0xfff8), "_L+s", m68040up },
        !          3670: {"move16", 2,  one(0xf610),            one(0xfff8), "as_L", m68040up },
        !          3671: {"move16", 2,  one(0xf618),            one(0xfff8), "_Las", m68040up },
        !          3672: 
        !          3673: {"msacw", 4,   two(0xa080, 0x0100), two(0xf180, 0x0910), "uNuoiI4/Rn", mcfmac },
        !          3674: {"msacw", 4,   two(0xa080, 0x0300), two(0xf180, 0x0910), "uNuoMh4/Rn", mcfmac },
        !          3675: {"msacw", 4,   two(0xa080, 0x0100), two(0xf180, 0x0f10), "uNuo4/Rn", mcfmac },
        !          3676: {"msacw", 4,   two(0xa000, 0x0100), two(0xf1b0, 0x0900), "uMumiI", mcfmac },
        !          3677: {"msacw", 4,   two(0xa000, 0x0300), two(0xf1b0, 0x0900), "uMumMh", mcfmac },
        !          3678: {"msacw", 4,   two(0xa000, 0x0100), two(0xf1b0, 0x0f00), "uMum", mcfmac },
        !          3679: 
        !          3680: {"msacw", 4,   two(0xa000, 0x0100), two(0xf100, 0x0900), "uMumiI4/RneG", mcfemac },/* Ry,Rx,SF,<ea>,accX.  */
        !          3681: {"msacw", 4,   two(0xa000, 0x0300), two(0xf100, 0x0900), "uMumMh4/RneG", mcfemac },/* Ry,Rx,+1/-1,<ea>,accX.  */
        !          3682: {"msacw", 4,   two(0xa000, 0x0100), two(0xf100, 0x0f00), "uMum4/RneG", mcfemac },/* Ry,Rx,<ea>,accX.  */
        !          3683: {"msacw", 4,   two(0xa000, 0x0100), two(0xf130, 0x0900), "uMumiIeH", mcfemac },/* Ry,Rx,SF,accX.  */
        !          3684: {"msacw", 4,   two(0xa000, 0x0300), two(0xf130, 0x0900), "uMumMheH", mcfemac },/* Ry,Rx,+1/-1,accX.  */
        !          3685: {"msacw", 4,   two(0xa000, 0x0100), two(0xf130, 0x0f00), "uMumeH", mcfemac }, /* Ry,Rx,accX.  */
        !          3686: 
        !          3687: {"msacl", 4,   two(0xa080, 0x0900), two(0xf180, 0x0910), "RNRoiI4/Rn", mcfmac },
        !          3688: {"msacl", 4,   two(0xa080, 0x0b00), two(0xf180, 0x0910), "RNRoMh4/Rn", mcfmac },
        !          3689: {"msacl", 4,   two(0xa080, 0x0900), two(0xf180, 0x0f10), "RNRo4/Rn", mcfmac },
        !          3690: {"msacl", 4,   two(0xa000, 0x0900), two(0xf1b0, 0x0b00), "RMRmiI", mcfmac },
        !          3691: {"msacl", 4,   two(0xa000, 0x0b00), two(0xf1b0, 0x0b00), "RMRmMh", mcfmac },
        !          3692: {"msacl", 4,   two(0xa000, 0x0900), two(0xf1b0, 0x0800), "RMRm", mcfmac },
        !          3693: 
        !          3694: {"msacl", 4,   two(0xa000, 0x0900), two(0xf100, 0x0900), "R3R1iI4/RneG", mcfemac },
        !          3695: {"msacl", 4,   two(0xa000, 0x0b00), two(0xf100, 0x0900), "R3R1Mh4/RneG", mcfemac },
        !          3696: {"msacl", 4,   two(0xa000, 0x0900), two(0xf100, 0x0f00), "R3R14/RneG", mcfemac },
        !          3697: {"msacl", 4,   two(0xa000, 0x0900), two(0xf130, 0x0900), "RMRmiIeH", mcfemac },
        !          3698: {"msacl", 4,   two(0xa000, 0x0b00), two(0xf130, 0x0900), "RMRmMheH", mcfemac },
        !          3699: {"msacl", 4,   two(0xa000, 0x0900), two(0xf130, 0x0f00), "RMRmeH", mcfemac },
        !          3700: 
        !          3701: {"mulsw", 2,   one(0140700),           one(0170700), ";wDd", m68000up|mcfisa_a },
        !          3702: {"mulsl", 4,   two(0046000,004000), two(0177700,0107770), ";lD1", m68020up|cpu32 },
        !          3703: {"mulsl", 4,   two(0046000,004000), two(0177700,0107770), "qsD1", mcfisa_a },
        !          3704: {"mulsl", 4,   two(0046000,006000), two(0177700,0107770), ";lD3D1",m68020up|cpu32 },
        !          3705: 
        !          3706: {"muluw", 2,   one(0140300),           one(0170700), ";wDd", m68000up|mcfisa_a },
        !          3707: {"mulul", 4,   two(0046000,000000), two(0177700,0107770), ";lD1", m68020up|cpu32 },
        !          3708: {"mulul", 4,   two(0046000,000000), two(0177700,0107770), "qsD1", mcfisa_a },
        !          3709: {"mulul", 4,   two(0046000,002000), two(0177700,0107770), ";lD3D1",m68020up|cpu32 },
        !          3710: 
        !          3711: {"nbcd", 2,    one(0044000),   one(0177700), "$s", m68000up },
        !          3712: 
        !          3713: {"negb", 2,    one(0042000),   one(0177700), "$s", m68000up },
        !          3714: {"negw", 2,    one(0042100),   one(0177700), "$s", m68000up },
        !          3715: {"negl", 2,    one(0042200),   one(0177700), "$s", m68000up },
        !          3716: {"negl", 2,    one(0042200),   one(0177700), "Ds", mcfisa_a},
        !          3717: 
        !          3718: {"negxb", 2,   one(0040000),   one(0177700), "$s", m68000up },
        !          3719: {"negxw", 2,   one(0040100),   one(0177700), "$s", m68000up },
        !          3720: {"negxl", 2,   one(0040200),   one(0177700), "$s", m68000up },
        !          3721: {"negxl", 2,   one(0040200),   one(0177700), "Ds", mcfisa_a},
        !          3722: 
        !          3723: {"nop", 2,     one(0047161),   one(0177777), "", m68000up | mcfisa_a},
        !          3724: 
        !          3725: {"notb", 2,    one(0043000),   one(0177700), "$s", m68000up },
        !          3726: {"notw", 2,    one(0043100),   one(0177700), "$s", m68000up },
        !          3727: {"notl", 2,    one(0043200),   one(0177700), "$s", m68000up },
        !          3728: {"notl", 2,    one(0043200),   one(0177700), "Ds", mcfisa_a},
        !          3729: 
        !          3730: {"orib", 4,    one(0000000),   one(0177700), "#b$s", m68000up },
        !          3731: {"orib", 4,    one(0000074),   one(0177777), "#bCs", m68000up },
        !          3732: {"oriw", 4,    one(0000100),   one(0177700), "#w$s", m68000up },
        !          3733: {"oriw", 4,    one(0000174),   one(0177777), "#wSs", m68000up },
        !          3734: {"oril", 6,    one(0000200),   one(0177700), "#l$s", m68000up },
        !          3735: {"oril", 6,    one(0000200),   one(0177700), "#lDs", mcfisa_a },
        !          3736: {"ori", 4,     one(0000074),   one(0177777), "#bCs", m68000up },
        !          3737: {"ori", 4,     one(0000100),   one(0177700), "#w$s", m68000up },
        !          3738: {"ori", 4,     one(0000174),   one(0177777), "#wSs", m68000up },
        !          3739: 
        !          3740: /* The or opcode can generate the ori instruction.  */
        !          3741: {"orb", 4,     one(0000000),   one(0177700), "#b$s", m68000up },
        !          3742: {"orb", 4,     one(0000074),   one(0177777), "#bCs", m68000up },
        !          3743: {"orb", 2,     one(0100000),   one(0170700), ";bDd", m68000up },
        !          3744: {"orb", 2,     one(0100400),   one(0170700), "Dd~s", m68000up },
        !          3745: {"orw", 4,     one(0000100),   one(0177700), "#w$s", m68000up },
        !          3746: {"orw", 4,     one(0000174),   one(0177777), "#wSs", m68000up },
        !          3747: {"orw", 2,     one(0100100),   one(0170700), ";wDd", m68000up },
        !          3748: {"orw", 2,     one(0100500),   one(0170700), "Dd~s", m68000up },
        !          3749: {"orl", 6,     one(0000200),   one(0177700), "#l$s", m68000up },
        !          3750: {"orl", 6,     one(0000200),   one(0177700), "#lDs", mcfisa_a },
        !          3751: {"orl", 2,     one(0100200),   one(0170700), ";lDd", m68000up | mcfisa_a },
        !          3752: {"orl", 2,     one(0100600),   one(0170700), "Dd~s", m68000up | mcfisa_a },
        !          3753: {"or", 4,      one(0000074),   one(0177777), "#bCs", m68000up },
        !          3754: {"or", 4,      one(0000100),   one(0177700), "#w$s", m68000up },
        !          3755: {"or", 4,      one(0000174),   one(0177777), "#wSs", m68000up },
        !          3756: {"or", 2,      one(0100100),   one(0170700), ";wDd", m68000up },
        !          3757: {"or", 2,      one(0100500),   one(0170700), "Dd~s", m68000up },
        !          3758: 
        !          3759: {"pack", 4,    one(0100500),   one(0170770), "DsDd#w", m68020up },
        !          3760: {"pack", 4,    one(0100510),   one(0170770), "-s-d#w", m68020up },
        !          3761: 
        !          3762: {"pbac", 2,    one(0xf087),    one(0xffbf), "Bc", m68851 },
        !          3763: {"pbacw", 2,   one(0xf087),    one(0xffff), "BW", m68851 },
        !          3764: {"pbas", 2,    one(0xf086),    one(0xffbf), "Bc", m68851 },
        !          3765: {"pbasw", 2,   one(0xf086),    one(0xffff), "BW", m68851 },
        !          3766: {"pbbc", 2,    one(0xf081),    one(0xffbf), "Bc", m68851 },
        !          3767: {"pbbcw", 2,   one(0xf081),    one(0xffff), "BW", m68851 },
        !          3768: {"pbbs", 2,    one(0xf080),    one(0xffbf), "Bc", m68851 },
        !          3769: {"pbbsw", 2,   one(0xf080),    one(0xffff), "BW", m68851 },
        !          3770: {"pbcc", 2,    one(0xf08f),    one(0xffbf), "Bc", m68851 },
        !          3771: {"pbccw", 2,   one(0xf08f),    one(0xffff), "BW", m68851 },
        !          3772: {"pbcs", 2,    one(0xf08e),    one(0xffbf), "Bc", m68851 },
        !          3773: {"pbcsw", 2,   one(0xf08e),    one(0xffff), "BW", m68851 },
        !          3774: {"pbgc", 2,    one(0xf08d),    one(0xffbf), "Bc", m68851 },
        !          3775: {"pbgcw", 2,   one(0xf08d),    one(0xffff), "BW", m68851 },
        !          3776: {"pbgs", 2,    one(0xf08c),    one(0xffbf), "Bc", m68851 },
        !          3777: {"pbgsw", 2,   one(0xf08c),    one(0xffff), "BW", m68851 },
        !          3778: {"pbic", 2,    one(0xf08b),    one(0xffbf), "Bc", m68851 },
        !          3779: {"pbicw", 2,   one(0xf08b),    one(0xffff), "BW", m68851 },
        !          3780: {"pbis", 2,    one(0xf08a),    one(0xffbf), "Bc", m68851 },
        !          3781: {"pbisw", 2,   one(0xf08a),    one(0xffff), "BW", m68851 },
        !          3782: {"pblc", 2,    one(0xf083),    one(0xffbf), "Bc", m68851 },
        !          3783: {"pblcw", 2,   one(0xf083),    one(0xffff), "BW", m68851 },
        !          3784: {"pbls", 2,    one(0xf082),    one(0xffbf), "Bc", m68851 },
        !          3785: {"pblsw", 2,   one(0xf082),    one(0xffff), "BW", m68851 },
        !          3786: {"pbsc", 2,    one(0xf085),    one(0xffbf), "Bc", m68851 },
        !          3787: {"pbscw", 2,   one(0xf085),    one(0xffff), "BW", m68851 },
        !          3788: {"pbss", 2,    one(0xf084),    one(0xffbf), "Bc", m68851 },
        !          3789: {"pbssw", 2,   one(0xf084),    one(0xffff), "BW", m68851 },
        !          3790: {"pbwc", 2,    one(0xf089),    one(0xffbf), "Bc", m68851 },
        !          3791: {"pbwcw", 2,   one(0xf089),    one(0xffff), "BW", m68851 },
        !          3792: {"pbws", 2,    one(0xf088),    one(0xffbf), "Bc", m68851 },
        !          3793: {"pbwsw", 2,   one(0xf088),    one(0xffff), "BW", m68851 },
        !          3794: 
        !          3795: {"pdbac", 4,   two(0xf048, 0x0007),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3796: {"pdbas", 4,   two(0xf048, 0x0006),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3797: {"pdbbc", 4,   two(0xf048, 0x0001),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3798: {"pdbbs", 4,   two(0xf048, 0x0000),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3799: {"pdbcc", 4,   two(0xf048, 0x000f),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3800: {"pdbcs", 4,   two(0xf048, 0x000e),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3801: {"pdbgc", 4,   two(0xf048, 0x000d),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3802: {"pdbgs", 4,   two(0xf048, 0x000c),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3803: {"pdbic", 4,   two(0xf048, 0x000b),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3804: {"pdbis", 4,   two(0xf048, 0x000a),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3805: {"pdblc", 4,   two(0xf048, 0x0003),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3806: {"pdbls", 4,   two(0xf048, 0x0002),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3807: {"pdbsc", 4,   two(0xf048, 0x0005),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3808: {"pdbss", 4,   two(0xf048, 0x0004),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3809: {"pdbwc", 4,   two(0xf048, 0x0009),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3810: {"pdbws", 4,   two(0xf048, 0x0008),    two(0xfff8, 0xffff), "DsBw", m68851 },
        !          3811: 
        !          3812: {"pea", 2,     one(0044100),           one(0177700), "!s", m68000up|mcfisa_a },
        !          3813: 
        !          3814: {"pflusha", 2, one(0xf518),            one(0xfff8), "", m68040up },
        !          3815: {"pflusha", 4, two(0xf000,0x2400), two(0xffff,0xffff), "", m68030 | m68851 },
        !          3816: 
        !          3817: {"pflush", 4,   two(0xf000,0x3010), two(0xffc0,0xfe10), "T3T9", m68030|m68851 },
        !          3818: {"pflush", 4,   two(0xf000,0x3810), two(0xffc0,0xfe10), "T3T9&s", m68030|m68851 },
        !          3819: {"pflush", 4,   two(0xf000,0x3008), two(0xffc0,0xfe18), "D3T9", m68030|m68851 },
        !          3820: {"pflush", 4,   two(0xf000,0x3808), two(0xffc0,0xfe18), "D3T9&s", m68030|m68851 },
        !          3821: {"pflush", 4,   two(0xf000,0x3000), two(0xffc0,0xfe1e), "f3T9", m68030|m68851 },
        !          3822: {"pflush", 4,   two(0xf000,0x3800), two(0xffc0,0xfe1e), "f3T9&s", m68030|m68851 },
        !          3823: {"pflush", 2,  one(0xf508),            one(0xfff8), "as", m68040up },
        !          3824: {"pflush", 2,  one(0xf508),            one(0xfff8), "As", m68040up },
        !          3825: 
        !          3826: {"pflushan", 2,        one(0xf510),            one(0xfff8), "", m68040up },
        !          3827: {"pflushn", 2, one(0xf500),            one(0xfff8), "as", m68040up },
        !          3828: {"pflushn", 2, one(0xf500),            one(0xfff8), "As", m68040up },
        !          3829: 
        !          3830: {"pflushr", 4, two(0xf000, 0xa000), two(0xffc0, 0xffff), "|s", m68851 },
        !          3831: 
        !          3832: {"pflushs", 4, two(0xf000, 0x3410), two(0xfff8, 0xfe10), "T3T9", m68851 },
        !          3833: {"pflushs", 4, two(0xf000, 0x3c10), two(0xfff8, 0xfe10), "T3T9&s", m68851 },
        !          3834: {"pflushs", 4, two(0xf000, 0x3408), two(0xfff8, 0xfe18), "D3T9", m68851 },
        !          3835: {"pflushs", 4, two(0xf000, 0x3c08), two(0xfff8, 0xfe18), "D3T9&s", m68851 },
        !          3836: {"pflushs", 4, two(0xf000, 0x3400), two(0xfff8, 0xfe1e), "f3T9", m68851 },
        !          3837: {"pflushs", 4, two(0xf000, 0x3c00), two(0xfff8, 0xfe1e), "f3T9&s", m68851 },
        !          3838: 
        !          3839: {"ploadr", 4,   two(0xf000,0x2210), two(0xffc0,0xfff0), "T3&s", m68030|m68851 },
        !          3840: {"ploadr", 4,   two(0xf000,0x2208), two(0xffc0,0xfff8), "D3&s", m68030|m68851 },
        !          3841: {"ploadr", 4,   two(0xf000,0x2200), two(0xffc0,0xfffe), "f3&s", m68030|m68851 },
        !          3842: {"ploadw", 4,   two(0xf000,0x2010), two(0xffc0,0xfff0), "T3&s", m68030|m68851 },
        !          3843: {"ploadw", 4,   two(0xf000,0x2008), two(0xffc0,0xfff8), "D3&s", m68030|m68851 },
        !          3844: {"ploadw", 4,   two(0xf000,0x2000), two(0xffc0,0xfffe), "f3&s", m68030|m68851 },
        !          3845: 
        !          3846: {"plpar", 2,   one(0xf5c8),            one(0xfff8), "as", m68060 },
        !          3847: {"plpaw", 2,   one(0xf588),            one(0xfff8), "as", m68060 },
        !          3848: 
        !          3849: {"pmove", 4,    two(0xf000,0x4000), two(0xffc0,0xffff), "*l08", m68030|m68851 },
        !          3850: {"pmove", 4,    two(0xf000,0x5c00), two(0xffc0,0xffff), "*w18", m68851 },
        !          3851: {"pmove", 4,    two(0xf000,0x4000), two(0xffc0,0xe3ff), "*b28", m68851 },
        !          3852: {"pmove", 4,    two(0xf000,0x4200), two(0xffc0,0xffff), "08%s", m68030|m68851 },
        !          3853: {"pmove", 4,    two(0xf000,0x5e00), two(0xffc0,0xffff), "18%s", m68851 },
        !          3854: {"pmove", 4,    two(0xf000,0x4200), two(0xffc0,0xe3ff), "28%s", m68851 },
        !          3855: {"pmove", 4,    two(0xf000,0x4000), two(0xffc0,0xe3ff), "|sW8", m68030|m68851 },
        !          3856: {"pmove", 4,    two(0xf000,0x4200), two(0xffc0,0xe3ff), "W8~s", m68030|m68851 },
        !          3857: {"pmove", 4,    two(0xf000,0x6200), two(0xffc0,0xe3e3), "*wX3", m68851 },
        !          3858: {"pmove", 4,    two(0xf000,0x6000), two(0xffc0,0xe3e3), "X3%s", m68851 },
        !          3859: {"pmove", 4,    two(0xf000,0x6000), two(0xffc0,0xffff), "*wY8", m68030|m68851 },
        !          3860: {"pmove", 4,    two(0xf000,0x6200), two(0xffc0,0xffff), "Y8%s", m68030|m68851 },
        !          3861: {"pmove", 4,    two(0xf000,0x6600), two(0xffc0,0xffff), "Z8%s", m68851 },
        !          3862: {"pmove", 4,    two(0xf000,0x0800), two(0xffc0,0xfbff), "*l38", m68030 },
        !          3863: {"pmove", 4,    two(0xf000,0x0a00), two(0xffc0,0xfbff), "38%s", m68030 },
        !          3864: 
        !          3865: {"pmovefd", 4, two(0xf000, 0x4100),    two(0xffc0, 0xe3ff), "*l08", m68030 },
        !          3866: {"pmovefd", 4, two(0xf000, 0x4100),    two(0xffc0, 0xe3ff), "|sW8", m68030 },
        !          3867: {"pmovefd", 4, two(0xf000, 0x0900),    two(0xffc0, 0xfbff), "*l38", m68030 },
        !          3868: 
        !          3869: {"prestore", 2,        one(0xf140),            one(0xffc0), "<s", m68851 },
        !          3870: 
        !          3871: {"psave", 2,   one(0xf100),            one(0xffc0), ">s", m68851 },
        !          3872: 
        !          3873: {"psac", 4,    two(0xf040, 0x0007),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3874: {"psas", 4,    two(0xf040, 0x0006),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3875: {"psbc", 4,    two(0xf040, 0x0001),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3876: {"psbs", 4,    two(0xf040, 0x0000),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3877: {"pscc", 4,    two(0xf040, 0x000f),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3878: {"pscs", 4,    two(0xf040, 0x000e),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3879: {"psgc", 4,    two(0xf040, 0x000d),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3880: {"psgs", 4,    two(0xf040, 0x000c),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3881: {"psic", 4,    two(0xf040, 0x000b),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3882: {"psis", 4,    two(0xf040, 0x000a),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3883: {"pslc", 4,    two(0xf040, 0x0003),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3884: {"psls", 4,    two(0xf040, 0x0002),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3885: {"pssc", 4,    two(0xf040, 0x0005),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3886: {"psss", 4,    two(0xf040, 0x0004),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3887: {"pswc", 4,    two(0xf040, 0x0009),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3888: {"psws", 4,    two(0xf040, 0x0008),    two(0xffc0, 0xffff), "$s", m68851 },
        !          3889: 
        !          3890: {"ptestr", 4,  two(0xf000,0x8210), two(0xffc0, 0xe3f0), "T3&st8", m68030|m68851 },
        !          3891: {"ptestr", 4,  two(0xf000,0x8310), two(0xffc0,0xe310), "T3&st8A9", m68030|m68851 },
        !          3892: {"ptestr", 4,  two(0xf000,0x8208), two(0xffc0,0xe3f8), "D3&st8", m68030|m68851 },
        !          3893: {"ptestr", 4,  two(0xf000,0x8308), two(0xffc0,0xe318), "D3&st8A9", m68030|m68851 },
        !          3894: {"ptestr", 4,  two(0xf000,0x8200), two(0xffc0,0xe3fe), "f3&st8", m68030|m68851 },
        !          3895: {"ptestr", 4,  two(0xf000,0x8300), two(0xffc0,0xe31e), "f3&st8A9", m68030|m68851 },
        !          3896: {"ptestr", 2,  one(0xf568),            one(0xfff8), "as", m68040 },
        !          3897: 
        !          3898: {"ptestw", 4,  two(0xf000,0x8010), two(0xffc0,0xe3f0), "T3&st8", m68030|m68851 },
        !          3899: {"ptestw", 4,  two(0xf000,0x8110), two(0xffc0,0xe310), "T3&st8A9", m68030|m68851 },
        !          3900: {"ptestw", 4,  two(0xf000,0x8008), two(0xffc0,0xe3f8), "D3&st8", m68030|m68851 },
        !          3901: {"ptestw", 4,  two(0xf000,0x8108), two(0xffc0,0xe318), "D3&st8A9", m68030|m68851 },
        !          3902: {"ptestw", 4,  two(0xf000,0x8000), two(0xffc0,0xe3fe), "f3&st8", m68030|m68851 },
        !          3903: {"ptestw", 4,  two(0xf000,0x8100), two(0xffc0,0xe31e), "f3&st8A9", m68030|m68851 },
        !          3904: {"ptestw", 2,  one(0xf548),            one(0xfff8), "as", m68040 },
        !          3905: 
        !          3906: {"ptrapacw", 6,        two(0xf07a, 0x0007),    two(0xffff, 0xffff), "#w", m68851 },
        !          3907: {"ptrapacl", 6,        two(0xf07b, 0x0007),    two(0xffff, 0xffff), "#l", m68851 },
        !          3908: {"ptrapac", 4, two(0xf07c, 0x0007),    two(0xffff, 0xffff), "",   m68851 },
        !          3909: 
        !          3910: {"ptrapasw", 6,        two(0xf07a, 0x0006),    two(0xffff, 0xffff), "#w", m68851 },
        !          3911: {"ptrapasl", 6,        two(0xf07b, 0x0006),    two(0xffff, 0xffff), "#l", m68851 },
        !          3912: {"ptrapas", 4, two(0xf07c, 0x0006),    two(0xffff, 0xffff), "",   m68851 },
        !          3913: 
        !          3914: {"ptrapbcw", 6,        two(0xf07a, 0x0001),    two(0xffff, 0xffff), "#w", m68851 },
        !          3915: {"ptrapbcl", 6,        two(0xf07b, 0x0001),    two(0xffff, 0xffff), "#l", m68851 },
        !          3916: {"ptrapbc", 4, two(0xf07c, 0x0001),    two(0xffff, 0xffff), "",   m68851 },
        !          3917: 
        !          3918: {"ptrapbsw", 6,        two(0xf07a, 0x0000),    two(0xffff, 0xffff), "#w", m68851 },
        !          3919: {"ptrapbsl", 6,        two(0xf07b, 0x0000),    two(0xffff, 0xffff), "#l", m68851 },
        !          3920: {"ptrapbs", 4, two(0xf07c, 0x0000),    two(0xffff, 0xffff), "",   m68851 },
        !          3921: 
        !          3922: {"ptrapccw", 6,        two(0xf07a, 0x000f),    two(0xffff, 0xffff), "#w", m68851 },
        !          3923: {"ptrapccl", 6,        two(0xf07b, 0x000f),    two(0xffff, 0xffff), "#l", m68851 },
        !          3924: {"ptrapcc", 4, two(0xf07c, 0x000f),    two(0xffff, 0xffff), "",   m68851 },
        !          3925: 
        !          3926: {"ptrapcsw", 6,        two(0xf07a, 0x000e),    two(0xffff, 0xffff), "#w", m68851 },
        !          3927: {"ptrapcsl", 6,        two(0xf07b, 0x000e),    two(0xffff, 0xffff), "#l", m68851 },
        !          3928: {"ptrapcs", 4, two(0xf07c, 0x000e),    two(0xffff, 0xffff), "",   m68851 },
        !          3929: 
        !          3930: {"ptrapgcw", 6,        two(0xf07a, 0x000d),    two(0xffff, 0xffff), "#w", m68851 },
        !          3931: {"ptrapgcl", 6,        two(0xf07b, 0x000d),    two(0xffff, 0xffff), "#l", m68851 },
        !          3932: {"ptrapgc", 4, two(0xf07c, 0x000d),    two(0xffff, 0xffff), "",   m68851 },
        !          3933: 
        !          3934: {"ptrapgsw", 6,        two(0xf07a, 0x000c),    two(0xffff, 0xffff), "#w", m68851 },
        !          3935: {"ptrapgsl", 6,        two(0xf07b, 0x000c),    two(0xffff, 0xffff), "#l", m68851 },
        !          3936: {"ptrapgs", 4, two(0xf07c, 0x000c),    two(0xffff, 0xffff), "",   m68851 },
        !          3937: 
        !          3938: {"ptrapicw", 6,        two(0xf07a, 0x000b),    two(0xffff, 0xffff), "#w", m68851 },
        !          3939: {"ptrapicl", 6,        two(0xf07b, 0x000b),    two(0xffff, 0xffff), "#l", m68851 },
        !          3940: {"ptrapic", 4, two(0xf07c, 0x000b),    two(0xffff, 0xffff), "",   m68851 },
        !          3941: 
        !          3942: {"ptrapisw", 6,        two(0xf07a, 0x000a),    two(0xffff, 0xffff), "#w", m68851 },
        !          3943: {"ptrapisl", 6,        two(0xf07b, 0x000a),    two(0xffff, 0xffff), "#l", m68851 },
        !          3944: {"ptrapis", 4, two(0xf07c, 0x000a),    two(0xffff, 0xffff), "",   m68851 },
        !          3945: 
        !          3946: {"ptraplcw", 6,        two(0xf07a, 0x0003),    two(0xffff, 0xffff), "#w", m68851 },
        !          3947: {"ptraplcl", 6,        two(0xf07b, 0x0003),    two(0xffff, 0xffff), "#l", m68851 },
        !          3948: {"ptraplc", 4, two(0xf07c, 0x0003),    two(0xffff, 0xffff), "",   m68851 },
        !          3949: 
        !          3950: {"ptraplsw", 6,        two(0xf07a, 0x0002),    two(0xffff, 0xffff), "#w", m68851 },
        !          3951: {"ptraplsl", 6,        two(0xf07b, 0x0002),    two(0xffff, 0xffff), "#l", m68851 },
        !          3952: {"ptrapls", 4, two(0xf07c, 0x0002),    two(0xffff, 0xffff), "",   m68851 },
        !          3953: 
        !          3954: {"ptrapscw", 6,        two(0xf07a, 0x0005),    two(0xffff, 0xffff), "#w", m68851 },
        !          3955: {"ptrapscl", 6,        two(0xf07b, 0x0005),    two(0xffff, 0xffff), "#l", m68851 },
        !          3956: {"ptrapsc", 4, two(0xf07c, 0x0005),    two(0xffff, 0xffff), "",   m68851 },
        !          3957: 
        !          3958: {"ptrapssw", 6,        two(0xf07a, 0x0004),    two(0xffff, 0xffff), "#w", m68851 },
        !          3959: {"ptrapssl", 6,        two(0xf07b, 0x0004),    two(0xffff, 0xffff), "#l", m68851 },
        !          3960: {"ptrapss", 4, two(0xf07c, 0x0004),    two(0xffff, 0xffff), "",   m68851 },
        !          3961: 
        !          3962: {"ptrapwcw", 6,        two(0xf07a, 0x0009),    two(0xffff, 0xffff), "#w", m68851 },
        !          3963: {"ptrapwcl", 6,        two(0xf07b, 0x0009),    two(0xffff, 0xffff), "#l", m68851 },
        !          3964: {"ptrapwc", 4, two(0xf07c, 0x0009),    two(0xffff, 0xffff), "",   m68851 },
        !          3965: 
        !          3966: {"ptrapwsw", 6,        two(0xf07a, 0x0008),    two(0xffff, 0xffff), "#w", m68851 },
        !          3967: {"ptrapwsl", 6,        two(0xf07b, 0x0008),    two(0xffff, 0xffff), "#l", m68851 },
        !          3968: {"ptrapws", 4, two(0xf07c, 0x0008),    two(0xffff, 0xffff), "",   m68851 },
        !          3969: 
        !          3970: {"pulse", 2,   one(0045314),           one(0177777), "", m68060 | mcfisa_a },
        !          3971: 
        !          3972: {"pvalid", 4,  two(0xf000, 0x2800),    two(0xffc0, 0xffff), "Vs&s", m68851 },
        !          3973: {"pvalid", 4,  two(0xf000, 0x2c00),    two(0xffc0, 0xfff8), "A3&s", m68851 },
        !          3974: 
        !          3975:   /* FIXME: don't allow Dw==Dx. */
        !          3976: {"remsl", 4,    two(0x4c40, 0x0800),    two(0xffc0, 0x8ff8), "qsD3D1", mcfhwdiv },
        !          3977: {"remul", 4,    two(0x4c40, 0x0000),    two(0xffc0, 0x8ff8), "qsD3D1", mcfhwdiv },
        !          3978: 
        !          3979: {"reset", 2,   one(0047160),           one(0177777), "", m68000up },
        !          3980: 
        !          3981: {"rolb", 2,    one(0160430),           one(0170770), "QdDs", m68000up },
        !          3982: {"rolb", 2,    one(0160470),           one(0170770), "DdDs", m68000up },
        !          3983: {"rolw", 2,    one(0160530),           one(0170770), "QdDs", m68000up },
        !          3984: {"rolw", 2,    one(0160570),           one(0170770), "DdDs", m68000up },
        !          3985: {"rolw", 2,    one(0163700),           one(0177700), "~s",   m68000up },
        !          3986: {"roll", 2,    one(0160630),           one(0170770), "QdDs", m68000up },
        !          3987: {"roll", 2,    one(0160670),           one(0170770), "DdDs", m68000up },
        !          3988: 
        !          3989: {"rorb", 2,    one(0160030),           one(0170770), "QdDs", m68000up },
        !          3990: {"rorb", 2,    one(0160070),           one(0170770), "DdDs", m68000up },
        !          3991: {"rorw", 2,    one(0160130),           one(0170770), "QdDs", m68000up },
        !          3992: {"rorw", 2,    one(0160170),           one(0170770), "DdDs", m68000up },
        !          3993: {"rorw", 2,    one(0163300),           one(0177700), "~s",   m68000up },
        !          3994: {"rorl", 2,    one(0160230),           one(0170770), "QdDs", m68000up },
        !          3995: {"rorl", 2,    one(0160270),           one(0170770), "DdDs", m68000up },
        !          3996: 
        !          3997: {"roxlb", 2,   one(0160420),           one(0170770), "QdDs", m68000up },
        !          3998: {"roxlb", 2,   one(0160460),           one(0170770), "DdDs", m68000up },
        !          3999: {"roxlw", 2,   one(0160520),           one(0170770), "QdDs", m68000up },
        !          4000: {"roxlw", 2,   one(0160560),           one(0170770), "DdDs", m68000up },
        !          4001: {"roxlw", 2,   one(0162700),           one(0177700), "~s",   m68000up },
        !          4002: {"roxll", 2,   one(0160620),           one(0170770), "QdDs", m68000up },
        !          4003: {"roxll", 2,   one(0160660),           one(0170770), "DdDs", m68000up },
        !          4004: 
        !          4005: {"roxrb", 2,   one(0160020),           one(0170770), "QdDs", m68000up },
        !          4006: {"roxrb", 2,   one(0160060),           one(0170770), "DdDs", m68000up },
        !          4007: {"roxrw", 2,   one(0160120),           one(0170770), "QdDs", m68000up },
        !          4008: {"roxrw", 2,   one(0160160),           one(0170770), "DdDs", m68000up },
        !          4009: {"roxrw", 2,   one(0162300),           one(0177700), "~s",   m68000up },
        !          4010: {"roxrl", 2,   one(0160220),           one(0170770), "QdDs", m68000up },
        !          4011: {"roxrl", 2,   one(0160260),           one(0170770), "DdDs", m68000up },
        !          4012: 
        !          4013: {"rtd", 4,     one(0047164),           one(0177777), "#w", m68010up },
        !          4014:                
        !          4015: {"rte", 2,     one(0047163),           one(0177777), "",   m68000up | mcfisa_a },
        !          4016:                
        !          4017: {"rtm", 2,     one(0003300),           one(0177760), "Rs", m68020 },
        !          4018:                
        !          4019: {"rtr", 2,     one(0047167),           one(0177777), "",   m68000up },
        !          4020:                
        !          4021: {"rts", 2,     one(0047165),           one(0177777), "",   m68000up | mcfisa_a },
        !          4022: 
        !          4023: {"satsl", 2,   one(0046200),           one(0177770), "Ds", mcfisa_b },
        !          4024: 
        !          4025: {"sbcd", 2,    one(0100400),           one(0170770), "DsDd", m68000up },
        !          4026: {"sbcd", 2,    one(0100410),           one(0170770), "-s-d", m68000up },
        !          4027: 
        !          4028: {"scc", 2,     one(0052300),   one(0177700), "$s", m68000up },
        !          4029: {"scc", 2,     one(0052300),   one(0177700), "Ds", mcfisa_a },
        !          4030: {"scs", 2,     one(0052700),   one(0177700), "$s", m68000up },
        !          4031: {"scs", 2,     one(0052700),   one(0177700), "Ds", mcfisa_a },
        !          4032: {"seq", 2,     one(0053700),   one(0177700), "$s", m68000up },
        !          4033: {"seq", 2,     one(0053700),   one(0177700), "Ds", mcfisa_a },
        !          4034: {"sf", 2,      one(0050700),   one(0177700), "$s", m68000up },
        !          4035: {"sf", 2,      one(0050700),   one(0177700), "Ds", mcfisa_a },
        !          4036: {"sge", 2,     one(0056300),   one(0177700), "$s", m68000up },
        !          4037: {"sge", 2,     one(0056300),   one(0177700), "Ds", mcfisa_a },
        !          4038: {"sgt", 2,     one(0057300),   one(0177700), "$s", m68000up },
        !          4039: {"sgt", 2,     one(0057300),   one(0177700), "Ds", mcfisa_a },
        !          4040: {"shi", 2,     one(0051300),   one(0177700), "$s", m68000up },
        !          4041: {"shi", 2,     one(0051300),   one(0177700), "Ds", mcfisa_a },
        !          4042: {"sle", 2,     one(0057700),   one(0177700), "$s", m68000up },
        !          4043: {"sle", 2,     one(0057700),   one(0177700), "Ds", mcfisa_a },
        !          4044: {"sls", 2,     one(0051700),   one(0177700), "$s", m68000up },
        !          4045: {"sls", 2,     one(0051700),   one(0177700), "Ds", mcfisa_a },
        !          4046: {"slt", 2,     one(0056700),   one(0177700), "$s", m68000up },
        !          4047: {"slt", 2,     one(0056700),   one(0177700), "Ds", mcfisa_a },
        !          4048: {"smi", 2,     one(0055700),   one(0177700), "$s", m68000up },
        !          4049: {"smi", 2,     one(0055700),   one(0177700), "Ds", mcfisa_a },
        !          4050: {"sne", 2,     one(0053300),   one(0177700), "$s", m68000up },
        !          4051: {"sne", 2,     one(0053300),   one(0177700), "Ds", mcfisa_a },
        !          4052: {"spl", 2,     one(0055300),   one(0177700), "$s", m68000up },
        !          4053: {"spl", 2,     one(0055300),   one(0177700), "Ds", mcfisa_a },
        !          4054: {"st", 2,      one(0050300),   one(0177700), "$s", m68000up },
        !          4055: {"st", 2,      one(0050300),   one(0177700), "Ds", mcfisa_a },
        !          4056: {"svc", 2,     one(0054300),   one(0177700), "$s", m68000up },
        !          4057: {"svc", 2,     one(0054300),   one(0177700), "Ds", mcfisa_a },
        !          4058: {"svs", 2,     one(0054700),   one(0177700), "$s", m68000up },
        !          4059: {"svs", 2,     one(0054700),   one(0177700), "Ds", mcfisa_a },
        !          4060: 
        !          4061: {"stop", 4,    one(0047162),   one(0177777), "#w", m68000up | mcfisa_a },
        !          4062: 
        !          4063: {"strldsr", 4, two(0040347,0043374), two(0177777,0177777), "#w", mcfisa_aa},
        !          4064: 
        !          4065: {"subal", 2,   one(0110700),   one(0170700), "*lAd", m68000up | mcfisa_a },
        !          4066: {"subaw", 2,   one(0110300),   one(0170700), "*wAd", m68000up },
        !          4067: 
        !          4068: {"subib", 4,   one(0002000),   one(0177700), "#b$s", m68000up },
        !          4069: {"subiw", 4,   one(0002100),   one(0177700), "#w$s", m68000up },
        !          4070: {"subil", 6,   one(0002200),   one(0177700), "#l$s", m68000up },
        !          4071: {"subil", 6,   one(0002200),   one(0177700), "#lDs", mcfisa_a },
        !          4072: 
        !          4073: {"subqb", 2,   one(0050400),   one(0170700), "Qd%s", m68000up },
        !          4074: {"subqw", 2,   one(0050500),   one(0170700), "Qd%s", m68000up },
        !          4075: {"subql", 2,   one(0050600),   one(0170700), "Qd%s", m68000up | mcfisa_a },
        !          4076: 
        !          4077: /* The sub opcode can generate the suba, subi, and subq instructions.  */
        !          4078: {"subb", 2,    one(0050400),   one(0170700), "Qd%s", m68000up },
        !          4079: {"subb", 4,    one(0002000),   one(0177700), "#b$s", m68000up },
        !          4080: {"subb", 2,    one(0110000),   one(0170700), ";bDd", m68000up },
        !          4081: {"subb", 2,    one(0110400),   one(0170700), "Dd~s", m68000up },
        !          4082: {"subw", 2,    one(0050500),   one(0170700), "Qd%s", m68000up },
        !          4083: {"subw", 4,    one(0002100),   one(0177700), "#w$s", m68000up },
        !          4084: {"subw", 2,    one(0110300),   one(0170700), "*wAd", m68000up },
        !          4085: {"subw", 2,    one(0110100),   one(0170700), "*wDd", m68000up },
        !          4086: {"subw", 2,    one(0110500),   one(0170700), "Dd~s", m68000up },
        !          4087: {"subl", 2,    one(0050600),   one(0170700), "Qd%s", m68000up | mcfisa_a },
        !          4088: {"subl", 6,    one(0002200),   one(0177700), "#l$s", m68000up },
        !          4089: {"subl", 6,    one(0002200),   one(0177700), "#lDs", mcfisa_a },
        !          4090: {"subl", 2,    one(0110700),   one(0170700), "*lAd", m68000up | mcfisa_a },
        !          4091: {"subl", 2,    one(0110200),   one(0170700), "*lDd", m68000up | mcfisa_a },
        !          4092: {"subl", 2,    one(0110600),   one(0170700), "Dd~s", m68000up | mcfisa_a },
        !          4093: 
        !          4094: {"subxb", 2,   one(0110400),   one(0170770), "DsDd", m68000up },
        !          4095: {"subxb", 2,   one(0110410),   one(0170770), "-s-d", m68000up },
        !          4096: {"subxw", 2,   one(0110500),   one(0170770), "DsDd", m68000up },
        !          4097: {"subxw", 2,   one(0110510),   one(0170770), "-s-d", m68000up },
        !          4098: {"subxl", 2,   one(0110600),   one(0170770), "DsDd", m68000up | mcfisa_a },
        !          4099: {"subxl", 2,   one(0110610),   one(0170770), "-s-d", m68000up },
        !          4100: 
        !          4101: {"swap", 2,    one(0044100),   one(0177770), "Ds", m68000up | mcfisa_a },
        !          4102: 
        !          4103: /* swbeg and swbegl are magic constants used on sysV68.  The compiler
        !          4104:    generates them before a switch table.  They tell the debugger and
        !          4105:    disassembler that a switch table follows.  The parameter is the
        !          4106:    number of elements in the table.  swbeg means that the entries in
        !          4107:    the table are word (2 byte) sized, and swbegl means that the
        !          4108:    entries in the table are longword (4 byte) sized.  */
        !          4109: {"swbeg", 4,   one(0045374),   one(0177777), "#w",   m68000up | mcfisa_a },
        !          4110: {"swbegl", 6,  one(0045375),   one(0177777), "#l",   m68000up | mcfisa_a },
        !          4111: 
        !          4112: {"tas", 2,     one(0045300),   one(0177700), "$s", m68000up | mcfisa_b},
        !          4113: 
        !          4114: #define TBL1(name,insn_size,signed,round,size)                                 \
        !          4115:   {name, insn_size, two(0174000, (signed<<11)|(!round<<10)|(size<<6)|0000400), \
        !          4116:      two(0177700,0107777), "!sD1", cpu32 },                            \
        !          4117:   {name, insn_size, two(0174000, (signed<<11)|(!round<<10)|(size<<6)),         \
        !          4118:      two(0177770,0107770), "DsD3D1", cpu32 }
        !          4119: #define TBL(name1, name2, name3, s, r) \
        !          4120:   TBL1(name1, 4, s, r, 0), TBL1(name2, 4, s, r, 1), TBL1(name3, 4, s, r, 2)
        !          4121: TBL("tblsb", "tblsw", "tblsl", 2, 1),
        !          4122: TBL("tblsnb", "tblsnw", "tblsnl", 2, 0),
        !          4123: TBL("tblub", "tbluw", "tblul", 0, 1),
        !          4124: TBL("tblunb", "tblunw", "tblunl", 0, 0),
        !          4125: 
        !          4126: {"trap", 2,    one(0047100),   one(0177760), "Ts", m68000up | mcfisa_a },
        !          4127: 
        !          4128: {"trapcc", 2,  one(0052374),   one(0177777), "", m68020up | cpu32 },
        !          4129: {"trapcs", 2,  one(0052774),   one(0177777), "", m68020up | cpu32 },
        !          4130: {"trapeq", 2,  one(0053774),   one(0177777), "", m68020up | cpu32 },
        !          4131: {"trapf", 2,   one(0050774),   one(0177777), "", m68020up | cpu32 | mcfisa_a },
        !          4132: {"trapge", 2,  one(0056374),   one(0177777), "", m68020up | cpu32 },
        !          4133: {"trapgt", 2,  one(0057374),   one(0177777), "", m68020up | cpu32 },
        !          4134: {"traphi", 2,  one(0051374),   one(0177777), "", m68020up | cpu32 },
        !          4135: {"traple", 2,  one(0057774),   one(0177777), "", m68020up | cpu32 },
        !          4136: {"trapls", 2,  one(0051774),   one(0177777), "", m68020up | cpu32 },
        !          4137: {"traplt", 2,  one(0056774),   one(0177777), "", m68020up | cpu32 },
        !          4138: {"trapmi", 2,  one(0055774),   one(0177777), "", m68020up | cpu32 },
        !          4139: {"trapne", 2,  one(0053374),   one(0177777), "", m68020up | cpu32 },
        !          4140: {"trappl", 2,  one(0055374),   one(0177777), "", m68020up | cpu32 },
        !          4141: {"trapt", 2,   one(0050374),   one(0177777), "", m68020up | cpu32 },
        !          4142: {"trapvc", 2,  one(0054374),   one(0177777), "", m68020up | cpu32 },
        !          4143: {"trapvs", 2,  one(0054774),   one(0177777), "", m68020up | cpu32 },
        !          4144: 
        !          4145: {"trapccw", 4, one(0052372),   one(0177777), "#w", m68020up|cpu32 },
        !          4146: {"trapcsw", 4, one(0052772),   one(0177777), "#w", m68020up|cpu32 },
        !          4147: {"trapeqw", 4, one(0053772),   one(0177777), "#w", m68020up|cpu32 },
        !          4148: {"trapfw", 4,  one(0050772),   one(0177777), "#w", m68020up|cpu32|mcfisa_a},
        !          4149: {"trapgew", 4, one(0056372),   one(0177777), "#w", m68020up|cpu32 },
        !          4150: {"trapgtw", 4, one(0057372),   one(0177777), "#w", m68020up|cpu32 },
        !          4151: {"traphiw", 4, one(0051372),   one(0177777), "#w", m68020up|cpu32 },
        !          4152: {"traplew", 4, one(0057772),   one(0177777), "#w", m68020up|cpu32 },
        !          4153: {"traplsw", 4, one(0051772),   one(0177777), "#w", m68020up|cpu32 },
        !          4154: {"trapltw", 4, one(0056772),   one(0177777), "#w", m68020up|cpu32 },
        !          4155: {"trapmiw", 4, one(0055772),   one(0177777), "#w", m68020up|cpu32 },
        !          4156: {"trapnew", 4, one(0053372),   one(0177777), "#w", m68020up|cpu32 },
        !          4157: {"trapplw", 4, one(0055372),   one(0177777), "#w", m68020up|cpu32 },
        !          4158: {"traptw", 4,  one(0050372),   one(0177777), "#w", m68020up|cpu32 },
        !          4159: {"trapvcw", 4, one(0054372),   one(0177777), "#w", m68020up|cpu32 },
        !          4160: {"trapvsw", 4, one(0054772),   one(0177777), "#w", m68020up|cpu32 },
        !          4161: 
        !          4162: {"trapccl", 6, one(0052373),   one(0177777), "#l", m68020up|cpu32 },
        !          4163: {"trapcsl", 6, one(0052773),   one(0177777), "#l", m68020up|cpu32 },
        !          4164: {"trapeql", 6, one(0053773),   one(0177777), "#l", m68020up|cpu32 },
        !          4165: {"trapfl", 6,  one(0050773),   one(0177777), "#l", m68020up|cpu32|mcfisa_a},
        !          4166: {"trapgel", 6, one(0056373),   one(0177777), "#l", m68020up|cpu32 },
        !          4167: {"trapgtl", 6, one(0057373),   one(0177777), "#l", m68020up|cpu32 },
        !          4168: {"traphil", 6, one(0051373),   one(0177777), "#l", m68020up|cpu32 },
        !          4169: {"traplel", 6, one(0057773),   one(0177777), "#l", m68020up|cpu32 },
        !          4170: {"traplsl", 6, one(0051773),   one(0177777), "#l", m68020up|cpu32 },
        !          4171: {"trapltl", 6, one(0056773),   one(0177777), "#l", m68020up|cpu32 },
        !          4172: {"trapmil", 6, one(0055773),   one(0177777), "#l", m68020up|cpu32 },
        !          4173: {"trapnel", 6, one(0053373),   one(0177777), "#l", m68020up|cpu32 },
        !          4174: {"trappll", 6, one(0055373),   one(0177777), "#l", m68020up|cpu32 },
        !          4175: {"traptl", 6,  one(0050373),   one(0177777), "#l", m68020up|cpu32 },
        !          4176: {"trapvcl", 6, one(0054373),   one(0177777), "#l", m68020up|cpu32 },
        !          4177: {"trapvsl", 6, one(0054773),   one(0177777), "#l", m68020up|cpu32 },
        !          4178: 
        !          4179: {"trapv", 2,   one(0047166),   one(0177777), "", m68000up },
        !          4180: 
        !          4181: {"tstb", 2,    one(0045000),   one(0177700), ";b", m68020up|cpu32|mcfisa_a },
        !          4182: {"tstb", 2,    one(0045000),   one(0177700), "$b", m68000up },
        !          4183: {"tstw", 2,    one(0045100),   one(0177700), "*w", m68020up|cpu32|mcfisa_a },
        !          4184: {"tstw", 2,    one(0045100),   one(0177700), "$w", m68000up },
        !          4185: {"tstl", 2,    one(0045200),   one(0177700), "*l", m68020up|cpu32|mcfisa_a },
        !          4186: {"tstl", 2,    one(0045200),   one(0177700), "$l", m68000up },
        !          4187: 
        !          4188: {"unlk", 2,    one(0047130),   one(0177770), "As", m68000up | mcfisa_a },
        !          4189: 
        !          4190: {"unpk", 4,    one(0100600),   one(0170770), "DsDd#w", m68020up },
        !          4191: {"unpk", 4,    one(0100610),   one(0170770), "-s-d#w", m68020up },
        !          4192: 
        !          4193: {"wddatab", 2, one(0175400),   one(0177700), "~s", mcfisa_a },
        !          4194: {"wddataw", 2, one(0175500),   one(0177700), "~s", mcfisa_a },
        !          4195: {"wddatal", 2, one(0175600),   one(0177700), "~s", mcfisa_a },
        !          4196: 
        !          4197: {"wdebug", 4,  two(0175720, 03),       two(0177770, 0xffff), "as", mcfisa_a },
        !          4198: {"wdebug", 4,  two(0175750, 03),       two(0177770, 0xffff), "ds", mcfisa_a },
        !          4199: };
        !          4200: 
        !          4201: const int m68k_numopcodes = sizeof m68k_opcodes / sizeof m68k_opcodes[0];
        !          4202: 
        !          4203: /* These aliases used to be in the above table, each one duplicating
        !          4204:    all of the entries for its primary exactly.  This table was
        !          4205:    constructed by mechanical processing of the opcode table, with a
        !          4206:    small number of tweaks done by hand.  There are probably a lot more
        !          4207:    aliases above that could be moved down here, except for very minor
        !          4208:    differences.  */
        !          4209: 
        !          4210: const struct m68k_opcode_alias m68k_opcode_aliases[] =
        !          4211: {
        !          4212:   { "add",     "addw", },
        !          4213:   { "adda",    "addaw", },
        !          4214:   { "addi",    "addiw", },
        !          4215:   { "addq",    "addqw", },
        !          4216:   { "addx",    "addxw", },
        !          4217:   { "asl",     "aslw", },
        !          4218:   { "asr",     "asrw", },
        !          4219:   { "bhi",     "bhiw", },
        !          4220:   { "bls",     "blsw", },
        !          4221:   { "bcc",     "bccw", },
        !          4222:   { "bcs",     "bcsw", },
        !          4223:   { "bne",     "bnew", },
        !          4224:   { "beq",     "beqw", },
        !          4225:   { "bvc",     "bvcw", },
        !          4226:   { "bvs",     "bvsw", },
        !          4227:   { "bpl",     "bplw", },
        !          4228:   { "bmi",     "bmiw", },
        !          4229:   { "bge",     "bgew", },
        !          4230:   { "blt",     "bltw", },
        !          4231:   { "bgt",     "bgtw", },
        !          4232:   { "ble",     "blew", },
        !          4233:   { "bra",     "braw", },
        !          4234:   { "bsr",     "bsrw", },
        !          4235:   { "bhib",    "bhis", },
        !          4236:   { "blsb",    "blss", },
        !          4237:   { "bccb",    "bccs", },
        !          4238:   { "bcsb",    "bcss", },
        !          4239:   { "bneb",    "bnes", },
        !          4240:   { "beqb",    "beqs", },
        !          4241:   { "bvcb",    "bvcs", },
        !          4242:   { "bvsb",    "bvss", },
        !          4243:   { "bplb",    "bpls", },
        !          4244:   { "bmib",    "bmis", },
        !          4245:   { "bgeb",    "bges", },
        !          4246:   { "bltb",    "blts", },
        !          4247:   { "bgtb",    "bgts", },
        !          4248:   { "bleb",    "bles", },
        !          4249:   { "brab",    "bras", },
        !          4250:   { "bsrb",    "bsrs", },
        !          4251:   { "bhs",     "bccw" },
        !          4252:   { "bhss",    "bccs" },
        !          4253:   { "bhsb",    "bccs" },
        !          4254:   { "bhsw",    "bccw" },
        !          4255:   { "bhsl",    "bccl" },
        !          4256:   { "blo",     "bcsw" },
        !          4257:   { "blos",    "bcss" },
        !          4258:   { "blob",    "bcss" },
        !          4259:   { "blow",    "bcsw" },
        !          4260:   { "blol",    "bcsl" },
        !          4261:   { "br",      "braw", },
        !          4262:   { "brs",     "bras", },
        !          4263:   { "brb",     "bras", },
        !          4264:   { "brw",     "braw", },
        !          4265:   { "brl",     "bral", },
        !          4266:   { "jfnlt",   "bcc", },       /* Apparently a sun alias.  */
        !          4267:   { "jfngt",   "ble", },       /* Apparently a sun alias.  */
        !          4268:   { "jfeq",    "beqs", },      /* Apparently a sun alias.  */
        !          4269:   { "bchgb",   "bchg", },
        !          4270:   { "bchgl",   "bchg", },
        !          4271:   { "bclrb",   "bclr", },
        !          4272:   { "bclrl",   "bclr", },
        !          4273:   { "bsetb",   "bset", },
        !          4274:   { "bsetl",   "bset", },
        !          4275:   { "btstb",   "btst", },
        !          4276:   { "btstl",   "btst", },
        !          4277:   { "cas2",    "cas2w", },
        !          4278:   { "cas",     "casw", },
        !          4279:   { "chk2",    "chk2w", },
        !          4280:   { "chk",     "chkw", },
        !          4281:   { "clr",     "clrw", },
        !          4282:   { "cmp2",    "cmp2w", },
        !          4283:   { "cmpa",    "cmpaw", },
        !          4284:   { "cmpi",    "cmpiw", },
        !          4285:   { "cmpm",    "cmpmw", },
        !          4286:   { "cmp",     "cmpw", },
        !          4287:   { "dbccw",   "dbcc", },
        !          4288:   { "dbcsw",   "dbcs", },
        !          4289:   { "dbeqw",   "dbeq", },
        !          4290:   { "dbfw",    "dbf", },
        !          4291:   { "dbgew",   "dbge", },
        !          4292:   { "dbgtw",   "dbgt", },
        !          4293:   { "dbhiw",   "dbhi", },
        !          4294:   { "dblew",   "dble", },
        !          4295:   { "dblsw",   "dbls", },
        !          4296:   { "dbltw",   "dblt", },
        !          4297:   { "dbmiw",   "dbmi", },
        !          4298:   { "dbnew",   "dbne", },
        !          4299:   { "dbplw",   "dbpl", },
        !          4300:   { "dbtw",    "dbt", },
        !          4301:   { "dbvcw",   "dbvc", },
        !          4302:   { "dbvsw",   "dbvs", },
        !          4303:   { "dbhs",    "dbcc", },
        !          4304:   { "dbhsw",   "dbcc", },
        !          4305:   { "dbra",    "dbf", },
        !          4306:   { "dbraw",   "dbf", },
        !          4307:   { "tdivsl",  "divsl", },
        !          4308:   { "divs",    "divsw", },
        !          4309:   { "divu",    "divuw", },
        !          4310:   { "ext",     "extw", },
        !          4311:   { "extbw",   "extw", },
        !          4312:   { "extwl",   "extl", },
        !          4313:   { "fbneq",   "fbne", },
        !          4314:   { "fbsneq",  "fbsne", },
        !          4315:   { "fdbneq",  "fdbne", },
        !          4316:   { "fdbsneq", "fdbsne", },
        !          4317:   { "fmovecr", "fmovecrx", },
        !          4318:   { "fmovm",   "fmovem", },
        !          4319:   { "fsneq",   "fsne", },
        !          4320:   { "fssneq",  "fssne", },
        !          4321:   { "ftrapneq",        "ftrapne", },
        !          4322:   { "ftrapsneq", "ftrapsne", },
        !          4323:   { "fjneq",   "fjne", },
        !          4324:   { "fjsneq",  "fjsne", },
        !          4325:   { "jmpl",    "jmp", },
        !          4326:   { "jmps",    "jmp", },
        !          4327:   { "jsrl",    "jsr", },
        !          4328:   { "jsrs",    "jsr", },
        !          4329:   { "leal",    "lea", },
        !          4330:   { "lsl",     "lslw", },
        !          4331:   { "lsr",     "lsrw", },
        !          4332:   { "mac",     "macw" },
        !          4333:   { "movea",   "moveaw", },
        !          4334:   { "movem",   "movemw", },
        !          4335:   { "movml",   "moveml", },
        !          4336:   { "movmw",   "movemw", },
        !          4337:   { "movm",    "movemw", },
        !          4338:   { "movep",   "movepw", },
        !          4339:   { "movpw",   "movepw", },
        !          4340:   { "moves",   "movesw" },
        !          4341:   { "muls",    "mulsw", },
        !          4342:   { "mulu",    "muluw", },
        !          4343:   { "msac",    "msacw" },
        !          4344:   { "nbcdb",   "nbcd" },
        !          4345:   { "neg",     "negw", },
        !          4346:   { "negx",    "negxw", },
        !          4347:   { "not",     "notw", },
        !          4348:   { "peal",    "pea", },
        !          4349:   { "rol",     "rolw", },
        !          4350:   { "ror",     "rorw", },
        !          4351:   { "roxl",    "roxlw", },
        !          4352:   { "roxr",    "roxrw", },
        !          4353:   { "sats",    "satsl", },
        !          4354:   { "sbcdb",   "sbcd", },
        !          4355:   { "sccb",    "scc", },
        !          4356:   { "scsb",    "scs", },
        !          4357:   { "seqb",    "seq", },
        !          4358:   { "sfb",     "sf", },
        !          4359:   { "sgeb",    "sge", },
        !          4360:   { "sgtb",    "sgt", },
        !          4361:   { "shib",    "shi", },
        !          4362:   { "sleb",    "sle", },
        !          4363:   { "slsb",    "sls", },
        !          4364:   { "sltb",    "slt", },
        !          4365:   { "smib",    "smi", },
        !          4366:   { "sneb",    "sne", },
        !          4367:   { "splb",    "spl", },
        !          4368:   { "stb",     "st", },
        !          4369:   { "svcb",    "svc", },
        !          4370:   { "svsb",    "svs", },
        !          4371:   { "sfge",    "sge", },
        !          4372:   { "sfgt",    "sgt", },
        !          4373:   { "sfle",    "sle", },
        !          4374:   { "sflt",    "slt", },
        !          4375:   { "sfneq",   "sne", },
        !          4376:   { "suba",    "subaw", },
        !          4377:   { "subi",    "subiw", },
        !          4378:   { "subq",    "subqw", },
        !          4379:   { "sub",     "subw", },
        !          4380:   { "subx",    "subxw", },
        !          4381:   { "swapw",   "swap", },
        !          4382:   { "tasb",    "tas", },
        !          4383:   { "tpcc",    "trapcc", },
        !          4384:   { "tcc",     "trapcc", },
        !          4385:   { "tst",     "tstw", },
        !          4386:   { "jbra",    "jra", },
        !          4387:   { "jbhi",    "jhi", },
        !          4388:   { "jbls",    "jls", },
        !          4389:   { "jbcc",    "jcc", },
        !          4390:   { "jbcs",    "jcs", },
        !          4391:   { "jbne",    "jne", },
        !          4392:   { "jbeq",    "jeq", },
        !          4393:   { "jbvc",    "jvc", },
        !          4394:   { "jbvs",    "jvs", },
        !          4395:   { "jbpl",    "jpl", },
        !          4396:   { "jbmi",    "jmi", },
        !          4397:   { "jbge",    "jge", },
        !          4398:   { "jblt",    "jlt", },
        !          4399:   { "jbgt",    "jgt", },
        !          4400:   { "jble",    "jle", },
        !          4401:   { "movql",   "moveq", },
        !          4402:   { "moveql",  "moveq", },
        !          4403:   { "movl",    "movel", },
        !          4404:   { "movq",    "moveq", },
        !          4405:   { "moval",   "moveal", },
        !          4406:   { "movaw",   "moveaw", },
        !          4407:   { "movb",    "moveb", },
        !          4408:   { "movc",    "movec", },
        !          4409:   { "movecl",  "movec", },
        !          4410:   { "movpl",   "movepl", },
        !          4411:   { "movw",    "movew", },
        !          4412:   { "movsb",   "movesb", },
        !          4413:   { "movsl",   "movesl", },
        !          4414:   { "movsw",   "movesw", },
        !          4415:   { "mov3q",   "mov3ql", },
        !          4416: 
        !          4417:   { "tdivul",  "divul", },     /* For m68k-svr4.  */
        !          4418:   { "fmovb",   "fmoveb", },
        !          4419:   { "fsmovb",  "fsmoveb", },
        !          4420:   { "fdmovb",  "fdmoveb", },
        !          4421:   { "fmovd",   "fmoved", },
        !          4422:   { "fsmovd",  "fsmoved", },
        !          4423:   { "fmovl",   "fmovel", },
        !          4424:   { "fsmovl",  "fsmovel", },
        !          4425:   { "fdmovl",  "fdmovel", },
        !          4426:   { "fmovp",   "fmovep", },
        !          4427:   { "fsmovp",  "fsmovep", },
        !          4428:   { "fdmovp",  "fdmovep", },
        !          4429:   { "fmovs",   "fmoves", },
        !          4430:   { "fsmovs",  "fsmoves", },
        !          4431:   { "fdmovs",  "fdmoves", },
        !          4432:   { "fmovw",   "fmovew", },
        !          4433:   { "fsmovw",  "fsmovew", },
        !          4434:   { "fdmovw",  "fdmovew", },
        !          4435:   { "fmovx",   "fmovex", },
        !          4436:   { "fsmovx",  "fsmovex", },
        !          4437:   { "fdmovx",  "fdmovex", },
        !          4438:   { "fmovcr",  "fmovecr", },
        !          4439:   { "fmovcrx", "fmovecrx", },
        !          4440:   { "ftestb",  "ftstb", },
        !          4441:   { "ftestd",  "ftstd", },
        !          4442:   { "ftestl",  "ftstl", },
        !          4443:   { "ftestp",  "ftstp", },
        !          4444:   { "ftests",  "ftsts", },
        !          4445:   { "ftestw",  "ftstw", },
        !          4446:   { "ftestx",  "ftstx", },
        !          4447: 
        !          4448:   { "bitrevl",  "bitrev", },
        !          4449:   { "byterevl", "byterev", },
        !          4450:   { "ff1l",     "ff1", },
        !          4451: 
        !          4452: };
        !          4453: 
        !          4454: const int m68k_numaliases =
        !          4455:   sizeof m68k_opcode_aliases / sizeof m68k_opcode_aliases[0];
        !          4456: /* **** End of m68k-opc.c */
        !          4457: /* **** floatformat.c from sourceware.org CVS 2005-08-14.  */
        !          4458: /* IEEE floating point support routines, for GDB, the GNU Debugger.
        !          4459:    Copyright (C) 1991, 1994, 1999, 2000, 2003 Free Software Foundation, Inc.
        !          4460: 
        !          4461: This file is part of GDB.
        !          4462: 
        !          4463: This program is free software; you can redistribute it and/or modify
        !          4464: it under the terms of the GNU General Public License as published by
        !          4465: the Free Software Foundation; either version 2 of the License, or
        !          4466: (at your option) any later version.
        !          4467: 
        !          4468: This program is distributed in the hope that it will be useful,
        !          4469: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !          4470: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !          4471: GNU General Public License for more details.
        !          4472: 
        !          4473: You should have received a copy of the GNU General Public License
        !          4474: along with this program; if not, write to the Free Software
        !          4475: Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
        !          4476: 
        !          4477: /* This is needed to pick up the NAN macro on some systems.  */
        !          4478: //#define _GNU_SOURCE
        !          4479: 
        !          4480: #ifndef INFINITY
        !          4481: #ifdef HUGE_VAL
        !          4482: #define INFINITY HUGE_VAL
        !          4483: #else
        !          4484: #define INFINITY (1.0 / 0.0)
        !          4485: #endif
        !          4486: #endif
        !          4487: 
        !          4488: #ifndef NAN
        !          4489: #define NAN (0.0 / 0.0)
        !          4490: #endif
        !          4491: 
        !          4492: static unsigned long get_field (const unsigned char *,
        !          4493:                                 enum floatformat_byteorders,
        !          4494:                                 unsigned int,
        !          4495:                                 unsigned int,
        !          4496:                                 unsigned int);
        !          4497: static int floatformat_always_valid (const struct floatformat *fmt,
        !          4498:                                      const char *from);
        !          4499: 
        !          4500: static int
        !          4501: floatformat_always_valid (const struct floatformat *fmt ATTRIBUTE_UNUSED,
        !          4502:                           const char *from ATTRIBUTE_UNUSED)
        !          4503: {
        !          4504:   return 1;
        !          4505: }
        !          4506: 
        !          4507: /* The odds that CHAR_BIT will be anything but 8 are low enough that I'm not
        !          4508:    going to bother with trying to muck around with whether it is defined in
        !          4509:    a system header, what we do if not, etc.  */
        !          4510: #define FLOATFORMAT_CHAR_BIT 8
        !          4511: 
        !          4512: /* floatformats for IEEE single and double, big and little endian.  */
        !          4513: const struct floatformat floatformat_ieee_single_big =
        !          4514: {
        !          4515:   floatformat_big, 32, 0, 1, 8, 127, 255, 9, 23,
        !          4516:   floatformat_intbit_no,
        !          4517:   "floatformat_ieee_single_big",
        !          4518:   floatformat_always_valid
        !          4519: };
        !          4520: const struct floatformat floatformat_ieee_single_little =
        !          4521: {
        !          4522:   floatformat_little, 32, 0, 1, 8, 127, 255, 9, 23,
        !          4523:   floatformat_intbit_no,
        !          4524:   "floatformat_ieee_single_little",
        !          4525:   floatformat_always_valid
        !          4526: };
        !          4527: const struct floatformat floatformat_ieee_double_big =
        !          4528: {
        !          4529:   floatformat_big, 64, 0, 1, 11, 1023, 2047, 12, 52,
        !          4530:   floatformat_intbit_no,
        !          4531:   "floatformat_ieee_double_big",
        !          4532:   floatformat_always_valid
        !          4533: };
        !          4534: const struct floatformat floatformat_ieee_double_little =
        !          4535: {
        !          4536:   floatformat_little, 64, 0, 1, 11, 1023, 2047, 12, 52,
        !          4537:   floatformat_intbit_no,
        !          4538:   "floatformat_ieee_double_little",
        !          4539:   floatformat_always_valid
        !          4540: };
        !          4541: 
        !          4542: /* floatformat for IEEE double, little endian byte order, with big endian word
        !          4543:    ordering, as on the ARM.  */
        !          4544: 
        !          4545: const struct floatformat floatformat_ieee_double_littlebyte_bigword =
        !          4546: {
        !          4547:   floatformat_littlebyte_bigword, 64, 0, 1, 11, 1023, 2047, 12, 52,
        !          4548:   floatformat_intbit_no,
        !          4549:   "floatformat_ieee_double_littlebyte_bigword",
        !          4550:   floatformat_always_valid
        !          4551: };
        !          4552: 
        !          4553: static int floatformat_i387_ext_is_valid (const struct floatformat *fmt, const char *from);
        !          4554: 
        !          4555: static int
        !          4556: floatformat_i387_ext_is_valid (const struct floatformat *fmt, const char *from)
        !          4557: {
        !          4558:   /* In the i387 double-extended format, if the exponent is all ones,
        !          4559:      then the integer bit must be set.  If the exponent is neither 0
        !          4560:      nor ~0, the intbit must also be set.  Only if the exponent is
        !          4561:      zero can it be zero, and then it must be zero.  */
        !          4562:   unsigned long exponent, int_bit;
        !          4563:   const unsigned char *ufrom = (const unsigned char *) from;
        !          4564:   
        !          4565:   exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize,
        !          4566:                        fmt->exp_start, fmt->exp_len);
        !          4567:   int_bit = get_field (ufrom, fmt->byteorder, fmt->totalsize,
        !          4568:                       fmt->man_start, 1);
        !          4569:   
        !          4570:   if ((exponent == 0) != (int_bit == 0))
        !          4571:     return 0;
        !          4572:   else
        !          4573:     return 1;
        !          4574: }
        !          4575: 
        !          4576: const struct floatformat floatformat_i387_ext =
        !          4577: {
        !          4578:   floatformat_little, 80, 0, 1, 15, 0x3fff, 0x7fff, 16, 64,
        !          4579:   floatformat_intbit_yes,
        !          4580:   "floatformat_i387_ext",
        !          4581:   floatformat_i387_ext_is_valid
        !          4582: };
        !          4583: const struct floatformat floatformat_m68881_ext =
        !          4584: {
        !          4585:   /* Note that the bits from 16 to 31 are unused.  */
        !          4586:   floatformat_big, 96, 0, 1, 15, 0x3fff, 0x7fff, 32, 64,
        !          4587:   floatformat_intbit_yes,
        !          4588:   "floatformat_m68881_ext",
        !          4589:   floatformat_always_valid
        !          4590: };
        !          4591: const struct floatformat floatformat_i960_ext =
        !          4592: {
        !          4593:   /* Note that the bits from 0 to 15 are unused.  */
        !          4594:   floatformat_little, 96, 16, 17, 15, 0x3fff, 0x7fff, 32, 64,
        !          4595:   floatformat_intbit_yes,
        !          4596:   "floatformat_i960_ext",
        !          4597:   floatformat_always_valid
        !          4598: };
        !          4599: const struct floatformat floatformat_m88110_ext =
        !          4600: {
        !          4601:   floatformat_big, 80, 0, 1, 15, 0x3fff, 0x7fff, 16, 64,
        !          4602:   floatformat_intbit_yes,
        !          4603:   "floatformat_m88110_ext",
        !          4604:   floatformat_always_valid
        !          4605: };
        !          4606: const struct floatformat floatformat_m88110_harris_ext =
        !          4607: {
        !          4608:   /* Harris uses raw format 128 bytes long, but the number is just an ieee
        !          4609:      double, and the last 64 bits are wasted. */
        !          4610:   floatformat_big,128, 0, 1, 11,  0x3ff,  0x7ff, 12, 52,
        !          4611:   floatformat_intbit_no,
        !          4612:   "floatformat_m88110_ext_harris",
        !          4613:   floatformat_always_valid
        !          4614: };
        !          4615: const struct floatformat floatformat_arm_ext_big =
        !          4616: {
        !          4617:   /* Bits 1 to 16 are unused.  */
        !          4618:   floatformat_big, 96, 0, 17, 15, 0x3fff, 0x7fff, 32, 64,
        !          4619:   floatformat_intbit_yes,
        !          4620:   "floatformat_arm_ext_big",
        !          4621:   floatformat_always_valid
        !          4622: };
        !          4623: const struct floatformat floatformat_arm_ext_littlebyte_bigword =
        !          4624: {
        !          4625:   /* Bits 1 to 16 are unused.  */
        !          4626:   floatformat_littlebyte_bigword, 96, 0, 17, 15, 0x3fff, 0x7fff, 32, 64,
        !          4627:   floatformat_intbit_yes,
        !          4628:   "floatformat_arm_ext_littlebyte_bigword",
        !          4629:   floatformat_always_valid
        !          4630: };
        !          4631: const struct floatformat floatformat_ia64_spill_big =
        !          4632: {
        !          4633:   floatformat_big, 128, 0, 1, 17, 65535, 0x1ffff, 18, 64,
        !          4634:   floatformat_intbit_yes,
        !          4635:   "floatformat_ia64_spill_big",
        !          4636:   floatformat_always_valid
        !          4637: };
        !          4638: const struct floatformat floatformat_ia64_spill_little =
        !          4639: {
        !          4640:   floatformat_little, 128, 0, 1, 17, 65535, 0x1ffff, 18, 64,
        !          4641:   floatformat_intbit_yes,
        !          4642:   "floatformat_ia64_spill_little",
        !          4643:   floatformat_always_valid
        !          4644: };
        !          4645: const struct floatformat floatformat_ia64_quad_big =
        !          4646: {
        !          4647:   floatformat_big, 128, 0, 1, 15, 16383, 0x7fff, 16, 112,
        !          4648:   floatformat_intbit_no,
        !          4649:   "floatformat_ia64_quad_big",
        !          4650:   floatformat_always_valid
        !          4651: };
        !          4652: const struct floatformat floatformat_ia64_quad_little =
        !          4653: {
        !          4654:   floatformat_little, 128, 0, 1, 15, 16383, 0x7fff, 16, 112,
        !          4655:   floatformat_intbit_no,
        !          4656:   "floatformat_ia64_quad_little",
        !          4657:   floatformat_always_valid
        !          4658: };
        !          4659: 
        !          4660: /* Extract a field which starts at START and is LEN bits long.  DATA and
        !          4661:    TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER.  */
        !          4662: static unsigned long
        !          4663: get_field (const unsigned char *data, enum floatformat_byteorders order,
        !          4664:            unsigned int total_len, unsigned int start, unsigned int len)
        !          4665: {
        !          4666:   unsigned long result;
        !          4667:   unsigned int cur_byte;
        !          4668:   int cur_bitshift;
        !          4669: 
        !          4670:   /* Start at the least significant part of the field.  */
        !          4671:   cur_byte = (start + len) / FLOATFORMAT_CHAR_BIT;
        !          4672:   if (order == floatformat_little)
        !          4673:     cur_byte = (total_len / FLOATFORMAT_CHAR_BIT) - cur_byte - 1;
        !          4674:   cur_bitshift =
        !          4675:     ((start + len) % FLOATFORMAT_CHAR_BIT) - FLOATFORMAT_CHAR_BIT;
        !          4676:   result = *(data + cur_byte) >> (-cur_bitshift);
        !          4677:   cur_bitshift += FLOATFORMAT_CHAR_BIT;
        !          4678:   if (order == floatformat_little)
        !          4679:     ++cur_byte;
        !          4680:   else
        !          4681:     --cur_byte;
        !          4682: 
        !          4683:   /* Move towards the most significant part of the field.  */
        !          4684:   while ((unsigned int) cur_bitshift < len)
        !          4685:     {
        !          4686:       if (len - cur_bitshift < FLOATFORMAT_CHAR_BIT)
        !          4687:        /* This is the last byte; zero out the bits which are not part of
        !          4688:           this field.  */
        !          4689:        result |=
        !          4690:          (*(data + cur_byte) & ((1 << (len - cur_bitshift)) - 1))
        !          4691:            << cur_bitshift;
        !          4692:       else
        !          4693:        result |= *(data + cur_byte) << cur_bitshift;
        !          4694:       cur_bitshift += FLOATFORMAT_CHAR_BIT;
        !          4695:       if (order == floatformat_little)
        !          4696:        ++cur_byte;
        !          4697:       else
        !          4698:        --cur_byte;
        !          4699:     }
        !          4700:   return result;
        !          4701: }
        !          4702:   
        !          4703: #ifndef min
        !          4704: #define min(a, b) ((a) < (b) ? (a) : (b))
        !          4705: #endif
        !          4706: 
        !          4707: /* Convert from FMT to a double.
        !          4708:    FROM is the address of the extended float.
        !          4709:    Store the double in *TO.  */
        !          4710: 
        !          4711: void
        !          4712: floatformat_to_double (const struct floatformat *fmt,
        !          4713:                        const char *from, double *to)
        !          4714: {
        !          4715:   const unsigned char *ufrom = (const unsigned char *)from;
        !          4716:   double dto;
        !          4717:   long exponent;
        !          4718:   unsigned long mant;
        !          4719:   unsigned int mant_bits, mant_off;
        !          4720:   int mant_bits_left;
        !          4721:   int special_exponent;                /* It's a NaN, denorm or zero */
        !          4722: 
        !          4723:   exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize,
        !          4724:                        fmt->exp_start, fmt->exp_len);
        !          4725: 
        !          4726:   /* If the exponent indicates a NaN, we don't have information to
        !          4727:      decide what to do.  So we handle it like IEEE, except that we
        !          4728:      don't try to preserve the type of NaN.  FIXME.  */
        !          4729:   if ((unsigned long) exponent == fmt->exp_nan)
        !          4730:     {
        !          4731:       int nan;
        !          4732: 
        !          4733:       mant_off = fmt->man_start;
        !          4734:       mant_bits_left = fmt->man_len;
        !          4735:       nan = 0;
        !          4736:       while (mant_bits_left > 0)
        !          4737:        {
        !          4738:          mant_bits = min (mant_bits_left, 32);
        !          4739: 
        !          4740:          if (get_field (ufrom, fmt->byteorder, fmt->totalsize,
        !          4741:                         mant_off, mant_bits) != 0)
        !          4742:            {
        !          4743:              /* This is a NaN.  */
        !          4744:              nan = 1;
        !          4745:              break;
        !          4746:            }
        !          4747: 
        !          4748:          mant_off += mant_bits;
        !          4749:          mant_bits_left -= mant_bits;
        !          4750:        }
        !          4751: 
        !          4752:       /* On certain systems (such as GNU/Linux), the use of the
        !          4753:         INFINITY macro below may generate a warning that can not be
        !          4754:         silenced due to a bug in GCC (PR preprocessor/11931).  The
        !          4755:         preprocessor fails to recognise the __extension__ keyword in
        !          4756:         conjunction with the GNU/C99 extension for hexadecimal
        !          4757:         floating point constants and will issue a warning when
        !          4758:         compiling with -pedantic.  */
        !          4759:       if (nan)
        !          4760:        dto = NAN;
        !          4761:       else
        !          4762:        dto = INFINITY;
        !          4763: 
        !          4764:       if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1))
        !          4765:        dto = -dto;
        !          4766: 
        !          4767:       *to = dto;
        !          4768: 
        !          4769:       return;
        !          4770:     }
        !          4771: 
        !          4772:   mant_bits_left = fmt->man_len;
        !          4773:   mant_off = fmt->man_start;
        !          4774:   dto = 0.0;
        !          4775: 
        !          4776:   special_exponent = exponent == 0 || (unsigned long) exponent == fmt->exp_nan;
        !          4777: 
        !          4778:   /* Don't bias zero's, denorms or NaNs.  */
        !          4779:   if (!special_exponent)
        !          4780:     exponent -= fmt->exp_bias;
        !          4781: 
        !          4782:   /* Build the result algebraically.  Might go infinite, underflow, etc;
        !          4783:      who cares. */
        !          4784: 
        !          4785:   /* If this format uses a hidden bit, explicitly add it in now.  Otherwise,
        !          4786:      increment the exponent by one to account for the integer bit.  */
        !          4787: 
        !          4788:   if (!special_exponent)
        !          4789:     {
        !          4790:       if (fmt->intbit == floatformat_intbit_no)
        !          4791:        dto = ldexp (1.0, exponent);
        !          4792:       else
        !          4793:        exponent++;
        !          4794:     }
        !          4795: 
        !          4796:   while (mant_bits_left > 0)
        !          4797:     {
        !          4798:       mant_bits = min (mant_bits_left, 32);
        !          4799: 
        !          4800:       mant = get_field (ufrom, fmt->byteorder, fmt->totalsize,
        !          4801:                         mant_off, mant_bits);
        !          4802: 
        !          4803:       /* Handle denormalized numbers.  FIXME: What should we do for
        !          4804:         non-IEEE formats?  */
        !          4805:       if (exponent == 0 && mant != 0)
        !          4806:        dto += ldexp ((double)mant,
        !          4807:                      (- fmt->exp_bias
        !          4808:                       - mant_bits
        !          4809:                       - (mant_off - fmt->man_start)
        !          4810:                       + 1));
        !          4811:       else
        !          4812:        dto += ldexp ((double)mant, exponent - mant_bits);
        !          4813:       if (exponent != 0)
        !          4814:        exponent -= mant_bits;
        !          4815:       mant_off += mant_bits;
        !          4816:       mant_bits_left -= mant_bits;
        !          4817:     }
        !          4818: 
        !          4819:   /* Negate it if negative.  */
        !          4820:   if (get_field (ufrom, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1))
        !          4821:     dto = -dto;
        !          4822:   *to = dto;
        !          4823: }
        !          4824: 
        !          4825: static void put_field (unsigned char *, enum floatformat_byteorders,
        !          4826:                        unsigned int,
        !          4827:                        unsigned int,
        !          4828:                        unsigned int,
        !          4829:                        unsigned long);
        !          4830: 
        !          4831: /* Set a field which starts at START and is LEN bits long.  DATA and
        !          4832:    TOTAL_LEN are the thing we are extracting it from, in byteorder ORDER.  */
        !          4833: static void
        !          4834: put_field (unsigned char *data, enum floatformat_byteorders order,
        !          4835:            unsigned int total_len, unsigned int start, unsigned int len,
        !          4836:            unsigned long stuff_to_put)
        !          4837: {
        !          4838:   unsigned int cur_byte;
        !          4839:   int cur_bitshift;
        !          4840: 
        !          4841:   /* Start at the least significant part of the field.  */
        !          4842:   cur_byte = (start + len) / FLOATFORMAT_CHAR_BIT;
        !          4843:   if (order == floatformat_little)
        !          4844:     cur_byte = (total_len / FLOATFORMAT_CHAR_BIT) - cur_byte - 1;
        !          4845:   cur_bitshift =
        !          4846:     ((start + len) % FLOATFORMAT_CHAR_BIT) - FLOATFORMAT_CHAR_BIT;
        !          4847:   *(data + cur_byte) &=
        !          4848:     ~(((1 << ((start + len) % FLOATFORMAT_CHAR_BIT)) - 1) << (-cur_bitshift));
        !          4849:   *(data + cur_byte) |=
        !          4850:     (stuff_to_put & ((1 << FLOATFORMAT_CHAR_BIT) - 1)) << (-cur_bitshift);
        !          4851:   cur_bitshift += FLOATFORMAT_CHAR_BIT;
        !          4852:   if (order == floatformat_little)
        !          4853:     ++cur_byte;
        !          4854:   else
        !          4855:     --cur_byte;
        !          4856: 
        !          4857:   /* Move towards the most significant part of the field.  */
        !          4858:   while ((unsigned int) cur_bitshift < len)
        !          4859:     {
        !          4860:       if (len - cur_bitshift < FLOATFORMAT_CHAR_BIT)
        !          4861:        {
        !          4862:          /* This is the last byte.  */
        !          4863:          *(data + cur_byte) &=
        !          4864:            ~((1 << (len - cur_bitshift)) - 1);
        !          4865:          *(data + cur_byte) |= (stuff_to_put >> cur_bitshift);
        !          4866:        }
        !          4867:       else
        !          4868:        *(data + cur_byte) = ((stuff_to_put >> cur_bitshift)
        !          4869:                              & ((1 << FLOATFORMAT_CHAR_BIT) - 1));
        !          4870:       cur_bitshift += FLOATFORMAT_CHAR_BIT;
        !          4871:       if (order == floatformat_little)
        !          4872:        ++cur_byte;
        !          4873:       else
        !          4874:        --cur_byte;
        !          4875:     }
        !          4876: }
        !          4877: 
        !          4878: /* The converse: convert the double *FROM to an extended float
        !          4879:    and store where TO points.  Neither FROM nor TO have any alignment
        !          4880:    restrictions.  */
        !          4881: 
        !          4882: void
        !          4883: floatformat_from_double (const struct floatformat *fmt,
        !          4884:                          const double *from, char *to)
        !          4885: {
        !          4886:   double dfrom;
        !          4887:   int exponent;
        !          4888:   double mant;
        !          4889:   unsigned int mant_bits, mant_off;
        !          4890:   int mant_bits_left;
        !          4891:   unsigned char *uto = (unsigned char *)to;
        !          4892: 
        !          4893:   dfrom = *from;
        !          4894:   memset (uto, 0, fmt->totalsize / FLOATFORMAT_CHAR_BIT);
        !          4895: 
        !          4896:   /* If negative, set the sign bit.  */
        !          4897:   if (dfrom < 0)
        !          4898:     {
        !          4899:       put_field (uto, fmt->byteorder, fmt->totalsize, fmt->sign_start, 1, 1);
        !          4900:       dfrom = -dfrom;
        !          4901:     }
        !          4902: 
        !          4903:   if (dfrom == 0)
        !          4904:     {
        !          4905:       /* 0.0.  */
        !          4906:       return;
        !          4907:     }
        !          4908: 
        !          4909:   if (dfrom != dfrom)
        !          4910:     {
        !          4911:       /* NaN.  */
        !          4912:       put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start,
        !          4913:                 fmt->exp_len, fmt->exp_nan);
        !          4914:       /* Be sure it's not infinity, but NaN value is irrelevant.  */
        !          4915:       put_field (uto, fmt->byteorder, fmt->totalsize, fmt->man_start,
        !          4916:                 32, 1);
        !          4917:       return;
        !          4918:     }
        !          4919: 
        !          4920:   if (dfrom + dfrom == dfrom)
        !          4921:     {
        !          4922:       /* This can only happen for an infinite value (or zero, which we
        !          4923:         already handled above).  */
        !          4924:       put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start,
        !          4925:                 fmt->exp_len, fmt->exp_nan);
        !          4926:       return;
        !          4927:     }
        !          4928: 
        !          4929:   mant = frexp (dfrom, &exponent);
        !          4930:   if (exponent + fmt->exp_bias - 1 > 0)
        !          4931:     put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start,
        !          4932:               fmt->exp_len, exponent + fmt->exp_bias - 1);
        !          4933:   else
        !          4934:     {
        !          4935:       /* Handle a denormalized number.  FIXME: What should we do for
        !          4936:         non-IEEE formats?  */
        !          4937:       put_field (uto, fmt->byteorder, fmt->totalsize, fmt->exp_start,
        !          4938:                 fmt->exp_len, 0);
        !          4939:       mant = ldexp (mant, exponent + fmt->exp_bias - 1);
        !          4940:     }
        !          4941: 
        !          4942:   mant_bits_left = fmt->man_len;
        !          4943:   mant_off = fmt->man_start;
        !          4944:   while (mant_bits_left > 0)
        !          4945:     {
        !          4946:       unsigned long mant_long;
        !          4947:       mant_bits = mant_bits_left < 32 ? mant_bits_left : 32;
        !          4948: 
        !          4949:       mant *= 4294967296.0;
        !          4950:       mant_long = (unsigned long)mant;
        !          4951:       mant -= mant_long;
        !          4952: 
        !          4953:       /* If the integer bit is implicit, and we are not creating a
        !          4954:         denormalized number, then we need to discard it.  */
        !          4955:       if ((unsigned int) mant_bits_left == fmt->man_len
        !          4956:          && fmt->intbit == floatformat_intbit_no
        !          4957:          && exponent + fmt->exp_bias - 1 > 0)
        !          4958:        {
        !          4959:          mant_long &= 0x7fffffff;
        !          4960:          mant_bits -= 1;
        !          4961:        }
        !          4962:       else if (mant_bits < 32)
        !          4963:        {
        !          4964:          /* The bits we want are in the most significant MANT_BITS bits of
        !          4965:             mant_long.  Move them to the least significant.  */
        !          4966:          mant_long >>= 32 - mant_bits;
        !          4967:        }
        !          4968: 
        !          4969:       put_field (uto, fmt->byteorder, fmt->totalsize,
        !          4970:                 mant_off, mant_bits, mant_long);
        !          4971:       mant_off += mant_bits;
        !          4972:       mant_bits_left -= mant_bits;
        !          4973:     }
        !          4974: }
        !          4975: 
        !          4976: /* Return non-zero iff the data at FROM is a valid number in format FMT.  */
        !          4977: 
        !          4978: int
        !          4979: floatformat_is_valid (const struct floatformat *fmt, const char *from)
        !          4980: {
        !          4981:   return fmt->is_valid (fmt, from);
        !          4982: }
        !          4983: 
        !          4984: 
        !          4985: #ifdef IEEE_DEBUG
        !          4986: 
        !          4987: /* This is to be run on a host which uses IEEE floating point.  */
        !          4988: 
        !          4989: void
        !          4990: ieee_test (double n)
        !          4991: {
        !          4992:   double result;
        !          4993: 
        !          4994:   floatformat_to_double (&floatformat_ieee_double_little, (char *) &n,
        !          4995:                         &result);
        !          4996:   if ((n != result && (! isnan (n) || ! isnan (result)))
        !          4997:       || (n < 0 && result >= 0)
        !          4998:       || (n >= 0 && result < 0))
        !          4999:     printf ("Differ(to): %.20g -> %.20g\n", n, result);
        !          5000: 
        !          5001:   floatformat_from_double (&floatformat_ieee_double_little, &n,
        !          5002:                           (char *) &result);
        !          5003:   if ((n != result && (! isnan (n) || ! isnan (result)))
        !          5004:       || (n < 0 && result >= 0)
        !          5005:       || (n >= 0 && result < 0))
        !          5006:     printf ("Differ(from): %.20g -> %.20g\n", n, result);
        !          5007: 
        !          5008: #if 0
        !          5009:   {
        !          5010:     char exten[16];
        !          5011: 
        !          5012:     floatformat_from_double (&floatformat_m68881_ext, &n, exten);
        !          5013:     floatformat_to_double (&floatformat_m68881_ext, exten, &result);
        !          5014:     if (n != result)
        !          5015:       printf ("Differ(to+from): %.20g -> %.20g\n", n, result);
        !          5016:   }
        !          5017: #endif
        !          5018: 
        !          5019: #if IEEE_DEBUG > 1
        !          5020:   /* This is to be run on a host which uses 68881 format.  */
        !          5021:   {
        !          5022:     long double ex = *(long double *)exten;
        !          5023:     if (ex != n)
        !          5024:       printf ("Differ(from vs. extended): %.20g\n", n);
        !          5025:   }
        !          5026: #endif
        !          5027: }
        !          5028: 
        !          5029: int
        !          5030: main (void)
        !          5031: {
        !          5032:   ieee_test (0.0);
        !          5033:   ieee_test (0.5);
        !          5034:   ieee_test (256.0);
        !          5035:   ieee_test (0.12345);
        !          5036:   ieee_test (234235.78907234);
        !          5037:   ieee_test (-512.0);
        !          5038:   ieee_test (-0.004321);
        !          5039:   ieee_test (1.2E-70);
        !          5040:   ieee_test (1.2E-316);
        !          5041:   ieee_test (4.9406564584124654E-324);
        !          5042:   ieee_test (- 4.9406564584124654E-324);
        !          5043:   ieee_test (- 0.0);
        !          5044:   ieee_test (- INFINITY);
        !          5045:   ieee_test (- NAN);
        !          5046:   ieee_test (INFINITY);
        !          5047:   ieee_test (NAN);
        !          5048:   return 0;
        !          5049: }
        !          5050: #endif
        !          5051: /* **** End of floatformat.c  */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.