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