Initial import from FreeBSD RELENG_4:
[dragonfly.git] / gnu / usr.bin / as / opcode / m68k.h
1 /* Opcode table for m680[01234]0/m6888[12]/m68851.
2    Copyright (C) 1989, 1991 Free Software Foundation.
3
4 This file is part of GDB, the GNU Debugger and GAS, the GNU Assembler.
5
6 Both GDB and GAS are free software; you can redistribute and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 1, or (at your option)
9 any later version.
10
11 GDB and GAS are distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GDB or GAS; see the file COPYING.  If not, write to
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
19
20 /* These are used as bit flags for arch below. */
21
22 enum m68k_architecture {
23         m68000 = 0x01,
24         m68008 = m68000, /* synonym for -m68000.  otherwise unused. */
25         m68010 = 0x02,
26         m68020 = 0x04,
27         m68030 = 0x08,
28         m68040 = 0x10,
29         m68881 = 0x20,
30         m68882 = m68881, /* synonym for -m68881.  otherwise unused. */
31         m68851 = 0x40,
32
33  /* handy aliases */
34         m68040up = m68040,
35         m68030up = (m68030 | m68040up),
36         m68020up = (m68020 | m68030up),
37         m68010up = (m68010 | m68020up),
38         m68000up = (m68000 | m68010up),
39
40         mfloat = (m68881 | m68882 | m68040),
41         mmmu   = (m68851 | m68030 | m68040)
42 }; /* enum m68k_architecture */
43
44  /* note that differences in addressing modes that aren't distinguished
45     in the following table are handled explicitly by gas. */
46
47 struct m68k_opcode {
48   char *name;
49   unsigned long opcode;
50   unsigned long  match;
51   char *args;
52   enum m68k_architecture arch;
53 };
54
55 /* We store four bytes of opcode for all opcodes because that
56    is the most any of them need.  The actual length of an instruction
57    is always at least 2 bytes, and is as much longer as necessary to
58    hold the operands it has.
59
60    The match component is a mask saying which bits must match
61    particular opcode in order for an instruction to be an instance
62    of that opcode.
63
64    The args component is a string containing two characters
65    for each operand of the instruction.  The first specifies
66    the kind of operand; the second, the place it is stored.  */
67
68 /* Kinds of operands:
69    D  data register only.  Stored as 3 bits.
70    A  address register only.  Stored as 3 bits.
71    a  address register indirect only.  Stored as 3 bits.
72    R  either kind of register.  Stored as 4 bits.
73    F  floating point coprocessor register only.   Stored as 3 bits.
74    O  an offset (or width): immediate data 0-31 or data register.
75       Stored as 6 bits in special format for BF... insns.
76    +  autoincrement only.  Stored as 3 bits (number of the address register).
77    -  autodecrement only.  Stored as 3 bits (number of the address register).
78    Q  quick immediate data.  Stored as 3 bits.
79       This matches an immediate operand only when value is in range 1 .. 8.
80    M  moveq immediate data.  Stored as 8 bits.
81       This matches an immediate operand only when value is in range -128..127
82    T  trap vector immediate data.  Stored as 4 bits.
83
84    k  K-factor for fmove.p instruction.   Stored as a 7-bit constant or
85       a three bit register offset, depending on the field type.
86
87    #  immediate data.  Stored in special places (b, w or l)
88       which say how many bits to store.
89    ^  immediate data for floating point instructions.   Special places
90       are offset by 2 bytes from '#'...
91    B  pc-relative address, converted to an offset
92       that is treated as immediate data.
93    d  displacement and register.  Stores the register as 3 bits
94       and stores the displacement in the entire second word.
95
96    C  the CCR.  No need to store it; this is just for filtering validity.
97    S  the SR.  No need to store, just as with CCR.
98    U  the USP.  No need to store, just as with CCR.
99
100    I  Coprocessor ID.   Not printed if 1.   The Coprocessor ID is always
101       extracted from the 'd' field of word one, which means that an extended
102       coprocessor opcode can be skipped using the 'i' place, if needed.
103
104    s  System Control register for the floating point coprocessor.
105    S  List of system control registers for floating point coprocessor.
106
107    J  Misc register for movec instruction, stored in 'j' format.
108         Possible values:
109         0x000   SFC     Source Function Code reg        [40, 30, 20, 10]
110         0x001   DFC     Data Function Code reg          [40, 30, 20, 10]
111         0x002   CACR    Cache Control Register          [40, 30, 20]
112         0x800   USP     User Stack Pointer              [40, 30, 20, 10]
113         0x801   VBR     Vector Base reg                 [40, 30, 20, 10]
114         0x802   CAAR    Cache Address Register          [    30, 20]
115         0x803   MSP     Master Stack Pointer            [40, 30, 20]
116         0x804   ISP     Interrupt Stack Pointer         [40, 30, 20]
117         0x003   TC      MMU Translation Control         [40]
118         0x004   ITT0    Instruction Transparent
119                                 Translation reg 0       [40]
120         0x005   ITT1    Instruction Transparent
121                                 Translation reg 1       [40]
122         0x006   DTT0    Data Transparent
123                                 Translation reg 0       [40]
124         0x007   DTT1    Data Transparent
125                                 Translation reg 1       [40]
126         0x805   MMUSR   MMU Status reg                  [40]
127         0x806   URP     User Root Pointer               [40]
128         0x807   SRP     Supervisor Root Pointer         [40]
129
130     L  Register list of the type d0-d7/a0-a7 etc.
131        (New!  Improved!  Can also hold fp0-fp7, as well!)
132        The assembler tries to see if the registers match the insn by
133        looking at where the insn wants them stored.
134
135     l  Register list like L, but with all the bits reversed.
136        Used for going the other way. . .
137
138     c  cache identifier which may be "nc" for no cache, "ic"
139        for instruction cache, "dc" for data cache, or "bc"
140        for both caches.  Used in cinv and cpush.  Always
141        stored in position "d".
142
143  They are all stored as 6 bits using an address mode and a register number;
144  they differ in which addressing modes they match.
145
146    *  all                                       (modes 0-6,7.*)
147    ~  alterable memory                          (modes 2-6,7.0,7.1)(not 0,1,7.~)
148    %  alterable                                 (modes 0-6,7.0,7.1)(not 7.~)
149    ;  data                                      (modes 0,2-6,7.*)(not 1)
150    @  data, but not immediate                   (modes 0,2-6,7.? ? ?)(not 1,7.?)  This may really be ;, the 68020 book says it is
151    !  control                                   (modes 2,5,6,7.*-)(not 0,1,3,4,7.4)
152    &  alterable control                         (modes 2,5,6,7.0,7.1)(not 0,1,7.? ? ?)
153    $  alterable data                            (modes 0,2-6,7.0,7.1)(not 1,7.~)
154    ?  alterable control, or data register       (modes 0,2,5,6,7.0,7.1)(not 1,3,4,7.~)
155    /  control, or data register                 (modes 0,2,5,6,7.0,7.1,7.2,7.3)(not 1,3,4,7.4)
156 */
157
158 /* JF: for the 68851 */
159 /*
160    I didn't use much imagination in choosing the
161    following codes, so many of them aren't very
162    mnemonic. -rab
163
164    P  pmmu register
165         Possible values:
166         000     TC      Translation Control reg
167         100     CAL     Current Access Level
168         101     VAL     Validate Access Level
169         110     SCC     Stack Change Control
170         111     AC      Access Control
171
172    W  wide pmmu registers
173         Possible values:
174         001     DRP     Dma Root Pointer
175         010     SRP     Supervisor Root Pointer
176         011     CRP     Cpu Root Pointer
177
178    f    function code register
179         0       SFC
180         1       DFC
181
182    V    VAL register only
183
184    X    BADx, BACx
185         100     BAD     Breakpoint Acknowledge Data
186         101     BAC     Breakpoint Acknowledge Control
187
188    Y    PSR
189    Z    PCSR
190
191    |    memory          (modes 2-6, 7.*)
192
193 */
194
195 /* Places to put an operand, for non-general operands:
196    s  source, low bits of first word.
197    d  dest, shifted 9 in first word
198    1  second word, shifted 12
199    2  second word, shifted 6
200    3  second word, shifted 0
201    4  third word, shifted 12
202    5  third word, shifted 6
203    6  third word, shifted 0
204    7  second word, shifted 7
205    8  second word, shifted 10
206    D  store in both place 1 and place 3; for divul and divsl.
207    B  first word, low byte, for branch displacements
208    W  second word (entire), for branch displacements
209    L  second and third words (entire), for branch displacements (also overloaded for move16)
210    b  second word, low byte
211    w  second word (entire) [variable word/long branch offset for dbra]
212    l  second and third word (entire)
213    g  variable branch offset for bra and similar instructions.
214       The place to store depends on the magnitude of offset.
215    t  store in both place 7 and place 8; for floating point operations
216    c  branch offset for cpBcc operations.
217       The place to store is word two if bit six of word one is zero,
218       and words two and three if bit six of word one is one.
219    i  Increment by two, to skip over coprocessor extended operands.   Only
220       works with the 'I' format.
221    k  Dynamic K-factor field.   Bits 6-4 of word 2, used as a register number.
222       Also used for dynamic fmovem instruction.
223    C  floating point coprocessor constant - 7 bits.  Also used for static
224       K-factors...
225    j  Movec register #, stored in 12 low bits of second word.
226
227  Places to put operand, for general operands:
228    d  destination, shifted 6 bits in first word
229    b  source, at low bit of first word, and immediate uses one byte
230    w  source, at low bit of first word, and immediate uses two bytes
231    l  source, at low bit of first word, and immediate uses four bytes
232    s  source, at low bit of first word.
233       Used sometimes in contexts where immediate is not allowed anyway.
234    f  single precision float, low bit of 1st word, immediate uses 4 bytes
235    F  double precision float, low bit of 1st word, immediate uses 8 bytes
236    x  extended precision float, low bit of 1st word, immediate uses 12 bytes
237    p  packed float, low bit of 1st word, immediate uses 12 bytes
238 */
239
240 #define one(x) ((x) << 16)
241 #define two(x, y) (((x) << 16) + y)
242
243 /*
244         *** DANGER WILL ROBINSON ***
245
246    The assembler requires that all instances of the same mnemonic must be
247    consecutive.  If they aren't, the assembler will bomb at runtime
248  */
249 struct m68k_opcode m68k_opcodes[] =
250 {
251 {"abcd",        one(0140400),           one(0170770), "DsDd", m68000up },
252 {"abcd",        one(0140410),           one(0170770), "-s-d", m68000up },
253
254                 /* Add instructions */
255 {"addal",       one(0150700),           one(0170700), "*lAd", m68000up },
256 {"addaw",       one(0150300),           one(0170700), "*wAd", m68000up },
257 {"addib",       one(0003000),           one(0177700), "#b$b", m68000up },
258 {"addil",       one(0003200),           one(0177700), "#l$l", m68000up },
259 {"addiw",       one(0003100),           one(0177700), "#w$w", m68000up },
260 {"addqb",       one(0050000),           one(0170700), "Qd$b", m68000up },
261 {"addql",       one(0050200),           one(0170700), "Qd%l", m68000up },
262 {"addqw",       one(0050100),           one(0170700), "Qd%w", m68000up },
263
264 {"addb",        one(0050000),           one(0170700), "Qd$b", m68000up },       /* addq written as add */
265 {"addb",        one(0003000),           one(0177700), "#b$b", m68000up },       /* addi written as add */
266 {"addb",        one(0150000),           one(0170700), ";bDd", m68000up },       /* addb <ea>,   Dd */
267 {"addb",        one(0150400),           one(0170700), "Dd~b", m68000up },       /* addb Dd,     <ea> */
268
269 {"addw",        one(0050100),           one(0170700), "Qd%w", m68000up },       /* addq written as add */
270 {"addw",        one(0003100),           one(0177700), "#w$w", m68000up },       /* addi written as add */
271 {"addw",        one(0150300),           one(0170700), "*wAd", m68000up },       /* adda written as add */
272 {"addw",        one(0150100),           one(0170700), "*wDd", m68000up },       /* addw <ea>,   Dd */
273 {"addw",        one(0150500),           one(0170700), "Dd~w", m68000up },       /* addw Dd,     <ea> */
274
275 {"addl",        one(0050200),           one(0170700), "Qd%l", m68000up },       /* addq written as add */
276 {"addl",        one(0003200),           one(0177700), "#l$l", m68000up },       /* addi written as add */
277 {"addl",        one(0150700),           one(0170700), "*lAd", m68000up },       /* adda written as add */
278 {"addl",        one(0150200),           one(0170700), "*lDd", m68000up },       /* addl <ea>,   Dd */
279 {"addl",        one(0150600),           one(0170700), "Dd~l", m68000up },       /* addl Dd,     <ea> */
280
281 {"addxb",       one(0150400),           one(0170770), "DsDd", m68000up },
282 {"addxb",       one(0150410),           one(0170770), "-s-d", m68000up },
283 {"addxl",       one(0150600),           one(0170770), "DsDd", m68000up },
284 {"addxl",       one(0150610),           one(0170770), "-s-d", m68000up },
285 {"addxw",       one(0150500),           one(0170770), "DsDd", m68000up },
286 {"addxw",       one(0150510),           one(0170770), "-s-d", m68000up },
287
288 {"andib",       one(0001000),           one(0177700), "#b$b", m68000up },
289 {"andib",       one(0001074),           one(0177777), "#bCb", m68000up },       /* andi to ccr */
290 {"andiw",       one(0001100),           one(0177700), "#w$w", m68000up },
291 {"andiw",       one(0001174),           one(0177777), "#wSw", m68000up },       /* andi to sr */
292 {"andil",       one(0001200),           one(0177700), "#l$l", m68000up },
293
294 {"andb",        one(0001000),           one(0177700), "#b$b", m68000up },       /* andi written as or */
295 {"andb",        one(0001074),           one(0177777), "#bCb", m68000up },       /* andi to ccr */
296 {"andb",        one(0140000),           one(0170700), ";bDd", m68000up },       /* memory to register */
297 {"andb",        one(0140400),           one(0170700), "Dd~b", m68000up },       /* register to memory */
298 {"andw",        one(0001100),           one(0177700), "#w$w", m68000up },       /* andi written as or */
299 {"andw",        one(0001174),           one(0177777), "#wSw", m68000up },       /* andi to sr */
300 {"andw",        one(0140100),           one(0170700), ";wDd", m68000up },       /* memory to register */
301 {"andw",        one(0140500),           one(0170700), "Dd~w", m68000up },       /* register to memory */
302 {"andl",        one(0001200),           one(0177700), "#l$l", m68000up },       /* andi written as or */
303 {"andl",        one(0140200),           one(0170700), ";lDd", m68000up },       /* memory to register */
304 {"andl",        one(0140600),           one(0170700), "Dd~l", m68000up },       /* register to memory */
305
306 {"aslb",        one(0160400),           one(0170770), "QdDs", m68000up },
307 {"aslb",        one(0160440),           one(0170770), "DdDs", m68000up },
308 {"asll",        one(0160600),           one(0170770), "QdDs", m68000up },
309 {"asll",        one(0160640),           one(0170770), "DdDs", m68000up },
310 {"aslw",        one(0160500),           one(0170770), "QdDs", m68000up },
311 {"aslw",        one(0160540),           one(0170770), "DdDs", m68000up },
312 {"aslw",        one(0160700),           one(0177700), "~s",   m68000up },       /* Shift memory */
313 {"asrb",        one(0160000),           one(0170770), "QdDs", m68000up },
314 {"asrb",        one(0160040),           one(0170770), "DdDs", m68000up },
315 {"asrl",        one(0160200),           one(0170770), "QdDs", m68000up },
316 {"asrl",        one(0160240),           one(0170770), "DdDs", m68000up },
317 {"asrw",        one(0160100),           one(0170770), "QdDs", m68000up },
318 {"asrw",        one(0160140),           one(0170770), "DdDs", m68000up },
319 {"asrw",        one(0160300),           one(0177700), "~s",   m68000up },       /* Shift memory */
320
321 /* Fixed-size branches with 16-bit offsets */
322
323 {"bhi",         one(0061000),           one(0177777), "BW", m68000up },
324 {"bls",         one(0061400),           one(0177777), "BW", m68000up },
325 {"bcc",         one(0062000),           one(0177777), "BW", m68000up },
326 {"bcs",         one(0062400),           one(0177777), "BW", m68000up },
327 {"bne",         one(0063000),           one(0177777), "BW", m68000up },
328 {"beq",         one(0063400),           one(0177777), "BW", m68000up },
329 {"bvc",         one(0064000),           one(0177777), "BW", m68000up },
330 {"bvs",         one(0064400),           one(0177777), "BW", m68000up },
331 {"bpl",         one(0065000),           one(0177777), "BW", m68000up },
332 {"bmi",         one(0065400),           one(0177777), "BW", m68000up },
333 {"bge",         one(0066000),           one(0177777), "BW", m68000up },
334 {"blt",         one(0066400),           one(0177777), "BW", m68000up },
335 {"bgt",         one(0067000),           one(0177777), "BW", m68000up },
336 {"ble",         one(0067400),           one(0177777), "BW", m68000up },
337 {"bra",         one(0060000),           one(0177777), "BW", m68000up },
338 {"bsr",         one(0060400),           one(0177777), "BW", m68000up },
339
340 /* Fixed-size branches with short (byte) offsets */
341
342 {"bhis",        one(0061000),           one(0177400), "BB", m68000up },
343 {"blss",        one(0061400),           one(0177400), "BB", m68000up },
344 {"bccs",        one(0062000),           one(0177400), "BB", m68000up },
345 {"bcss",        one(0062400),           one(0177400), "BB", m68000up },
346 {"bnes",        one(0063000),           one(0177400), "BB", m68000up },
347 {"beqs",        one(0063400),           one(0177400), "BB", m68000up },
348 {"bvcs",        one(0064000),           one(0177400), "BB", m68000up },
349 {"bvss",        one(0064400),           one(0177400), "BB", m68000up },
350 {"bpls",        one(0065000),           one(0177400), "BB", m68000up },
351 {"bmis",        one(0065400),           one(0177400), "BB", m68000up },
352 {"bges",        one(0066000),           one(0177400), "BB", m68000up },
353 {"blts",        one(0066400),           one(0177400), "BB", m68000up },
354 {"bgts",        one(0067000),           one(0177400), "BB", m68000up },
355 {"bles",        one(0067400),           one(0177400), "BB", m68000up },
356 {"bras",        one(0060000),           one(0177400), "BB", m68000up },
357 {"bsrs",        one(0060400),           one(0177400), "BB", m68000up },
358
359 /* Fixed-size branches with long (32-bit) offsets */
360
361 {"bhil",        one(0061377),           one(0177777), "BL", m68020up },
362 {"blsl",        one(0061777),           one(0177777), "BL", m68020up },
363 {"bccl",        one(0062377),           one(0177777), "BL", m68020up },
364 {"bcsl",        one(0062777),           one(0177777), "BL", m68020up },
365 {"bnel",        one(0063377),           one(0177777), "BL", m68020up },
366 {"beql",        one(0063777),           one(0177777), "BL", m68020up },
367 {"bvcl",        one(0064377),           one(0177777), "BL", m68020up },
368 {"bvsl",        one(0064777),           one(0177777), "BL", m68020up },
369 {"bpll",        one(0065377),           one(0177777), "BL", m68020up },
370 {"bmil",        one(0065777),           one(0177777), "BL", m68020up },
371 {"bgel",        one(0066377),           one(0177777), "BL", m68020up },
372 {"bltl",        one(0066777),           one(0177777), "BL", m68020up },
373 {"bgtl",        one(0067377),           one(0177777), "BL", m68020up },
374 {"blel",        one(0067777),           one(0177777), "BL", m68020up },
375 {"bral",        one(0060377),           one(0177777), "BL", m68020up },
376 {"bsrl",        one(0060777),           one(0177777), "BL", m68020up },
377
378 /* We now return you to our regularly scheduled instruction set */
379
380 {"bchg",        one(0000500),           one(0170700),           "Dd$s", m68000up },
381 {"bchg",        one(0004100),           one(0177700),           "#b$s", m68000up },
382 {"bclr",        one(0000600),           one(0170700),           "Dd$s", m68000up },
383 {"bclr",        one(0004200),           one(0177700),           "#b$s", m68000up },
384
385 {"bfchg",       two(0165300, 0),        two(0177700, 0170000),  "?sO2O3",   m68020up },
386 {"bfclr",       two(0166300, 0),        two(0177700, 0170000),  "?sO2O3",   m68020up },
387 {"bfexts",      two(0165700, 0),        two(0177700, 0100000),  "/sO2O3D1", m68020up },
388 {"bfextu",      two(0164700, 0),        two(0177700, 0100000),  "/sO2O3D1", m68020up },
389 {"bfffo",       two(0166700, 0),        two(0177700, 0100000),  "/sO2O3D1", m68020up },
390 {"bfins",       two(0167700, 0),        two(0177700, 0100000),  "D1?sO2O3", m68020up },
391 {"bfset",       two(0167300, 0),        two(0177700, 0170000),  "?sO2O3",   m68020up },
392 {"bftst",       two(0164300, 0),        two(0177700, 0170000),  "/sO2O3",   m68020up },
393 {"bkpt",        one(0044110),           one(0177770),           "Qs",       m68020up },
394
395 {"bset",        one(0000700),           one(0170700),           "Dd$s", m68000up },
396 {"bset",        one(0004300),           one(0177700),           "#b$s", m68000up },
397 {"btst",        one(0000400),           one(0170700),           "Dd@s", m68000up },
398 {"btst",        one(0004000),           one(0177700),           "#b@s", m68000up },
399
400
401 {"callm",       one(0003300),           one(0177700),           "#b!s", m68020 },
402
403 {"cas2l",       two(0007374, 0),        two(0177777, 0107070),  "D3D6D2D5R1R4", m68020up }, /* JF FOO really a 3 word ins */
404 {"cas2w",       two(0006374, 0),        two(0177777, 0107070),  "D3D6D2D5R1R4", m68020up }, /* JF ditto */
405 {"casb",        two(0005300, 0),        two(0177700, 0177070),  "D3D2~s", m68020up },
406 {"casl",        two(0007300, 0),        two(0177700, 0177070),  "D3D2~s", m68020up },
407 {"casw",        two(0006300, 0),        two(0177700, 0177070),  "D3D2~s", m68020up },
408
409 /*  {"chk",     one(0040600),           one(0170700),           ";wDd"}, JF FOO this looks wrong */
410 {"chk2b",       two(0000300, 0004000),  two(0177700, 07777),    "!sR1", m68020up },
411 {"chk2l",       two(0002300, 0004000),  two(0177700, 07777),    "!sR1", m68020up },
412 {"chk2w",       two(0001300, 0004000),  two(0177700, 07777),    "!sR1", m68020up },
413 {"chkl",        one(0040400),           one(0170700),           ";lDd", m68000up },
414 {"chkw",        one(0040600),           one(0170700),           ";wDd", m68000up },
415
416 #define SCOPE_LINE (0x1 << 3)
417 #define SCOPE_PAGE (0x2 << 3)
418 #define SCOPE_ALL  (0x3 << 3)
419 {"cinva",       one(0xf400|SCOPE_ALL),  one(0xff38), "ce",   m68040 },
420 {"cinvl",       one(0xf400|SCOPE_LINE), one(0xff38), "ceas", m68040 },
421 {"cinvp",       one(0xf400|SCOPE_PAGE), one(0xff38), "ceas", m68040 },
422
423 {"cpusha",      one(0xf420|SCOPE_ALL),  one(0xff38), "ce",   m68040 },
424 {"cpushl",      one(0xf420|SCOPE_LINE), one(0xff38), "ceas", m68040 },
425 {"cpushp",      one(0xf420|SCOPE_PAGE), one(0xff38), "ceas", m68040 },
426
427 #undef SCOPE_LINE
428 #undef SCOPE_PAGE
429 #undef SCOPE_ALL
430
431 {"clrb",        one(0041000),           one(0177700),           "$s", m68000up },
432 {"clrl",        one(0041200),           one(0177700),           "$s", m68000up },
433 {"clrw",        one(0041100),           one(0177700),           "$s", m68000up },
434
435 {"cmp2b",       two(0000300, 0),        two(0177700, 07777),    "!sR1", m68020up },
436 {"cmp2l",       two(0002300, 0),        two(0177700, 07777),    "!sR1", m68020up },
437 {"cmp2w",       two(0001300, 0),        two(0177700, 07777),    "!sR1", m68020up },
438 {"cmpal",       one(0130700),           one(0170700),           "*lAd", m68000up },
439 {"cmpaw",       one(0130300),           one(0170700),           "*wAd", m68000up },
440 {"cmpib",       one(0006000),           one(0177700),           "#b;b", m68000up },
441 {"cmpil",       one(0006200),           one(0177700),           "#l;l", m68000up },
442 {"cmpiw",       one(0006100),           one(0177700),           "#w;w", m68000up },
443 {"cmpb",        one(0006000),           one(0177700),           "#b;b", m68000up },     /* cmpi written as cmp */
444 {"cmpb",        one(0130000),           one(0170700),           ";bDd", m68000up },
445 {"cmpw",        one(0006100),           one(0177700),           "#w;w", m68000up },
446 {"cmpw",        one(0130100),           one(0170700),           "*wDd", m68000up },
447 {"cmpw",        one(0130300),           one(0170700),           "*wAd", m68000up },     /* cmpa written as cmp */
448 {"cmpl",        one(0006200),           one(0177700),           "#l;l", m68000up },
449 {"cmpl",        one(0130200),           one(0170700),           "*lDd", m68000up },
450 {"cmpl",        one(0130700),           one(0170700),           "*lAd", m68000up },
451 {"cmpmb",       one(0130410),           one(0170770),           "+s+d", m68000up },
452 {"cmpml",       one(0130610),           one(0170770),           "+s+d", m68000up },
453 {"cmpmw",       one(0130510),           one(0170770),           "+s+d", m68000up },
454
455 {"dbcc",        one(0052310),           one(0177770),           "DsBw", m68000up },
456 {"dbcs",        one(0052710),           one(0177770),           "DsBw", m68000up },
457 {"dbeq",        one(0053710),           one(0177770),           "DsBw", m68000up },
458 {"dbf",         one(0050710),           one(0177770),           "DsBw", m68000up },
459 {"dbge",        one(0056310),           one(0177770),           "DsBw", m68000up },
460 {"dbgt",        one(0057310),           one(0177770),           "DsBw", m68000up },
461 {"dbhi",        one(0051310),           one(0177770),           "DsBw", m68000up },
462 {"dble",        one(0057710),           one(0177770),           "DsBw", m68000up },
463 {"dbls",        one(0051710),           one(0177770),           "DsBw", m68000up },
464 {"dblt",        one(0056710),           one(0177770),           "DsBw", m68000up },
465 {"dbmi",        one(0055710),           one(0177770),           "DsBw", m68000up },
466 {"dbne",        one(0053310),           one(0177770),           "DsBw", m68000up },
467 {"dbpl",        one(0055310),           one(0177770),           "DsBw", m68000up },
468 {"dbra",        one(0050710),           one(0177770),           "DsBw", m68000up },
469 {"dbt",         one(0050310),           one(0177770),           "DsBw", m68000up },
470 {"dbvc",        one(0054310),           one(0177770),           "DsBw", m68000up },
471 {"dbvs",        one(0054710),           one(0177770),           "DsBw", m68000up },
472
473 {"divsl",       two(0046100, 0006000),  two(0177700, 0107770),  ";lD3D1", m68020up },
474 {"divsl",       two(0046100, 0004000),  two(0177700, 0107770),  ";lDD", m68020up },
475 {"divsll",      two(0046100, 0004000),  two(0177700, 0107770),  ";lD3D1", m68020up },
476 {"divsw",       one(0100700),           one(0170700),           ";wDd", m68000up },
477 {"divs",        one(0100700),           one(0170700),           ";wDd", m68000up },
478 {"divul",       two(0046100, 0002000),  two(0177700, 0107770),  ";lD3D1", m68020up },
479 {"divul",       two(0046100, 0000000),  two(0177700, 0107770),  ";lDD", m68020up },
480 {"divull",      two(0046100, 0000000),  two(0177700, 0107770),  ";lD3D1", m68020up },
481 {"divuw",       one(0100300),           one(0170700),           ";wDd", m68000up },
482 {"divu",        one(0100300),           one(0170700),           ";wDd", m68000up },
483 {"eorb",        one(0005000),           one(0177700),           "#b$s", m68000up },     /* eori written as or */
484 {"eorb",        one(0005074),           one(0177777),           "#bCs", m68000up },     /* eori to ccr */
485 {"eorb",        one(0130400),           one(0170700),           "Dd$s", m68000up },     /* register to memory */
486 {"eorib",       one(0005000),           one(0177700),           "#b$s", m68000up },
487 {"eorib",       one(0005074),           one(0177777),           "#bCs", m68000up },     /* eori to ccr */
488 {"eoril",       one(0005200),           one(0177700),           "#l$s", m68000up },
489 {"eoriw",       one(0005100),           one(0177700),           "#w$s", m68000up },
490 {"eoriw",       one(0005174),           one(0177777),           "#wSs", m68000up },     /* eori to sr */
491 {"eorl",        one(0005200),           one(0177700),           "#l$s", m68000up },
492 {"eorl",        one(0130600),           one(0170700),           "Dd$s", m68000up },
493 {"eorw",        one(0005100),           one(0177700),           "#w$s", m68000up },
494 {"eorw",        one(0005174),           one(0177777),           "#wSs", m68000up },     /* eori to sr */
495 {"eorw",        one(0130500),           one(0170700),           "Dd$s", m68000up },
496
497 {"exg",         one(0140500),           one(0170770),           "DdDs", m68000up },
498 {"exg",         one(0140510),           one(0170770),           "AdAs", m68000up },
499 {"exg",         one(0140610),           one(0170770),           "DdAs", m68000up },
500 {"exg",         one(0140610),           one(0170770),           "AsDd", m68000up },
501
502 {"extw",        one(0044200),           one(0177770),           "Ds", m68000up },
503 {"extl",        one(0044300),           one(0177770),           "Ds", m68000up },
504 {"extbl",       one(0044700),           one(0177770),           "Ds", m68020up },
505 {"extb.l",      one(0044700),           one(0177770),           "Ds", m68020up }, /* Not sure we should support this one */
506
507 /* float stuff starts here */
508 {"fabsb",       two(0xF000, 0x5818),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
509 {"fabsd",       two(0xF000, 0x5418),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
510 {"fabsl",       two(0xF000, 0x4018),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
511 {"fabsp",       two(0xF000, 0x4C18),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
512 {"fabss",       two(0xF000, 0x4418),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
513 {"fabsw",       two(0xF000, 0x5018),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
514 {"fabsx",       two(0xF000, 0x0018),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
515 {"fabsx",       two(0xF000, 0x4818),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
516 {"fabsx",       two(0xF000, 0x0018),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
517
518 /* FIXME-NOW: The '040 book that I have claims that these should be
519    coded exactly like fadd.  In fact, the table of opmodes calls them
520    fadd, fsadd, fdadd.  That can't be right.  If someone can give me the
521    right encoding, I'll fix it.  By induction, I *think* the right
522    encoding is 38 & 3c, but I'm not sure.
523
524    in the mean time, if you know the encoding for the opmode field, you
525    can replace all of the "38),"'s and "3c),"'s below with the corrected
526    values and these guys should then just work.  xoxorich. 31Aug91 */
527 {"fsabsb",      two(0xF000, 0x5858),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
528 {"fsabsd",      two(0xF000, 0x5458),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
529 {"fsabsl",      two(0xF000, 0x4058),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
530 {"fsabsp",      two(0xF000, 0x4C58),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
531 {"fsabss",      two(0xF000, 0x4458),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
532 {"fsabsw",      two(0xF000, 0x5058),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
533 {"fsabsx",      two(0xF000, 0x0058),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
534 {"fsabsx",      two(0xF000, 0x4858),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
535 {"fsabsx",      two(0xF000, 0x0058),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 },
536
537 {"fdabsb",      two(0xF000, 0x585c),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040},
538 {"fdabsd",      two(0xF000, 0x545c),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040},
539 {"fdabsl",      two(0xF000, 0x405c),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040},
540 {"fdabsp",      two(0xF000, 0x4C5c),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040},
541 {"fdabss",      two(0xF000, 0x445c),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040},
542 {"fdabsw",      two(0xF000, 0x505c),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040},
543 {"fdabsx",      two(0xF000, 0x005c),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040},
544 {"fdabsx",      two(0xF000, 0x485c),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040},
545 {"fdabsx",      two(0xF000, 0x005c),    two(0xF1C0, 0xE07F),    "IiFt",   m68040},
546
547 {"facosb",      two(0xF000, 0x581C),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
548 {"facosd",      two(0xF000, 0x541C),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
549 {"facosl",      two(0xF000, 0x401C),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
550 {"facosp",      two(0xF000, 0x4C1C),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
551 {"facoss",      two(0xF000, 0x441C),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
552 {"facosw",      two(0xF000, 0x501C),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
553 {"facosx",      two(0xF000, 0x001C),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
554 {"facosx",      two(0xF000, 0x481C),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
555 {"facosx",      two(0xF000, 0x001C),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
556
557 {"faddb",       two(0xF000, 0x5822),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
558 {"faddd",       two(0xF000, 0x5422),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
559 {"faddl",       two(0xF000, 0x4022),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
560 {"faddp",       two(0xF000, 0x4C22),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
561 {"fadds",       two(0xF000, 0x4422),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
562 {"faddw",       two(0xF000, 0x5022),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
563 {"faddx",       two(0xF000, 0x0022),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
564 {"faddx",       two(0xF000, 0x4822),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
565 /* {"faddx",    two(0xF000, 0x0022),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat }, JF removed */
566 {"fsaddb",      two(0xF000, 0x5862),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
567 {"fsaddd",      two(0xF000, 0x5462),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
568 {"fsaddl",      two(0xF000, 0x4062),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
569 {"fsaddp",      two(0xF000, 0x4C62),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
570 {"fsadds",      two(0xF000, 0x4462),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
571 {"fsaddw",      two(0xF000, 0x5062),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
572 {"fsaddx",      two(0xF000, 0x0062),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
573 {"fsaddx",      two(0xF000, 0x4862),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
574 /* {"fsaddx",   two(0xF000, 0x0062),    two(0xF1C0, 0xE07F),    "IiFt", m68040 }, JF removed */
575 {"fdaddb",      two(0xF000, 0x5866),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
576 {"fdaddd",      two(0xF000, 0x5466),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
577 {"fdaddl",      two(0xF000, 0x4066),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
578 {"fdaddp",      two(0xF000, 0x4C66),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
579 {"fdadds",      two(0xF000, 0x4466),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
580 {"fdaddw",      two(0xF000, 0x5066),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
581 {"fdaddx",      two(0xF000, 0x0066),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
582 {"fdaddx",      two(0xF000, 0x4866),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
583 /* {"faddx",    two(0xF000, 0x0066),    two(0xF1C0, 0xE07F),    "IiFt", m68040 }, JF removed */
584
585 {"fasinb",      two(0xF000, 0x580C),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
586 {"fasind",      two(0xF000, 0x540C),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
587 {"fasinl",      two(0xF000, 0x400C),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
588 {"fasinp",      two(0xF000, 0x4C0C),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
589 {"fasins",      two(0xF000, 0x440C),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
590 {"fasinw",      two(0xF000, 0x500C),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
591 {"fasinx",      two(0xF000, 0x000C),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
592 {"fasinx",      two(0xF000, 0x480C),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
593 {"fasinx",      two(0xF000, 0x000C),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
594
595 {"fatanb",      two(0xF000, 0x580A),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
596 {"fatand",      two(0xF000, 0x540A),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
597 {"fatanl",      two(0xF000, 0x400A),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
598 {"fatanp",      two(0xF000, 0x4C0A),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
599 {"fatans",      two(0xF000, 0x440A),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
600 {"fatanw",      two(0xF000, 0x500A),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
601 {"fatanx",      two(0xF000, 0x000A),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
602 {"fatanx",      two(0xF000, 0x480A),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
603 {"fatanx",      two(0xF000, 0x000A),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
604
605 {"fatanhb",     two(0xF000, 0x580D),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
606 {"fatanhd",     two(0xF000, 0x540D),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
607 {"fatanhl",     two(0xF000, 0x400D),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
608 {"fatanhp",     two(0xF000, 0x4C0D),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
609 {"fatanhs",     two(0xF000, 0x440D),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
610 {"fatanhw",     two(0xF000, 0x500D),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
611 {"fatanhx",     two(0xF000, 0x000D),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
612 {"fatanhx",     two(0xF000, 0x480D),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
613 {"fatanhx",     two(0xF000, 0x000D),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
614
615 /* Fixed-size Float branches */
616
617 {"fbeq",        one(0xF081),            one(0xF1BF),            "IdBW", mfloat },
618 {"fbf",         one(0xF080),            one(0xF1BF),            "IdBW", mfloat },
619 {"fbge",        one(0xF093),            one(0xF1BF),            "IdBW", mfloat },
620 {"fbgl",        one(0xF096),            one(0xF1BF),            "IdBW", mfloat },
621 {"fbgle",       one(0xF097),            one(0xF1BF),            "IdBW", mfloat },
622 {"fbgt",        one(0xF092),            one(0xF1BF),            "IdBW", mfloat },
623 {"fble",        one(0xF095),            one(0xF1BF),            "IdBW", mfloat },
624 {"fblt",        one(0xF094),            one(0xF1BF),            "IdBW", mfloat },
625 {"fbne",        one(0xF08E),            one(0xF1BF),            "IdBW", mfloat },
626 {"fbnge",       one(0xF09C),            one(0xF1BF),            "IdBW", mfloat },
627 {"fbngl",       one(0xF099),            one(0xF1BF),            "IdBW", mfloat },
628 {"fbngle",      one(0xF098),            one(0xF1BF),            "IdBW", mfloat },
629 {"fbngt",       one(0xF09D),            one(0xF1BF),            "IdBW", mfloat },
630 {"fbnle",       one(0xF09A),            one(0xF1BF),            "IdBW", mfloat },
631 {"fbnlt",       one(0xF09B),            one(0xF1BF),            "IdBW", mfloat },
632 {"fboge",       one(0xF083),            one(0xF1BF),            "IdBW", mfloat },
633 {"fbogl",       one(0xF086),            one(0xF1BF),            "IdBW", mfloat },
634 {"fbogt",       one(0xF082),            one(0xF1BF),            "IdBW", mfloat },
635 {"fbole",       one(0xF085),            one(0xF1BF),            "IdBW", mfloat },
636 {"fbolt",       one(0xF084),            one(0xF1BF),            "IdBW", mfloat },
637 {"fbor",        one(0xF087),            one(0xF1BF),            "IdBW", mfloat },
638 {"fbseq",       one(0xF091),            one(0xF1BF),            "IdBW", mfloat },
639 {"fbsf",        one(0xF090),            one(0xF1BF),            "IdBW", mfloat },
640 {"fbsne",       one(0xF09E),            one(0xF1BF),            "IdBW", mfloat },
641 {"fbst",        one(0xF09F),            one(0xF1BF),            "IdBW", mfloat },
642 {"fbt",         one(0xF08F),            one(0xF1BF),            "IdBW", mfloat },
643 {"fbueq",       one(0xF089),            one(0xF1BF),            "IdBW", mfloat },
644 {"fbuge",       one(0xF08B),            one(0xF1BF),            "IdBW", mfloat },
645 {"fbugt",       one(0xF08A),            one(0xF1BF),            "IdBW", mfloat },
646 {"fbule",       one(0xF08D),            one(0xF1BF),            "IdBW", mfloat },
647 {"fbult",       one(0xF08C),            one(0xF1BF),            "IdBW", mfloat },
648 {"fbun",        one(0xF088),            one(0xF1BF),            "IdBW", mfloat },
649
650 /* Float branches -- long (32-bit) displacements */
651
652 {"fbeql",       one(0xF081),            one(0xF1BF),            "IdBC", mfloat },
653 {"fbfl",        one(0xF080),            one(0xF1BF),            "IdBC", mfloat },
654 {"fbgel",       one(0xF093),            one(0xF1BF),            "IdBC", mfloat },
655 {"fbgll",       one(0xF096),            one(0xF1BF),            "IdBC", mfloat },
656 {"fbglel",      one(0xF097),            one(0xF1BF),            "IdBC", mfloat },
657 {"fbgtl",       one(0xF092),            one(0xF1BF),            "IdBC", mfloat },
658 {"fblel",       one(0xF095),            one(0xF1BF),            "IdBC", mfloat },
659 {"fbltl",       one(0xF094),            one(0xF1BF),            "IdBC", mfloat },
660 {"fbnel",       one(0xF08E),            one(0xF1BF),            "IdBC", mfloat },
661 {"fbngel",      one(0xF09C),            one(0xF1BF),            "IdBC", mfloat },
662 {"fbngll",      one(0xF099),            one(0xF1BF),            "IdBC", mfloat },
663 {"fbnglel",     one(0xF098),            one(0xF1BF),            "IdBC", mfloat },
664 {"fbngtl",      one(0xF09D),            one(0xF1BF),            "IdBC", mfloat },
665 {"fbnlel",      one(0xF09A),            one(0xF1BF),            "IdBC", mfloat },
666 {"fbnltl",      one(0xF09B),            one(0xF1BF),            "IdBC", mfloat },
667 {"fbogel",      one(0xF083),            one(0xF1BF),            "IdBC", mfloat },
668 {"fbogll",      one(0xF086),            one(0xF1BF),            "IdBC", mfloat },
669 {"fbogtl",      one(0xF082),            one(0xF1BF),            "IdBC", mfloat },
670 {"fbolel",      one(0xF085),            one(0xF1BF),            "IdBC", mfloat },
671 {"fboltl",      one(0xF084),            one(0xF1BF),            "IdBC", mfloat },
672 {"fborl",       one(0xF087),            one(0xF1BF),            "IdBC", mfloat },
673 {"fbseql",      one(0xF091),            one(0xF1BF),            "IdBC", mfloat },
674 {"fbsfl",       one(0xF090),            one(0xF1BF),            "IdBC", mfloat },
675 {"fbsnel",      one(0xF09E),            one(0xF1BF),            "IdBC", mfloat },
676 {"fbstl",       one(0xF09F),            one(0xF1BF),            "IdBC", mfloat },
677 {"fbtl",        one(0xF08F),            one(0xF1BF),            "IdBC", mfloat },
678 {"fbueql",      one(0xF089),            one(0xF1BF),            "IdBC", mfloat },
679 {"fbugel",      one(0xF08B),            one(0xF1BF),            "IdBC", mfloat },
680 {"fbugtl",      one(0xF08A),            one(0xF1BF),            "IdBC", mfloat },
681 {"fbulel",      one(0xF08D),            one(0xF1BF),            "IdBC", mfloat },
682 {"fbultl",      one(0xF08C),            one(0xF1BF),            "IdBC", mfloat },
683 {"fbunl",       one(0xF088),            one(0xF1BF),            "IdBC", mfloat },
684
685 {"fcmpb",       two(0xF000, 0x5838),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
686 {"fcmpd",       two(0xF000, 0x5438),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
687 {"fcmpl",       two(0xF000, 0x4038),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
688 {"fcmpp",       two(0xF000, 0x4C38),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
689 {"fcmps",       two(0xF000, 0x4438),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
690 {"fcmpw",       two(0xF000, 0x5038),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
691 {"fcmpx",       two(0xF000, 0x0038),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
692 {"fcmpx",       two(0xF000, 0x4838),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
693 /* {"fcmpx",    two(0xF000, 0x0038),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat }, JF removed */
694
695 {"fcosb",       two(0xF000, 0x581D),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
696 {"fcosd",       two(0xF000, 0x541D),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
697 {"fcosl",       two(0xF000, 0x401D),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
698 {"fcosp",       two(0xF000, 0x4C1D),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
699 {"fcoss",       two(0xF000, 0x441D),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
700 {"fcosw",       two(0xF000, 0x501D),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
701 {"fcosx",       two(0xF000, 0x001D),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
702 {"fcosx",       two(0xF000, 0x481D),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
703 {"fcosx",       two(0xF000, 0x001D),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
704
705 {"fcoshb",      two(0xF000, 0x5819),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
706 {"fcoshd",      two(0xF000, 0x5419),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
707 {"fcoshl",      two(0xF000, 0x4019),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
708 {"fcoshp",      two(0xF000, 0x4C19),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
709 {"fcoshs",      two(0xF000, 0x4419),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
710 {"fcoshw",      two(0xF000, 0x5019),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
711 {"fcoshx",      two(0xF000, 0x0019),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
712 {"fcoshx",      two(0xF000, 0x4819),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
713 {"fcoshx",      two(0xF000, 0x0019),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
714
715 {"fdbeq",       two(0xF048, 0x0001),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
716 {"fdbf",        two(0xF048, 0x0000),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
717 {"fdbge",       two(0xF048, 0x0013),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
718 {"fdbgl",       two(0xF048, 0x0016),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
719 {"fdbgle",      two(0xF048, 0x0017),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
720 {"fdbgt",       two(0xF048, 0x0012),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
721 {"fdble",       two(0xF048, 0x0015),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
722 {"fdblt",       two(0xF048, 0x0014),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
723 {"fdbne",       two(0xF048, 0x000E),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
724 {"fdbnge",      two(0xF048, 0x001C),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
725 {"fdbngl",      two(0xF048, 0x0019),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
726 {"fdbngle",     two(0xF048, 0x0018),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
727 {"fdbngt",      two(0xF048, 0x001D),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
728 {"fdbnle",      two(0xF048, 0x001A),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
729 {"fdbnlt",      two(0xF048, 0x001B),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
730 {"fdboge",      two(0xF048, 0x0003),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
731 {"fdbogl",      two(0xF048, 0x0006),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
732 {"fdbogt",      two(0xF048, 0x0002),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
733 {"fdbole",      two(0xF048, 0x0005),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
734 {"fdbolt",      two(0xF048, 0x0004),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
735 {"fdbor",       two(0xF048, 0x0007),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
736 {"fdbseq",      two(0xF048, 0x0011),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
737 {"fdbsf",       two(0xF048, 0x0010),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
738 {"fdbsne",      two(0xF048, 0x001E),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
739 {"fdbst",       two(0xF048, 0x001F),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
740 {"fdbt",        two(0xF048, 0x000F),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
741 {"fdbueq",      two(0xF048, 0x0009),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
742 {"fdbuge",      two(0xF048, 0x000B),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
743 {"fdbugt",      two(0xF048, 0x000A),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
744 {"fdbule",      two(0xF048, 0x000D),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
745 {"fdbult",      two(0xF048, 0x000C),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
746 {"fdbun",       two(0xF048, 0x0008),    two(0xF1F8, 0xFFFF),    "IiDsBw", mfloat },
747
748 {"fdivb",       two(0xF000, 0x5820),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
749 {"fdivd",       two(0xF000, 0x5420),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
750 {"fdivl",       two(0xF000, 0x4020),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
751 {"fdivp",       two(0xF000, 0x4C20),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
752 {"fdivs",       two(0xF000, 0x4420),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
753 {"fdivw",       two(0xF000, 0x5020),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
754 {"fdivx",       two(0xF000, 0x0020),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
755 {"fdivx",       two(0xF000, 0x4820),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
756 /* {"fdivx",    two(0xF000, 0x0020),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat }, JF */
757
758 {"fsdivb",      two(0xF000, 0x5860),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
759 {"fsdivd",      two(0xF000, 0x5460),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
760 {"fsdivl",      two(0xF000, 0x4060),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
761 {"fsdivp",      two(0xF000, 0x4C60),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
762 {"fsdivs",      two(0xF000, 0x4460),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
763 {"fsdivw",      two(0xF000, 0x5060),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
764 {"fsdivx",      two(0xF000, 0x0060),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
765 {"fsdivx",      two(0xF000, 0x4860),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
766 /* {"fsdivx",   two(0xF000, 0x0060),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 }, JF */
767
768 {"fddivb",      two(0xF000, 0x5864),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
769 {"fddivd",      two(0xF000, 0x5464),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
770 {"fddivl",      two(0xF000, 0x4064),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
771 {"fddivp",      two(0xF000, 0x4C64),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
772 {"fddivs",      two(0xF000, 0x4464),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
773 {"fddivw",      two(0xF000, 0x5064),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
774 {"fddivx",      two(0xF000, 0x0064),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
775 {"fddivx",      two(0xF000, 0x4864),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
776 /* {"fddivx",   two(0xF000, 0x0064),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 }, JF */
777
778 {"fetoxb",      two(0xF000, 0x5810),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
779 {"fetoxd",      two(0xF000, 0x5410),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
780 {"fetoxl",      two(0xF000, 0x4010),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
781 {"fetoxp",      two(0xF000, 0x4C10),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
782 {"fetoxs",      two(0xF000, 0x4410),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
783 {"fetoxw",      two(0xF000, 0x5010),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
784 {"fetoxx",      two(0xF000, 0x0010),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
785 {"fetoxx",      two(0xF000, 0x4810),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
786 {"fetoxx",      two(0xF000, 0x0010),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
787
788 {"fetoxm1b",    two(0xF000, 0x5808),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
789 {"fetoxm1d",    two(0xF000, 0x5408),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
790 {"fetoxm1l",    two(0xF000, 0x4008),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
791 {"fetoxm1p",    two(0xF000, 0x4C08),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
792 {"fetoxm1s",    two(0xF000, 0x4408),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
793 {"fetoxm1w",    two(0xF000, 0x5008),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
794 {"fetoxm1x",    two(0xF000, 0x0008),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
795 {"fetoxm1x",    two(0xF000, 0x4808),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
796 {"fetoxm1x",    two(0xF000, 0x0008),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
797
798 {"fgetexpb",    two(0xF000, 0x581E),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
799 {"fgetexpd",    two(0xF000, 0x541E),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
800 {"fgetexpl",    two(0xF000, 0x401E),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
801 {"fgetexpp",    two(0xF000, 0x4C1E),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
802 {"fgetexps",    two(0xF000, 0x441E),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
803 {"fgetexpw",    two(0xF000, 0x501E),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
804 {"fgetexpx",    two(0xF000, 0x001E),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
805 {"fgetexpx",    two(0xF000, 0x481E),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
806 {"fgetexpx",    two(0xF000, 0x001E),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
807
808 {"fgetmanb",    two(0xF000, 0x581F),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
809 {"fgetmand",    two(0xF000, 0x541F),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
810 {"fgetmanl",    two(0xF000, 0x401F),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
811 {"fgetmanp",    two(0xF000, 0x4C1F),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
812 {"fgetmans",    two(0xF000, 0x441F),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
813 {"fgetmanw",    two(0xF000, 0x501F),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
814 {"fgetmanx",    two(0xF000, 0x001F),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
815 {"fgetmanx",    two(0xF000, 0x481F),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
816 {"fgetmanx",    two(0xF000, 0x001F),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
817
818 {"fintb",       two(0xF000, 0x5801),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
819 {"fintd",       two(0xF000, 0x5401),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
820 {"fintl",       two(0xF000, 0x4001),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
821 {"fintp",       two(0xF000, 0x4C01),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
822 {"fints",       two(0xF000, 0x4401),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
823 {"fintw",       two(0xF000, 0x5001),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
824 {"fintx",       two(0xF000, 0x0001),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
825 {"fintx",       two(0xF000, 0x4801),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
826 {"fintx",       two(0xF000, 0x0001),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
827
828 {"fintrzb",     two(0xF000, 0x5803),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
829 {"fintrzd",     two(0xF000, 0x5403),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
830 {"fintrzl",     two(0xF000, 0x4003),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
831 {"fintrzp",     two(0xF000, 0x4C03),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
832 {"fintrzs",     two(0xF000, 0x4403),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
833 {"fintrzw",     two(0xF000, 0x5003),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
834 {"fintrzx",     two(0xF000, 0x0003),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
835 {"fintrzx",     two(0xF000, 0x4803),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
836 {"fintrzx",     two(0xF000, 0x0003),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
837
838 {"flog10b",     two(0xF000, 0x5815),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
839 {"flog10d",     two(0xF000, 0x5415),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
840 {"flog10l",     two(0xF000, 0x4015),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
841 {"flog10p",     two(0xF000, 0x4C15),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
842 {"flog10s",     two(0xF000, 0x4415),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
843 {"flog10w",     two(0xF000, 0x5015),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
844 {"flog10x",     two(0xF000, 0x0015),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
845 {"flog10x",     two(0xF000, 0x4815),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
846 {"flog10x",     two(0xF000, 0x0015),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
847
848 {"flog2b",      two(0xF000, 0x5816),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
849 {"flog2d",      two(0xF000, 0x5416),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
850 {"flog2l",      two(0xF000, 0x4016),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
851 {"flog2p",      two(0xF000, 0x4C16),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
852 {"flog2s",      two(0xF000, 0x4416),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
853 {"flog2w",      two(0xF000, 0x5016),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
854 {"flog2x",      two(0xF000, 0x0016),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
855 {"flog2x",      two(0xF000, 0x4816),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
856 {"flog2x",      two(0xF000, 0x0016),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
857
858 {"flognb",      two(0xF000, 0x5814),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
859 {"flognd",      two(0xF000, 0x5414),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
860 {"flognl",      two(0xF000, 0x4014),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
861 {"flognp",      two(0xF000, 0x4C14),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
862 {"flogns",      two(0xF000, 0x4414),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
863 {"flognw",      two(0xF000, 0x5014),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
864 {"flognx",      two(0xF000, 0x0014),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
865 {"flognx",      two(0xF000, 0x4814),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
866 {"flognx",      two(0xF000, 0x0014),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
867
868 {"flognp1b",    two(0xF000, 0x5806),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
869 {"flognp1d",    two(0xF000, 0x5406),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
870 {"flognp1l",    two(0xF000, 0x4006),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
871 {"flognp1p",    two(0xF000, 0x4C06),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
872 {"flognp1s",    two(0xF000, 0x4406),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
873 {"flognp1w",    two(0xF000, 0x5006),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
874 {"flognp1x",    two(0xF000, 0x0006),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
875 {"flognp1x",    two(0xF000, 0x4806),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
876 {"flognp1x",    two(0xF000, 0x0006),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
877
878 {"fmodb",       two(0xF000, 0x5821),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
879 {"fmodd",       two(0xF000, 0x5421),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
880 {"fmodl",       two(0xF000, 0x4021),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
881 {"fmodp",       two(0xF000, 0x4C21),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
882 {"fmods",       two(0xF000, 0x4421),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
883 {"fmodw",       two(0xF000, 0x5021),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
884 {"fmodx",       two(0xF000, 0x0021),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
885 {"fmodx",       two(0xF000, 0x4821),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
886 /* {"fmodx",    two(0xF000, 0x0021),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat }, JF */
887
888 {"fmoveb",      two(0xF000, 0x5800),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },             /* fmove from <ea> to fp<n> */
889 {"fmoveb",      two(0xF000, 0x7800),    two(0xF1C0, 0xFC7F),    "IiF7@b", mfloat },             /* fmove from fp<n> to <ea> */
890 {"fmoved",      two(0xF000, 0x5400),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },             /* fmove from <ea> to fp<n> */
891 {"fmoved",      two(0xF000, 0x7400),    two(0xF1C0, 0xFC7F),    "IiF7@F", mfloat },             /* fmove from fp<n> to <ea> */
892 {"fmovel",      two(0xF000, 0x4000),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },             /* fmove from <ea> to fp<n> */
893 {"fmovel",      two(0xF000, 0x6000),    two(0xF1C0, 0xFC7F),    "IiF7@l", mfloat },             /* fmove from fp<n> to <ea> */
894 /* Warning:  The addressing modes on these are probably not right:
895    esp, Areg direct is only allowed for FPI */
896                 /* fmove.l from/to system control registers: */
897 {"fmovel",      two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "Iis8@s", mfloat },
898 {"fmovel",      two(0xF000, 0x8000),    two(0xF1C0, 0xE3FF),    "Ii*ls8", mfloat },
899
900 /* {"fmovel",   two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "Iis8@s", mfloat },
901 {"fmovel",      two(0xF000, 0x8000),    two(0xF2C0, 0xE3FF),    "Ii*ss8", mfloat }, */
902
903 {"fmovep",      two(0xF000, 0x4C00),    two(0xF1C0, 0xFC7F),    "Ii;pF7",   mfloat },           /* fmove from <ea> to fp<n> */
904 {"fmovep",      two(0xF000, 0x6C00),    two(0xF1C0, 0xFC00),    "IiF7@pkC", mfloat },           /* fmove.p with k-factors: */
905 {"fmovep",      two(0xF000, 0x7C00),    two(0xF1C0, 0xFC0F),    "IiF7@pDk", mfloat },           /* fmove.p with k-factors: */
906
907 {"fmoves",      two(0xF000, 0x4400),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },             /* fmove from <ea> to fp<n> */
908 {"fmoves",      two(0xF000, 0x6400),    two(0xF1C0, 0xFC7F),    "IiF7@f", mfloat },             /* fmove from fp<n> to <ea> */
909 {"fmovew",      two(0xF000, 0x5000),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },             /* fmove from <ea> to fp<n> */
910 {"fmovew",      two(0xF000, 0x7000),    two(0xF1C0, 0xFC7F),    "IiF7@w", mfloat },             /* fmove from fp<n> to <ea> */
911 {"fmovex",      two(0xF000, 0x0000),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },             /* fmove from <ea> to fp<n> */
912 {"fmovex",      two(0xF000, 0x4800),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },             /* fmove from <ea> to fp<n> */
913 {"fmovex",      two(0xF000, 0x6800),    two(0xF1C0, 0xFC7F),    "IiF7@x", mfloat },             /* fmove from fp<n> to <ea> */
914 /* JF removed {"fmovex",        two(0xF000, 0x0000),    two(0xF1C0, 0xE07F),    "IiFt", mfloat }, / * fmove from <ea> to fp<n> */
915
916 {"fsmoveb",     two(0xF000, 0x5840),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 }, /* fmove from <ea> to fp<n> */
917 {"fsmoved",     two(0xF000, 0x5440),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 }, /* fmove from <ea> to fp<n> */
918 {"fsmovel",     two(0xF000, 0x4040),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 }, /* fmove from <ea> to fp<n> */
919 {"fsmoves",     two(0xF000, 0x4440),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 }, /* fmove from <ea> to fp<n> */
920 {"fsmovew",     two(0xF000, 0x5040),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 }, /* fmove from <ea> to fp<n> */
921 {"fsmovex",     two(0xF000, 0x0040),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 }, /* fmove from <ea> to fp<n> */
922 {"fsmovex",     two(0xF000, 0x4840),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 }, /* fmove from <ea> to fp<n> */
923 /* JF removed {"fsmovex",       two(0xF000, 0x0040),    two(0xF1C0, 0xE07F),    "IiFt", m68040 }, / * fmove from <ea> to fp<n> */
924
925 {"fdmoveb",     two(0xF000, 0x5844),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 }, /* fmove from <ea> to fp<n> */
926 {"fdmoved",     two(0xF000, 0x5444),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 }, /* fmove from <ea> to fp<n> */
927 {"fdmovel",     two(0xF000, 0x4044),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 }, /* fmove from <ea> to fp<n> */
928 {"fdmoves",     two(0xF000, 0x4444),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 }, /* fmove from <ea> to fp<n> */
929 {"fdmovew",     two(0xF000, 0x5044),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 }, /* fmove from <ea> to fp<n> */
930 {"fdmovex",     two(0xF000, 0x0044),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 }, /* fmove from <ea> to fp<n> */
931 {"fdmovex",     two(0xF000, 0x4844),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 }, /* fmove from <ea> to fp<n> */
932 /* JF removed {"fdmovex",       two(0xF000, 0x0044),    two(0xF1C0, 0xE07F),    "IiFt", m68040 }, / * fmove from <ea> to fp<n> */
933
934 {"fmovecrx",    two(0xF000, 0x5C00),    two(0xF1FF, 0xFC00),    "Ii#CF7", mfloat },             /* fmovecr.x #ccc, FPn */
935 {"fmovecr",     two(0xF000, 0x5C00),    two(0xF1FF, 0xFC00),    "Ii#CF7", mfloat },
936
937 /* Other fmovemx.  */
938 {"fmovemx", two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat }, /* reg to control,    static and dynamic: */
939 {"fmovemx", two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk", mfloat }, /* from control to reg, static and dynamic: */
940
941 {"fmovemx", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat }, /* to control, static and dynamic: */
942 {"fmovemx", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s", mfloat }, /* to control, static and dynamic: */
943
944 {"fmovemx", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3", mfloat }, /* from control, static and dynamic: */
945 {"fmovemx", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3", mfloat }, /* from control, static and dynamic: */
946
947 {"fmovemx", two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat }, /* reg to autodecrement, static and dynamic */
948 {"fmovemx", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat }, /* to autodecrement, static and dynamic */
949 {"fmovemx", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat }, /* to autodecrement, static and dynamic */
950
951 {"fmovemx", two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk", mfloat }, /* from autoinc to reg, static and dynamic: */
952 {"fmovemx", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3", mfloat }, /* from autoincrement, static and dynamic: */
953 {"fmovemx", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3", mfloat }, /* from autoincrement, static and dynamic: */
954
955 {"fmoveml",     two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "IiL8@s", mfloat },
956 {"fmoveml",     two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "Ii#8@s", mfloat },
957 {"fmoveml",     two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "Iis8@s", mfloat },
958
959 {"fmoveml",     two(0xF000, 0x8000),    two(0xF2C0, 0xE3FF),    "Ii*sL8", mfloat },
960 {"fmoveml",     two(0xF000, 0x8000),    two(0xF1C0, 0xE3FF),    "Ii*s#8", mfloat },
961 {"fmoveml",     two(0xF000, 0x8000),    two(0xF1C0, 0xE3FF),    "Ii*ss8", mfloat },
962
963 /* fmovemx with register lists */
964 {"fmovem",      two(0xF020, 0xE000),    two(0xF1F8, 0xFF00),    "IdL3-s", mfloat }, /* to autodec, static & dynamic */
965 {"fmovem",      two(0xF000, 0xF000),    two(0xF1C0, 0xFF00),    "Idl3&s", mfloat }, /* to control, static and dynamic */
966 {"fmovem",      two(0xF018, 0xD000),    two(0xF1F8, 0xFF00),    "Id+sl3", mfloat }, /* from autoinc, static & dynamic */
967 {"fmovem",      two(0xF000, 0xD000),    two(0xF1C0, 0xFF00),    "Id&sl3", mfloat }, /* from control, static and dynamic */
968
969         /* Alternate mnemonics for GNU as and GNU CC */
970 {"fmovem",      two(0xF020, 0xE000),    two(0xF1F8, 0xFF00),    "Id#3-s", mfloat }, /* to autodecrement, static and dynamic */
971 {"fmovem",      two(0xF020, 0xE800),    two(0xF1F8, 0xFF8F),    "IiDk-s", mfloat }, /* to autodecrement, static and dynamic */
972
973 {"fmovem",      two(0xF000, 0xF000),    two(0xF1C0, 0xFF00),    "Id#3&s", mfloat }, /* to control, static and dynamic: */
974 {"fmovem",      two(0xF000, 0xF800),    two(0xF1C0, 0xFF8F),    "IiDk&s", mfloat }, /* to control, static and dynamic: */
975
976 {"fmovem",      two(0xF018, 0xD000),    two(0xF1F8, 0xFF00),    "Id+s#3", mfloat }, /* from autoincrement, static and dynamic: */
977 {"fmovem",      two(0xF018, 0xD800),    two(0xF1F8, 0xFF8F),    "Ii+sDk", mfloat }, /* from autoincrement, static and dynamic: */
978
979 {"fmovem",      two(0xF000, 0xD000),    two(0xF1C0, 0xFF00),    "Id&s#3", mfloat }, /* from control, static and dynamic: */
980 {"fmovem",      two(0xF000, 0xD800),    two(0xF1C0, 0xFF8F),    "Ii&sDk", mfloat }, /* from control, static and dynamic: */
981
982 /* fmoveml a FP-control register */
983 {"fmovem",      two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "Iis8@s", mfloat },
984 {"fmovem",      two(0xF000, 0x8000),    two(0xF1C0, 0xE3FF),    "Ii*ss8", mfloat },
985
986 /* fmoveml a FP-control reglist */
987 {"fmovem",      two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "IiL8@s", mfloat },
988 {"fmovem",      two(0xF000, 0x8000),    two(0xF2C0, 0xE3FF),    "Ii*sL8", mfloat },
989
990 {"fmulb",       two(0xF000, 0x5823),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
991 {"fmuld",       two(0xF000, 0x5423),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
992 {"fmull",       two(0xF000, 0x4023),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
993 {"fmulp",       two(0xF000, 0x4C23),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
994 {"fmuls",       two(0xF000, 0x4423),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
995 {"fmulw",       two(0xF000, 0x5023),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
996 {"fmulx",       two(0xF000, 0x0023),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
997 {"fmulx",       two(0xF000, 0x4823),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
998 /* {"fmulx",    two(0xF000, 0x0023),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat }, JF */
999
1000 {"fsmulb",      two(0xF000, 0x5863),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
1001 {"fsmuld",      two(0xF000, 0x5463),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
1002 {"fsmull",      two(0xF000, 0x4063),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
1003 {"fsmulp",      two(0xF000, 0x4C63),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
1004 {"fsmuls",      two(0xF000, 0x4463),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
1005 {"fsmulw",      two(0xF000, 0x5063),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
1006 {"fsmulx",      two(0xF000, 0x0063),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
1007 {"fsmulx",      two(0xF000, 0x4863),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
1008 /* {"fsmulx",   two(0xF000, 0x0063),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 }, JF */
1009
1010 {"fdmulb",      two(0xF000, 0x5867),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
1011 {"fdmuld",      two(0xF000, 0x5467),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
1012 {"fdmull",      two(0xF000, 0x4067),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
1013 {"fdmulp",      two(0xF000, 0x4C67),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
1014 {"fdmuls",      two(0xF000, 0x4467),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
1015 {"fdmulw",      two(0xF000, 0x5067),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
1016 {"fdmulx",      two(0xF000, 0x0067),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
1017 {"fdmulx",      two(0xF000, 0x4867),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
1018 /* {"dfmulx",   two(0xF000, 0x0067),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 }, JF */
1019
1020 {"fnegb",       two(0xF000, 0x581A),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1021 {"fnegd",       two(0xF000, 0x541A),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1022 {"fnegl",       two(0xF000, 0x401A),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1023 {"fnegp",       two(0xF000, 0x4C1A),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1024 {"fnegs",       two(0xF000, 0x441A),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1025 {"fnegw",       two(0xF000, 0x501A),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1026 {"fnegx",       two(0xF000, 0x001A),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1027 {"fnegx",       two(0xF000, 0x481A),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1028 {"fnegx",       two(0xF000, 0x001A),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1029
1030 {"fsnegb",      two(0xF000, 0x585A),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
1031 {"fsnegd",      two(0xF000, 0x545A),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
1032 {"fsnegl",      two(0xF000, 0x405A),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
1033 {"fsnegp",      two(0xF000, 0x4C5A),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
1034 {"fsnegs",      two(0xF000, 0x445A),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
1035 {"fsnegw",      two(0xF000, 0x505A),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
1036 {"fsnegx",      two(0xF000, 0x005A),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
1037 {"fsnegx",      two(0xF000, 0x485A),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
1038 {"fsnegx",      two(0xF000, 0x005A),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 },
1039
1040 {"fdnegb",      two(0xF000, 0x585E),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
1041 {"fdnegd",      two(0xF000, 0x545E),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
1042 {"fdnegl",      two(0xF000, 0x405E),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
1043 {"fdnegp",      two(0xF000, 0x4C5E),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
1044 {"fdnegs",      two(0xF000, 0x445E),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
1045 {"fdnegw",      two(0xF000, 0x505E),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
1046 {"fdnegx",      two(0xF000, 0x005E),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
1047 {"fdnegx",      two(0xF000, 0x485E),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
1048 {"fdnegx",      two(0xF000, 0x005E),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 },
1049
1050 {"fnop",        two(0xF280, 0x0000),    two(0xFFFF, 0xFFFF),    "Ii", mfloat },
1051
1052 {"fremb",       two(0xF000, 0x5825),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1053 {"fremd",       two(0xF000, 0x5425),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1054 {"freml",       two(0xF000, 0x4025),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1055 {"fremp",       two(0xF000, 0x4C25),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1056 {"frems",       two(0xF000, 0x4425),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1057 {"fremw",       two(0xF000, 0x5025),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1058 {"fremx",       two(0xF000, 0x0025),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1059 {"fremx",       two(0xF000, 0x4825),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1060 /* {"fremx",    two(0xF000, 0x0025),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat }, JF */
1061
1062 {"frestore",    one(0xF140),            one(0xF1C0),            "Id&s", mfloat },
1063 {"frestore",    one(0xF158),            one(0xF1F8),            "Id+s", mfloat },
1064 {"fsave",       one(0xF100),            one(0xF1C0),            "Id&s", mfloat },
1065 {"fsave",       one(0xF120),            one(0xF1F8),            "Id-s", mfloat },
1066
1067 {"fscaleb",     two(0xF000, 0x5826),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1068 {"fscaled",     two(0xF000, 0x5426),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1069 {"fscalel",     two(0xF000, 0x4026),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1070 {"fscalep",     two(0xF000, 0x4C26),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1071 {"fscales",     two(0xF000, 0x4426),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1072 {"fscalew",     two(0xF000, 0x5026),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1073 {"fscalex",     two(0xF000, 0x0026),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1074 {"fscalex",     two(0xF000, 0x4826),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1075 /* {"fscalex",  two(0xF000, 0x0026),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat }, JF */
1076
1077 /* $ is necessary to prevent the assembler from using PC-relative.
1078    If @ were used, "label: fseq label" could produce "ftrapeq",
1079    because "label" became "pc@label".  */
1080 {"fseq",        two(0xF040, 0x0001),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1081 {"fsf",         two(0xF040, 0x0000),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1082 {"fsge",        two(0xF040, 0x0013),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1083 {"fsgl",        two(0xF040, 0x0016),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1084 {"fsgle",       two(0xF040, 0x0017),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1085 {"fsgt",        two(0xF040, 0x0012),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1086 {"fsle",        two(0xF040, 0x0015),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1087 {"fslt",        two(0xF040, 0x0014),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1088 {"fsne",        two(0xF040, 0x000E),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1089 {"fsnge",       two(0xF040, 0x001C),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1090 {"fsngl",       two(0xF040, 0x0019),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1091 {"fsngle",      two(0xF040, 0x0018),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1092 {"fsngt",       two(0xF040, 0x001D),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1093 {"fsnle",       two(0xF040, 0x001A),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1094 {"fsnlt",       two(0xF040, 0x001B),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1095 {"fsoge",       two(0xF040, 0x0003),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1096 {"fsogl",       two(0xF040, 0x0006),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1097 {"fsogt",       two(0xF040, 0x0002),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1098 {"fsole",       two(0xF040, 0x0005),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1099 {"fsolt",       two(0xF040, 0x0004),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1100 {"fsor",        two(0xF040, 0x0007),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1101 {"fsseq",       two(0xF040, 0x0011),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1102 {"fssf",        two(0xF040, 0x0010),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1103 {"fssne",       two(0xF040, 0x001E),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1104 {"fsst",        two(0xF040, 0x001F),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1105 {"fst",         two(0xF040, 0x000F),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1106 {"fsueq",       two(0xF040, 0x0009),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1107 {"fsuge",       two(0xF040, 0x000B),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1108 {"fsugt",       two(0xF040, 0x000A),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1109 {"fsule",       two(0xF040, 0x000D),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1110 {"fsult",       two(0xF040, 0x000C),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1111 {"fsun",        two(0xF040, 0x0008),    two(0xF1C0, 0xFFFF),    "Ii$s", mfloat },
1112
1113 {"fsgldivb",    two(0xF000, 0x5824),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1114 {"fsgldivd",    two(0xF000, 0x5424),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1115 {"fsgldivl",    two(0xF000, 0x4024),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1116 {"fsgldivp",    two(0xF000, 0x4C24),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1117 {"fsgldivs",    two(0xF000, 0x4424),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1118 {"fsgldivw",    two(0xF000, 0x5024),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1119 {"fsgldivx",    two(0xF000, 0x0024),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1120 {"fsgldivx",    two(0xF000, 0x4824),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1121 {"fsgldivx",    two(0xF000, 0x0024),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1122
1123 {"fsglmulb",    two(0xF000, 0x5827),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1124 {"fsglmuld",    two(0xF000, 0x5427),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1125 {"fsglmull",    two(0xF000, 0x4027),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1126 {"fsglmulp",    two(0xF000, 0x4C27),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1127 {"fsglmuls",    two(0xF000, 0x4427),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1128 {"fsglmulw",    two(0xF000, 0x5027),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1129 {"fsglmulx",    two(0xF000, 0x0027),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1130 {"fsglmulx",    two(0xF000, 0x4827),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1131 {"fsglmulx",    two(0xF000, 0x0027),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1132
1133 {"fsinb",       two(0xF000, 0x580E),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1134 {"fsind",       two(0xF000, 0x540E),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1135 {"fsinl",       two(0xF000, 0x400E),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1136 {"fsinp",       two(0xF000, 0x4C0E),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1137 {"fsins",       two(0xF000, 0x440E),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1138 {"fsinw",       two(0xF000, 0x500E),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1139 {"fsinx",       two(0xF000, 0x000E),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1140 {"fsinx",       two(0xF000, 0x480E),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1141 {"fsinx",       two(0xF000, 0x000E),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1142
1143 {"fsinhb",      two(0xF000, 0x5802),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1144 {"fsinhd",      two(0xF000, 0x5402),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1145 {"fsinhl",      two(0xF000, 0x4002),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1146 {"fsinhp",      two(0xF000, 0x4C02),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1147 {"fsinhs",      two(0xF000, 0x4402),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1148 {"fsinhw",      two(0xF000, 0x5002),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1149 {"fsinhx",      two(0xF000, 0x0002),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1150 {"fsinhx",      two(0xF000, 0x4802),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1151 {"fsinhx",      two(0xF000, 0x0002),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1152
1153 {"fsincosb",    two(0xF000, 0x5830),    two(0xF1C0, 0xFC78),    "Ii;bF3F7", mfloat },
1154 {"fsincosd",    two(0xF000, 0x5430),    two(0xF1C0, 0xFC78),    "Ii;FF3F7", mfloat },
1155 {"fsincosl",    two(0xF000, 0x4030),    two(0xF1C0, 0xFC78),    "Ii;lF3F7", mfloat },
1156 {"fsincosp",    two(0xF000, 0x4C30),    two(0xF1C0, 0xFC78),    "Ii;pF3F7", mfloat },
1157 {"fsincoss",    two(0xF000, 0x4430),    two(0xF1C0, 0xFC78),    "Ii;fF3F7", mfloat },
1158 {"fsincosw",    two(0xF000, 0x5030),    two(0xF1C0, 0xFC78),    "Ii;wF3F7", mfloat },
1159 {"fsincosx",    two(0xF000, 0x0030),    two(0xF1C0, 0xE078),    "IiF8F3F7", mfloat },
1160 {"fsincosx",    two(0xF000, 0x4830),    two(0xF1C0, 0xFC78),    "Ii;xF3F7", mfloat },
1161
1162 {"fsqrtb",      two(0xF000, 0x5804),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1163 {"fsqrtd",      two(0xF000, 0x5404),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1164 {"fsqrtl",      two(0xF000, 0x4004),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1165 {"fsqrtp",      two(0xF000, 0x4C04),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1166 {"fsqrts",      two(0xF000, 0x4404),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1167 {"fsqrtw",      two(0xF000, 0x5004),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1168 {"fsqrtx",      two(0xF000, 0x0004),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1169 {"fsqrtx",      two(0xF000, 0x4804),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1170 {"fsqrtx",      two(0xF000, 0x0004),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1171
1172 {"fssqrtb",     two(0xF000, 0x5841),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
1173 {"fssqrtd",     two(0xF000, 0x5441),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
1174 {"fssqrtl",     two(0xF000, 0x4041),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
1175 {"fssqrtp",     two(0xF000, 0x4C41),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
1176 {"fssqrts",     two(0xF000, 0x4441),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
1177 {"fssqrtw",     two(0xF000, 0x5041),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
1178 {"fssqrtx",     two(0xF000, 0x0041),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
1179 {"fssqrtx",     two(0xF000, 0x4841),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
1180 {"fssqrtx",     two(0xF000, 0x0041),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 },
1181
1182 {"fdsqrtb",     two(0xF000, 0x5845),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
1183 {"fdsqrtd",     two(0xF000, 0x5445),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
1184 {"fdsqrtl",     two(0xF000, 0x4045),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
1185 {"fdsqrtp",     two(0xF000, 0x4C45),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
1186 {"fdsqrts",     two(0xF000, 0x4445),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
1187 {"fdsqrtw",     two(0xF000, 0x5045),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
1188 {"fdsqrtx",     two(0xF000, 0x0045),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
1189 {"fdsqrtx",     two(0xF000, 0x4845),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
1190 {"fdsqrtx",     two(0xF000, 0x0045),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 },
1191
1192 {"fsubb",       two(0xF000, 0x5828),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1193 {"fsubd",       two(0xF000, 0x5428),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1194 {"fsubl",       two(0xF000, 0x4028),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1195 {"fsubp",       two(0xF000, 0x4C28),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1196 {"fsubs",       two(0xF000, 0x4428),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1197 {"fsubw",       two(0xF000, 0x5028),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1198 {"fsubx",       two(0xF000, 0x0028),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1199 {"fsubx",       two(0xF000, 0x4828),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1200 {"fsubx",       two(0xF000, 0x0028),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1201
1202 {"fssubb",      two(0xF000, 0x5868),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
1203 {"fssubd",      two(0xF000, 0x5468),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
1204 {"fssubl",      two(0xF000, 0x4068),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
1205 {"fssubp",      two(0xF000, 0x4C68),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
1206 {"fssubs",      two(0xF000, 0x4468),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
1207 {"fssubw",      two(0xF000, 0x5068),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
1208 {"fssubx",      two(0xF000, 0x0068),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
1209 {"fssubx",      two(0xF000, 0x4868),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
1210 {"fssubx",      two(0xF000, 0x0068),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 },
1211
1212 {"fdsubb",      two(0xF000, 0x586c),    two(0xF1C0, 0xFC7F),    "Ii;bF7", m68040 },
1213 {"fdsubd",      two(0xF000, 0x546c),    two(0xF1C0, 0xFC7F),    "Ii;FF7", m68040 },
1214 {"fdsubl",      two(0xF000, 0x406c),    two(0xF1C0, 0xFC7F),    "Ii;lF7", m68040 },
1215 {"fdsubp",      two(0xF000, 0x4C6c),    two(0xF1C0, 0xFC7F),    "Ii;pF7", m68040 },
1216 {"fdsubs",      two(0xF000, 0x446c),    two(0xF1C0, 0xFC7F),    "Ii;fF7", m68040 },
1217 {"fdsubw",      two(0xF000, 0x506c),    two(0xF1C0, 0xFC7F),    "Ii;wF7", m68040 },
1218 {"fdsubx",      two(0xF000, 0x006c),    two(0xF1C0, 0xE07F),    "IiF8F7", m68040 },
1219 {"fdsubx",      two(0xF000, 0x486c),    two(0xF1C0, 0xFC7F),    "Ii;xF7", m68040 },
1220 {"fdsubx",      two(0xF000, 0x006c),    two(0xF1C0, 0xE07F),    "IiFt",   m68040 },
1221
1222 {"ftanb",       two(0xF000, 0x580F),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1223 {"ftand",       two(0xF000, 0x540F),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1224 {"ftanl",       two(0xF000, 0x400F),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1225 {"ftanp",       two(0xF000, 0x4C0F),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1226 {"ftans",       two(0xF000, 0x440F),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1227 {"ftanw",       two(0xF000, 0x500F),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1228 {"ftanx",       two(0xF000, 0x000F),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1229 {"ftanx",       two(0xF000, 0x480F),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1230 {"ftanx",       two(0xF000, 0x000F),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1231
1232 {"ftanhb",      two(0xF000, 0x5809),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1233 {"ftanhd",      two(0xF000, 0x5409),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1234 {"ftanhl",      two(0xF000, 0x4009),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1235 {"ftanhp",      two(0xF000, 0x4C09),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1236 {"ftanhs",      two(0xF000, 0x4409),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1237 {"ftanhw",      two(0xF000, 0x5009),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1238 {"ftanhx",      two(0xF000, 0x0009),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1239 {"ftanhx",      two(0xF000, 0x4809),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1240 {"ftanhx",      two(0xF000, 0x0009),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1241
1242 {"ftentoxb",    two(0xF000, 0x5812),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1243 {"ftentoxd",    two(0xF000, 0x5412),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1244 {"ftentoxl",    two(0xF000, 0x4012),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1245 {"ftentoxp",    two(0xF000, 0x4C12),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1246 {"ftentoxs",    two(0xF000, 0x4412),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1247 {"ftentoxw",    two(0xF000, 0x5012),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1248 {"ftentoxx",    two(0xF000, 0x0012),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1249 {"ftentoxx",    two(0xF000, 0x4812),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1250 {"ftentoxx",    two(0xF000, 0x0012),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1251
1252 {"ftrapeq",     two(0xF07C, 0x0001),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1253 {"ftrapf",      two(0xF07C, 0x0000),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1254 {"ftrapge",     two(0xF07C, 0x0013),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1255 {"ftrapgl",     two(0xF07C, 0x0016),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1256 {"ftrapgle",    two(0xF07C, 0x0017),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1257 {"ftrapgt",     two(0xF07C, 0x0012),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1258 {"ftraple",     two(0xF07C, 0x0015),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1259 {"ftraplt",     two(0xF07C, 0x0014),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1260 {"ftrapne",     two(0xF07C, 0x000E),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1261 {"ftrapnge",    two(0xF07C, 0x001C),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1262 {"ftrapngl",    two(0xF07C, 0x0019),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1263 {"ftrapngle",   two(0xF07C, 0x0018),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1264 {"ftrapngt",    two(0xF07C, 0x001D),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1265 {"ftrapnle",    two(0xF07C, 0x001A),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1266 {"ftrapnlt",    two(0xF07C, 0x001B),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1267 {"ftrapoge",    two(0xF07C, 0x0003),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1268 {"ftrapogl",    two(0xF07C, 0x0006),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1269 {"ftrapogt",    two(0xF07C, 0x0002),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1270 {"ftrapole",    two(0xF07C, 0x0005),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1271 {"ftrapolt",    two(0xF07C, 0x0004),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1272 {"ftrapor",     two(0xF07C, 0x0007),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1273 {"ftrapseq",    two(0xF07C, 0x0011),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1274 {"ftrapsf",     two(0xF07C, 0x0010),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1275 {"ftrapsne",    two(0xF07C, 0x001E),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1276 {"ftrapst",     two(0xF07C, 0x001F),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1277 {"ftrapt",      two(0xF07C, 0x000F),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1278 {"ftrapueq",    two(0xF07C, 0x0009),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1279 {"ftrapuge",    two(0xF07C, 0x000B),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1280 {"ftrapugt",    two(0xF07C, 0x000A),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1281 {"ftrapule",    two(0xF07C, 0x000D),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1282 {"ftrapult",    two(0xF07C, 0x000C),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1283 {"ftrapun",     two(0xF07C, 0x0008),    two(0xF1FF, 0xFFFF),    "Ii", mfloat },
1284
1285 {"ftrapeqw",    two(0xF07A, 0x0001),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1286 {"ftrapfw",     two(0xF07A, 0x0000),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1287 {"ftrapgew",    two(0xF07A, 0x0013),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1288 {"ftrapglw",    two(0xF07A, 0x0016),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1289 {"ftrapglew",   two(0xF07A, 0x0017),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1290 {"ftrapgtw",    two(0xF07A, 0x0012),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1291 {"ftraplew",    two(0xF07A, 0x0015),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1292 {"ftrapltw",    two(0xF07A, 0x0014),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1293 {"ftrapnew",    two(0xF07A, 0x000E),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1294 {"ftrapngew",   two(0xF07A, 0x001C),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1295 {"ftrapnglw",   two(0xF07A, 0x0019),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1296 {"ftrapnglew",  two(0xF07A, 0x0018),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1297 {"ftrapngtw",   two(0xF07A, 0x001D),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1298 {"ftrapnlew",   two(0xF07A, 0x001A),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1299 {"ftrapnltw",   two(0xF07A, 0x001B),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1300 {"ftrapogew",   two(0xF07A, 0x0003),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1301 {"ftrapoglw",   two(0xF07A, 0x0006),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1302 {"ftrapogtw",   two(0xF07A, 0x0002),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1303 {"ftrapolew",   two(0xF07A, 0x0005),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1304 {"ftrapoltw",   two(0xF07A, 0x0004),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1305 {"ftraporw",    two(0xF07A, 0x0007),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1306 {"ftrapseqw",   two(0xF07A, 0x0011),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1307 {"ftrapsfw",    two(0xF07A, 0x0010),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1308 {"ftrapsnew",   two(0xF07A, 0x001E),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1309 {"ftrapstw",    two(0xF07A, 0x001F),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1310 {"ftraptw",     two(0xF07A, 0x000F),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1311 {"ftrapueqw",   two(0xF07A, 0x0009),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1312 {"ftrapugew",   two(0xF07A, 0x000B),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1313 {"ftrapugtw",   two(0xF07A, 0x000A),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1314 {"ftrapulew",   two(0xF07A, 0x000D),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1315 {"ftrapultw",   two(0xF07A, 0x000C),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1316 {"ftrapunw",    two(0xF07A, 0x0008),    two(0xF1FF, 0xFFFF),    "Ii^w", mfloat },
1317
1318 {"ftrapeql",    two(0xF07B, 0x0001),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1319 {"ftrapfl",     two(0xF07B, 0x0000),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1320 {"ftrapgel",    two(0xF07B, 0x0013),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1321 {"ftrapgll",    two(0xF07B, 0x0016),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1322 {"ftrapglel",   two(0xF07B, 0x0017),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1323 {"ftrapgtl",    two(0xF07B, 0x0012),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1324 {"ftraplel",    two(0xF07B, 0x0015),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1325 {"ftrapltl",    two(0xF07B, 0x0014),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1326 {"ftrapnel",    two(0xF07B, 0x000E),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1327 {"ftrapngel",   two(0xF07B, 0x001C),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1328 {"ftrapngll",   two(0xF07B, 0x0019),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1329 {"ftrapnglel",  two(0xF07B, 0x0018),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1330 {"ftrapngtl",   two(0xF07B, 0x001D),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1331 {"ftrapnlel",   two(0xF07B, 0x001A),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1332 {"ftrapnltl",   two(0xF07B, 0x001B),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1333 {"ftrapogel",   two(0xF07B, 0x0003),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1334 {"ftrapogll",   two(0xF07B, 0x0006),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1335 {"ftrapogtl",   two(0xF07B, 0x0002),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1336 {"ftrapolel",   two(0xF07B, 0x0005),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1337 {"ftrapoltl",   two(0xF07B, 0x0004),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1338 {"ftraporl",    two(0xF07B, 0x0007),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1339 {"ftrapseql",   two(0xF07B, 0x0011),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1340 {"ftrapsfl",    two(0xF07B, 0x0010),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1341 {"ftrapsnel",   two(0xF07B, 0x001E),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1342 {"ftrapstl",    two(0xF07B, 0x001F),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1343 {"ftraptl",     two(0xF07B, 0x000F),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1344 {"ftrapueql",   two(0xF07B, 0x0009),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1345 {"ftrapugel",   two(0xF07B, 0x000B),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1346 {"ftrapugtl",   two(0xF07B, 0x000A),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1347 {"ftrapulel",   two(0xF07B, 0x000D),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1348 {"ftrapultl",   two(0xF07B, 0x000C),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1349 {"ftrapunl",    two(0xF07B, 0x0008),    two(0xF1FF, 0xFFFF),    "Ii^l", mfloat },
1350
1351 {"ftstb",       two(0xF000, 0x583A),    two(0xF1C0, 0xFC7F),    "Ii;b", mfloat },
1352 {"ftstd",       two(0xF000, 0x543A),    two(0xF1C0, 0xFC7F),    "Ii;F", mfloat },
1353 {"ftstl",       two(0xF000, 0x403A),    two(0xF1C0, 0xFC7F),    "Ii;l", mfloat },
1354 {"ftstp",       two(0xF000, 0x4C3A),    two(0xF1C0, 0xFC7F),    "Ii;p", mfloat },
1355 {"ftsts",       two(0xF000, 0x443A),    two(0xF1C0, 0xFC7F),    "Ii;f", mfloat },
1356 {"ftstw",       two(0xF000, 0x503A),    two(0xF1C0, 0xFC7F),    "Ii;w", mfloat },
1357 {"ftstx",       two(0xF000, 0x003A),    two(0xF1C0, 0xE07F),    "IiF8", mfloat },
1358 {"ftstx",       two(0xF000, 0x483A),    two(0xF1C0, 0xFC7F),    "Ii;x", mfloat },
1359
1360 {"ftwotoxb",    two(0xF000, 0x5811),    two(0xF1C0, 0xFC7F),    "Ii;bF7", mfloat },
1361 {"ftwotoxd",    two(0xF000, 0x5411),    two(0xF1C0, 0xFC7F),    "Ii;FF7", mfloat },
1362 {"ftwotoxl",    two(0xF000, 0x4011),    two(0xF1C0, 0xFC7F),    "Ii;lF7", mfloat },
1363 {"ftwotoxp",    two(0xF000, 0x4C11),    two(0xF1C0, 0xFC7F),    "Ii;pF7", mfloat },
1364 {"ftwotoxs",    two(0xF000, 0x4411),    two(0xF1C0, 0xFC7F),    "Ii;fF7", mfloat },
1365 {"ftwotoxw",    two(0xF000, 0x5011),    two(0xF1C0, 0xFC7F),    "Ii;wF7", mfloat },
1366 {"ftwotoxx",    two(0xF000, 0x0011),    two(0xF1C0, 0xE07F),    "IiF8F7", mfloat },
1367 {"ftwotoxx",    two(0xF000, 0x4811),    two(0xF1C0, 0xFC7F),    "Ii;xF7", mfloat },
1368 {"ftwotoxx",    two(0xF000, 0x0011),    two(0xF1C0, 0xE07F),    "IiFt",   mfloat },
1369
1370 /* Variable-sized float branches */
1371
1372 {"fjeq",        one(0xF081),            one(0xF1FF),            "IdBc", mfloat },
1373 {"fjf",         one(0xF080),            one(0xF1FF),            "IdBc", mfloat },
1374 {"fjge",        one(0xF093),            one(0xF1FF),            "IdBc", mfloat },
1375 {"fjgl",        one(0xF096),            one(0xF1FF),            "IdBc", mfloat },
1376 {"fjgle",       one(0xF097),            one(0xF1FF),            "IdBc", mfloat },
1377 {"fjgt",        one(0xF092),            one(0xF1FF),            "IdBc", mfloat },
1378 {"fjle",        one(0xF095),            one(0xF1FF),            "IdBc", mfloat },
1379 {"fjlt",        one(0xF094),            one(0xF1FF),            "IdBc", mfloat },
1380 {"fjne",        one(0xF08E),            one(0xF1FF),            "IdBc", mfloat },
1381 {"fjnge",       one(0xF09C),            one(0xF1FF),            "IdBc", mfloat },
1382 {"fjngl",       one(0xF099),            one(0xF1FF),            "IdBc", mfloat },
1383 {"fjngle",      one(0xF098),            one(0xF1FF),            "IdBc", mfloat },
1384 {"fjngt",       one(0xF09D),            one(0xF1FF),            "IdBc", mfloat },
1385 {"fjnle",       one(0xF09A),            one(0xF1FF),            "IdBc", mfloat },
1386 {"fjnlt",       one(0xF09B),            one(0xF1FF),            "IdBc", mfloat },
1387 {"fjoge",       one(0xF083),            one(0xF1FF),            "IdBc", mfloat },
1388 {"fjogl",       one(0xF086),            one(0xF1FF),            "IdBc", mfloat },
1389 {"fjogt",       one(0xF082),            one(0xF1FF),            "IdBc", mfloat },
1390 {"fjole",       one(0xF085),            one(0xF1FF),            "IdBc", mfloat },
1391 {"fjolt",       one(0xF084),            one(0xF1FF),            "IdBc", mfloat },
1392 {"fjor",        one(0xF087),            one(0xF1FF),            "IdBc", mfloat },
1393 {"fjseq",       one(0xF091),            one(0xF1FF),            "IdBc", mfloat },
1394 {"fjsf",        one(0xF090),            one(0xF1FF),            "IdBc", mfloat },
1395 {"fjsne",       one(0xF09E),            one(0xF1FF),            "IdBc", mfloat },
1396 {"fjst",        one(0xF09F),            one(0xF1FF),            "IdBc", mfloat },
1397 {"fjt",         one(0xF08F),            one(0xF1FF),            "IdBc", mfloat },
1398 {"fjueq",       one(0xF089),            one(0xF1FF),            "IdBc", mfloat },
1399 {"fjuge",       one(0xF08B),            one(0xF1FF),            "IdBc", mfloat },
1400 {"fjugt",       one(0xF08A),            one(0xF1FF),            "IdBc", mfloat },
1401 {"fjule",       one(0xF08D),            one(0xF1FF),            "IdBc", mfloat },
1402 {"fjult",       one(0xF08C),            one(0xF1FF),            "IdBc", mfloat },
1403 {"fjun",        one(0xF088),            one(0xF1FF),            "IdBc", mfloat },
1404 /* float stuff ends here */
1405
1406 {"illegal",     one(0045374),           one(0177777),           "",     m68000up },
1407 {"jmp",         one(0047300),           one(0177700),           "!s",   m68000up },
1408 {"jsr",         one(0047200),           one(0177700),           "!s",   m68000up },
1409 {"lea",         one(0040700),           one(0170700),           "!sAd", m68000up },
1410 {"linkw",       one(0047120),           one(0177770),           "As#w", m68000up },
1411 {"linkl",       one(0044010),           one(0177770),           "As#l", m68020up },
1412 {"link",        one(0047120),           one(0177770),           "As#w", m68000up },
1413 {"link",        one(0044010),           one(0177770),           "As#l", m68020up },
1414
1415 {"lslb",        one(0160410),           one(0170770),           "QdDs", m68000up },     /* lsrb #Q,     Ds */
1416 {"lslb",        one(0160450),           one(0170770),           "DdDs", m68000up },     /* lsrb Dd,     Ds */
1417 {"lslw",        one(0160510),           one(0170770),           "QdDs", m68000up },     /* lsrb #Q,     Ds */
1418 {"lslw",        one(0160550),           one(0170770),           "DdDs", m68000up },     /* lsrb Dd,     Ds */
1419 {"lslw",        one(0161700),           one(0177700),           "~s",   m68000up },     /* Shift memory */
1420 {"lsll",        one(0160610),           one(0170770),           "QdDs", m68000up },     /* lsrb #Q,     Ds */
1421 {"lsll",        one(0160650),           one(0170770),           "DdDs", m68000up },     /* lsrb Dd,     Ds */
1422
1423 {"lsrb",        one(0160010),           one(0170770),           "QdDs", m68000up }, /* lsrb #Q, Ds */
1424 {"lsrb",        one(0160050),           one(0170770),           "DdDs", m68000up },     /* lsrb Dd,     Ds */
1425 {"lsrl",        one(0160210),           one(0170770),           "QdDs", m68000up },     /* lsrb #Q,     Ds */
1426 {"lsrl",        one(0160250),           one(0170770),           "DdDs", m68000up },     /* lsrb #Q,     Ds */
1427 {"lsrw",        one(0160110),           one(0170770),           "QdDs", m68000up },     /* lsrb #Q,     Ds */
1428 {"lsrw",        one(0160150),           one(0170770),           "DdDs", m68000up },     /* lsrb #Q,     Ds */
1429 {"lsrw",        one(0161300),           one(0177700),           "~s",   m68000up },     /* Shift memory */
1430
1431 {"moveal",      one(0020100),           one(0170700),           "*lAd", m68000up },
1432 {"moveaw",      one(0030100),           one(0170700),           "*wAd", m68000up },
1433 {"moveb",       one(0010000),           one(0170000),           ";b$d", m68000up },     /* move */
1434 {"movel",       one(0070000),           one(0170400),           "MsDd", m68000up },     /* moveq written as move */
1435 {"movel",       one(0020000),           one(0170000),           "*l$d", m68000up },
1436 {"movel",       one(0020100),           one(0170700),           "*lAd", m68000up },
1437 {"movel",       one(0047140),           one(0177770),           "AsUd", m68000up },     /* move to USP */
1438 {"movel",       one(0047150),           one(0177770),           "UdAs", m68000up },     /* move from USP */
1439
1440 {"movec",       one(0047173),           one(0177777),           "R1Jj", m68010up },
1441 {"movec",       one(0047173),           one(0177777),           "R1#j", m68010up },
1442 {"movec",       one(0047172),           one(0177777),           "JjR1", m68010up },
1443 {"movec",       one(0047172),           one(0177777),           "#jR1", m68010up },
1444
1445 /* JF added these next four for the assembler */
1446 {"moveml",      one(0044300),           one(0177700),           "Lw&s", m68000up },     /* movem reg to mem. */
1447 {"moveml",      one(0044340),           one(0177770),           "lw-s", m68000up },     /* movem reg to autodecrement. */
1448 {"moveml",      one(0046300),           one(0177700),           "!sLw", m68000up },     /* movem mem to reg. */
1449 {"moveml",      one(0046330),           one(0177770),           "+sLw", m68000up },     /* movem autoinc to reg. */
1450
1451 {"moveml",      one(0044300),           one(0177700),           "#w&s", m68000up },     /* movem reg to mem. */
1452 {"moveml",      one(0044340),           one(0177770),           "#w-s", m68000up },     /* movem reg to autodecrement. */
1453 {"moveml",      one(0046300),           one(0177700),           "!s#w", m68000up },     /* movem mem to reg. */
1454 {"moveml",      one(0046330),           one(0177770),           "+s#w", m68000up },     /* movem autoinc to reg. */
1455
1456 /* JF added these next four for the assembler */
1457 {"movemw",      one(0044200),           one(0177700),           "Lw&s", m68000up },     /* movem reg to mem. */
1458 {"movemw",      one(0044240),           one(0177770),           "lw-s", m68000up },     /* movem reg to autodecrement. */
1459 {"movemw",      one(0046200),           one(0177700),           "!sLw", m68000up },     /* movem mem to reg. */
1460 {"movemw",      one(0046230),           one(0177770),           "+sLw", m68000up },     /* movem autoinc to reg. */
1461
1462 {"movemw",      one(0044200),           one(0177700),           "#w&s", m68000up },     /* movem reg to mem. */
1463 {"movemw",      one(0044240),           one(0177770),           "#w-s", m68000up },     /* movem reg to autodecrement. */
1464 {"movemw",      one(0046200),           one(0177700),           "!s#w", m68000up },     /* movem mem to reg. */
1465 {"movemw",      one(0046230),           one(0177770),           "+s#w", m68000up },     /* movem autoinc to reg. */
1466
1467 {"movepl",      one(0000510),           one(0170770),           "dsDd", m68000up },     /* memory to register */
1468 {"movepl",      one(0000710),           one(0170770),           "Ddds", m68000up },     /* register to memory */
1469 {"movepw",      one(0000410),           one(0170770),           "dsDd", m68000up },     /* memory to register */
1470 {"movepw",      one(0000610),           one(0170770),           "Ddds", m68000up },     /* register to memory */
1471 {"moveq",       one(0070000),           one(0170400),           "MsDd", m68000up },
1472 {"movew",       one(0030000),           one(0170000),           "*w$d", m68000up },
1473 {"movew",       one(0030100),           one(0170700),           "*wAd", m68000up },     /* movea,       written as move */
1474 {"movew",       one(0040300),           one(0177700),           "Ss$s", m68000up },     /* Move from sr */
1475 {"movew",       one(0041300),           one(0177700),           "Cs$s", m68010up },     /* Move from ccr */
1476 {"movew",       one(0042300),           one(0177700),           ";wCd", m68000up },     /* move to ccr */
1477 {"movew",       one(0043300),           one(0177700),           ";wSd", m68000up },     /* move to sr */
1478
1479 {"movesb",      two(0007000, 0),        two(0177700, 07777),    "~sR1", m68010up },      /* moves from memory */
1480 {"movesb",      two(0007000, 04000),    two(0177700, 07777),    "R1~s", m68010up },      /* moves to memory */
1481 {"movesl",      two(0007200, 0),        two(0177700, 07777),    "~sR1", m68010up },      /* moves from memory */
1482 {"movesl",      two(0007200, 04000),    two(0177700, 07777),    "R1~s", m68010up },      /* moves to memory */
1483 {"movesw",      two(0007100, 0),        two(0177700, 07777),    "~sR1", m68010up },      /* moves from memory */
1484 {"movesw",      two(0007100, 04000),    two(0177700, 07777),    "R1~s", m68010up },      /* moves to memory */
1485
1486 {"move16",      two(0xf620, 0x8000),    two(0xfff8, 0x8fff),    "+s+1", m68040 },
1487 {"move16",      one(0xf600),    one(0xfff8),    "+s_L", m68040 },
1488 {"move16",      one(0xf608),    one(0xfff8),    "_L+s", m68040 },
1489 {"move16",      one(0xf610),    one(0xfff8),    "as_L", m68040 },
1490 {"move16",      one(0xf618),    one(0xfff8),    "_Las", m68040 },
1491
1492 {"mulsl",       two(0046000, 004000),   two(0177700, 0107770),  ";lD1", m68020up },
1493 {"mulsl",       two(0046000, 006000),   two(0177700, 0107770),  ";lD3D1", m68020up },
1494 {"mulsw",       one(0140700),           one(0170700),           ";wDd", m68000up },
1495 {"muls",        one(0140700),           one(0170700),           ";wDd", m68000up },
1496 {"mulul",       two(0046000, 000000),   two(0177700, 0107770),  ";lD1", m68020up },
1497 {"mulul",       two(0046000, 002000),   two(0177700, 0107770),  ";lD3D1", m68020up },
1498 {"muluw",       one(0140300),           one(0170700),           ";wDd", m68000up },
1499 {"mulu",        one(0140300),           one(0170700),           ";wDd", m68000up },
1500 {"nbcd",        one(0044000),           one(0177700),           "$s", m68000up },
1501 {"negb",        one(0042000),           one(0177700),           "$s", m68000up },
1502 {"negl",        one(0042200),           one(0177700),           "$s", m68000up },
1503 {"negw",        one(0042100),           one(0177700),           "$s", m68000up },
1504 {"negxb",       one(0040000),           one(0177700),           "$s", m68000up },
1505 {"negxl",       one(0040200),           one(0177700),           "$s", m68000up },
1506 {"negxw",       one(0040100),           one(0177700),           "$s", m68000up },
1507 {"nop",         one(0047161),           one(0177777),           "", m68000up },
1508 {"notb",        one(0043000),           one(0177700),           "$s", m68000up },
1509 {"notl",        one(0043200),           one(0177700),           "$s", m68000up },
1510 {"notw",        one(0043100),           one(0177700),           "$s", m68000up },
1511
1512 {"orb",         one(0000000),           one(0177700),           "#b$s", m68000up },     /* ori written as or */
1513 {"orb",         one(0000074),           one(0177777),           "#bCs", m68000up },     /* ori to ccr */
1514 {"orb",         one(0100000),           one(0170700),           ";bDd", m68000up },     /* memory to register */
1515 {"orb",         one(0100400),           one(0170700),           "Dd~s", m68000up },     /* register to memory */
1516 {"orib",        one(0000000),           one(0177700),           "#b$s", m68000up },
1517 {"orib",        one(0000074),           one(0177777),           "#bCs", m68000up },     /* ori to ccr */
1518 {"oril",        one(0000200),           one(0177700),           "#l$s", m68000up },
1519 {"oriw",        one(0000100),           one(0177700),           "#w$s", m68000up },
1520 {"oriw",        one(0000174),           one(0177777),           "#wSs", m68000up },     /* ori to sr */
1521 {"orl",         one(0000200),           one(0177700),           "#l$s", m68000up },
1522 {"orl",         one(0100200),           one(0170700),           ";lDd", m68000up },     /* memory to register */
1523 {"orl",         one(0100600),           one(0170700),           "Dd~s", m68000up },     /* register to memory */
1524 {"orw",         one(0000100),           one(0177700),           "#w$s", m68000up },
1525 {"orw",         one(0000174),           one(0177777),           "#wSs", m68000up },     /* ori to sr */
1526 {"orw",         one(0100100),           one(0170700),           ";wDd", m68000up },     /* memory to register */
1527 {"orw",         one(0100500),           one(0170700),           "Dd~s", m68000up },     /* register to memory */
1528
1529 {"pack",        one(0100500),           one(0170770),           "DsDd#w", m68020up },   /* pack Ds,     Dd,     #w */
1530 {"pack",        one(0100510),           one(0170770),           "-s-d#w", m68020up },   /* pack -(As),  -(Ad),  #w */
1531
1532 #ifndef NO_68851
1533 {"pbac",        one(0xf0c7),            one(0xffbf),            "Bc", m68851 },
1534 {"pbacw",       one(0xf087),            one(0xffbf),            "Bc", m68851 },
1535 {"pbas",        one(0xf0c6),            one(0xffbf),            "Bc", m68851 },
1536 {"pbasw",       one(0xf086),            one(0xffbf),            "Bc", m68851 },
1537 {"pbbc",        one(0xf0c1),            one(0xffbf),            "Bc", m68851 },
1538 {"pbbcw",       one(0xf081),            one(0xffbf),            "Bc", m68851 },
1539 {"pbbs",        one(0xf0c0),            one(0xffbf),            "Bc", m68851 },
1540 {"pbbsw",       one(0xf080),            one(0xffbf),            "Bc", m68851 },
1541 {"pbcc",        one(0xf0cf),            one(0xffbf),            "Bc", m68851 },
1542 {"pbccw",       one(0xf08f),            one(0xffbf),            "Bc", m68851 },
1543 {"pbcs",        one(0xf0ce),            one(0xffbf),            "Bc", m68851 },
1544 {"pbcsw",       one(0xf08e),            one(0xffbf),            "Bc", m68851 },
1545 {"pbgc",        one(0xf0cd),            one(0xffbf),            "Bc", m68851 },
1546 {"pbgcw",       one(0xf08d),            one(0xffbf),            "Bc", m68851 },
1547 {"pbgs",        one(0xf0cc),            one(0xffbf),            "Bc", m68851 },
1548 {"pbgsw",       one(0xf08c),            one(0xffbf),            "Bc", m68851 },
1549 {"pbic",        one(0xf0cb),            one(0xffbf),            "Bc", m68851 },
1550 {"pbicw",       one(0xf08b),            one(0xffbf),            "Bc", m68851 },
1551 {"pbis",        one(0xf0ca),            one(0xffbf),            "Bc", m68851 },
1552 {"pbisw",       one(0xf08a),            one(0xffbf),            "Bc", m68851 },
1553 {"pblc",        one(0xf0c3),            one(0xffbf),            "Bc", m68851 },
1554 {"pblcw",       one(0xf083),            one(0xffbf),            "Bc", m68851 },
1555 {"pbls",        one(0xf0c2),            one(0xffbf),            "Bc", m68851 },
1556 {"pblsw",       one(0xf082),            one(0xffbf),            "Bc", m68851 },
1557 {"pbsc",        one(0xf0c5),            one(0xffbf),            "Bc", m68851 },
1558 {"pbscw",       one(0xf085),            one(0xffbf),            "Bc", m68851 },
1559 {"pbss",        one(0xf0c4),            one(0xffbf),            "Bc", m68851 },
1560 {"pbssw",       one(0xf084),            one(0xffbf),            "Bc", m68851 },
1561 {"pbwc",        one(0xf0c9),            one(0xffbf),            "Bc", m68851 },
1562 {"pbwcw",       one(0xf089),            one(0xffbf),            "Bc", m68851 },
1563 {"pbws",        one(0xf0c8),            one(0xffbf),            "Bc", m68851 },
1564 {"pbwsw",       one(0xf088),            one(0xffbf),            "Bc", m68851 },
1565
1566 {"pdbac",       two(0xf048, 0x0007),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1567 {"pdbas",       two(0xf048, 0x0006),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1568 {"pdbbc",       two(0xf048, 0x0001),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1569 {"pdbbs",       two(0xf048, 0x0000),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1570 {"pdbcc",       two(0xf048, 0x000f),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1571 {"pdbcs",       two(0xf048, 0x000e),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1572 {"pdbgc",       two(0xf048, 0x000d),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1573 {"pdbgs",       two(0xf048, 0x000c),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1574 {"pdbic",       two(0xf048, 0x000b),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1575 {"pdbis",       two(0xf048, 0x000a),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1576 {"pdblc",       two(0xf048, 0x0003),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1577 {"pdbls",       two(0xf048, 0x0002),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1578 {"pdbsc",       two(0xf048, 0x0005),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1579 {"pdbss",       two(0xf048, 0x0004),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1580 {"pdbwc",       two(0xf048, 0x0009),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1581 {"pdbws",       two(0xf048, 0x0008),    two(0xfff8, 0xffff),    "DsBw", m68851 },
1582 #endif /* NO_68851 */
1583
1584 {"pea",         one(0044100),           one(0177700),           "!s", m68000up },
1585
1586 #ifndef NO_68851
1587 {"pflusha",     two(0xf000, 0x2400),    two(0xffff, 0xffff),    "",             m68030 | m68851 },
1588 {"pflusha",     one(0xf518),            one(0xfff8),            "",             m68040 },
1589
1590 {"pflush",      two(0xf000, 0x3010),    two(0xffc0, 0xfe10),    "T3T9",         m68030 | m68851 },
1591 {"pflush",      two(0xf000, 0x3810),    two(0xffc0, 0xfe10),    "T3T9&s",       m68030 | m68851 },
1592 {"pflush",      two(0xf000, 0x3008),    two(0xffc0, 0xfe18),    "D3T9",         m68030 | m68851 },
1593 {"pflush",      two(0xf000, 0x3808),    two(0xffc0, 0xfe18),    "D3T9&s",       m68030 | m68851 },
1594 {"pflush",      two(0xf000, 0x3000),    two(0xffc0, 0xfe1e),    "f3T9",         m68030 | m68851 },
1595 {"pflush",      two(0xf000, 0x3800),    two(0xffc0, 0xfe1e),    "f3T9&s",       m68030 | m68851 },
1596 {"pflush",      one(0xf508),            one(0xfff8),            "as",           m68040 },
1597 {"pflush",      one(0xf508),            one(0xfff8),            "As",           m68040 },
1598 {"pflushan",    one(0xf510),            one(0xfff8),            "",             m68040 },
1599 {"pflushn",     one(0xf500),            one(0xfff8),            "as",           m68040 },
1600 {"pflushn",     one(0xf500),            one(0xfff8),            "As",           m68040 },
1601
1602 {"pflushr",     two(0xf000, 0xa000),    two(0xffc0, 0xffff),    "|s",           m68851 },
1603
1604 {"pflushs",     two(0xf000, 0x3410),    two(0xfff8, 0xfe10),    "T3T9",         m68851 },
1605 {"pflushs",     two(0xf000, 0x3c10),    two(0xfff8, 0xfe00),    "T3T9&s",       m68851 },
1606 {"pflushs",     two(0xf000, 0x3408),    two(0xfff8, 0xfe18),    "D3T9",         m68851 },
1607 {"pflushs",     two(0xf000, 0x3c08),    two(0xfff8, 0xfe18),    "D3T9&s",       m68851 },
1608 {"pflushs",     two(0xf000, 0x3400),    two(0xfff8, 0xfe1e),    "f3T9",         m68851 },
1609 {"pflushs",     two(0xf000, 0x3c00),    two(0xfff8, 0xfe1e),    "f3T9&s",       m68851 },
1610
1611 {"ploadr",      two(0xf000, 0x2210),    two(0xffc0, 0xfff0),    "T3&s", m68030 | m68851 },
1612 {"ploadr",      two(0xf000, 0x2208),    two(0xffc0, 0xfff8),    "D3&s", m68030 | m68851 },
1613 {"ploadr",      two(0xf000, 0x2200),    two(0xffc0, 0xfffe),    "f3&s", m68030 | m68851 },
1614 {"ploadw",      two(0xf000, 0x2010),    two(0xffc0, 0xfff0),    "T3&s", m68030 | m68851 },
1615 {"ploadw",      two(0xf000, 0x2008),    two(0xffc0, 0xfff8),    "D3&s", m68030 | m68851 },
1616 {"ploadw",      two(0xf000, 0x2000),    two(0xffc0, 0xfffe),    "f3&s", m68030 | m68851 },
1617
1618 /* TC, CRP, DRP, SRP, CAL, VAL, SCC, AC */
1619 {"pmove",       two(0xf000, 0x4000),    two(0xffc0, 0xe3ff),    "*sP8", m68030 | m68851 },
1620 {"pmove",       two(0xf000, 0x4200),    two(0xffc0, 0xe3ff),    "P8%s", m68030 | m68851 },
1621 {"pmove",       two(0xf000, 0x4000),    two(0xffc0, 0xe3ff),    "|sW8", m68030 | m68851 },
1622 {"pmove",       two(0xf000, 0x4200),    two(0xffc0, 0xe3ff),    "W8~s", m68030 | m68851 },
1623
1624 /* BADx, BACx */
1625 {"pmove",       two(0xf000, 0x6200),    two(0xffc0, 0xe3e3),    "*sX3", m68030 | m68851 },
1626 {"pmove",       two(0xf000, 0x6000),    two(0xffc0, 0xe3e3),    "X3%s", m68030 | m68851 },
1627
1628 /* PSR, PCSR */
1629 /* {"pmove",    two(0xf000, 0x6100),    two(oxffc0, oxffff),    "*sZ8", m68030 | m68851 }, */
1630 {"pmove",       two(0xf000, 0x6000),    two(0xffc0, 0xffff),    "*sY8", m68030 | m68851 },
1631 {"pmove",       two(0xf000, 0x6200),    two(0xffc0, 0xffff),    "Y8%s", m68030 | m68851 },
1632 {"pmove",       two(0xf000, 0x6600),    two(0xffc0, 0xffff),    "Z8%s", m68030 | m68851 },
1633
1634 {"prestore",    one(0xf140),            one(0xffc0),            "&s", m68851 },
1635 {"prestore",    one(0xf158),            one(0xfff8),            "+s", m68851 },
1636 {"psave",       one(0xf100),            one(0xffc0),            "&s", m68851 },
1637 {"psave",       one(0xf100),            one(0xffc0),            "+s", m68851 },
1638
1639 {"psac",        two(0xf040, 0x0007),    two(0xffc0, 0xffff),    "@s", m68851 },
1640 {"psas",        two(0xf040, 0x0006),    two(0xffc0, 0xffff),    "@s", m68851 },
1641 {"psbc",        two(0xf040, 0x0001),    two(0xffc0, 0xffff),    "@s", m68851 },
1642 {"psbs",        two(0xf040, 0x0000),    two(0xffc0, 0xffff),    "@s", m68851 },
1643 {"pscc",        two(0xf040, 0x000f),    two(0xffc0, 0xffff),    "@s", m68851 },
1644 {"pscs",        two(0xf040, 0x000e),    two(0xffc0, 0xffff),    "@s", m68851 },
1645 {"psgc",        two(0xf040, 0x000d),    two(0xffc0, 0xffff),    "@s", m68851 },
1646 {"psgs",        two(0xf040, 0x000c),    two(0xffc0, 0xffff),    "@s", m68851 },
1647 {"psic",        two(0xf040, 0x000b),    two(0xffc0, 0xffff),    "@s", m68851 },
1648 {"psis",        two(0xf040, 0x000a),    two(0xffc0, 0xffff),    "@s", m68851 },
1649 {"pslc",        two(0xf040, 0x0003),    two(0xffc0, 0xffff),    "@s", m68851 },
1650 {"psls",        two(0xf040, 0x0002),    two(0xffc0, 0xffff),    "@s", m68851 },
1651 {"pssc",        two(0xf040, 0x0005),    two(0xffc0, 0xffff),    "@s", m68851 },
1652 {"psss",        two(0xf040, 0x0004),    two(0xffc0, 0xffff),    "@s", m68851 },
1653 {"pswc",        two(0xf040, 0x0009),    two(0xffc0, 0xffff),    "@s", m68851 },
1654 {"psws",        two(0xf040, 0x0008),    two(0xffc0, 0xffff),    "@s", m68851 },
1655
1656 {"ptestr",      two(0xf000, 0x8210),    two(0xffc0, 0xe3f0),    "T3&sQ8",       m68030 | m68851 },
1657 {"ptestr",      two(0xf000, 0x8310),    two(0xffc0, 0xe310),    "T3&sQ8A9",     m68030 | m68851 },
1658 {"ptestr",      two(0xf000, 0x8208),    two(0xffc0, 0xe3f8),    "D3&sQ8",       m68030 | m68851 },
1659 {"ptestr",      two(0xf000, 0x8308),    two(0xffc0, 0xe318),    "D3&sQ8A9",     m68030 | m68851 },
1660 {"ptestr",      two(0xf000, 0x8200),    two(0xffc0, 0xe3fe),    "f3&sQ8",       m68030 | m68851 },
1661 {"ptestr",      two(0xf000, 0x8300),    two(0xffc0, 0xe31e),    "f3&sQ8A9",     m68030 | m68851 },
1662
1663 {"ptestr",      one(0xf568),            one(0xfff8),            "as",           m68040 },
1664
1665 {"ptestw",      two(0xf000, 0x8010),    two(0xffc0, 0xe3f0),    "T3&sQ8",       m68030 | m68851 },
1666 {"ptestw",      two(0xf000, 0x8110),    two(0xffc0, 0xe310),    "T3&sQ8A9",     m68030 | m68851 },
1667 {"ptestw",      two(0xf000, 0x8008),    two(0xffc0, 0xe3f8),    "D3&sQ8",       m68030 | m68851 },
1668 {"ptestw",      two(0xf000, 0x8108),    two(0xffc0, 0xe318),    "D3&sQ8A9",     m68030 | m68851 },
1669 {"ptestw",      two(0xf000, 0x8000),    two(0xffc0, 0xe3fe),    "f3&sQ8",       m68030 | m68851 },
1670 {"ptestw",      two(0xf000, 0x8100),    two(0xffc0, 0xe31e),    "f3&sQ8A9",     m68030 | m68851 },
1671
1672 {"ptestw",      one(0xf548),            one(0xfff8),            "as",           m68040 },
1673
1674 {"ptrapacw",    two(0xf07a, 0x0007),    two(0xffff, 0xffff),    "#w", m68851 },
1675 {"ptrapacl",    two(0xf07b, 0x0007),    two(0xffff, 0xffff),    "#l", m68851 },
1676 {"ptrapac",     two(0xf07c, 0x0007),    two(0xffff, 0xffff),    "",   m68851 },
1677
1678 {"ptrapasw",    two(0xf07a, 0x0006),    two(0xffff, 0xffff),    "#w", m68851 },
1679 {"ptrapasl",    two(0xf07b, 0x0006),    two(0xffff, 0xffff),    "#l", m68851 },
1680 {"ptrapas",     two(0xf07c, 0x0006),    two(0xffff, 0xffff),    "",   m68851 },
1681
1682 {"ptrapbcw",    two(0xf07a, 0x0001),    two(0xffff, 0xffff),    "#w", m68851 },
1683 {"ptrapbcl",    two(0xf07b, 0x0001),    two(0xffff, 0xffff),    "#l", m68851 },
1684 {"ptrapbc",     two(0xf07c, 0x0001),    two(0xffff, 0xffff),    "",   m68851 },
1685
1686 {"ptrapbsw",    two(0xf07a, 0x0000),    two(0xffff, 0xffff),    "#w", m68851 },
1687 {"ptrapbsl",    two(0xf07b, 0x0000),    two(0xffff, 0xffff),    "#l", m68851 },
1688 {"ptrapbs",     two(0xf07c, 0x0000),    two(0xffff, 0xffff),    "",   m68851 },
1689
1690 {"ptrapccw",    two(0xf07a, 0x000f),    two(0xffff, 0xffff),    "#w", m68851 },
1691 {"ptrapccl",    two(0xf07b, 0x000f),    two(0xffff, 0xffff),    "#l", m68851 },
1692 {"ptrapcc",     two(0xf07c, 0x000f),    two(0xffff, 0xffff),    "",   m68851 },
1693
1694 {"ptrapcsw",    two(0xf07a, 0x000e),    two(0xffff, 0xffff),    "#w", m68851 },
1695 {"ptrapcsl",    two(0xf07b, 0x000e),    two(0xffff, 0xffff),    "#l", m68851 },
1696 {"ptrapcs",     two(0xf07c, 0x000e),    two(0xffff, 0xffff),    "",   m68851 },
1697
1698 {"ptrapgcw",    two(0xf07a, 0x000d),    two(0xffff, 0xffff),    "#w", m68851 },
1699 {"ptrapgcl",    two(0xf07b, 0x000d),    two(0xffff, 0xffff),    "#l", m68851 },
1700 {"ptrapgc",     two(0xf07c, 0x000d),    two(0xffff, 0xffff),    "",   m68851 },
1701
1702 {"ptrapgsw",    two(0xf07a, 0x000c),    two(0xffff, 0xffff),    "#w", m68851 },
1703 {"ptrapgsl",    two(0xf07b, 0x000c),    two(0xffff, 0xffff),    "#l", m68851 },
1704 {"ptrapgs",     two(0xf07c, 0x000c),    two(0xffff, 0xffff),    "",   m68851 },
1705
1706 {"ptrapicw",    two(0xf07a, 0x000b),    two(0xffff, 0xffff),    "#w", m68851 },
1707 {"ptrapicl",    two(0xf07b, 0x000b),    two(0xffff, 0xffff),    "#l", m68851 },
1708 {"ptrapic",     two(0xf07c, 0x000b),    two(0xffff, 0xffff),    "",   m68851 },
1709
1710 {"ptrapisw",    two(0xf07a, 0x000a),    two(0xffff, 0xffff),    "#w", m68851 },
1711 {"ptrapisl",    two(0xf07b, 0x000a),    two(0xffff, 0xffff),    "#l", m68851 },
1712 {"ptrapis",     two(0xf07c, 0x000a),    two(0xffff, 0xffff),    "",   m68851 },
1713
1714 {"ptraplcw",    two(0xf07a, 0x0003),    two(0xffff, 0xffff),    "#w", m68851 },
1715 {"ptraplcl",    two(0xf07b, 0x0003),    two(0xffff, 0xffff),    "#l", m68851 },
1716 {"ptraplc",     two(0xf07c, 0x0003),    two(0xffff, 0xffff),    "",   m68851 },
1717
1718 {"ptraplsw",    two(0xf07a, 0x0002),    two(0xffff, 0xffff),    "#w", m68851 },
1719 {"ptraplsl",    two(0xf07b, 0x0002),    two(0xffff, 0xffff),    "#l", m68851 },
1720 {"ptrapls",     two(0xf07c, 0x0002),    two(0xffff, 0xffff),    "",   m68851 },
1721
1722 {"ptrapscw",    two(0xf07a, 0x0005),    two(0xffff, 0xffff),    "#w", m68851 },
1723 {"ptrapscl",    two(0xf07b, 0x0005),    two(0xffff, 0xffff),    "#l", m68851 },
1724 {"ptrapsc",     two(0xf07c, 0x0005),    two(0xffff, 0xffff),    "",   m68851 },
1725
1726 {"ptrapssw",    two(0xf07a, 0x0004),    two(0xffff, 0xffff),    "#w", m68851 },
1727 {"ptrapssl",    two(0xf07b, 0x0004),    two(0xffff, 0xffff),    "#l", m68851 },
1728 {"ptrapss",     two(0xf07c, 0x0004),    two(0xffff, 0xffff),    "",   m68851 },
1729
1730 {"ptrapwcw",    two(0xf07a, 0x0009),    two(0xffff, 0xffff),    "#w", m68851 },
1731 {"ptrapwcl",    two(0xf07b, 0x0009),    two(0xffff, 0xffff),    "#l", m68851 },
1732 {"ptrapwc",     two(0xf07c, 0x0009),    two(0xffff, 0xffff),    "",   m68851 },
1733
1734 {"ptrapwsw",    two(0xf07a, 0x0008),    two(0xffff, 0xffff),    "#w", m68851 },
1735 {"ptrapwsl",    two(0xf07b, 0x0008),    two(0xffff, 0xffff),    "#l", m68851 },
1736 {"ptrapws",     two(0xf07c, 0x0008),    two(0xffff, 0xffff),    "",   m68851 },
1737
1738 {"pvalid",      two(0xf000, 0x2800),    two(0xffc0, 0xffff),    "Vs&s", m68851 },
1739 {"pvalid",      two(0xf000, 0x2c00),    two(0xffc0, 0xfff8),    "A3&s", m68851 },
1740
1741 #endif /* NO_68851 */
1742
1743 {"reset",       one(0047160),           one(0177777),           "", m68000up },
1744
1745 {"rolb",        one(0160430),           one(0170770),           "QdDs", m68000up },     /* rorb #Q,     Ds */
1746 {"rolb",        one(0160470),           one(0170770),           "DdDs", m68000up },     /* rorb Dd,     Ds */
1747 {"roll",        one(0160630),           one(0170770),           "QdDs", m68000up },     /* rorb #Q,     Ds */
1748 {"roll",        one(0160670),           one(0170770),           "DdDs", m68000up },     /* rorb Dd,     Ds */
1749 {"rolw",        one(0160530),           one(0170770),           "QdDs", m68000up },     /* rorb #Q,     Ds */
1750 {"rolw",        one(0160570),           one(0170770),           "DdDs", m68000up },     /* rorb Dd,     Ds */
1751 {"rolw",        one(0163700),           one(0177700),           "~s",   m68000up },     /* Rotate memory */
1752 {"rorb",        one(0160030),           one(0170770),           "QdDs", m68000up },     /* rorb #Q,     Ds */
1753 {"rorb",        one(0160070),           one(0170770),           "DdDs", m68000up },     /* rorb Dd,     Ds */
1754 {"rorl",        one(0160230),           one(0170770),           "QdDs", m68000up },     /* rorb #Q,     Ds */
1755 {"rorl",        one(0160270),           one(0170770),           "DdDs", m68000up },     /* rorb Dd,     Ds */
1756 {"rorw",        one(0160130),           one(0170770),           "QdDs", m68000up },     /* rorb #Q,     Ds */
1757 {"rorw",        one(0160170),           one(0170770),           "DdDs", m68000up },     /* rorb Dd,     Ds */
1758 {"rorw",        one(0163300),           one(0177700),           "~s",   m68000up },     /* Rotate memory */
1759
1760 {"roxlb",       one(0160420),           one(0170770),           "QdDs", m68000up },     /* roxrb #Q,    Ds */
1761 {"roxlb",       one(0160460),           one(0170770),           "DdDs", m68000up },     /* roxrb Dd,    Ds */
1762 {"roxll",       one(0160620),           one(0170770),           "QdDs", m68000up },     /* roxrb #Q,    Ds */
1763 {"roxll",       one(0160660),           one(0170770),           "DdDs", m68000up },     /* roxrb Dd,    Ds */
1764 {"roxlw",       one(0160520),           one(0170770),           "QdDs", m68000up },     /* roxrb #Q,    Ds */
1765 {"roxlw",       one(0160560),           one(0170770),           "DdDs", m68000up },     /* roxrb Dd,    Ds */
1766 {"roxlw",       one(0162700),           one(0177700),           "~s",   m68000up },     /* Rotate memory */
1767 {"roxrb",       one(0160020),           one(0170770),           "QdDs", m68000up },     /* roxrb #Q,    Ds */
1768 {"roxrb",       one(0160060),           one(0170770),           "DdDs", m68000up },     /* roxrb Dd,    Ds */
1769 {"roxrl",       one(0160220),           one(0170770),           "QdDs", m68000up },     /* roxrb #Q,    Ds */
1770 {"roxrl",       one(0160260),           one(0170770),           "DdDs", m68000up },     /* roxrb Dd,    Ds */
1771 {"roxrw",       one(0160120),           one(0170770),           "QdDs", m68000up },     /* roxrb #Q,    Ds */
1772 {"roxrw",       one(0160160),           one(0170770),           "DdDs", m68000up },     /* roxrb Dd,    Ds */
1773 {"roxrw",       one(0162300),           one(0177700),           "~s",   m68000up },     /* Rotate memory */
1774
1775 {"rtd",         one(0047164),           one(0177777),           "#w", m68010up },
1776 {"rte",         one(0047163),           one(0177777),           "",   m68000up },
1777 {"rtm",         one(0003300),           one(0177760),           "Rs", m68020 },
1778 {"rtr",         one(0047167),           one(0177777),           "",   m68000up },
1779 {"rts",         one(0047165),           one(0177777),           "",   m68000up },
1780
1781 {"sbcd",        one(0100400),           one(0170770),           "DsDd", m68000up },
1782 {"sbcd",        one(0100410),           one(0170770),           "-s-d", m68000up },
1783
1784 {"scc",         one(0052300),           one(0177700),           "$s", m68000up },
1785 {"scs",         one(0052700),           one(0177700),           "$s", m68000up },
1786 {"seq",         one(0053700),           one(0177700),           "$s", m68000up },
1787 {"sf",          one(0050700),           one(0177700),           "$s", m68000up },
1788 {"sge",         one(0056300),           one(0177700),           "$s", m68000up },
1789 {"sfge",        one(0056300),           one(0177700),           "$s", m68000up },
1790 {"sgt",         one(0057300),           one(0177700),           "$s", m68000up },
1791 {"sfgt",        one(0057300),           one(0177700),           "$s", m68000up },
1792 {"shi",         one(0051300),           one(0177700),           "$s", m68000up },
1793 {"sle",         one(0057700),           one(0177700),           "$s", m68000up },
1794 {"sfle",        one(0057700),           one(0177700),           "$s", m68000up },
1795 {"sls",         one(0051700),           one(0177700),           "$s", m68000up },
1796 {"slt",         one(0056700),           one(0177700),           "$s", m68000up },
1797 {"sflt",        one(0056700),           one(0177700),           "$s", m68000up },
1798 {"smi",         one(0055700),           one(0177700),           "$s", m68000up },
1799 {"sne",         one(0053300),           one(0177700),           "$s", m68000up },
1800 {"sfneq",       one(0053300),           one(0177700),           "$s", m68000up },
1801 {"spl",         one(0055300),           one(0177700),           "$s", m68000up },
1802 {"st",          one(0050300),           one(0177700),           "$s", m68000up },
1803 {"svc",         one(0054300),           one(0177700),           "$s", m68000up },
1804 {"svs",         one(0054700),           one(0177700),           "$s", m68000up },
1805
1806 {"stop",        one(0047162),           one(0177777),           "#w", m68000up },
1807
1808 {"subal",       one(0110700),           one(0170700),           "*lAd", m68000up },
1809 {"subaw",       one(0110300),           one(0170700),           "*wAd", m68000up },
1810 {"subb",        one(0050400),           one(0170700),           "Qd%s", m68000up },     /* subq written as sub */
1811 {"subb",        one(0002000),           one(0177700),           "#b$s", m68000up },     /* subi written as sub */
1812 {"subb",        one(0110000),           one(0170700),           ";bDd", m68000up },     /* subb ? ?,    Dd */
1813 {"subb",        one(0110400),           one(0170700),           "Dd~s", m68000up },     /* subb Dd,     ? ? */
1814 {"subib",       one(0002000),           one(0177700),           "#b$s", m68000up },
1815 {"subil",       one(0002200),           one(0177700),           "#l$s", m68000up },
1816 {"subiw",       one(0002100),           one(0177700),           "#w$s", m68000up },
1817 {"subl",        one(0050600),           one(0170700),           "Qd%s", m68000up },
1818 {"subl",        one(0002200),           one(0177700),           "#l$s", m68000up },
1819 {"subl",        one(0110700),           one(0170700),           "*lAd", m68000up },
1820 {"subl",        one(0110200),           one(0170700),           "*lDd", m68000up },
1821 {"subl",        one(0110600),           one(0170700),           "Dd~s", m68000up },
1822 {"subqb",       one(0050400),           one(0170700),           "Qd%s", m68000up },
1823 {"subql",       one(0050600),           one(0170700),           "Qd%s", m68000up },
1824 {"subqw",       one(0050500),           one(0170700),           "Qd%s", m68000up },
1825 {"subw",        one(0050500),           one(0170700),           "Qd%s", m68000up },
1826 {"subw",        one(0002100),           one(0177700),           "#w$s", m68000up },
1827 {"subw",        one(0110100),           one(0170700),           "*wDd", m68000up },
1828 {"subw",        one(0110300),           one(0170700),           "*wAd", m68000up },     /* suba written as sub */
1829 {"subw",        one(0110500),           one(0170700),           "Dd~s", m68000up },
1830 {"subxb",       one(0110400),           one(0170770),           "DsDd", m68000up },     /* subxb Ds,    Dd */
1831 {"subxb",       one(0110410),           one(0170770),           "-s-d", m68000up },     /* subxb -(As), -(Ad) */
1832 {"subxl",       one(0110600),           one(0170770),           "DsDd", m68000up },
1833 {"subxl",       one(0110610),           one(0170770),           "-s-d", m68000up },
1834 {"subxw",       one(0110500),           one(0170770),           "DsDd", m68000up },
1835 {"subxw",       one(0110510),           one(0170770),           "-s-d", m68000up },
1836
1837 {"swap",        one(0044100),           one(0177770),           "Ds", m68000up },
1838
1839 {"tas",         one(0045300),           one(0177700),           "$s", m68000up },
1840 {"trap",        one(0047100),           one(0177760),           "Ts", m68000up },
1841
1842 {"trapcc",      one(0052374),           one(0177777),           "", m68020up },
1843 {"trapcs",      one(0052774),           one(0177777),           "", m68020up },
1844 {"trapeq",      one(0053774),           one(0177777),           "", m68020up },
1845 {"trapf",       one(0050774),           one(0177777),           "", m68020up },
1846 {"trapge",      one(0056374),           one(0177777),           "", m68020up },
1847 {"trapgt",      one(0057374),           one(0177777),           "", m68020up },
1848 {"traphi",      one(0051374),           one(0177777),           "", m68020up },
1849 {"traple",      one(0057774),           one(0177777),           "", m68020up },
1850 {"trapls",      one(0051774),           one(0177777),           "", m68020up },
1851 {"traplt",      one(0056774),           one(0177777),           "", m68020up },
1852 {"trapmi",      one(0055774),           one(0177777),           "", m68020up },
1853 {"trapne",      one(0053374),           one(0177777),           "", m68020up },
1854 {"trappl",      one(0055374),           one(0177777),           "", m68020up },
1855 {"trapt",       one(0050374),           one(0177777),           "", m68020up },
1856 {"trapvc",      one(0054374),           one(0177777),           "", m68020up },
1857 {"trapvs",      one(0054774),           one(0177777),           "", m68020up },
1858
1859 {"trapcc.w",    one(0052372),           one(0177777),           "", m68020up },
1860 {"trapcs.w",    one(0052772),           one(0177777),           "", m68020up },
1861 {"trapeq.w",    one(0053772),           one(0177777),           "", m68020up },
1862 {"trapf.w",     one(0050772),           one(0177777),           "", m68020up },
1863 {"trapge.w",    one(0056372),           one(0177777),           "", m68020up },
1864 {"trapgt.w",    one(0057372),           one(0177777),           "", m68020up },
1865 {"traphi.w",    one(0051372),           one(0177777),           "", m68020up },
1866 {"traple.w",    one(0057772),           one(0177777),           "", m68020up },
1867 {"trapls.w",    one(0051772),           one(0177777),           "", m68020up },
1868 {"traplt.w",    one(0056772),           one(0177777),           "", m68020up },
1869 {"trapmi.w",    one(0055772),           one(0177777),           "", m68020up },
1870 {"trapne.w",    one(0053372),           one(0177777),           "", m68020up },
1871 {"trappl.w",    one(0055372),           one(0177777),           "", m68020up },
1872 {"trapt.w",     one(0050372),           one(0177777),           "", m68020up },
1873 {"trapvc.w",    one(0054372),           one(0177777),           "", m68020up },
1874 {"trapvs.w",    one(0054772),           one(0177777),           "", m68020up },
1875
1876 {"trapcc.l",    one(0052373),           one(0177777),           "", m68020up },
1877 {"trapcs.l",    one(0052773),           one(0177777),           "", m68020up },
1878 {"trapeq.l",    one(0053773),           one(0177777),           "", m68020up },
1879 {"trapf.l",     one(0050773),           one(0177777),           "", m68020up },
1880 {"trapge.l",    one(0056373),           one(0177777),           "", m68020up },
1881 {"trapgt.l",    one(0057373),           one(0177777),           "", m68020up },
1882 {"traphi.l",    one(0051373),           one(0177777),           "", m68020up },
1883 {"traple.l",    one(0057773),           one(0177777),           "", m68020up },
1884 {"trapls.l",    one(0051773),           one(0177777),           "", m68020up },
1885 {"traplt.l",    one(0056773),           one(0177777),           "", m68020up },
1886 {"trapmi.l",    one(0055773),           one(0177777),           "", m68020up },
1887 {"trapne.l",    one(0053373),           one(0177777),           "", m68020up },
1888 {"trappl.l",    one(0055373),           one(0177777),           "", m68020up },
1889 {"trapt.l",     one(0050373),           one(0177777),           "", m68020up },
1890 {"trapvc.l",    one(0054373),           one(0177777),           "", m68020up },
1891 {"trapvs.l",    one(0054773),           one(0177777),           "", m68020up },
1892
1893 {"trapv",       one(0047166),           one(0177777),           "", m68000up },
1894
1895 {"tstb",        one(0045000),           one(0177700),           ";b", m68000up },
1896 {"tstw",        one(0045100),           one(0177700),           "*w", m68000up },
1897 {"tstl",        one(0045200),           one(0177700),           "*l", m68000up },
1898
1899 {"unlk",        one(0047130),           one(0177770),           "As", m68000up },
1900 {"unpk",        one(0100600),           one(0170770),           "DsDd#w", m68020up },
1901 {"unpk",        one(0100610),           one(0170770),           "-s-d#w", m68020up },
1902
1903 /* Variable-sized branches */
1904
1905 {"jbsr",        one(0060400),           one(0177400),           "Bg", m68000up },
1906 {"jbsr",        one(0047200),           one(0177700),           "!s", m68000up },
1907 #ifdef  PIC
1908 {"jbsr",        one(0060400),           one(0177400),           "Bg  ", m68020up },
1909 #endif  /* PIC */
1910
1911 {"jra",         one(0060000),           one(0177400),           "Bg", m68000up },
1912 {"jra",         one(0047300),           one(0177700),           "!s", m68000up },
1913 #ifdef  PIC
1914 {"jra",         one(0060000),           one(0177400),           "Bg  ", m68000up },
1915 #endif  /* PIC */
1916
1917 {"jhi",         one(0061000),           one(0177400),           "Bg", m68000up },
1918 {"jls",         one(0061400),           one(0177400),           "Bg", m68000up },
1919 {"jcc",         one(0062000),           one(0177400),           "Bg", m68000up },
1920 {"jfnlt",       one(0062000),           one(0177400),           "Bg", m68000up }, /* apparently a sun alias */
1921 {"jcs",         one(0062400),           one(0177400),           "Bg", m68000up },
1922 {"jne",         one(0063000),           one(0177400),           "Bg", m68000up },
1923 {"jeq",         one(0063400),           one(0177400),           "Bg", m68000up },
1924 {"jfeq",        one(0063400),           one(0177400),           "Bg", m68000up }, /* apparently a sun alias */
1925 {"jvc",         one(0064000),           one(0177400),           "Bg", m68000up },
1926 {"jvs",         one(0064400),           one(0177400),           "Bg", m68000up },
1927 {"jpl",         one(0065000),           one(0177400),           "Bg", m68000up },
1928 {"jmi",         one(0065400),           one(0177400),           "Bg", m68000up },
1929 {"jge",         one(0066000),           one(0177400),           "Bg", m68000up },
1930 {"jlt",         one(0066400),           one(0177400),           "Bg", m68000up },
1931 {"jgt",         one(0067000),           one(0177400),           "Bg", m68000up },
1932 {"jle",         one(0067400),           one(0177400),           "Bg", m68000up },
1933 {"jfngt",       one(0067400),           one(0177400),           "Bg", m68000up }, /* apparently a sun alias */
1934
1935 /* aliases */
1936
1937 {"movql",       one(0070000),           one(0170400),           "MsDd", m68000up },
1938 {"moveql",      one(0070000),           one(0170400),           "MsDd", m68000up },
1939 {"moval",       one(0020100),           one(0170700),           "*lAd", m68000up },
1940 {"movaw",       one(0030100),           one(0170700),           "*wAd", m68000up },
1941 {"movb",        one(0010000),           one(0170000),           ";b$d", m68000up },     /* mov */
1942 {"movl",        one(0070000),           one(0170400),           "MsDd", m68000up },     /* movq written as mov */
1943 {"movl",        one(0020000),           one(0170000),           "*l$d", m68000up },
1944 {"movl",        one(0020100),           one(0170700),           "*lAd", m68000up },
1945 {"movl",        one(0047140),           one(0177770),           "AsUd", m68000up },     /* mov to USP */
1946 {"movl",        one(0047150),           one(0177770),           "UdAs", m68000up },     /* mov from USP */
1947 {"movc",        one(0047173),           one(0177777),           "R1Jj", m68010up },
1948 {"movc",        one(0047173),           one(0177777),           "R1#j", m68010up },
1949 {"movc",        one(0047172),           one(0177777),           "JjR1", m68010up },
1950 {"movc",        one(0047172),           one(0177777),           "#jR1", m68010up },
1951 {"movml",       one(0044300),           one(0177700),           "#w&s", m68000up },     /* movm reg to mem. */
1952 {"movml",       one(0044340),           one(0177770),           "#w-s", m68000up },     /* movm reg to autodecrement. */
1953 {"movml",       one(0046300),           one(0177700),           "!s#w", m68000up },     /* movm mem to reg. */
1954 {"movml",       one(0046330),           one(0177770),           "+s#w", m68000up },     /* movm autoinc to reg. */
1955 {"movml",       one(0044300),           one(0177700),           "Lw&s", m68000up },     /* movm reg to mem. */
1956 {"movml",       one(0044340),           one(0177770),           "lw-s", m68000up },     /* movm reg to autodecrement. */
1957 {"movml",       one(0046300),           one(0177700),           "!sLw", m68000up },     /* movm mem to reg. */
1958 {"movml",       one(0046330),           one(0177770),           "+sLw", m68000up },     /* movm autoinc to reg. */
1959 {"movmw",       one(0044200),           one(0177700),           "#w&s", m68000up },     /* movm reg to mem. */
1960 {"movmw",       one(0044240),           one(0177770),           "#w-s", m68000up },     /* movm reg to autodecrement. */
1961 {"movmw",       one(0046200),           one(0177700),           "!s#w", m68000up },     /* movm mem to reg. */
1962 {"movmw",       one(0046230),           one(0177770),           "+s#w", m68000up },     /* movm autoinc to reg. */
1963 {"movmw",       one(0044200),           one(0177700),           "Lw&s", m68000up },     /* movm reg to mem. */
1964 {"movmw",       one(0044240),           one(0177770),           "lw-s", m68000up },     /* movm reg to autodecrement. */
1965 {"movmw",       one(0046200),           one(0177700),           "!sLw", m68000up },     /* movm mem to reg. */
1966 {"movmw",       one(0046230),           one(0177770),           "+sLw", m68000up },     /* movm autoinc to reg. */
1967 {"movpl",       one(0000510),           one(0170770),           "dsDd", m68000up },     /* memory to register */
1968 {"movpl",       one(0000710),           one(0170770),           "Ddds", m68000up },     /* register to memory */
1969 {"movpw",       one(0000410),           one(0170770),           "dsDd", m68000up },     /* memory to register */
1970 {"movpw",       one(0000610),           one(0170770),           "Ddds", m68000up },     /* register to memory */
1971 {"movq",        one(0070000),           one(0170400),           "MsDd", m68000up },
1972 {"movw",        one(0030000),           one(0170000),           "*w$d", m68000up },
1973 {"movw",        one(0030100),           one(0170700),           "*wAd", m68000up },     /* mova,        written as mov */
1974 {"movw",        one(0040300),           one(0177700),           "Ss$s", m68000up },     /* Move from sr */
1975 {"movw",        one(0041300),           one(0177700),           "Cs$s", m68010up },     /* Move from ccr */
1976 {"movw",        one(0042300),           one(0177700),           ";wCd", m68000up },     /* mov to ccr */
1977 {"movw",        one(0043300),           one(0177700),           ";wSd", m68000up },     /* mov to sr */
1978
1979 {"movsb",       two(0007000, 0),        two(0177700, 07777),    "~sR1", m68010up },
1980 {"movsb",       two(0007000, 04000),    two(0177700, 07777),    "R1~s", m68010up },
1981 {"movsl",       two(0007200, 0),        two(0177700, 07777),    "~sR1", m68010up },
1982 {"movsl",       two(0007200, 04000),    two(0177700, 07777),    "R1~s", m68010up },
1983 {"movsw",       two(0007100, 0),        two(0177700, 07777),    "~sR1", m68010up },
1984 {"movsw",       two(0007100, 04000),    two(0177700, 07777),    "R1~s", m68010up },
1985
1986 };
1987
1988 int numopcodes=sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
1989
1990 struct m68k_opcode *endop = m68k_opcodes+sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
1991
1992 /*
1993  * Local Variables:
1994  * fill-column: 131
1995  * End:
1996  */
1997
1998 /* end of m68k-opcode.h */