* sparc-opc.c (asi): New static local.
[deliverable/binutils-gdb.git] / include / opcode / m68k.h
1 /* Opcode table for m680[01234]0/m6888[12]/m68851.
2 Copyright (C) 1989, 1991 Free Software Foundation.
3
4 This file is part of GDB, the GNU Debugger and GAS, the GNU Assembler.
5
6 Both GDB and GAS are free software; you can redistribute and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 1, or (at your option)
9 any later version.
10
11 GDB and GAS are distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with GDB or GAS; see the file COPYING. If not, write to
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19
20 /* These are used as bit flags for arch below. */
21
22 enum m68k_architecture { a,b };
23
24 #define _m68k_undef 0
25 #define m68000 0x01
26 #define m68008 m68000 /* synonym for -m68000. otherwise unused. */
27 #define m68010 0x02
28 #define m68020 0x04
29 #define m68030 0x08
30 #define m68040 0x10
31 #define m68881 0x20
32 #define m68882 m68881 /* synonym for -m68881. otherwise unused. */
33 #define m68851 0x40
34
35 /* handy aliases */
36 #define m68040up m68040
37 #define m68030up (m68030 | m68040up)
38 #define m68020up (m68020 | m68030up)
39 #define m68010up (m68010 | m68020up)
40 #define m68000up (m68000 | m68010up)
41
42 #define mfloat (m68881 | m68882 | m68040)
43 #define mmmu (m68851 | m68030 | m68040)
44
45
46 /* note that differences in addressing modes that aren't distinguished
47 in the following table are handled explicitly by gas. */
48
49 struct m68k_opcode {
50 char *name;
51 unsigned long opcode;
52 unsigned long match;
53 char *args;
54 int arch;
55 };
56
57 #ifdef MOTOROLA_SYNTAX
58 #define V(MIT_VARIANT,MOTOROLA_VARIANT) MOTOROLA_VARIANT
59 #ifdef __STDC__
60 #define OP2(name,ext) #name "." #ext
61 #else
62 #define OP2(name,ext) "name.ext"
63 #endif
64 #else /* MIT/Unix syntax */
65 #define V(MIT_VARIANT,MOTOROLA_VARIANT) MIT_VARIANT
66 #ifdef __STDC__
67 #define OP2(name,ext) #name #ext
68 #else
69 #define OP2(name,ext) "name\
70 ext"
71 #endif
72 #endif
73
74
75 /* We store four bytes of opcode for all opcodes because that
76 is the most any of them need. The actual length of an instruction
77 is always at least 2 bytes, and is as much longer as necessary to
78 hold the operands it has.
79
80 The match component is a mask saying which bits must match
81 particular opcode in order for an instruction to be an instance
82 of that opcode.
83
84 The args component is a string containing two characters
85 for each operand of the instruction. The first specifies
86 the kind of operand; the second, the place it is stored. */
87
88 /* Kinds of operands:
89 D data register only. Stored as 3 bits.
90 A address register only. Stored as 3 bits.
91 a address register indirect only. Stored as 3 bits.
92 R either kind of register. Stored as 4 bits.
93 F floating point coprocessor register only. Stored as 3 bits.
94 O an offset (or width): immediate data 0-31 or data register.
95 Stored as 6 bits in special format for BF... insns.
96 + autoincrement only. Stored as 3 bits (number of the address register).
97 - autodecrement only. Stored as 3 bits (number of the address register).
98 Q quick immediate data. Stored as 3 bits.
99 This matches an immediate operand only when value is in range 1 .. 8.
100 M moveq immediate data. Stored as 8 bits.
101 This matches an immediate operand only when value is in range -128..127
102 T trap vector immediate data. Stored as 4 bits.
103
104 k K-factor for fmove.p instruction. Stored as a 7-bit constant or
105 a three bit register offset, depending on the field type.
106
107 # immediate data. Stored in special places (b, w or l)
108 which say how many bits to store.
109 ^ immediate data for floating point instructions. Special places
110 are offset by 2 bytes from '#'...
111 B pc-relative address, converted to an offset
112 that is treated as immediate data.
113 d displacement and register. Stores the register as 3 bits
114 and stores the displacement in the entire second word.
115
116 C the CCR. No need to store it; this is just for filtering validity.
117 S the SR. No need to store, just as with CCR.
118 U the USP. No need to store, just as with CCR.
119
120 I Coprocessor ID. Not printed if 1. The Coprocessor ID is always
121 extracted from the 'd' field of word one, which means that an extended
122 coprocessor opcode can be skipped using the 'i' place, if needed.
123
124 s System Control register for the floating point coprocessor.
125 S List of system control registers for floating point coprocessor.
126
127 J Misc register for movec instruction, stored in 'j' format.
128 Possible values:
129 0x000 SFC Source Function Code reg [40, 30, 20, 10]
130 0x001 DFC Data Function Code reg [40, 30, 20, 10]
131 0x002 CACR Cache Control Register [40, 30, 20]
132 0x800 USP User Stack Pointer [40, 30, 20, 10]
133 0x801 VBR Vector Base reg [40, 30, 20, 10]
134 0x802 CAAR Cache Address Register [ 30, 20]
135 0x803 MSP Master Stack Pointer [40, 30, 20]
136 0x804 ISP Interrupt Stack Pointer [40, 30, 20]
137 0x003 TC MMU Translation Control [40]
138 0x004 ITT0 Instruction Transparent
139 Translation reg 0 [40]
140 0x005 ITT1 Instruction Transparent
141 Translation reg 1 [40]
142 0x006 DTT0 Data Transparent
143 Translation reg 0 [40]
144 0x007 DTT1 Data Transparent
145 Translation reg 1 [40]
146 0x805 MMUSR MMU Status reg [40]
147 0x806 URP User Root Pointer [40]
148 0x807 SRP Supervisor Root Pointer [40]
149
150 L Register list of the type d0-d7/a0-a7 etc.
151 (New! Improved! Can also hold fp0-fp7, as well!)
152 The assembler tries to see if the registers match the insn by
153 looking at where the insn wants them stored.
154
155 l Register list like L, but with all the bits reversed.
156 Used for going the other way. . .
157
158 c cache identifier which may be "nc" for no cache, "ic"
159 for instruction cache, "dc" for data cache, or "bc"
160 for both caches. Used in cinv and cpush. Always
161 stored in position "d".
162
163 They are all stored as 6 bits using an address mode and a register number;
164 they differ in which addressing modes they match.
165
166 * all (modes 0-6,7.*)
167 ~ alterable memory (modes 2-6,7.0,7.1)(not 0,1,7.~)
168 % alterable (modes 0-6,7.0,7.1)(not 7.~)
169 ; data (modes 0,2-6,7.*)(not 1)
170 @ data, but not immediate (modes 0,2-6,7.? ? ?)(not 1,7.?) This may really be ;, the 68020 book says it is
171 ! control (modes 2,5,6,7.*-)(not 0,1,3,4,7.4)
172 & alterable control (modes 2,5,6,7.0,7.1)(not 0,1,7.? ? ?)
173 $ alterable data (modes 0,2-6,7.0,7.1)(not 1,7.~)
174 ? alterable control, or data register (modes 0,2,5,6,7.0,7.1)(not 1,3,4,7.~)
175 / control, or data register (modes 0,2,5,6,7.0,7.1,7.2,7.3)(not 1,3,4,7.4)
176 */
177
178 /* JF: for the 68851 */
179 /*
180 I didn't use much imagination in choosing the
181 following codes, so many of them aren't very
182 mnemonic. -rab
183
184 P pmmu register
185 Possible values:
186 000 TC Translation Control reg
187 100 CAL Current Access Level
188 101 VAL Validate Access Level
189 110 SCC Stack Change Control
190 111 AC Access Control
191
192 W wide pmmu registers
193 Possible values:
194 001 DRP Dma Root Pointer
195 010 SRP Supervisor Root Pointer
196 011 CRP Cpu Root Pointer
197
198 f function code register
199 0 SFC
200 1 DFC
201
202 V VAL register only
203
204 X BADx, BACx
205 100 BAD Breakpoint Acknowledge Data
206 101 BAC Breakpoint Acknowledge Control
207
208 Y PSR
209 Z PCSR
210
211 | memory (modes 2-6, 7.*)
212
213 */
214
215 /* Places to put an operand, for non-general operands:
216 s source, low bits of first word.
217 d dest, shifted 9 in first word
218 1 second word, shifted 12
219 2 second word, shifted 6
220 3 second word, shifted 0
221 4 third word, shifted 12
222 5 third word, shifted 6
223 6 third word, shifted 0
224 7 second word, shifted 7
225 8 second word, shifted 10
226 D store in both place 1 and place 3; for divul and divsl.
227 B first word, low byte, for branch displacements
228 W second word (entire), for branch displacements
229 L second and third words (entire), for branch displacements (also overloaded for move16)
230 b second word, low byte
231 w second word (entire) [variable word/long branch offset for dbra]
232 l second and third word (entire)
233 g variable branch offset for bra and similar instructions.
234 The place to store depends on the magnitude of offset.
235 t store in both place 7 and place 8; for floating point operations
236 c branch offset for cpBcc operations.
237 The place to store is word two if bit six of word one is zero,
238 and words two and three if bit six of word one is one.
239 i Increment by two, to skip over coprocessor extended operands. Only
240 works with the 'I' format.
241 k Dynamic K-factor field. Bits 6-4 of word 2, used as a register number.
242 Also used for dynamic fmovem instruction.
243 C floating point coprocessor constant - 7 bits. Also used for static
244 K-factors...
245 j Movec register #, stored in 12 low bits of second word.
246
247 Places to put operand, for general operands:
248 d destination, shifted 6 bits in first word
249 b source, at low bit of first word, and immediate uses one byte
250 w source, at low bit of first word, and immediate uses two bytes
251 l source, at low bit of first word, and immediate uses four bytes
252 s source, at low bit of first word.
253 Used sometimes in contexts where immediate is not allowed anyway.
254 f single precision float, low bit of 1st word, immediate uses 4 bytes
255 F double precision float, low bit of 1st word, immediate uses 8 bytes
256 x extended precision float, low bit of 1st word, immediate uses 12 bytes
257 p packed float, low bit of 1st word, immediate uses 12 bytes
258 */
259
260 #define one(x) ((unsigned int) (x) << 16)
261 #define two(x, y) (((unsigned int) (x) << 16) + y)
262
263 /*
264 *** DANGER WILL ROBINSON ***
265
266 The assembler requires that all instances of the same mnemonic must be
267 consecutive. If they aren't, the assembler will bomb at runtime
268 */
269 #ifdef DONT_DEFINE_TABLE
270 extern struct m68k_opcode m68k_opcodes[];
271 #else
272 struct m68k_opcode m68k_opcodes[] =
273 {
274 {"abcd", one(0140400), one(0170770), "DsDd", m68000up },
275 {"abcd", one(0140410), one(0170770), "-s-d", m68000up },
276
277 /* Add instructions */
278 {OP2(adda,l), one(0150700), one(0170700), "*lAd", m68000up },
279 {OP2(adda,w), one(0150300), one(0170700), "*wAd", m68000up },
280 {OP2(addi,b), one(0003000), one(0177700), "#b$b", m68000up },
281
282 {OP2(addi,l), one(0003200), one(0177700), "#l$l", m68000up },
283 {OP2(addi,w), one(0003100), one(0177700), "#w$w", m68000up },
284 {OP2(addq,b), one(0050000), one(0170700), "Qd$b", m68000up },
285 #ifdef MOTOROLA_SYNTAX
286 {OP2(addq,b), one(0003000), one(0177700), "#b$b", m68000up }, /* FIXNIEL: addi instead of addq because to many frags */
287 #endif
288 {OP2(addq,l), one(0050200), one(0170700), "Qd%l", m68000up },
289 #ifdef MOTOROLA_SYNTAX
290 {OP2(addq,l), one(0003200), one(0177700), "#l$l", m68000up }, /* FIXNIEL: addi instead of addq because to many frags */
291 #endif
292 {OP2(addq,w), one(0050100), one(0170700), "Qd%w", m68000up },
293 #ifdef MOTOROLA_SYNTAX
294 {OP2(addq,w), one(0003100), one(0177700), "#w$w", m68000up }, /* FIXNIEL: addi instead of addq because to many frags */
295 #endif
296
297 {OP2(add,b), one(0050000), one(0170700), "Qd$b", m68000up }, /* addq written as add */
298 {OP2(add,b), one(0003000), one(0177700), "#b$b", m68000up }, /* addi written as add */
299 {OP2(add,b), one(0150000), one(0170700), ";bDd", m68000up }, /* addb <ea>, Dd */
300 {OP2(add,b), one(0150400), one(0170700), "Dd~b", m68000up }, /* add.b Dd, <ea> */
301
302 {OP2(add,w), one(0150300), one(0170700), "*wAd", m68000up }, /* adda written as add */
303 {OP2(add,w), one(0050100), one(0170700), "Qd%w", m68000up }, /* addq written as add */
304 {OP2(add,w), one(0003100), one(0177700), "#w$w", m68000up }, /* addi written as add */
305 {OP2(add,w), one(0150100), one(0170700), "*wDd", m68000up }, /* addw <ea>, Dd */
306 {OP2(add,w), one(0150500), one(0170700), "Dd~w", m68000up }, /* addw Dd, <ea> */
307
308 {OP2(add,l), one(0050200), one(0170700), "Qd%l", m68000up }, /* addq written as add */
309 {OP2(add,l), one(0003200), one(0177700), "#l$l", m68000up }, /* addi written as add */
310 {OP2(add,l), one(0150700), one(0170700), "*lAd", m68000up }, /* adda written as add */
311 {OP2(add,l), one(0150200), one(0170700), "*lDd", m68000up }, /* addl <ea>, Dd */
312 {OP2(add,l), one(0150600), one(0170700), "Dd~l", m68000up }, /* addl Dd, <ea> */
313
314 #ifdef MOTOROLA_SYNTAX
315 {"addi", one(0050200), one(0170700), "Qd%l", m68000up },
316 {"addi", one(0003200), one(0177700), "#l$l", m68000up }, /* addi written as add */
317 {"addq", one(0050100), one(0170700), "Qd%w", m68000up },
318 #endif
319
320 {OP2(addx,b), one(0150400), one(0170770), "DsDd", m68000up },
321 {OP2(addx,b), one(0150410), one(0170770), "-s-d", m68000up },
322 {OP2(addx,l), one(0150600), one(0170770), "DsDd", m68000up },
323 {OP2(addx,l), one(0150610), one(0170770), "-s-d", m68000up },
324 {OP2(addx,w), one(0150500), one(0170770), "DsDd", m68000up },
325 {OP2(addx,w), one(0150510), one(0170770), "-s-d", m68000up },
326
327 {OP2(andi,b), one(0001000), one(0177700), "#b$b", m68000up },
328 {OP2(andi,b), one(0001074), one(0177777), "#bCb", m68000up }, /* andi to ccr */
329 {OP2(andi,w), one(0001100), one(0177700), "#w$w", m68000up },
330 {OP2(andi,w), one(0001174), one(0177777), "#wSw", m68000up }, /* andi to sr */
331 {OP2(andi,l), one(0001200), one(0177700), "#l$l", m68000up },
332 {OP2(and,b), one(0001000), one(0177700), "#b$b", m68000up }, /* andi written as or */
333 {OP2(and,b), one(0001074), one(0177777), "#bCb", m68000up }, /* andi to ccr */
334 {OP2(and,b), one(0140000), one(0170700), ";bDd", m68000up }, /* memory to register */
335 {OP2(and,b), one(0140400), one(0170700), "Dd~b", m68000up }, /* register to memory */
336 {OP2(and,w), one(0001100), one(0177700), "#w$w", m68000up }, /* andi written as or */
337 {OP2(and,w), one(0001174), one(0177777), "#wSw", m68000up }, /* andi to sr */
338 {OP2(and,w), one(0140100), one(0170700), ";wDd", m68000up }, /* memory to register */
339 {OP2(and,w), one(0140500), one(0170700), "Dd~w", m68000up }, /* register to memory */
340 {OP2(and,l), one(0001200), one(0177700), "#l$l", m68000up }, /* andi written as or */
341 {OP2(and,l), one(0140200), one(0170700), ";lDd", m68000up }, /* memory to register */
342 {OP2(and,l), one(0140600), one(0170700), "Dd~l", m68000up }, /* register to memory */
343
344 #ifdef MOTOROLA_SYNTAX
345 {"andi", one(0001200), one(0177700), "#l$l", m68000up },
346 {"andi", one(0001174), one(0177777), "#wSw", m68000up }, /* andi to sr */
347 {"andi", one(0001074), one(0177777), "#bCb", m68000up }, /* andi to ccr */
348 #endif
349
350 {OP2(asl,b), one(0160400), one(0170770), "QdDs", m68000up },
351 {OP2(asl,b), one(0160440), one(0170770), "DdDs", m68000up },
352 {OP2(asl,l), one(0160600), one(0170770), "QdDs", m68000up },
353 {OP2(asl,l), one(0160640), one(0170770), "DdDs", m68000up },
354 {OP2(asl,w), one(0160500), one(0170770), "QdDs", m68000up },
355 {OP2(asl,w), one(0160540), one(0170770), "DdDs", m68000up },
356 {OP2(asl,w), one(0160700), one(0177700), "~s", m68000up }, /* Shift memory */
357 {OP2(asr,b), one(0160000), one(0170770), "QdDs", m68000up },
358 {OP2(asr,b), one(0160040), one(0170770), "DdDs", m68000up },
359 {OP2(asr,l), one(0160200), one(0170770), "QdDs", m68000up },
360 {OP2(asr,l), one(0160240), one(0170770), "DdDs", m68000up },
361 {OP2(asr,w), one(0160100), one(0170770), "QdDs", m68000up },
362 {OP2(asr,w), one(0160140), one(0170770), "DdDs", m68000up },
363 {OP2(asr,w), one(0160300), one(0177700), "~s", m68000up }, /* Shift memory */
364
365 #ifdef BRANCH_IS_VARIABLE_SIZED
366 #define BRANCH "Bg"
367 #define BRANCH_MASK one(0xFF00)
368 #else
369 /* Fixed-size branches with 16-bit offsets */
370 #define BRANCH "BW"
371 #define BRANCH_MASK one(0xFFFF) /* 8-bit displacement must be 0 */
372 #endif
373
374 {"bhi", one(0061000), BRANCH_MASK, BRANCH, m68000up },
375 {"bls", one(0061400), BRANCH_MASK, BRANCH, m68000up },
376 {"bcc", one(0062000), BRANCH_MASK, BRANCH, m68000up },
377 #ifndef MOTOROLA_SYNTAX
378 {"jfnlt", one(0062000), one(0177777), "BW", m68000up }, /* apparently a sun alias */
379 #endif
380 {"bcs", one(0062400), BRANCH_MASK, BRANCH, m68000up },
381 {"bne", one(0063000), BRANCH_MASK, BRANCH, m68000up },
382 {"beq", one(0063400), BRANCH_MASK, BRANCH, m68000up },
383 {"bvc", one(0064000), BRANCH_MASK, BRANCH, m68000up },
384 {"bvs", one(0064400), BRANCH_MASK, BRANCH, m68000up },
385 {"bpl", one(0065000), BRANCH_MASK, BRANCH, m68000up },
386 {"bmi", one(0065400), BRANCH_MASK, BRANCH, m68000up },
387 {"bge", one(0066000), BRANCH_MASK, BRANCH, m68000up },
388 {"blt", one(0066400), BRANCH_MASK, BRANCH, m68000up },
389 {"bgt", one(0067000), BRANCH_MASK, BRANCH, m68000up },
390 {"ble", one(0067400), BRANCH_MASK, BRANCH, m68000up },
391 #ifndef MOTOROLA_SYNTAX
392 {"jfngt", one(0067400), one(0177777), "BW", m68000up }, /* apparently a sun alias */
393 #endif
394
395 #ifdef MOTOROLA_SYNTAX
396 {"bsr", one(0060400), one(0177400), "Bg", m68000up },
397 {"bsr", one(0047200), one(0177700), "!s", m68000up },
398 {"bra", one(0060000), one(0177400), "Bg", m68000up },
399 {"bra", one(0047300), one(0177700), "!s", m68000up },
400 #else
401 {"bra", one(0060000), one(0177777), "BW", m68000up },
402 {"bsr", one(0060400), one(0177777), "BW", m68000up },
403 #endif
404
405 /* Fixed-size branches with short (byte) offsets */
406
407 {OP2(bhi,s), one(0061000), one(0177400), "BB", m68000up },
408 {OP2(bls,s), one(0061400), one(0177400), "BB", m68000up },
409 {OP2(bcc,s), one(0062000), one(0177400), "BB", m68000up },
410 {OP2(bcs,s), one(0062400), one(0177400), "BB", m68000up },
411 {OP2(bne,s), one(0063000), one(0177400), "BB", m68000up },
412 {OP2(beq,s), one(0063400), one(0177400), "BB", m68000up },
413 {"jfeq", one(0063400), one(0177400), "BB", m68000up }, /* apparently a sun alias */
414 {OP2(bvc,s), one(0064000), one(0177400), "BB", m68000up },
415 {OP2(bvs,s), one(0064400), one(0177400), "BB", m68000up },
416 {OP2(bpl,s), one(0065000), one(0177400), "BB", m68000up },
417 {OP2(bmi,s), one(0065400), one(0177400), "BB", m68000up },
418 {OP2(bge,s), one(0066000), one(0177400), "BB", m68000up },
419 {OP2(blt,s), one(0066400), one(0177400), "BB", m68000up },
420 {OP2(bgt,s), one(0067000), one(0177400), "BB", m68000up },
421 {OP2(ble,s), one(0067400), one(0177400), "BB", m68000up },
422 {OP2(bra,s), one(0060000), one(0177400), "BB", m68000up },
423 {OP2(bsr,s), one(0060400), one(0177400), "BB", m68000up },
424
425 /* Fixed-size branches with long (32-bit) offsets */
426
427 {OP2(bhi,l), one(0061377), one(0177777), "BL", m68020up },
428 {OP2(bls,l), one(0061777), one(0177777), "BL", m68020up },
429 {OP2(bcc,l), one(0062377), one(0177777), "BL", m68020up },
430 {OP2(bcs,l), one(0062777), one(0177777), "BL", m68020up },
431 {OP2(bne,l), one(0063377), one(0177777), "BL", m68020up },
432 {OP2(beq,l), one(0063777), one(0177777), "BL", m68020up },
433 {OP2(bvc,l), one(0064377), one(0177777), "BL", m68020up },
434 {OP2(bvs,l), one(0064777), one(0177777), "BL", m68020up },
435 {OP2(bpl,l), one(0065377), one(0177777), "BL", m68020up },
436 {OP2(bmi,l), one(0065777), one(0177777), "BL", m68020up },
437 {OP2(bge,l), one(0066377), one(0177777), "BL", m68020up },
438 {OP2(blt,l), one(0066777), one(0177777), "BL", m68020up },
439 {OP2(bgt,l), one(0067377), one(0177777), "BL", m68020up },
440 {OP2(ble,l), one(0067777), one(0177777), "BL", m68020up },
441 {OP2(bra,l), one(0060377), one(0177777), "BL", m68020up },
442 {OP2(bsr,l), one(0060777), one(0177777), "BL", m68020up },
443
444 /* We now return you to our regularly scheduled instruction set */
445
446 {"bchg", one(0000500), one(0170700), "Dd$s", m68000up },
447 {"bchg", one(0004100), one(0177700), "#b$s", m68000up },
448 {"bclr", one(0000600), one(0170700), "Dd$s", m68000up },
449 {"bclr", one(0004200), one(0177700), "#b$s", m68000up },
450
451 #ifdef MOTOROLA_SYNTAX
452 {OP2(bchg,b), one(0000500), one(0170700), "Dd$s", m68000up },
453 {OP2(bchg,b), one(0004100), one(0177700), "#b$s", m68000up },
454 {OP2(bclr,b), one(0000600), one(0170700), "Dd$s", m68000up },
455 {OP2(bclr,b), one(0004200), one(0177700), "#b$s", m68000up },
456
457 {OP2(bchg,l), one(0000500), one(0170700), "Dd$s", m68000up },
458 {OP2(bchg,l), one(0004100), one(0177700), "#b$s", m68000up },
459 {OP2(bclr,l), one(0000600), one(0170700), "Dd$s", m68000up },
460 {OP2(bclr,l), one(0004200), one(0177700), "#b$s", m68000up },
461 #endif
462
463 {"bfchg", two(0165300, 0), two(0177700, 0170000), "?sO2O3", m68020up },
464 {"bfclr", two(0166300, 0), two(0177700, 0170000), "?sO2O3", m68020up },
465 {"bfexts", two(0165700, 0), two(0177700, 0100000), "/sO2O3D1", m68020up },
466 {"bfextu", two(0164700, 0), two(0177700, 0100000), "/sO2O3D1", m68020up },
467 {"bfffo", two(0166700, 0), two(0177700, 0100000), "/sO2O3D1", m68020up },
468 {"bfins", two(0167700, 0), two(0177700, 0100000), "D1?sO2O3", m68020up },
469 {"bfset", two(0167300, 0), two(0177700, 0170000), "?sO2O3", m68020up },
470 {"bftst", two(0164300, 0), two(0177700, 0170000), "/sO2O3", m68020up },
471 {"bkpt", one(0044110), one(0177770), "Qs", m68020up },
472
473 {"bset", one(0000700), one(0170700), "Dd$s", m68000up },
474 {"bset", one(0004300), one(0177700), "#b$s", m68000up },
475 {"btst", one(0000400), one(0170700), "Dd@s", m68000up },
476 {"btst", one(0004000), one(0177700), "#b@s", m68000up },
477 #ifdef MOTOROLA_SYNTAX
478 {OP2(bset,b), one(0000700), one(0170700), "Dd$s", m68000up },
479 {OP2(bset,b), one(0004300), one(0177700), "#b$s", m68000up },
480 {OP2(btst,b), one(0000400), one(0170700), "Dd@s", m68000up },
481 {OP2(btst,b), one(0004000), one(0177700), "#b@s", m68000up },
482
483 {OP2(bset,l), one(0000700), one(0170700), "Dd$s", m68000up },
484 {OP2(bset,l), one(0004300), one(0177700), "#b$s", m68000up },
485 {OP2(btst,l), one(0000400), one(0170700), "Dd@s", m68000up },
486 {OP2(btst,l), one(0004000), one(0177700), "#b@s", m68000up },
487 #endif
488
489 {"callm", one(0003300), one(0177700), "#b!s", m68020 },
490
491 {OP2(cas2,l), two(0007374, 0), two(0177777, 0107070), "D3D6D2D5R1R4", m68020up }, /* JF FOO really a 3 word ins */
492 {OP2(cas2,w), two(0006374, 0), two(0177777, 0107070), "D3D6D2D5R1R4", m68020up }, /* JF ditto */
493 {OP2(cas,b), two(0005300, 0), two(0177700, 0177070), "D3D2~s", m68020up },
494 {OP2(cas,l), two(0007300, 0), two(0177700, 0177070), "D3D2~s", m68020up },
495 {OP2(cas,w), two(0006300, 0), two(0177700, 0177070), "D3D2~s", m68020up },
496
497 #ifdef ALLOW_DEFAULT_SIZES
498 {"casw", two(0006300, 0), two(0177700, 0177070), "D3D2~s", m68020up },
499 {"cas", two(0006300, 0), two(0177700, 0177070), "D3D2~s", m68020up },
500 {"cas2", two(0006374, 0), two(0177777, 0107070), "D3D6D2D5R1R4", m68020up }, /* JF ditto */
501 #endif
502
503 {OP2(chk2,b), two(0000300, 0004000), two(0177700, 07777), "!sR1", m68020up },
504 {OP2(chk2,l), two(0002300, 0004000), two(0177700, 07777), "!sR1", m68020up },
505 {OP2(chk2,w), two(0001300, 0004000), two(0177700, 07777), "!sR1", m68020up },
506 #ifdef MOTOROLA_SYNTAX
507 {OP2(chk2,w), two(0001300, 0004000), two(0177700, 07777), "!sR1", m68020up },
508 #endif
509
510 #ifdef ALLOW_DEFAULT_SIZES
511 {"chk", one(0040600), one(0170700), ";wDd", m68000up },
512 {"chk", one(0040400), one(0170700), ";lDd", m68000up },
513
514 /* {"chk", one(0040600), one(0170700), ";wDd"}, JF FOO this looks wrong */
515
516 {"chk2", two(0001300, 0004000), two(0177700, 07777), "!sR1", m68020up },
517 #endif
518
519 {OP2(chk,l), one(0040400), one(0170700), ";lDd", m68000up },
520 #ifdef MOTOROLA_SYNTAX
521 {OP2(chk,w), two(0001300, 0004000), two(0177700, 07777), "!sR1", m68020up },
522 #endif
523 {OP2(chk,w), one(0040600), one(0170700), ";wDd", m68000up },
524
525 #define SCOPE_LINE (0x1 << 3)
526 #define SCOPE_PAGE (0x2 << 3)
527 #define SCOPE_ALL (0x3 << 3)
528
529 {"cinva", one(0xf400|SCOPE_ALL), one(0xff38), "ce", m68040 },
530 {"cinvl", one(0xf400|SCOPE_LINE), one(0xff38), "ceas", m68040 },
531 {"cinvp", one(0xf400|SCOPE_PAGE), one(0xff38), "ceas", m68040 },
532
533 {"cpusha", one(0xf420|SCOPE_ALL), one(0xff38), "ce", m68040 },
534 {"cpushl", one(0xf420|SCOPE_LINE), one(0xff38), "ceas", m68040 },
535 {"cpushp", one(0xf420|SCOPE_PAGE), one(0xff38), "ceas", m68040 },
536
537 #undef SCOPE_LINE
538 #undef SCOPE_PAGE
539 #undef SCOPE_ALL
540 {OP2(clr,b), one(0041000), one(0177700), "$s", m68000up },
541 {OP2(clr,l), one(0041200), one(0177700), "$s", m68000up },
542 {OP2(clr,w), one(0041100), one(0177700), "$s", m68000up },
543
544
545 {OP2(cmp2,b), two(0000300, 0), two(0177700, 07777), "!sR1", m68020up },
546 {OP2(cmp2,l), two(0002300, 0), two(0177700, 07777), "!sR1", m68020up },
547 {OP2(cmp2,w), two(0001300, 0), two(0177700, 07777), "!sR1", m68020up },
548 {OP2(cmpa,l), one(0130700), one(0170700), "*lAd", m68000up },
549 {OP2(cmpa,w), one(0130300), one(0170700), "*wAd", m68000up },
550
551 {OP2(cmpi,b), one(0006000), one(0177700), "#b;b", m68000up },
552 {OP2(cmpi,l), one(0006200), one(0177700), "#l;l", m68000up },
553 {OP2(cmpi,w), one(0006100), one(0177700), "#w;w", m68000up },
554 {OP2(cmp,b), one(0006000), one(0177700), "#b;b", m68000up }, /* cmpi written as cmp */
555 {OP2(cmp,b), one(0130000), one(0170700), ";bDd", m68000up },
556 #ifdef MOTOROLA_SYNTAX
557 {OP2(cmp,b), one(0130410), one(0170770), "+s+d", m68000up }, /* cmpm written as cmp */
558 #endif
559 {OP2(cmp,w), one(0006100), one(0177700), "#w;w", m68000up },
560 {OP2(cmp,w), one(0130100), one(0170700), "*wDd", m68000up },
561 {OP2(cmp,w), one(0130300), one(0170700), "*wAd", m68000up }, /* cmpa written as cmp */
562 #ifdef MOTOROLA_SYNTAX
563 {OP2(cmp,w), one(0130510), one(0170770), "+s+d", m68000up }, /* cmpm written as cmp */
564 #endif
565 {OP2(cmp,l), one(0006200), one(0177700), "#l;l", m68000up },
566 {OP2(cmp,l), one(0130200), one(0170700), "*lDd", m68000up },
567 {OP2(cmp,l), one(0130700), one(0170700), "*lAd", m68000up },
568 #ifdef MOTOROLA_SYNTAX
569 {"cmpl", one(0130610), one(0170770), "+s+d", m68000up }, /* cmpm written as cmp */
570 #endif
571
572 {OP2(cmpm,b), one(0130410), one(0170770), "+s+d", m68000up },
573 {OP2(cmpm,l), one(0130610), one(0170770), "+s+d", m68000up },
574 {OP2(cmpm,w), one(0130510), one(0170770), "+s+d", m68000up },
575 #ifdef ALLOW_DEFAULT_SIZES
576 {"cmp", one(0006200), one(0177700), "#l;l", m68000up },
577 {"cmp", one(0130200), one(0170700), "*lDd", m68000up },
578 {"cmp", one(0130700), one(0170700), "*lAd", m68000up },
579 {"cmp", one(0130510), one(0170770), "+s+d", m68000up }, /* cmpm written as cmp */
580
581 {"cmpi", one(0006200), one(0177700), "#l;l", m68000up },
582
583 {"cmp2", two(0001300, 0), two(0177700, 07777), "!sR1", m68020up },
584 {"cmpm", one(0130510), one(0170770), "+s+d", m68000up },
585 #endif
586
587 {"dbcc", one(0052310), one(0177770), "DsBw", m68000up },
588 {"dbcs", one(0052710), one(0177770), "DsBw", m68000up },
589 {"dbeq", one(0053710), one(0177770), "DsBw", m68000up },
590 {"dbf", one(0050710), one(0177770), "DsBw", m68000up },
591 {"dbge", one(0056310), one(0177770), "DsBw", m68000up },
592 {"dbgt", one(0057310), one(0177770), "DsBw", m68000up },
593 {"dbhi", one(0051310), one(0177770), "DsBw", m68000up },
594 {"dble", one(0057710), one(0177770), "DsBw", m68000up },
595 {"dbls", one(0051710), one(0177770), "DsBw", m68000up },
596 {"dblt", one(0056710), one(0177770), "DsBw", m68000up },
597 {"dbmi", one(0055710), one(0177770), "DsBw", m68000up },
598 {"dbne", one(0053310), one(0177770), "DsBw", m68000up },
599 {"dbpl", one(0055310), one(0177770), "DsBw", m68000up },
600 {"dbra", one(0050710), one(0177770), "DsBw", m68000up },
601 {"dbt", one(0050310), one(0177770), "DsBw", m68000up },
602 {"dbvc", one(0054310), one(0177770), "DsBw", m68000up },
603 {"dbvs", one(0054710), one(0177770), "DsBw", m68000up },
604
605 #ifdef MOTOROLA_SYNTAX
606 {OP2(tdivs,l), two(0046100, 0006000), two(0177700, 0107770), ";lD3D1", m68020up },
607 {OP2(tdivs,l), two(0046100, 0004000), two(0177700, 0107770), ";lDD", m68020up },
608 #endif
609
610 {OP2(divs,l), two(0046100, 0006000), two(0177700, 0107770), ";lD3D1", m68020up },
611 {OP2(divs,l), two(0046100, 0004000), two(0177700, 0107770), ";lDD", m68020up },
612 {OP2(divs,ll), two(0046100, 0004000), two(0177700, 0107770), ";lD3D1", m68020up },
613 {OP2(divs,w), one(0100700), one(0170700), ";wDd", m68000up },
614 {"divs", one(0100700), one(0170700), ";wDd", m68000up },
615 {OP2(divu,l), two(0046100, 0002000), two(0177700, 0107770), ";lD3D1", m68020up },
616 {OP2(divu,l), two(0046100, 0000000), two(0177700, 0107770), ";lDD", m68020up },
617 {OP2(divu,ll), two(0046100, 0000000), two(0177700, 0107770), ";lD3D1", m68020up },
618 {OP2(divu,w), one(0100300), one(0170700), ";wDd", m68000up },
619 {"divu", one(0100300), one(0170700), ";wDd", m68000up },
620
621 {OP2(eor,b), one(0005000), one(0177700), "#b$s", m68000up }, /* eori written as or */
622 {OP2(eor,b), one(0005074), one(0177777), "#bCs", m68000up }, /* eori to ccr */
623 {OP2(eor,b), one(0130400), one(0170700), "Dd$s", m68000up }, /* register to memory */
624 {OP2(eori,b), one(0005000), one(0177700), "#b$s", m68000up },
625 {OP2(eori,b), one(0005074), one(0177777), "#bCs", m68000up }, /* eori to ccr */
626 {OP2(eori,l), one(0005200), one(0177700), "#l$s", m68000up },
627 {OP2(eori,w), one(0005100), one(0177700), "#w$s", m68000up },
628 {OP2(eori,w), one(0005174), one(0177777), "#wSs", m68000up }, /* eori to sr */
629 {OP2(eor,l), one(0005200), one(0177700), "#l$s", m68000up },
630 {OP2(eor,l), one(0130600), one(0170700), "Dd$s", m68000up },
631 {OP2(eor,w), one(0005100), one(0177700), "#w$s", m68000up },
632 {OP2(eor,w), one(0005174), one(0177777), "#wSs", m68000up }, /* eori to sr */
633 {OP2(eor,w), one(0130500), one(0170700), "Dd$s", m68000up },
634 #ifdef ALLOW_DEFAULT_SIZES
635 {"eor", one(0005074), one(0177777), "#bCs", m68000up }, /* eorb to ccr */
636 {"eor", one(0005174), one(0177777), "#wSs", m68000up }, /* eori to sr */
637 {"eori", one(0005074), one(0177777), "#bCs", m68000up }, /* eori to ccr */
638 {"eori", one(0005174), one(0177777), "#wSs", m68000up }, /* eoriw to sr */
639 #endif
640
641 {"exg", one(0140500), one(0170770), "DdDs", m68000up },
642 {"exg", one(0140510), one(0170770), "AdAs", m68000up },
643 {"exg", one(0140610), one(0170770), "DdAs", m68000up },
644 {"exg", one(0140610), one(0170770), "AsDd", m68000up },
645
646 {OP2(ext,w), one(0044200), one(0177770), "Ds", m68000up },
647 {OP2(ext,l), one(0044300), one(0177770), "Ds", m68000up },
648 {OP2(extb,l), one(0044700), one(0177770), "Ds", m68020up },
649 #ifdef MOTOROLA_SYNTAX
650 {"ext", one(0044200), one(0177770), "Ds", m68000up },
651 {"ext.wl", one(0044200), one(0177770), "Ds", m68000up },
652 {"ext.bw", one(0044200), one(0177770), "Ds", m68000up },
653 #endif
654
655 /* float stuff starts here */
656
657 {OP2(fabs,b), two(0xF000, 0x5818), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
658 {OP2(fabs,d), two(0xF000, 0x5418), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
659 {OP2(fabs,l), two(0xF000, 0x4018), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
660 {OP2(fabs,p), two(0xF000, 0x4C18), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
661 {OP2(fabs,s), two(0xF000, 0x4418), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
662 {OP2(fabs,w), two(0xF000, 0x5018), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
663 {OP2(fabs,x), two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
664 {OP2(fabs,x), two(0xF000, 0x4818), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
665 {OP2(fabs,x), two(0xF000, 0x0018), two(0xF1C0, 0xE07F), "IiFt", mfloat },
666 {OP2(fsabs,b), two(0xF000, 0x5858), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
667 {OP2(fsabs,d), two(0xF000, 0x5458), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
668 {OP2(fsabs,l), two(0xF000, 0x4058), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
669 {OP2(fsabs,p), two(0xF000, 0x4C58), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
670 {OP2(fsabs,s), two(0xF000, 0x4458), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
671 {OP2(fsabs,w), two(0xF000, 0x5058), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
672 {OP2(fsabs,x), two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
673 {OP2(fsabs,x), two(0xF000, 0x4858), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
674 {OP2(fsabs,x), two(0xF000, 0x0058), two(0xF1C0, 0xE07F), "IiFt", m68040 },
675
676 {OP2(fdabs,b), two(0xF000, 0x585c), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040},
677 {OP2(fdabs,d), two(0xF000, 0x545c), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040},
678 {OP2(fdabs,l), two(0xF000, 0x405c), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040},
679 {OP2(fdabs,p), two(0xF000, 0x4C5c), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040},
680 {OP2(fdabs,s), two(0xF000, 0x445c), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040},
681 {OP2(fdabs,w), two(0xF000, 0x505c), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040},
682 {OP2(fdabs,x), two(0xF000, 0x005c), two(0xF1C0, 0xE07F), "IiF8F7", m68040},
683 {OP2(fdabs,x), two(0xF000, 0x485c), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040},
684 {OP2(fdabs,x), two(0xF000, 0x005c), two(0xF1C0, 0xE07F), "IiFt", m68040},
685 {OP2(facos,b), two(0xF000, 0x581C), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
686 {OP2(facos,d), two(0xF000, 0x541C), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
687 {OP2(facos,l), two(0xF000, 0x401C), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
688 {OP2(facos,p), two(0xF000, 0x4C1C), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
689 {OP2(facos,s), two(0xF000, 0x441C), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
690 {OP2(facos,w), two(0xF000, 0x501C), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
691 {OP2(facos,x), two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
692 {OP2(facos,x), two(0xF000, 0x481C), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
693 {OP2(facos,x), two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiFt", mfloat },
694
695 {OP2(fadd,b), two(0xF000, 0x5822), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
696 {OP2(fadd,d), two(0xF000, 0x5422), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
697 {OP2(fadd,l), two(0xF000, 0x4022), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
698 {OP2(fadd,p), two(0xF000, 0x4C22), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
699 {OP2(fadd,s), two(0xF000, 0x4422), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
700 {OP2(fadd,w), two(0xF000, 0x5022), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
701 {OP2(fadd,x), two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
702 {OP2(fadd,x), two(0xF000, 0x4822), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
703 /* {OP2(fadd,x), two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF removed */
704
705 {OP2(fsadd,b), two(0xF000, 0x5862), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
706 {OP2(fsadd,d), two(0xF000, 0x5462), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
707 {OP2(fsadd,l), two(0xF000, 0x4062), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
708 {OP2(fsadd,p), two(0xF000, 0x4C62), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
709 {OP2(fsadd,s), two(0xF000, 0x4462), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
710 {OP2(fsadd,w), two(0xF000, 0x5062), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
711 {OP2(fsadd,x), two(0xF000, 0x0062), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
712 {OP2(fsadd,x), two(0xF000, 0x4862), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
713 /* {OP2(fsadd,x), two(0xF000, 0x0062), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF removed */
714
715 {OP2(fdadd,b), two(0xF000, 0x5866), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
716 {OP2(fdadd,d), two(0xF000, 0x5466), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
717 {OP2(fdadd,l), two(0xF000, 0x4066), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
718 {OP2(fdadd,p), two(0xF000, 0x4C66), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
719 {OP2(fdadd,s), two(0xF000, 0x4466), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
720 {OP2(fdadd,w), two(0xF000, 0x5066), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
721 {OP2(fdadd,x), two(0xF000, 0x0066), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
722 {OP2(fdadd,x), two(0xF000, 0x4866), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
723 /* {"faddx", two(0xF000, 0x0066), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF removed */
724
725 {OP2(fasin,b), two(0xF000, 0x580C), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
726 {OP2(fasin,d), two(0xF000, 0x540C), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
727 {OP2(fasin,l), two(0xF000, 0x400C), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
728 {OP2(fasin,p), two(0xF000, 0x4C0C), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
729 {OP2(fasin,s), two(0xF000, 0x440C), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
730 {OP2(fasin,w), two(0xF000, 0x500C), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
731 {OP2(fasin,x), two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
732 {OP2(fasin,x), two(0xF000, 0x480C), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
733 {OP2(fasin,x), two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiFt", mfloat },
734
735 {OP2(fatan,b), two(0xF000, 0x580A), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
736 {OP2(fatan,d), two(0xF000, 0x540A), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
737 {OP2(fatan,l), two(0xF000, 0x400A), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
738 {OP2(fatan,p), two(0xF000, 0x4C0A), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
739 {OP2(fatan,s), two(0xF000, 0x440A), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
740 {OP2(fatan,w), two(0xF000, 0x500A), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
741 {OP2(fatan,x), two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
742 {OP2(fatan,x), two(0xF000, 0x480A), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
743 {OP2(fatan,x), two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiFt", mfloat },
744
745 {OP2(fatanh,b), two(0xF000, 0x580D), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
746 {OP2(fatanh,d), two(0xF000, 0x540D), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
747 {OP2(fatanh,l), two(0xF000, 0x400D), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
748 {OP2(fatanh,p), two(0xF000, 0x4C0D), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
749 {OP2(fatanh,s), two(0xF000, 0x440D), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
750 {OP2(fatanh,w), two(0xF000, 0x500D), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
751 {OP2(fatanh,x), two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
752 {OP2(fatanh,x), two(0xF000, 0x480D), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
753 {OP2(fatanh,x), two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiFt", mfloat },
754
755 /* Fixed-size Float branches */
756
757 {"fbeq", one(0xF081), one(0xF1BF), "IdBW", mfloat },
758 {"fbf", one(0xF080), one(0xF1BF), "IdBW", mfloat },
759 {"fbge", one(0xF093), one(0xF1BF), "IdBW", mfloat },
760 {"fbgl", one(0xF096), one(0xF1BF), "IdBW", mfloat },
761 {"fbgle", one(0xF097), one(0xF1BF), "IdBW", mfloat },
762 {"fbgt", one(0xF092), one(0xF1BF), "IdBW", mfloat },
763 {"fble", one(0xF095), one(0xF1BF), "IdBW", mfloat },
764 {"fblt", one(0xF094), one(0xF1BF), "IdBW", mfloat },
765 {"fbne", one(0xF08E), one(0xF1BF), "IdBW", mfloat },
766 #ifndef MOTOROLA_SYNTAX
767 {"fbneq", one(0xF08E), one(0xF1BF), "IdBW", mfloat },
768 #endif
769 {"fbnge", one(0xF09C), one(0xF1BF), "IdBW", mfloat },
770 {"fbngl", one(0xF099), one(0xF1BF), "IdBW", mfloat },
771 {"fbngle", one(0xF098), one(0xF1BF), "IdBW", mfloat },
772 {"fbngt", one(0xF09D), one(0xF1BF), "IdBW", mfloat },
773 {"fbnle", one(0xF09A), one(0xF1BF), "IdBW", mfloat },
774 {"fbnlt", one(0xF09B), one(0xF1BF), "IdBW", mfloat },
775 {"fboge", one(0xF083), one(0xF1BF), "IdBW", mfloat },
776 {"fbogl", one(0xF086), one(0xF1BF), "IdBW", mfloat },
777 {"fbogt", one(0xF082), one(0xF1BF), "IdBW", mfloat },
778 {"fbole", one(0xF085), one(0xF1BF), "IdBW", mfloat },
779 {"fbolt", one(0xF084), one(0xF1BF), "IdBW", mfloat },
780 {"fbor", one(0xF087), one(0xF1BF), "IdBW", mfloat },
781 {"fbseq", one(0xF091), one(0xF1BF), "IdBW", mfloat },
782 {"fbsf", one(0xF090), one(0xF1BF), "IdBW", mfloat },
783 {"fbsne", one(0xF09E), one(0xF1BF), "IdBW", mfloat },
784 #ifndef MOTOROLA_SYNTAX
785 {"fbsneq", one(0xF09E), one(0xF1BF), "IdBW", mfloat },
786 #endif
787 {"fbst", one(0xF09F), one(0xF1BF), "IdBW", mfloat },
788 {"fbt", one(0xF08F), one(0xF1BF), "IdBW", mfloat },
789 {"fbueq", one(0xF089), one(0xF1BF), "IdBW", mfloat },
790 {"fbuge", one(0xF08B), one(0xF1BF), "IdBW", mfloat },
791 {"fbugt", one(0xF08A), one(0xF1BF), "IdBW", mfloat },
792 {"fbule", one(0xF08D), one(0xF1BF), "IdBW", mfloat },
793 {"fbult", one(0xF08C), one(0xF1BF), "IdBW", mfloat },
794 {"fbun", one(0xF088), one(0xF1BF), "IdBW", mfloat },
795
796 /* Float branches -- long (32-bit) displacements */
797
798 {"fbeql", one(0xF081), one(0xF1BF), "IdBC", mfloat },
799 {"fbfl", one(0xF080), one(0xF1BF), "IdBC", mfloat },
800 {"fbgel", one(0xF093), one(0xF1BF), "IdBC", mfloat },
801 {"fbgll", one(0xF096), one(0xF1BF), "IdBC", mfloat },
802 {"fbglel", one(0xF097), one(0xF1BF), "IdBC", mfloat },
803 {"fbgtl", one(0xF092), one(0xF1BF), "IdBC", mfloat },
804 {"fblel", one(0xF095), one(0xF1BF), "IdBC", mfloat },
805 {"fbltl", one(0xF094), one(0xF1BF), "IdBC", mfloat },
806 {"fbnel", one(0xF08E), one(0xF1BF), "IdBC", mfloat },
807 {"fbngel", one(0xF09C), one(0xF1BF), "IdBC", mfloat },
808 {"fbngll", one(0xF099), one(0xF1BF), "IdBC", mfloat },
809 {"fbnglel", one(0xF098), one(0xF1BF), "IdBC", mfloat },
810 {"fbngtl", one(0xF09D), one(0xF1BF), "IdBC", mfloat },
811 {"fbnlel", one(0xF09A), one(0xF1BF), "IdBC", mfloat },
812 {"fbnltl", one(0xF09B), one(0xF1BF), "IdBC", mfloat },
813 {"fbogel", one(0xF083), one(0xF1BF), "IdBC", mfloat },
814 {"fbogll", one(0xF086), one(0xF1BF), "IdBC", mfloat },
815 {"fbogtl", one(0xF082), one(0xF1BF), "IdBC", mfloat },
816 {"fbolel", one(0xF085), one(0xF1BF), "IdBC", mfloat },
817 {"fboltl", one(0xF084), one(0xF1BF), "IdBC", mfloat },
818 {"fborl", one(0xF087), one(0xF1BF), "IdBC", mfloat },
819 {"fbseql", one(0xF091), one(0xF1BF), "IdBC", mfloat },
820 {"fbsfl", one(0xF090), one(0xF1BF), "IdBC", mfloat },
821 {"fbsnel", one(0xF09E), one(0xF1BF), "IdBC", mfloat },
822 {"fbstl", one(0xF09F), one(0xF1BF), "IdBC", mfloat },
823 {"fbtl", one(0xF08F), one(0xF1BF), "IdBC", mfloat },
824 {"fbueql", one(0xF089), one(0xF1BF), "IdBC", mfloat },
825 {"fbugel", one(0xF08B), one(0xF1BF), "IdBC", mfloat },
826 {"fbugtl", one(0xF08A), one(0xF1BF), "IdBC", mfloat },
827 {"fbulel", one(0xF08D), one(0xF1BF), "IdBC", mfloat },
828 {"fbultl", one(0xF08C), one(0xF1BF), "IdBC", mfloat },
829 {"fbunl", one(0xF088), one(0xF1BF), "IdBC", mfloat },
830
831 {OP2(fcmp,b), two(0xF000, 0x5838), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
832 {OP2(fcmp,d), two(0xF000, 0x5438), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
833 {OP2(fcmp,l), two(0xF000, 0x4038), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
834 {OP2(fcmp,p), two(0xF000, 0x4C38), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
835 {OP2(fcmp,s), two(0xF000, 0x4438), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
836 {OP2(fcmp,w), two(0xF000, 0x5038), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
837 {OP2(fcmp,x), two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
838 {OP2(fcmp,x), two(0xF000, 0x4838), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
839 /* {"fcmpx", two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF removed */
840
841 {OP2(fcos,b), two(0xF000, 0x581D), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
842 {OP2(fcos,d), two(0xF000, 0x541D), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
843 {OP2(fcos,l), two(0xF000, 0x401D), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
844 {OP2(fcos,p), two(0xF000, 0x4C1D), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
845 {OP2(fcos,s), two(0xF000, 0x441D), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
846 {OP2(fcos,w), two(0xF000, 0x501D), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
847 {OP2(fcos,x), two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
848 {OP2(fcos,x), two(0xF000, 0x481D), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
849 {OP2(fcos,x), two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiFt", mfloat },
850
851 {OP2(fcosh,b), two(0xF000, 0x5819), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
852 {OP2(fcosh,d), two(0xF000, 0x5419), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
853 {OP2(fcosh,l), two(0xF000, 0x4019), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
854 {OP2(fcosh,p), two(0xF000, 0x4C19), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
855 {OP2(fcosh,s), two(0xF000, 0x4419), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
856 {OP2(fcosh,w), two(0xF000, 0x5019), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
857 {OP2(fcosh,x), two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
858 {OP2(fcosh,x), two(0xF000, 0x4819), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
859 {OP2(fcosh,x), two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiFt", mfloat },
860
861 {"fdbeq", two(0xF048, 0x0001), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
862 {"fdbf", two(0xF048, 0x0000), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
863 {"fdbge", two(0xF048, 0x0013), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
864 {"fdbgl", two(0xF048, 0x0016), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
865 {"fdbgle", two(0xF048, 0x0017), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
866 {"fdbgt", two(0xF048, 0x0012), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
867 {"fdble", two(0xF048, 0x0015), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
868 {"fdblt", two(0xF048, 0x0014), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
869 {"fdbne", two(0xF048, 0x000E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
870 #ifndef MOTOROLA_SYNTAX
871 {"fdbneq", two(0xF048, 0x000E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
872 #endif
873 {"fdbnge", two(0xF048, 0x001C), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
874 {"fdbngl", two(0xF048, 0x0019), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
875 {"fdbngle", two(0xF048, 0x0018), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
876 {"fdbngt", two(0xF048, 0x001D), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
877 {"fdbnle", two(0xF048, 0x001A), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
878 {"fdbnlt", two(0xF048, 0x001B), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
879 {"fdboge", two(0xF048, 0x0003), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
880 {"fdbogl", two(0xF048, 0x0006), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
881 {"fdbogt", two(0xF048, 0x0002), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
882 {"fdbole", two(0xF048, 0x0005), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
883 {"fdbolt", two(0xF048, 0x0004), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
884 {"fdbor", two(0xF048, 0x0007), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
885 {"fdbseq", two(0xF048, 0x0011), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
886 {"fdbsf", two(0xF048, 0x0010), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
887 {"fdbsne", two(0xF048, 0x001E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
888 #ifndef MOTOROLA_SYNTAX
889 {"fdbsneq", two(0xF048, 0x001E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
890 #endif
891 {"fdbst", two(0xF048, 0x001F), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
892 {"fdbt", two(0xF048, 0x000F), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
893 {"fdbueq", two(0xF048, 0x0009), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
894 {"fdbuge", two(0xF048, 0x000B), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
895 {"fdbugt", two(0xF048, 0x000A), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
896 {"fdbule", two(0xF048, 0x000D), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
897 {"fdbult", two(0xF048, 0x000C), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
898 {"fdbun", two(0xF048, 0x0008), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
899
900 {OP2(fdiv,b), two(0xF000, 0x5820), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
901 {OP2(fdiv,d), two(0xF000, 0x5420), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
902 {OP2(fdiv,l), two(0xF000, 0x4020), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
903 {OP2(fdiv,p), two(0xF000, 0x4C20), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
904 {OP2(fdiv,s), two(0xF000, 0x4420), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
905 {OP2(fdiv,w), two(0xF000, 0x5020), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
906 {OP2(fdiv,x), two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
907 {OP2(fdiv,x), two(0xF000, 0x4820), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
908 /* {OP2(fdiv,x), two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
909
910 {OP2(fsdiv,b), two(0xF000, 0x5860), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
911 {OP2(fsdiv,d), two(0xF000, 0x5460), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
912 {OP2(fsdiv,l), two(0xF000, 0x4060), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
913 {OP2(fsdiv,p), two(0xF000, 0x4C60), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
914 {OP2(fsdiv,s), two(0xF000, 0x4460), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
915 {OP2(fsdiv,w), two(0xF000, 0x5060), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
916 {OP2(fsdiv,x), two(0xF000, 0x0060), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
917 {OP2(fsdiv,x), two(0xF000, 0x4860), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
918 /* {OP2(fsdiv,x), two(0xF000, 0x0060), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF */
919
920 {OP2(fddiv,b), two(0xF000, 0x5864), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
921 {OP2(fddiv,d), two(0xF000, 0x5464), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
922 {OP2(fddiv,l), two(0xF000, 0x4064), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
923 {OP2(fddiv,p), two(0xF000, 0x4C64), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
924 {OP2(fddiv,s), two(0xF000, 0x4464), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
925 {OP2(fddiv,w), two(0xF000, 0x5064), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
926 {OP2(fddiv,x), two(0xF000, 0x0064), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
927 {OP2(fddiv,x), two(0xF000, 0x4864), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
928 /* {OP2(fddiv,x), two(0xF000, 0x0064), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF */
929
930 {OP2(fetox,b), two(0xF000, 0x5810), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
931 {OP2(fetox,d), two(0xF000, 0x5410), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
932 {OP2(fetox,l), two(0xF000, 0x4010), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
933 {OP2(fetox,p), two(0xF000, 0x4C10), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
934 {OP2(fetox,s), two(0xF000, 0x4410), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
935 {OP2(fetox,w), two(0xF000, 0x5010), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
936 {OP2(fetox,x), two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
937 {OP2(fetox,x), two(0xF000, 0x4810), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
938 {OP2(fetox,x), two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiFt", mfloat },
939
940 {OP2(fetoxm1,b), two(0xF000, 0x5808), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
941 {OP2(fetoxm1,d), two(0xF000, 0x5408), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
942 {OP2(fetoxm1,l), two(0xF000, 0x4008), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
943 {OP2(fetoxm1,p), two(0xF000, 0x4C08), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
944 {OP2(fetoxm1,s), two(0xF000, 0x4408), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
945 {OP2(fetoxm1,w), two(0xF000, 0x5008), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
946 {OP2(fetoxm1,x), two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
947 {OP2(fetoxm1,x), two(0xF000, 0x4808), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
948 {OP2(fetoxm1,x), two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiFt", mfloat },
949
950 {OP2(fgetexp,b), two(0xF000, 0x581E), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
951 {OP2(fgetexp,d), two(0xF000, 0x541E), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
952 {OP2(fgetexp,l), two(0xF000, 0x401E), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
953 {OP2(fgetexp,p), two(0xF000, 0x4C1E), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
954 {OP2(fgetexp,s), two(0xF000, 0x441E), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
955 {OP2(fgetexp,w), two(0xF000, 0x501E), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
956 {OP2(fgetexp,x), two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
957 {OP2(fgetexp,x), two(0xF000, 0x481E), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
958 {OP2(fgetexp,x), two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiFt", mfloat },
959
960 {OP2(fgetman,b), two(0xF000, 0x581F), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
961 {OP2(fgetman,d), two(0xF000, 0x541F), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
962 {OP2(fgetman,l), two(0xF000, 0x401F), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
963 {OP2(fgetman,p), two(0xF000, 0x4C1F), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
964 {OP2(fgetman,s), two(0xF000, 0x441F), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
965 {OP2(fgetman,w), two(0xF000, 0x501F), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
966 {OP2(fgetman,x), two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
967 {OP2(fgetman,x), two(0xF000, 0x481F), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
968 {OP2(fgetman,x), two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiFt", mfloat },
969
970 {OP2(fint,b), two(0xF000, 0x5801), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
971 {OP2(fint,d), two(0xF000, 0x5401), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
972 {OP2(fint,l), two(0xF000, 0x4001), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
973 {OP2(fint,p), two(0xF000, 0x4C01), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
974 {OP2(fint,s), two(0xF000, 0x4401), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
975 {OP2(fint,w), two(0xF000, 0x5001), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
976 {OP2(fint,x), two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
977 {OP2(fint,x), two(0xF000, 0x4801), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
978 {OP2(fint,x), two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiFt", mfloat },
979
980 {OP2(fintrz,b), two(0xF000, 0x5803), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
981 {OP2(fintrz,d), two(0xF000, 0x5403), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
982 {OP2(fintrz,l), two(0xF000, 0x4003), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
983 {OP2(fintrz,p), two(0xF000, 0x4C03), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
984 {OP2(fintrz,s), two(0xF000, 0x4403), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
985 {OP2(fintrz,w), two(0xF000, 0x5003), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
986 {OP2(fintrz,x), two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
987 {OP2(fintrz,x), two(0xF000, 0x4803), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
988 {OP2(fintrz,x), two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiFt", mfloat },
989
990 {OP2(flog10,b), two(0xF000, 0x5815), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
991 {OP2(flog10,d), two(0xF000, 0x5415), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
992 {OP2(flog10,l), two(0xF000, 0x4015), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
993 {OP2(flog10,p), two(0xF000, 0x4C15), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
994 {OP2(flog10,s), two(0xF000, 0x4415), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
995 {OP2(flog10,w), two(0xF000, 0x5015), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
996 {OP2(flog10,x), two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
997 {OP2(flog10,x), two(0xF000, 0x4815), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
998 {OP2(flog10,x), two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiFt", mfloat },
999
1000 {OP2(flog2,b), two(0xF000, 0x5816), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1001 {OP2(flog2,d), two(0xF000, 0x5416), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1002 {OP2(flog2,l), two(0xF000, 0x4016), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1003 {OP2(flog2,p), two(0xF000, 0x4C16), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1004 {OP2(flog2,s), two(0xF000, 0x4416), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1005 {OP2(flog2,w), two(0xF000, 0x5016), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1006 {OP2(flog2,x), two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1007 {OP2(flog2,x), two(0xF000, 0x4816), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1008 {OP2(flog2,x), two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1009
1010 {OP2(flogn,b), two(0xF000, 0x5814), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1011 {OP2(flogn,d), two(0xF000, 0x5414), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1012 {OP2(flogn,l), two(0xF000, 0x4014), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1013 {OP2(flogn,p), two(0xF000, 0x4C14), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1014 {OP2(flogn,s), two(0xF000, 0x4414), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1015 {OP2(flogn,w), two(0xF000, 0x5014), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1016 {OP2(flogn,x), two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1017 {OP2(flogn,x), two(0xF000, 0x4814), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1018 {OP2(flogn,x), two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1019
1020 {OP2(flognp1,b), two(0xF000, 0x5806), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1021 {OP2(flognp1,d), two(0xF000, 0x5406), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1022 {OP2(flognp1,l), two(0xF000, 0x4006), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1023 {OP2(flognp1,p), two(0xF000, 0x4C06), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1024 {OP2(flognp1,s), two(0xF000, 0x4406), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1025 {OP2(flognp1,w), two(0xF000, 0x5006), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1026 {OP2(flognp1,x), two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1027 {OP2(flognp1,x), two(0xF000, 0x4806), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1028 {OP2(flognp1,x), two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1029
1030 {OP2(fmod,b), two(0xF000, 0x5821), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1031 {OP2(fmod,d), two(0xF000, 0x5421), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1032 {OP2(fmod,l), two(0xF000, 0x4021), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1033 {OP2(fmod,p), two(0xF000, 0x4C21), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1034 {OP2(fmod,s), two(0xF000, 0x4421), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1035 {OP2(fmod,w), two(0xF000, 0x5021), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1036 {OP2(fmod,x), two(0xF000, 0x0021), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1037 {OP2(fmod,x), two(0xF000, 0x4821), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1038 /* {OP2(fmod,x), two(0xF000, 0x0021), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
1039
1040 {OP2(fmove,b), two(0xF000, 0x5800), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, /* fmove from <ea> to fp<n> */
1041 {OP2(fmove,b), two(0xF000, 0x7800), two(0xF1C0, 0xFC7F), "IiF7@b", mfloat }, /* fmove from fp<n> to <ea> */
1042 {OP2(fmove,d), two(0xF000, 0x5400), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, /* fmove from <ea> to fp<n> */
1043 {OP2(fmove,d), two(0xF000, 0x7400), two(0xF1C0, 0xFC7F), "IiF7@F", mfloat }, /* fmove from fp<n> to <ea> */
1044 {OP2(fmove,l), two(0xF000, 0x4000), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, /* fmove from <ea> to fp<n> */
1045 {OP2(fmove,l), two(0xF000, 0x6000), two(0xF1C0, 0xFC7F), "IiF7@l", mfloat }, /* fmove from fp<n> to <ea> */
1046 /* Warning: The addressing modes on these are probably not right:
1047 esp, Areg direct is only allowed for FPI */
1048 /* fmove.l from/to system control registers: */
1049 {OP2(fmove,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s", mfloat },
1050 {OP2(fmove,l), two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ls8", mfloat },
1051
1052 /* {OP2(fmove,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s", mfloat },
1053 {OP2(fmove,l), two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*ss8", mfloat }, */
1054
1055 {OP2(fmove,p), two(0xF000, 0x4C00), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, /* fmove from <ea> to fp<n> */
1056 {OP2(fmove,p), two(0xF000, 0x6C00), two(0xF1C0, 0xFC00), "IiF7@pkC", mfloat }, /* fmove.p with k-factors: */
1057 {OP2(fmove,p), two(0xF000, 0x7C00), two(0xF1C0, 0xFC0F), "IiF7@pDk", mfloat }, /* fmove.p with k-factors: */
1058
1059 {OP2(fmove,s), two(0xF000, 0x4400), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, /* fmove from <ea> to fp<n> */
1060 {OP2(fmove,s), two(0xF000, 0x6400), two(0xF1C0, 0xFC7F), "IiF7@f", mfloat }, /* fmove from fp<n> to <ea> */
1061 {OP2(fmove,w), two(0xF000, 0x5000), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, /* fmove from <ea> to fp<n> */
1062 {OP2(fmove,w), two(0xF000, 0x7000), two(0xF1C0, 0xFC7F), "IiF7@w", mfloat }, /* fmove from fp<n> to <ea> */
1063 {OP2(fmove,x), two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, /* fmove from <ea> to fp<n> */
1064 {OP2(fmove,x), two(0xF000, 0x4800), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, /* fmove from <ea> to fp<n> */
1065 {OP2(fmove,x), two(0xF000, 0x6800), two(0xF1C0, 0xFC7F), "IiF7@x", mfloat }, /* fmove from fp<n> to <ea> */
1066 /* JF removed {OP2(fmove,x), two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiFt", mfloat }, / * fmove from <ea> to fp<n> */
1067
1068 {OP2(fsmove,b), two(0xF000, 0x5840), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 }, /* fmove from <ea> to fp<n> */
1069 {OP2(fsmove,d), two(0xF000, 0x5440), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 }, /* fmove from <ea> to fp<n> */
1070 {OP2(fsmove,l), two(0xF000, 0x4040), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 }, /* fmove from <ea> to fp<n> */
1071 {OP2(fsmove,s), two(0xF000, 0x4440), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 }, /* fmove from <ea> to fp<n> */
1072 {OP2(fsmove,w), two(0xF000, 0x5040), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 }, /* fmove from <ea> to fp<n> */
1073 {OP2(fsmove,x), two(0xF000, 0x0040), two(0xF1C0, 0xE07F), "IiF8F7", m68040 }, /* fmove from <ea> to fp<n> */
1074 {OP2(fsmove,x), two(0xF000, 0x4840), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 }, /* fmove from <ea> to fp<n> */
1075 {OP2(fsmove,p), two(0xF000, 0x4C40), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, /* fmove from <ea> to fp<n> */
1076 /* JF removed {OP2(fsmove,x), two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiFt", m68040 }, / * fmove from <ea> to fp<n> */
1077
1078 {OP2(fdmove,b), two(0xF000, 0x5844), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 }, /* fmove from <ea> to fp<n> */
1079 {OP2(fdmove,d), two(0xF000, 0x5444), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 }, /* fmove from <ea> to fp<n> */
1080 {OP2(fdmove,l), two(0xF000, 0x4044), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 }, /* fmove from <ea> to fp<n> */
1081 {OP2(fdmove,s), two(0xF000, 0x4444), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 }, /* fmove from <ea> to fp<n> */
1082 {OP2(fdmove,w), two(0xF000, 0x5044), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 }, /* fmove from <ea> to fp<n> */
1083 {OP2(fdmove,x), two(0xF000, 0x0044), two(0xF1C0, 0xE07F), "IiF8F7", m68040 }, /* fmove from <ea> to fp<n> */
1084 {OP2(fdmove,x), two(0xF000, 0x4844), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 }, /* fmove from <ea> to fp<n> */
1085 {OP2(fdmove,p), two(0xF000, 0x4C44), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, /* fmove from <ea> to fp<n> */
1086 /* JF removed {OP2(fdmove,x), two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiFt", m68040 }, / * fmove from <ea> to fp<n> */
1087
1088 {OP2(fmovecr,x), two(0xF000, 0x5C00), two(0xF1FF, 0xFC00), "Ii#CF7", mfloat }, /* fmovecr.x #ccc, FPn */
1089 {"fmovecr", two(0xF000, 0x5C00), two(0xF1FF, 0xFC00), "Ii#CF7", mfloat },
1090
1091 /* Other fmovemx. */
1092 {OP2(fmovem,x), two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat }, /* reg to control, static and dynamic: */
1093 {OP2(fmovem,x), two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk", mfloat }, /* from control to reg, static and dynamic: */
1094
1095 {OP2(fmovem,x), two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat }, /* to control, static and dynamic: */
1096 {OP2(fmovem,x), two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s", mfloat }, /* to control, static and dynamic: */
1097
1098 {OP2(fmovem,x), two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3", mfloat }, /* from control, static and dynamic: */
1099 {OP2(fmovem,x), two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3", mfloat }, /* from control, static and dynamic: */
1100
1101 {OP2(fmovem,x), two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat }, /* reg to autodecrement, static and dynamic */
1102 {OP2(fmovem,x), two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat }, /* to autodecrement, static and dynamic */
1103 {OP2(fmovem,x), two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat }, /* to autodecrement, static and dynamic */
1104
1105 {OP2(fmovem,x), two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk", mfloat }, /* from autoinc to reg, static and dynamic: */
1106 {OP2(fmovem,x), two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3", mfloat }, /* from autoincrement, static and dynamic: */
1107 {OP2(fmovem,x), two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3", mfloat }, /* from autoincrement, static and dynamic: */
1108
1109 {OP2(fmovem,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8@s", mfloat },
1110 {OP2(fmovem,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Ii#8@s", mfloat },
1111 {OP2(fmovem,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s", mfloat },
1112
1113 {OP2(fmovem,l), two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*sL8", mfloat },
1114 {OP2(fmovem,l), two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*s#8", mfloat },
1115 {OP2(fmovem,l), two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ss8", mfloat },
1116
1117 /* fmovemx with register lists */
1118 {"fmovem", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat }, /* to autodec, static & dynamic */
1119 {"fmovem", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat }, /* to control, static and dynamic */
1120 {"fmovem", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3", mfloat }, /* from autoinc, static & dynamic */
1121 {"fmovem", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3", mfloat }, /* from control, static and dynamic */
1122
1123 /* Alternate mnemonics for GNU as and GNU CC */
1124 {"fmovem", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat }, /* to autodecrement, static and dynamic */
1125 {"fmovem", two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat }, /* to autodecrement, static and dynamic */
1126
1127 {"fmovem", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s", mfloat }, /* to control, static and dynamic: */
1128 {"fmovem", two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat }, /* to control, static and dynamic: */
1129
1130 {"fmovem", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3", mfloat }, /* from autoincrement, static and dynamic: */
1131 {"fmovem", two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk", mfloat }, /* from autoincrement, static and dynamic: */
1132
1133 {"fmovem", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3", mfloat }, /* from control, static and dynamic: */
1134 {"fmovem", two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk", mfloat }, /* from control, static and dynamic: */
1135
1136 /* fmoveml a FP-control register */
1137 {"fmovem", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s", mfloat },
1138 {"fmovem", two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ss8", mfloat },
1139
1140 /* fmoveml a FP-control reglist */
1141 {"fmovem", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8@s", mfloat },
1142 {"fmovem", two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*sL8", mfloat },
1143
1144 {OP2(fmul,b), two(0xF000, 0x5823), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1145 {OP2(fmul,d), two(0xF000, 0x5423), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1146 {OP2(fmul,l), two(0xF000, 0x4023), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1147 {OP2(fmul,p), two(0xF000, 0x4C23), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1148 {OP2(fmul,s), two(0xF000, 0x4423), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1149 {OP2(fmul,w), two(0xF000, 0x5023), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1150 {OP2(fmul,x), two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1151 {OP2(fmul,x), two(0xF000, 0x4823), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1152 /* {OP2(fmul,x), two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
1153
1154 {OP2(fsmul,b), two(0xF000, 0x5863), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1155 {OP2(fsmul,d), two(0xF000, 0x5463), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1156 {OP2(fsmul,l), two(0xF000, 0x4063), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1157 {OP2(fsmul,p), two(0xF000, 0x4C63), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1158 {OP2(fsmul,s), two(0xF000, 0x4463), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1159 {OP2(fsmul,w), two(0xF000, 0x5063), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1160 {OP2(fsmul,x), two(0xF000, 0x0063), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1161 {OP2(fsmul,x), two(0xF000, 0x4863), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1162 /* {OP2(fsmul,x), two(0xF000, 0x0033), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF */
1163
1164 {OP2(fdmul,b), two(0xF000, 0x5867), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1165 {OP2(fdmul,d), two(0xF000, 0x5467), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1166 {OP2(fdmul,l), two(0xF000, 0x4067), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1167 {OP2(fdmul,p), two(0xF000, 0x4C67), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1168 {OP2(fdmul,s), two(0xF000, 0x4467), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1169 {OP2(fdmul,w), two(0xF000, 0x5067), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1170 {OP2(fdmul,x), two(0xF000, 0x0067), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1171 {OP2(fdmul,x), two(0xF000, 0x4867), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1172 /* {OP2(dfmul,x), two(0xF000, 0x0067), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF */
1173
1174 {OP2(fneg,b), two(0xF000, 0x581A), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1175 {OP2(fneg,d), two(0xF000, 0x541A), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1176 {OP2(fneg,l), two(0xF000, 0x401A), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1177 {OP2(fneg,p), two(0xF000, 0x4C1A), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1178 {OP2(fneg,s), two(0xF000, 0x441A), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1179 {OP2(fneg,w), two(0xF000, 0x501A), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1180 {OP2(fneg,x), two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1181 {OP2(fneg,x), two(0xF000, 0x481A), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1182 {OP2(fneg,x), two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1183
1184 {OP2(fsneg,b), two(0xF000, 0x585A), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1185 {OP2(fsneg,d), two(0xF000, 0x545A), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1186 {OP2(fsneg,l), two(0xF000, 0x405A), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1187 {OP2(fsneg,p), two(0xF000, 0x4C5A), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1188 {OP2(fsneg,s), two(0xF000, 0x445A), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1189 {OP2(fsneg,w), two(0xF000, 0x505A), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1190 {OP2(fsneg,x), two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1191 {OP2(fsneg,x), two(0xF000, 0x485A), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1192 {OP2(fsneg,x), two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1193
1194 {OP2(fdneg,b), two(0xF000, 0x585E), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1195 {OP2(fdneg,d), two(0xF000, 0x545E), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1196 {OP2(fdneg,l), two(0xF000, 0x405E), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1197 {OP2(fdneg,p), two(0xF000, 0x4C5E), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1198 {OP2(fdneg,s), two(0xF000, 0x445E), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1199 {OP2(fdneg,w), two(0xF000, 0x505E), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1200 {OP2(fdneg,x), two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1201 {OP2(fdneg,x), two(0xF000, 0x485E), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1202 {OP2(fdneg,x), two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1203
1204 {"fnop", two(0xF280, 0x0000), two(0xFFFF, 0xFFFF), "Ii", mfloat },
1205
1206 {OP2(frem,b), two(0xF000, 0x5825), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1207 {OP2(frem,d), two(0xF000, 0x5425), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1208 {OP2(frem,l), two(0xF000, 0x4025), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1209 {OP2(frem,p), two(0xF000, 0x4C25), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1210 {OP2(frem,s), two(0xF000, 0x4425), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1211 {OP2(frem,w), two(0xF000, 0x5025), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1212 {OP2(frem,x), two(0xF000, 0x0025), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1213 {OP2(frem,x), two(0xF000, 0x4825), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1214 /* {"fremx", two(0xF000, 0x0025), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
1215
1216 {"frestore", one(0xF140), one(0xF1C0), "Id&s", mfloat },
1217 {"frestore", one(0xF158), one(0xF1F8), "Id+s", mfloat },
1218 {"fsave", one(0xF100), one(0xF1C0), "Id&s", mfloat },
1219 {"fsave", one(0xF120), one(0xF1F8), "Id-s", mfloat },
1220
1221 {OP2(fscale,b), two(0xF000, 0x5826), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1222 {OP2(fscale,d), two(0xF000, 0x5426), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1223 {OP2(fscale,l), two(0xF000, 0x4026), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1224 {OP2(fscale,p), two(0xF000, 0x4C26), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1225 {OP2(fscale,s), two(0xF000, 0x4426), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1226 {OP2(fscale,w), two(0xF000, 0x5026), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1227 {OP2(fscale,x), two(0xF000, 0x0026), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1228 {OP2(fscale,x), two(0xF000, 0x4826), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1229 /* {"fscalex", two(0xF000, 0x0026), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
1230
1231 /* $ is necessary to prevent the assembler from using PC-relative.
1232 If @ were used, "label: fseq label" could produce "ftrapeq",
1233 because "label" became "pc@label". */
1234 {"fseq", two(0xF040, 0x0001), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1235 {"fsf", two(0xF040, 0x0000), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1236 {"fsge", two(0xF040, 0x0013), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1237 {"fsgl", two(0xF040, 0x0016), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1238 {"fsgle", two(0xF040, 0x0017), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1239 {"fsgt", two(0xF040, 0x0012), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1240 {"fsle", two(0xF040, 0x0015), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1241 {"fslt", two(0xF040, 0x0014), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1242 {"fsne", two(0xF040, 0x000E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1243 #ifndef MOTOROLA_SYNTAX
1244 {"fsneq", two(0xF040, 0x000E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1245 #endif
1246 {"fsnge", two(0xF040, 0x001C), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1247 {"fsngl", two(0xF040, 0x0019), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1248 {"fsngle", two(0xF040, 0x0018), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1249 {"fsngt", two(0xF040, 0x001D), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1250 {"fsnle", two(0xF040, 0x001A), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1251 {"fsnlt", two(0xF040, 0x001B), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1252 {"fsoge", two(0xF040, 0x0003), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1253 {"fsogl", two(0xF040, 0x0006), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1254 {"fsogt", two(0xF040, 0x0002), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1255 {"fsole", two(0xF040, 0x0005), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1256 {"fsolt", two(0xF040, 0x0004), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1257 {"fsor", two(0xF040, 0x0007), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1258 {"fsseq", two(0xF040, 0x0011), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1259 {"fssf", two(0xF040, 0x0010), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1260 {"fssne", two(0xF040, 0x001E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1261 #ifndef MOTOROLA_SYNTAX
1262 {"fssneq", two(0xF040, 0x001E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1263 #endif
1264 {"fsst", two(0xF040, 0x001F), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1265 {"fst", two(0xF040, 0x000F), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1266 {"fsueq", two(0xF040, 0x0009), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1267 {"fsuge", two(0xF040, 0x000B), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1268 {"fsugt", two(0xF040, 0x000A), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1269 {"fsule", two(0xF040, 0x000D), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1270 {"fsult", two(0xF040, 0x000C), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1271 {"fsun", two(0xF040, 0x0008), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1272
1273 {OP2(fsgldiv,b), two(0xF000, 0x5824), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1274 {OP2(fsgldiv,d), two(0xF000, 0x5424), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1275 {OP2(fsgldiv,l), two(0xF000, 0x4024), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1276 {OP2(fsgldiv,p), two(0xF000, 0x4C24), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1277 {OP2(fsgldiv,s), two(0xF000, 0x4424), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1278 {OP2(fsgldiv,w), two(0xF000, 0x5024), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1279 {OP2(fsgldiv,x), two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1280 {OP2(fsgldiv,x), two(0xF000, 0x4824), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1281 {OP2(fsgldiv,x), two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1282
1283 {OP2(fsglmul,b), two(0xF000, 0x5827), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1284 {OP2(fsglmul,d), two(0xF000, 0x5427), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1285 {OP2(fsglmul,l), two(0xF000, 0x4027), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1286 {OP2(fsglmul,p), two(0xF000, 0x4C27), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1287 {OP2(fsglmul,s), two(0xF000, 0x4427), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1288 {OP2(fsglmul,w), two(0xF000, 0x5027), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1289 {OP2(fsglmul,x), two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1290 {OP2(fsglmul,x), two(0xF000, 0x4827), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1291 {OP2(fsglmul,x), two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1292
1293 {OP2(fsin,b), two(0xF000, 0x580E), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1294 {OP2(fsin,d), two(0xF000, 0x540E), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1295 {OP2(fsin,l), two(0xF000, 0x400E), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1296 {OP2(fsin,p), two(0xF000, 0x4C0E), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1297 {OP2(fsin,s), two(0xF000, 0x440E), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1298 {OP2(fsin,w), two(0xF000, 0x500E), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1299 {OP2(fsin,x), two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1300 {OP2(fsin,x), two(0xF000, 0x480E), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1301 {OP2(fsin,x), two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1302
1303 {OP2(fsinh,b), two(0xF000, 0x5802), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1304 {OP2(fsinh,d), two(0xF000, 0x5402), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1305 {OP2(fsinh,l), two(0xF000, 0x4002), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1306 {OP2(fsinh,p), two(0xF000, 0x4C02), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1307 {OP2(fsinh,s), two(0xF000, 0x4402), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1308 {OP2(fsinh,w), two(0xF000, 0x5002), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1309 {OP2(fsinh,x), two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1310 {OP2(fsinh,x), two(0xF000, 0x4802), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1311 {OP2(fsinh,x), two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1312
1313 {OP2(fsincos,b), two(0xF000, 0x5830), two(0xF1C0, 0xFC78), "Ii;bF3F7", mfloat },
1314 {OP2(fsincos,d), two(0xF000, 0x5430), two(0xF1C0, 0xFC78), "Ii;FF3F7", mfloat },
1315 {OP2(fsincos,l), two(0xF000, 0x4030), two(0xF1C0, 0xFC78), "Ii;lF3F7", mfloat },
1316 {OP2(fsincos,p), two(0xF000, 0x4C30), two(0xF1C0, 0xFC78), "Ii;pF3F7", mfloat },
1317 {OP2(fsincos,s), two(0xF000, 0x4430), two(0xF1C0, 0xFC78), "Ii;fF3F7", mfloat },
1318 {OP2(fsincos,w), two(0xF000, 0x5030), two(0xF1C0, 0xFC78), "Ii;wF3F7", mfloat },
1319 {OP2(fsincos,x), two(0xF000, 0x0030), two(0xF1C0, 0xE078), "IiF8F3F7", mfloat },
1320 {OP2(fsincos,x), two(0xF000, 0x4830), two(0xF1C0, 0xFC78), "Ii;xF3F7", mfloat },
1321
1322 {OP2(fsqrt,b), two(0xF000, 0x5804), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1323 {OP2(fsqrt,d), two(0xF000, 0x5404), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1324 {OP2(fsqrt,l), two(0xF000, 0x4004), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1325 {OP2(fsqrt,p), two(0xF000, 0x4C04), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1326 {OP2(fsqrt,s), two(0xF000, 0x4404), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1327 {OP2(fsqrt,w), two(0xF000, 0x5004), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1328 {OP2(fsqrt,x), two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1329 {OP2(fsqrt,x), two(0xF000, 0x4804), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1330 {OP2(fsqrt,x), two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1331
1332 {OP2(fssqrt,b), two(0xF000, 0x5841), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1333 {OP2(fssqrt,d), two(0xF000, 0x5441), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1334 {OP2(fssqrt,l), two(0xF000, 0x4041), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1335 {OP2(fssqrt,p), two(0xF000, 0x4C41), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1336 {OP2(fssqrt,s), two(0xF000, 0x4441), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1337 {OP2(fssqrt,w), two(0xF000, 0x5041), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1338 {OP2(fssqrt,x), two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1339 {OP2(fssqrt,x), two(0xF000, 0x4841), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1340 {OP2(fssqrt,x), two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1341
1342 {OP2(fdsqrt,b), two(0xF000, 0x5845), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1343 {OP2(fdsqrt,d), two(0xF000, 0x5445), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1344 {OP2(fdsqrt,l), two(0xF000, 0x4045), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1345 {OP2(fdsqrt,p), two(0xF000, 0x4C45), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1346 {OP2(fdsqrt,s), two(0xF000, 0x4445), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1347 {OP2(fdsqrt,w), two(0xF000, 0x5045), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1348 {OP2(fdsqrt,x), two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1349 {OP2(fdsqrt,x), two(0xF000, 0x4845), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1350 {OP2(fdsqrt,x), two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1351
1352 {OP2(fsub,b), two(0xF000, 0x5828), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1353 {OP2(fsub,d), two(0xF000, 0x5428), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1354 {OP2(fsub,l), two(0xF000, 0x4028), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1355 {OP2(fsub,p), two(0xF000, 0x4C28), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1356 {OP2(fsub,s), two(0xF000, 0x4428), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1357 {OP2(fsub,w), two(0xF000, 0x5028), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1358 {OP2(fsub,x), two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1359 {OP2(fsub,x), two(0xF000, 0x4828), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1360 {OP2(fsub,x), two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1361
1362 {OP2(fssub,b), two(0xF000, 0x5868), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1363 {OP2(fssub,d), two(0xF000, 0x5468), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1364 {OP2(fssub,l), two(0xF000, 0x4068), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1365 {OP2(fssub,p), two(0xF000, 0x4C68), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1366 {OP2(fssub,s), two(0xF000, 0x4468), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1367 {OP2(fssub,w), two(0xF000, 0x5068), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1368 {OP2(fssub,x), two(0xF000, 0x0068), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1369 {OP2(fssub,x), two(0xF000, 0x4868), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1370 {OP2(fssub,x), two(0xF000, 0x0068), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1371
1372 {OP2(fdsub,b), two(0xF000, 0x586c), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1373 {OP2(fdsub,d), two(0xF000, 0x546c), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1374 {OP2(fdsub,l), two(0xF000, 0x406c), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1375 {OP2(fdsub,p), two(0xF000, 0x4C6c), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1376 {OP2(fdsub,s), two(0xF000, 0x446c), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1377 {OP2(fdsub,w), two(0xF000, 0x506c), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1378 {OP2(fdsub,x), two(0xF000, 0x006c), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1379 {OP2(fdsub,x), two(0xF000, 0x486c), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1380 {OP2(fdsub,x), two(0xF000, 0x006c), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1381
1382 {OP2(ftan,b), two(0xF000, 0x580F), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1383 {OP2(ftan,d), two(0xF000, 0x540F), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1384 {OP2(ftan,l), two(0xF000, 0x400F), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1385 {OP2(ftan,p), two(0xF000, 0x4C0F), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1386 {OP2(ftan,s), two(0xF000, 0x440F), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1387 {OP2(ftan,w), two(0xF000, 0x500F), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1388 {OP2(ftan,x), two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1389 {OP2(ftan,x), two(0xF000, 0x480F), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1390 {OP2(ftan,x), two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1391
1392 {OP2(ftanh,b), two(0xF000, 0x5809), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1393 {OP2(ftanh,d), two(0xF000, 0x5409), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1394 {OP2(ftanh,l), two(0xF000, 0x4009), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1395 {OP2(ftanh,p), two(0xF000, 0x4C09), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1396 {OP2(ftanh,s), two(0xF000, 0x4409), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1397 {OP2(ftanh,w), two(0xF000, 0x5009), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1398 {OP2(ftanh,x), two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1399 {OP2(ftanh,x), two(0xF000, 0x4809), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1400 {OP2(ftanh,x), two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1401
1402 {OP2(ftentox,b), two(0xF000, 0x5812), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1403 {OP2(ftentox,d), two(0xF000, 0x5412), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1404 {OP2(ftentox,l), two(0xF000, 0x4012), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1405 {OP2(ftentox,p), two(0xF000, 0x4C12), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1406 {OP2(ftentox,s), two(0xF000, 0x4412), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1407 {OP2(ftentox,w), two(0xF000, 0x5012), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1408 {OP2(ftentox,x), two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1409 {OP2(ftentox,x), two(0xF000, 0x4812), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1410 {OP2(ftentox,x), two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1411
1412 {"ftrapeq", two(0xF07C, 0x0001), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1413 {"ftrapf", two(0xF07C, 0x0000), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1414 {"ftrapge", two(0xF07C, 0x0013), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1415 {"ftrapgl", two(0xF07C, 0x0016), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1416 {"ftrapgle", two(0xF07C, 0x0017), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1417 {"ftrapgt", two(0xF07C, 0x0012), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1418 {"ftraple", two(0xF07C, 0x0015), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1419 {"ftraplt", two(0xF07C, 0x0014), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1420 {"ftrapne", two(0xF07C, 0x000E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1421 #ifndef MOTOROLA_SYNTAX
1422 {"ftrapneq", two(0xF07C, 0x000E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1423 #endif
1424 {"ftrapnge", two(0xF07C, 0x001C), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1425 {"ftrapngl", two(0xF07C, 0x0019), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1426 {"ftrapngle", two(0xF07C, 0x0018), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1427 {"ftrapngt", two(0xF07C, 0x001D), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1428 {"ftrapnle", two(0xF07C, 0x001A), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1429 {"ftrapnlt", two(0xF07C, 0x001B), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1430 {"ftrapoge", two(0xF07C, 0x0003), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1431 {"ftrapogl", two(0xF07C, 0x0006), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1432 {"ftrapogt", two(0xF07C, 0x0002), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1433 {"ftrapole", two(0xF07C, 0x0005), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1434 {"ftrapolt", two(0xF07C, 0x0004), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1435 {"ftrapor", two(0xF07C, 0x0007), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1436 {"ftrapseq", two(0xF07C, 0x0011), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1437 {"ftrapsf", two(0xF07C, 0x0010), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1438 {"ftrapsne", two(0xF07C, 0x001E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1439 #ifndef MOTOROLA_SYNTAX
1440 {"ftrapsneq", two(0xF07C, 0x001E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1441 #endif
1442 {"ftrapst", two(0xF07C, 0x001F), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1443 {"ftrapt", two(0xF07C, 0x000F), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1444 {"ftrapueq", two(0xF07C, 0x0009), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1445 {"ftrapuge", two(0xF07C, 0x000B), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1446 {"ftrapugt", two(0xF07C, 0x000A), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1447 {"ftrapule", two(0xF07C, 0x000D), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1448 {"ftrapult", two(0xF07C, 0x000C), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1449 {"ftrapun", two(0xF07C, 0x0008), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1450
1451 {OP2(ftrapeq,w), two(0xF07A, 0x0001), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1452 {OP2(ftrapf,w), two(0xF07A, 0x0000), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1453 {OP2(ftrapge,w), two(0xF07A, 0x0013), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1454 {OP2(ftrapgl,w), two(0xF07A, 0x0016), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1455 {OP2(ftrapgle,w), two(0xF07A, 0x0017), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1456 {OP2(ftrapgt,w), two(0xF07A, 0x0012), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1457 {OP2(ftraple,w), two(0xF07A, 0x0015), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1458 {OP2(ftraplt,w), two(0xF07A, 0x0014), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1459 {OP2(ftrapne,w), two(0xF07A, 0x000E), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1460 {OP2(ftrapnge,w), two(0xF07A, 0x001C), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1461 {OP2(ftrapngl,w), two(0xF07A, 0x0019), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1462 {OP2(ftrapngle,w), two(0xF07A, 0x0018), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1463 {OP2(ftrapngt,w), two(0xF07A, 0x001D), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1464 {OP2(ftrapnle,w), two(0xF07A, 0x001A), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1465 {OP2(ftrapnlt,w), two(0xF07A, 0x001B), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1466 {OP2(ftrapoge,w), two(0xF07A, 0x0003), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1467 {OP2(ftrapogl,w), two(0xF07A, 0x0006), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1468 {OP2(ftrapogt,w), two(0xF07A, 0x0002), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1469 {OP2(ftrapole,w), two(0xF07A, 0x0005), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1470 {OP2(ftrapolt,w), two(0xF07A, 0x0004), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1471 {OP2(ftrapor,w), two(0xF07A, 0x0007), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1472 {OP2(ftrapseq,w), two(0xF07A, 0x0011), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1473 {OP2(ftrapsf,w), two(0xF07A, 0x0010), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1474 {OP2(ftrapsne,w), two(0xF07A, 0x001E), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1475 {OP2(ftrapst,w), two(0xF07A, 0x001F), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1476 {OP2(ftrapt,w), two(0xF07A, 0x000F), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1477 {OP2(ftrapueq,w), two(0xF07A, 0x0009), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1478 {OP2(ftrapuge,w), two(0xF07A, 0x000B), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1479 {OP2(ftrapugt,w), two(0xF07A, 0x000A), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1480 {OP2(ftrapule,w), two(0xF07A, 0x000D), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1481 {OP2(ftrapult,w), two(0xF07A, 0x000C), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1482 {OP2(ftrapun,w), two(0xF07A, 0x0008), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1483
1484 {OP2(ftrapeq,l), two(0xF07B, 0x0001), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1485 {OP2(ftrapf,l), two(0xF07B, 0x0000), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1486 {OP2(ftrapge,l), two(0xF07B, 0x0013), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1487 {OP2(ftrapgl,l), two(0xF07B, 0x0016), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1488 {OP2(ftrapgle,l), two(0xF07B, 0x0017), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1489 {OP2(ftrapgt,l), two(0xF07B, 0x0012), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1490 {OP2(ftraple,l), two(0xF07B, 0x0015), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1491 {OP2(ftraplt,l), two(0xF07B, 0x0014), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1492 {OP2(ftrapne,l), two(0xF07B, 0x000E), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1493 {OP2(ftrapnge,l), two(0xF07B, 0x001C), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1494 {OP2(ftrapngl,l), two(0xF07B, 0x0019), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1495 {OP2(ftrapngle,l), two(0xF07B, 0x0018), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1496 {OP2(ftrapngt,l), two(0xF07B, 0x001D), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1497 {OP2(ftrapnle,l), two(0xF07B, 0x001A), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1498 {OP2(ftrapnlt,l), two(0xF07B, 0x001B), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1499 {OP2(ftrapoge,l), two(0xF07B, 0x0003), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1500 {OP2(ftrapogl,l), two(0xF07B, 0x0006), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1501 {OP2(ftrapogt,l), two(0xF07B, 0x0002), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1502 {OP2(ftrapole,l), two(0xF07B, 0x0005), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1503 {OP2(ftrapolt,l), two(0xF07B, 0x0004), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1504 {OP2(ftrapor,l), two(0xF07B, 0x0007), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1505 {OP2(ftrapseq,l), two(0xF07B, 0x0011), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1506 {OP2(ftrapsf,l), two(0xF07B, 0x0010), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1507 {OP2(ftrapsne,l), two(0xF07B, 0x001E), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1508 {OP2(ftrapst,l), two(0xF07B, 0x001F), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1509 {OP2(ftrapt,l), two(0xF07B, 0x000F), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1510 {OP2(ftrapueq,l), two(0xF07B, 0x0009), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1511 {OP2(ftrapuge,l), two(0xF07B, 0x000B), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1512 {OP2(ftrapugt,l), two(0xF07B, 0x000A), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1513 {OP2(ftrapule,l), two(0xF07B, 0x000D), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1514 {OP2(ftrapult,l), two(0xF07B, 0x000C), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1515 {OP2(ftrapun,l), two(0xF07B, 0x0008), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1516
1517 {OP2(ftst,b), two(0xF000, 0x583A), two(0xF1C0, 0xFC7F), "Ii;b", mfloat },
1518 {OP2(ftst,d), two(0xF000, 0x543A), two(0xF1C0, 0xFC7F), "Ii;F", mfloat },
1519 {OP2(ftst,l), two(0xF000, 0x403A), two(0xF1C0, 0xFC7F), "Ii;l", mfloat },
1520 {OP2(ftst,p), two(0xF000, 0x4C3A), two(0xF1C0, 0xFC7F), "Ii;p", mfloat },
1521 {OP2(ftst,s), two(0xF000, 0x443A), two(0xF1C0, 0xFC7F), "Ii;f", mfloat },
1522 {OP2(ftst,w), two(0xF000, 0x503A), two(0xF1C0, 0xFC7F), "Ii;w", mfloat },
1523 {OP2(ftst,x), two(0xF000, 0x003A), two(0xF1C0, 0xE07F), "IiF8", mfloat },
1524 {OP2(ftst,x), two(0xF000, 0x483A), two(0xF1C0, 0xFC7F), "Ii;x", mfloat },
1525
1526 {OP2(ftwotox,b), two(0xF000, 0x5811), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1527 {OP2(ftwotox,d), two(0xF000, 0x5411), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1528 {OP2(ftwotox,l), two(0xF000, 0x4011), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1529 {OP2(ftwotox,p), two(0xF000, 0x4C11), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1530 {OP2(ftwotox,s), two(0xF000, 0x4411), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1531 {OP2(ftwotox,w), two(0xF000, 0x5011), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1532 {OP2(ftwotox,x), two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1533 {OP2(ftwotox,x), two(0xF000, 0x4811), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1534 {OP2(ftwotox,x), two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1535
1536 /* Variable-sized float branches */
1537
1538 {"fjeq", one(0xF081), one(0xF1FF), "IdBc", mfloat },
1539 {"fjf", one(0xF080), one(0xF1FF), "IdBc", mfloat },
1540 {"fjge", one(0xF093), one(0xF1FF), "IdBc", mfloat },
1541 {"fjgl", one(0xF096), one(0xF1FF), "IdBc", mfloat },
1542 {"fjgle", one(0xF097), one(0xF1FF), "IdBc", mfloat },
1543 {"fjgt", one(0xF092), one(0xF1FF), "IdBc", mfloat },
1544 {"fjle", one(0xF095), one(0xF1FF), "IdBc", mfloat },
1545 {"fjlt", one(0xF094), one(0xF1FF), "IdBc", mfloat },
1546 {"fjne", one(0xF08E), one(0xF1FF), "IdBc", mfloat },
1547 #ifndef MOTOROLA_SYNTAX
1548 {"fjneq", one(0xF08E), one(0xF1FF), "IdBc", mfloat },
1549 #endif
1550 {"fjnge", one(0xF09C), one(0xF1FF), "IdBc", mfloat },
1551 {"fjngl", one(0xF099), one(0xF1FF), "IdBc", mfloat },
1552 {"fjngle", one(0xF098), one(0xF1FF), "IdBc", mfloat },
1553 {"fjngt", one(0xF09D), one(0xF1FF), "IdBc", mfloat },
1554 {"fjnle", one(0xF09A), one(0xF1FF), "IdBc", mfloat },
1555 {"fjnlt", one(0xF09B), one(0xF1FF), "IdBc", mfloat },
1556 {"fjoge", one(0xF083), one(0xF1FF), "IdBc", mfloat },
1557 {"fjogl", one(0xF086), one(0xF1FF), "IdBc", mfloat },
1558 {"fjogt", one(0xF082), one(0xF1FF), "IdBc", mfloat },
1559 {"fjole", one(0xF085), one(0xF1FF), "IdBc", mfloat },
1560 {"fjolt", one(0xF084), one(0xF1FF), "IdBc", mfloat },
1561 {"fjor", one(0xF087), one(0xF1FF), "IdBc", mfloat },
1562 {"fjseq", one(0xF091), one(0xF1FF), "IdBc", mfloat },
1563 {"fjsf", one(0xF090), one(0xF1FF), "IdBc", mfloat },
1564 {"fjsne", one(0xF09E), one(0xF1FF), "IdBc", mfloat },
1565 #ifndef MOTOROLA_SYNTAX
1566 {"fjsneq", one(0xF09E), one(0xF1FF), "IdBc", mfloat },
1567 #endif
1568 {"fjst", one(0xF09F), one(0xF1FF), "IdBc", mfloat },
1569 {"fjt", one(0xF08F), one(0xF1FF), "IdBc", mfloat },
1570 {"fjueq", one(0xF089), one(0xF1FF), "IdBc", mfloat },
1571 {"fjuge", one(0xF08B), one(0xF1FF), "IdBc", mfloat },
1572 {"fjugt", one(0xF08A), one(0xF1FF), "IdBc", mfloat },
1573 {"fjule", one(0xF08D), one(0xF1FF), "IdBc", mfloat },
1574 {"fjult", one(0xF08C), one(0xF1FF), "IdBc", mfloat },
1575 {"fjun", one(0xF088), one(0xF1FF), "IdBc", mfloat },
1576 /* float stuff ends here */
1577 {"illegal", one(0045374), one(0177777), "", m68000up },
1578
1579
1580 #ifdef MOTOROLA_SYNTAX
1581 {OP2(jmp,s), one(0047300), one(0177700), "!s", m68000up },
1582 {OP2(jmp,l), one(0047300), one(0177700), "!s", m68000up },
1583 #endif
1584
1585 {"jmp", one(0047300), one(0177700), "!s", m68000up },
1586 {"jsr", one(0047200), one(0177700), "!s", m68000up },
1587 {"lea", one(0040700), one(0170700), "!sAd", m68000up },
1588 #ifdef MOTOROLA_SYNTAX
1589 {OP2(lea,l), one(0040700), one(0170700), "!sAd", m68000up }, /* allow lea as leal */
1590 #endif
1591
1592 {OP2(link,w), one(0047120), one(0177770), "As#w", m68000up },
1593 {OP2(link,l), one(0044010), one(0177770), "As#l", m68020up },
1594 {"link", one(0047120), one(0177770), "As#w", m68000up },
1595 {"link", one(0044010), one(0177770), "As#l", m68020up },
1596
1597 {OP2(lsl,b), one(0160410), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1598 {OP2(lsl,b), one(0160450), one(0170770), "DdDs", m68000up }, /* lsrb Dd, Ds */
1599 {OP2(lsl,w), one(0160510), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1600 {OP2(lsl,w), one(0160550), one(0170770), "DdDs", m68000up }, /* lsrb Dd, Ds */
1601 {OP2(lsl,w), one(0161700), one(0177700), "~s", m68000up }, /* Shift memory */
1602 {OP2(lsl,l), one(0160610), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1603 {OP2(lsl,l), one(0160650), one(0170770), "DdDs", m68000up }, /* lsrb Dd, Ds */
1604
1605 {OP2(lsr,b), one(0160010), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1606 {OP2(lsr,b), one(0160050), one(0170770), "DdDs", m68000up }, /* lsrb Dd, Ds */
1607 {OP2(lsr,l), one(0160210), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1608 {OP2(lsr,l), one(0160250), one(0170770), "DdDs", m68000up }, /* lsrb #Q, Ds */
1609 {OP2(lsr,w), one(0160110), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1610 {OP2(lsr,w), one(0160150), one(0170770), "DdDs", m68000up }, /* lsrb #Q, Ds */
1611 {OP2(lsr,w), one(0161300), one(0177700), "~s", m68000up }, /* Shift memory */
1612
1613 {OP2(movea,l), one(0020100), one(0170700), "*lAd", m68000up },
1614 {OP2(movea,w), one(0030100), one(0170700), "*wAd", m68000up },
1615 {OP2(move,b), one(0010000), one(0170000), ";b$d", m68000up }, /* move */
1616 {OP2(move,l), one(0070000), one(0170400), "MsDd", m68000up }, /* moveq written as move */
1617 {OP2(move,l), one(0020000), one(0170000), "*l$d", m68000up },
1618 {OP2(move,l), one(0020100), one(0170700), "*lAd", m68000up },
1619 {OP2(move,l), one(0047140), one(0177770), "AsUd", m68000up }, /* move to USP */
1620 {OP2(move,l), one(0047150), one(0177770), "UdAs", m68000up }, /* move from USP */
1621
1622 {"movec", one(0047173), one(0177777), "R1Jj", m68010up },
1623 {"movec", one(0047173), one(0177777), "R1#j", m68010up },
1624 {"movec", one(0047172), one(0177777), "JjR1", m68010up },
1625 {"movec", one(0047172), one(0177777), "#jR1", m68010up },
1626
1627 /* JF added these next four for the assembler */
1628 {OP2(movem,l), one(0044300), one(0177700), "Lw&s", m68000up }, /* movem reg to mem. */
1629 {OP2(movem,l), one(0044340), one(0177770), "lw-s", m68000up }, /* movem reg to autodecrement. */
1630 {OP2(movem,l), one(0046300), one(0177700), "!sLw", m68000up }, /* movem mem to reg. */
1631 {OP2(movem,l), one(0046330), one(0177770), "+sLw", m68000up }, /* movem autoinc to reg. */
1632
1633 {OP2(movem,l), one(0044300), one(0177700), "#w&s", m68000up }, /* movem reg to mem. */
1634 {OP2(movem,l), one(0044340), one(0177770), "#w-s", m68000up }, /* movem reg to autodecrement. */
1635 {OP2(movem,l), one(0046300), one(0177700), "!s#w", m68000up }, /* movem mem to reg. */
1636 {OP2(movem,l), one(0046330), one(0177770), "+s#w", m68000up }, /* movem autoinc to reg. */
1637
1638 /* JF added these next four for the assembler */
1639 {OP2(movem,w), one(0044200), one(0177700), "Lw&s", m68000up }, /* movem reg to mem. */
1640 {OP2(movem,w), one(0044240), one(0177770), "lw-s", m68000up }, /* movem reg to autodecrement. */
1641 {OP2(movem,w), one(0046200), one(0177700), "!sLw", m68000up }, /* movem mem to reg. */
1642 {OP2(movem,w), one(0046230), one(0177770), "+sLw", m68000up }, /* movem autoinc to reg. */
1643
1644 {OP2(movem,w), one(0044200), one(0177700), "#w&s", m68000up }, /* movem reg to mem. */
1645 {OP2(movem,w), one(0044240), one(0177770), "#w-s", m68000up }, /* movem reg to autodecrement. */
1646 {OP2(movem,w), one(0046200), one(0177700), "!s#w", m68000up }, /* movem mem to reg. */
1647 {OP2(movem,w), one(0046230), one(0177770), "+s#w", m68000up }, /* movem autoinc to reg. */
1648 #ifdef ALLOW_DEFAULT_SIZES
1649 {"movem", one(0044200), one(0177700), "Lw&s", m68000up }, /* movem reg to mem. */
1650 {"movem", one(0044240), one(0177770), "lw-s", m68000up }, /* movem reg to autodecrement. */
1651 {"movem", one(0046200), one(0177700), "!sLw", m68000up }, /* movem mem to reg. */
1652 {"movem", one(0046230), one(0177770), "+sLw", m68000up }, /* movem autoinc to reg. */
1653
1654 {"movem", one(0044200), one(0177700), "#w&s", m68000up }, /* movem reg to mem. */
1655 {"movem", one(0044240), one(0177770), "#w-s", m68000up }, /* movem reg to autodecrement. */
1656 {"movem", one(0046200), one(0177700), "!s#w", m68000up }, /* movem mem to reg. */
1657 {"movem", one(0046230), one(0177770), "+s#w", m68000up }, /* movem autoinc to reg. */
1658 #endif
1659
1660 {OP2(movep,l), one(0000510), one(0170770), "dsDd", m68000up }, /* memory to register */
1661 {OP2(movep,l), one(0000710), one(0170770), "Ddds", m68000up }, /* register to memory */
1662 {OP2(movep,w), one(0000410), one(0170770), "dsDd", m68000up }, /* memory to register */
1663 {OP2(movep,w), one(0000610), one(0170770), "Ddds", m68000up }, /* register to memory */
1664 #ifdef ALLOW_DEFAULT_SIZES
1665 {"movep", one(0000410), one(0170770), "dsDd", m68000up }, /* memory to register */
1666 {"movep", one(0000610), one(0170770), "Ddds", m68000up }, /* register to memory */
1667 #endif
1668 {OP2(move,q), one(0070000), one(0170400), "MsDd", m68000up },
1669 {OP2(move,w), one(0030000), one(0170000), "*w$d", m68000up },
1670 {OP2(move,w), one(0030100), one(0170700), "*wAd", m68000up }, /* movea, written as move */
1671 {OP2(move,w), one(0040300), one(0177700), "Ss$s", m68000up }, /* Move from sr */
1672 {OP2(move,w), one(0041300), one(0177700), "Cs$s", m68010up }, /* Move from ccr */
1673 {OP2(move,w), one(0042300), one(0177700), ";wCd", m68000up }, /* move to ccr */
1674 {OP2(move,w), one(0043300), one(0177700), ";wSd", m68000up }, /* move to sr */
1675
1676
1677 {OP2(moves,b), two(0007000, 0), two(0177700, 07777), "~sR1", m68010up }, /* moves from memory */
1678 {OP2(moves,b), two(0007000, 04000), two(0177700, 07777), "R1~s", m68010up }, /* moves to memory */
1679 {OP2(moves,l), two(0007200, 0), two(0177700, 07777), "~sR1", m68010up }, /* moves from memory */
1680 {OP2(moves,l), two(0007200, 04000), two(0177700, 07777), "R1~s", m68010up }, /* moves to memory */
1681 {OP2(moves,w), two(0007100, 0), two(0177700, 07777), "~sR1", m68010up }, /* moves from memory */
1682 {OP2(moves,w), two(0007100, 04000), two(0177700, 07777), "R1~s", m68010up }, /* moves to memory */
1683
1684 {"move16", two(0xf620, 0x8000), two(0xfff8, 0x8fff), "+s+1", m68040 },
1685 {"move16", one(0xf600), one(0xfff8), "+s_L", m68040 },
1686 {"move16", one(0xf608), one(0xfff8), "_L+s", m68040 },
1687 {"move16", one(0xf610), one(0xfff8), "as_L", m68040 },
1688 {"move16", one(0xf618), one(0xfff8), "_Las", m68040 },
1689
1690 {OP2(muls,l), two(0046000, 004000), two(0177700, 0107770), ";lD1", m68020up },
1691 {OP2(muls,l), two(0046000, 006000), two(0177700, 0107770), ";lD3D1", m68020up },
1692 {OP2(muls,w), one(0140700), one(0170700), ";wDd", m68000up },
1693 {"muls", one(0140700), one(0170700), ";wDd", m68000up },
1694 {OP2(mulu,l), two(0046000, 000000), two(0177700, 0107770), ";lD1", m68020up },
1695 {OP2(mulu,l), two(0046000, 002000), two(0177700, 0107770), ";lD3D1", m68020up },
1696 {OP2(mulu,w), one(0140300), one(0170700), ";wDd", m68000up },
1697 {"mulu", one(0140300), one(0170700), ";wDd", m68000up },
1698 {"nbcd", one(0044000), one(0177700), "$s", m68000up },
1699
1700 {OP2(neg,b), one(0042000), one(0177700), "$s", m68000up },
1701 {OP2(neg,l), one(0042200), one(0177700), "$s", m68000up },
1702 {OP2(neg,w), one(0042100), one(0177700), "$s", m68000up },
1703 #ifdef ALLOW_DEFAULT_SIZES
1704 {"neg", one(0042200), one(0177700), "$s", m68000up },
1705 #endif
1706
1707 {OP2(negx,b), one(0040000), one(0177700), "$s", m68000up },
1708 {OP2(negx,l), one(0040200), one(0177700), "$s", m68000up },
1709 {OP2(negx,w), one(0040100), one(0177700), "$s", m68000up },
1710 #ifdef ALLOW_DEFAULT_SIZES
1711 {"negx", one(0040200), one(0177700), "$s", m68000up },
1712 #endif
1713
1714 {"nop", one(0047161), one(0177777), "", m68000up },
1715
1716 {OP2(not,b), one(0043000), one(0177700), "$s", m68000up },
1717 {OP2(not,l), one(0043200), one(0177700), "$s", m68000up },
1718 {OP2(not,w), one(0043100), one(0177700), "$s", m68000up },
1719 #ifdef ALLOW_DEFAULT_SIZES
1720 {"not", one(0043200), one(0177700), "$s", m68000up },
1721 #endif
1722
1723 {OP2(or,b), one(0000000), one(0177700), "#b$s", m68000up }, /* ori written as or */
1724 {OP2(or,b), one(0000074), one(0177777), "#bCs", m68000up }, /* ori to ccr */
1725 {OP2(or,b), one(0100000), one(0170700), ";bDd", m68000up }, /* memory to register */
1726 {OP2(or,b), one(0100400), one(0170700), "Dd~s", m68000up }, /* register to memory */
1727 {OP2(ori,b), one(0000000), one(0177700), "#b$s", m68000up },
1728 {OP2(ori,b), one(0000074), one(0177777), "#bCs", m68000up }, /* ori to ccr */
1729 {OP2(ori,l), one(0000200), one(0177700), "#l$s", m68000up },
1730 {OP2(ori,w), one(0000100), one(0177700), "#w$s", m68000up },
1731 {OP2(ori,w), one(0000174), one(0177777), "#wSs", m68000up }, /* ori to sr */
1732 {OP2(or,l), one(0000200), one(0177700), "#l$s", m68000up },
1733 {OP2(or,l), one(0100200), one(0170700), ";lDd", m68000up }, /* memory to register */
1734 {OP2(or,l), one(0100600), one(0170700), "Dd~s", m68000up }, /* register to memory */
1735 {OP2(or,w), one(0000100), one(0177700), "#w$s", m68000up },
1736 {OP2(or,w), one(0000174), one(0177777), "#wSs", m68000up }, /* ori to sr */
1737 {OP2(or,w), one(0100100), one(0170700), ";wDd", m68000up }, /* memory to register */
1738 {OP2(or,w), one(0100500), one(0170700), "Dd~s", m68000up }, /* register to memory */
1739 #ifdef ALLOW_DEFAULT_SIZES
1740 {"ori", one(0000174), one(0177777), "#wSs", m68000up }, /* ori to sr */
1741
1742 {"or", one(0000100), one(0177700), "#w$s", m68000up },
1743 {"or", one(0000174), one(0177777), "#wSs", m68000up }, /* ori to sr */
1744 {"or", one(0100100), one(0170700), ";wDd", m68000up }, /* memory to register */
1745 {"or", one(0100500), one(0170700), "Dd~s", m68000up }, /* register to memory */
1746 #endif
1747
1748 {"pack", one(0100500), one(0170770), "DsDd#w", m68020up }, /* pack Ds, Dd, #w */
1749 {"pack", one(0100510), one(0170770), "-s-d#w", m68020up }, /* pack -(As), -(Ad), #w */
1750
1751 #ifndef NO_68851
1752 {"pbac", one(0xf0c7), one(0xffbf), "Bc", m68851 },
1753 {OP2(pbac,w), one(0xf087), one(0xffbf), "Bc", m68851 },
1754 {"pbas", one(0xf0c6), one(0xffbf), "Bc", m68851 },
1755 {OP2(pbas,w), one(0xf086), one(0xffbf), "Bc", m68851 },
1756 {"pbbc", one(0xf0c1), one(0xffbf), "Bc", m68851 },
1757 {OP2(pbbc,w), one(0xf081), one(0xffbf), "Bc", m68851 },
1758 {"pbbs", one(0xf0c0), one(0xffbf), "Bc", m68851 },
1759 {OP2(pbbs,w), one(0xf080), one(0xffbf), "Bc", m68851 },
1760 {"pbcc", one(0xf0cf), one(0xffbf), "Bc", m68851 },
1761 {OP2(pbcc,w), one(0xf08f), one(0xffbf), "Bc", m68851 },
1762 {"pbcs", one(0xf0ce), one(0xffbf), "Bc", m68851 },
1763 {OP2(pbcs,w), one(0xf08e), one(0xffbf), "Bc", m68851 },
1764 {"pbgc", one(0xf0cd), one(0xffbf), "Bc", m68851 },
1765 {OP2(pbgc,w), one(0xf08d), one(0xffbf), "Bc", m68851 },
1766 {"pbgs", one(0xf0cc), one(0xffbf), "Bc", m68851 },
1767 {OP2(pbgs,w), one(0xf08c), one(0xffbf), "Bc", m68851 },
1768 {"pbic", one(0xf0cb), one(0xffbf), "Bc", m68851 },
1769 {OP2(pbic,w), one(0xf08b), one(0xffbf), "Bc", m68851 },
1770 {"pbis", one(0xf0ca), one(0xffbf), "Bc", m68851 },
1771 {OP2(pbis,w), one(0xf08a), one(0xffbf), "Bc", m68851 },
1772 {"pblc", one(0xf0c3), one(0xffbf), "Bc", m68851 },
1773 {OP2(pblc,w), one(0xf083), one(0xffbf), "Bc", m68851 },
1774 {"pbls", one(0xf0c2), one(0xffbf), "Bc", m68851 },
1775 {OP2(pbls,w), one(0xf082), one(0xffbf), "Bc", m68851 },
1776 {"pbsc", one(0xf0c5), one(0xffbf), "Bc", m68851 },
1777 {OP2(pbsc,w), one(0xf085), one(0xffbf), "Bc", m68851 },
1778 {"pbss", one(0xf0c4), one(0xffbf), "Bc", m68851 },
1779 {OP2(pbss,w), one(0xf084), one(0xffbf), "Bc", m68851 },
1780 {"pbwc", one(0xf0c9), one(0xffbf), "Bc", m68851 },
1781 {OP2(pbwc,w), one(0xf089), one(0xffbf), "Bc", m68851 },
1782 {"pbws", one(0xf0c8), one(0xffbf), "Bc", m68851 },
1783 {OP2(pbws,w), one(0xf088), one(0xffbf), "Bc", m68851 },
1784
1785 {"pdbac", two(0xf048, 0x0007), two(0xfff8, 0xffff), "DsBw", m68851 },
1786 {"pdbas", two(0xf048, 0x0006), two(0xfff8, 0xffff), "DsBw", m68851 },
1787 {"pdbbc", two(0xf048, 0x0001), two(0xfff8, 0xffff), "DsBw", m68851 },
1788 {"pdbbs", two(0xf048, 0x0000), two(0xfff8, 0xffff), "DsBw", m68851 },
1789 {"pdbcc", two(0xf048, 0x000f), two(0xfff8, 0xffff), "DsBw", m68851 },
1790 {"pdbcs", two(0xf048, 0x000e), two(0xfff8, 0xffff), "DsBw", m68851 },
1791 {"pdbgc", two(0xf048, 0x000d), two(0xfff8, 0xffff), "DsBw", m68851 },
1792 {"pdbgs", two(0xf048, 0x000c), two(0xfff8, 0xffff), "DsBw", m68851 },
1793 {"pdbic", two(0xf048, 0x000b), two(0xfff8, 0xffff), "DsBw", m68851 },
1794 {"pdbis", two(0xf048, 0x000a), two(0xfff8, 0xffff), "DsBw", m68851 },
1795 {"pdblc", two(0xf048, 0x0003), two(0xfff8, 0xffff), "DsBw", m68851 },
1796 {"pdbls", two(0xf048, 0x0002), two(0xfff8, 0xffff), "DsBw", m68851 },
1797 {"pdbsc", two(0xf048, 0x0005), two(0xfff8, 0xffff), "DsBw", m68851 },
1798 {"pdbss", two(0xf048, 0x0004), two(0xfff8, 0xffff), "DsBw", m68851 },
1799 {"pdbwc", two(0xf048, 0x0009), two(0xfff8, 0xffff), "DsBw", m68851 },
1800 {"pdbws", two(0xf048, 0x0008), two(0xfff8, 0xffff), "DsBw", m68851 },
1801 #endif /* NO_68851 */
1802
1803 {"pea", one(0044100), one(0177700), "!s", m68000up },
1804
1805 #ifndef NO_68851
1806 {"pflusha", two(0xf000, 0x2400), two(0xffff, 0xffff), "", m68030 | m68851 },
1807 {"pflusha", one(0xf510), one(0xfff8), "", m68040 },
1808
1809 {"pflush", two(0xf000, 0x3010), two(0xffc0, 0xfe10), "T3T9", m68030 | m68851 },
1810 {"pflush", two(0xf000, 0x3810), two(0xffc0, 0xfe10), "T3T9&s", m68030 | m68851 },
1811 {"pflush", two(0xf000, 0x3008), two(0xffc0, 0xfe18), "D3T9", m68030 | m68851 },
1812 {"pflush", two(0xf000, 0x3808), two(0xffc0, 0xfe18), "D3T9&s", m68030 | m68851 },
1813 {"pflush", two(0xf000, 0x3000), two(0xffc0, 0xfe1e), "f3T9", m68030 | m68851 },
1814 {"pflush", two(0xf000, 0x3800), two(0xffc0, 0xfe1e), "f3T9&s", m68030 | m68851 },
1815 {"pflush", one(0xf500), one(0xfff8), "as", m68040 },
1816
1817 {"pflushan", one(0xf518), one(0xfff8), "", m68040 },
1818 {"pflushn", one(0xf508), one(0xfff8), "as", m68040 },
1819
1820 {"pflushr", two(0xf000, 0xa000), two(0xffc0, 0xffff), "|s", m68851 },
1821
1822 {"pflushs", two(0xf000, 0x3410), two(0xfff8, 0xfe10), "T3T9", m68851 },
1823 {"pflushs", two(0xf000, 0x3c10), two(0xfff8, 0xfe00), "T3T9&s", m68851 },
1824 {"pflushs", two(0xf000, 0x3408), two(0xfff8, 0xfe18), "D3T9", m68851 },
1825 {"pflushs", two(0xf000, 0x3c08), two(0xfff8, 0xfe18), "D3T9&s", m68851 },
1826 {"pflushs", two(0xf000, 0x3400), two(0xfff8, 0xfe1e), "f3T9", m68851 },
1827 {"pflushs", two(0xf000, 0x3c00), two(0xfff8, 0xfe1e), "f3T9&s", m68851 },
1828
1829 {"ploadr", two(0xf000, 0x2210), two(0xffc0, 0xfff0), "T3&s", m68030 | m68851 },
1830 {"ploadr", two(0xf000, 0x2208), two(0xffc0, 0xfff8), "D3&s", m68030 | m68851 },
1831 {"ploadr", two(0xf000, 0x2200), two(0xffc0, 0xfffe), "f3&s", m68030 | m68851 },
1832 {"ploadw", two(0xf000, 0x2010), two(0xffc0, 0xfff0), "T3&s", m68030 | m68851 },
1833 {"ploadw", two(0xf000, 0x2008), two(0xffc0, 0xfff8), "D3&s", m68030 | m68851 },
1834 {"ploadw", two(0xf000, 0x2000), two(0xffc0, 0xfffe), "f3&s", m68030 | m68851 },
1835
1836 /* TC, CRP, DRP, SRP, CAL, VAL, SCC, AC */
1837 {"pmove", two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "*sP8", m68030 | m68851 },
1838 {"pmove", two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "P8%s", m68030 | m68851 },
1839 {"pmove", two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "|sW8", m68030 | m68851 },
1840 {"pmove", two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "W8~s", m68030 | m68851 },
1841
1842 /* BADx, BACx */
1843 {"pmove", two(0xf000, 0x6200), two(0xffc0, 0xe3e3), "*sX3", m68030 | m68851 },
1844 {"pmove", two(0xf000, 0x6000), two(0xffc0, 0xe3e3), "X3%s", m68030 | m68851 },
1845
1846 /* PSR, PCSR */
1847 /* {"pmove", two(0xf000, 0x6100), two(oxffc0, oxffff), "*sZ8", m68030 | m68851 }, */
1848 {"pmove", two(0xf000, 0x6000), two(0xffc0, 0xffff), "*sY8", m68030 | m68851 },
1849 {"pmove", two(0xf000, 0x6200), two(0xffc0, 0xffff), "Y8%s", m68030 | m68851 },
1850 {"pmove", two(0xf000, 0x6600), two(0xffc0, 0xffff), "Z8%s", m68030 | m68851 },
1851
1852 {"prestore", one(0xf140), one(0xffc0), "&s", m68851 },
1853 {"prestore", one(0xf158), one(0xfff8), "+s", m68851 },
1854 #ifndef MOTOROLA_SYNTAX
1855 /* The two identical psave instructions seems dubious. FIXME */
1856 {"psave", one(0xf100), one(0xffc0), "&s", m68851 },
1857 {"psave", one(0xf100), one(0xffc0), "+s", m68851 },
1858 #endif
1859
1860 {"psac", two(0xf040, 0x0007), two(0xffc0, 0xffff), "@s", m68851 },
1861 {"psas", two(0xf040, 0x0006), two(0xffc0, 0xffff), "@s", m68851 },
1862 {"psbc", two(0xf040, 0x0001), two(0xffc0, 0xffff), "@s", m68851 },
1863 {"psbs", two(0xf040, 0x0000), two(0xffc0, 0xffff), "@s", m68851 },
1864 {"pscc", two(0xf040, 0x000f), two(0xffc0, 0xffff), "@s", m68851 },
1865 {"pscs", two(0xf040, 0x000e), two(0xffc0, 0xffff), "@s", m68851 },
1866 {"psgc", two(0xf040, 0x000d), two(0xffc0, 0xffff), "@s", m68851 },
1867 {"psgs", two(0xf040, 0x000c), two(0xffc0, 0xffff), "@s", m68851 },
1868 {"psic", two(0xf040, 0x000b), two(0xffc0, 0xffff), "@s", m68851 },
1869 {"psis", two(0xf040, 0x000a), two(0xffc0, 0xffff), "@s", m68851 },
1870 {"pslc", two(0xf040, 0x0003), two(0xffc0, 0xffff), "@s", m68851 },
1871 {"psls", two(0xf040, 0x0002), two(0xffc0, 0xffff), "@s", m68851 },
1872 {"pssc", two(0xf040, 0x0005), two(0xffc0, 0xffff), "@s", m68851 },
1873 {"psss", two(0xf040, 0x0004), two(0xffc0, 0xffff), "@s", m68851 },
1874 {"pswc", two(0xf040, 0x0009), two(0xffc0, 0xffff), "@s", m68851 },
1875 {"psws", two(0xf040, 0x0008), two(0xffc0, 0xffff), "@s", m68851 },
1876
1877 {"ptestr", two(0xf000, 0x8210), two(0xffc0, 0xe3f0), "T3&sQ8", m68030 | m68851 },
1878 {"ptestr", two(0xf000, 0x8310), two(0xffc0, 0xe310), "T3&sQ8A9", m68030 | m68851 },
1879 {"ptestr", two(0xf000, 0x8208), two(0xffc0, 0xe3f8), "D3&sQ8", m68030 | m68851 },
1880 {"ptestr", two(0xf000, 0x8308), two(0xffc0, 0xe318), "D3&sQ8A9", m68030 | m68851 },
1881 {"ptestr", two(0xf000, 0x8200), two(0xffc0, 0xe3fe), "f3&sQ8", m68030 | m68851 },
1882 {"ptestr", two(0xf000, 0x8300), two(0xffc0, 0xe31e), "f3&sQ8A9", m68030 | m68851 },
1883
1884 {"ptestr", one(0xf568), one(0xfff8), "as", m68040 },
1885
1886 {"ptestw", two(0xf000, 0x8010), two(0xffc0, 0xe3f0), "T3&sQ8", m68030 | m68851 },
1887 {"ptestw", two(0xf000, 0x8110), two(0xffc0, 0xe310), "T3&sQ8A9", m68030 | m68851 },
1888 {"ptestw", two(0xf000, 0x8008), two(0xffc0, 0xe3f8), "D3&sQ8", m68030 | m68851 },
1889 {"ptestw", two(0xf000, 0x8108), two(0xffc0, 0xe318), "D3&sQ8A9", m68030 | m68851 },
1890 {"ptestw", two(0xf000, 0x8000), two(0xffc0, 0xe3fe), "f3&sQ8", m68030 | m68851 },
1891 {"ptestw", two(0xf000, 0x8100), two(0xffc0, 0xe31e), "f3&sQ8A9", m68030 | m68851 },
1892
1893 {"ptestw", one(0xf548), one(0xfff8), "as", m68040 },
1894
1895 {OP2(ptrapac,w), two(0xf07a, 0x0007), two(0xffff, 0xffff), "#w", m68851 },
1896 {OP2(ptrapac,l), two(0xf07b, 0x0007), two(0xffff, 0xffff), "#l", m68851 },
1897 {"ptrapac", two(0xf07c, 0x0007), two(0xffff, 0xffff), "", m68851 },
1898
1899 {OP2(ptrapas,w), two(0xf07a, 0x0006), two(0xffff, 0xffff), "#w", m68851 },
1900 {OP2(ptrapas,l), two(0xf07b, 0x0006), two(0xffff, 0xffff), "#l", m68851 },
1901 {"ptrapas", two(0xf07c, 0x0006), two(0xffff, 0xffff), "", m68851 },
1902
1903 {OP2(ptrapbc,w), two(0xf07a, 0x0001), two(0xffff, 0xffff), "#w", m68851 },
1904 {OP2(ptrapbc,l), two(0xf07b, 0x0001), two(0xffff, 0xffff), "#l", m68851 },
1905 {"ptrapbc", two(0xf07c, 0x0001), two(0xffff, 0xffff), "", m68851 },
1906
1907 {OP2(ptrapbs,w), two(0xf07a, 0x0000), two(0xffff, 0xffff), "#w", m68851 },
1908 {OP2(ptrapbs,l), two(0xf07b, 0x0000), two(0xffff, 0xffff), "#l", m68851 },
1909 {"ptrapbs", two(0xf07c, 0x0000), two(0xffff, 0xffff), "", m68851 },
1910
1911 {OP2(ptrapcc,w), two(0xf07a, 0x000f), two(0xffff, 0xffff), "#w", m68851 },
1912 {OP2(ptrapcc,l), two(0xf07b, 0x000f), two(0xffff, 0xffff), "#l", m68851 },
1913 {"ptrapcc", two(0xf07c, 0x000f), two(0xffff, 0xffff), "", m68851 },
1914
1915 {OP2(ptrapcs,w), two(0xf07a, 0x000e), two(0xffff, 0xffff), "#w", m68851 },
1916 {OP2(ptrapcs,l), two(0xf07b, 0x000e), two(0xffff, 0xffff), "#l", m68851 },
1917 {"ptrapcs", two(0xf07c, 0x000e), two(0xffff, 0xffff), "", m68851 },
1918
1919 {OP2(ptrapgc,w), two(0xf07a, 0x000d), two(0xffff, 0xffff), "#w", m68851 },
1920 {OP2(ptrapgc,l), two(0xf07b, 0x000d), two(0xffff, 0xffff), "#l", m68851 },
1921 {"ptrapgc", two(0xf07c, 0x000d), two(0xffff, 0xffff), "", m68851 },
1922
1923 {OP2(ptrapgs,w), two(0xf07a, 0x000c), two(0xffff, 0xffff), "#w", m68851 },
1924 {OP2(ptrapgs,l), two(0xf07b, 0x000c), two(0xffff, 0xffff), "#l", m68851 },
1925 {"ptrapgs", two(0xf07c, 0x000c), two(0xffff, 0xffff), "", m68851 },
1926
1927 {OP2(ptrapic,w), two(0xf07a, 0x000b), two(0xffff, 0xffff), "#w", m68851 },
1928 {OP2(ptrapic,l), two(0xf07b, 0x000b), two(0xffff, 0xffff), "#l", m68851 },
1929 {"ptrapic", two(0xf07c, 0x000b), two(0xffff, 0xffff), "", m68851 },
1930
1931 {OP2(ptrapis,w), two(0xf07a, 0x000a), two(0xffff, 0xffff), "#w", m68851 },
1932 {OP2(ptrapis,l), two(0xf07b, 0x000a), two(0xffff, 0xffff), "#l", m68851 },
1933 {"ptrapis", two(0xf07c, 0x000a), two(0xffff, 0xffff), "", m68851 },
1934
1935 {OP2(ptraplc,w), two(0xf07a, 0x0003), two(0xffff, 0xffff), "#w", m68851 },
1936 {OP2(ptraplc,l), two(0xf07b, 0x0003), two(0xffff, 0xffff), "#l", m68851 },
1937 {"ptraplc", two(0xf07c, 0x0003), two(0xffff, 0xffff), "", m68851 },
1938
1939 {OP2(ptrapls,w), two(0xf07a, 0x0002), two(0xffff, 0xffff), "#w", m68851 },
1940 {OP2(ptrapls,l), two(0xf07b, 0x0002), two(0xffff, 0xffff), "#l", m68851 },
1941 {"ptrapls", two(0xf07c, 0x0002), two(0xffff, 0xffff), "", m68851 },
1942
1943 {OP2(ptrapsc,w), two(0xf07a, 0x0005), two(0xffff, 0xffff), "#w", m68851 },
1944 {OP2(ptrapsc,l), two(0xf07b, 0x0005), two(0xffff, 0xffff), "#l", m68851 },
1945 {"ptrapsc", two(0xf07c, 0x0005), two(0xffff, 0xffff), "", m68851 },
1946
1947 {OP2(ptrapss,w), two(0xf07a, 0x0004), two(0xffff, 0xffff), "#w", m68851 },
1948 {OP2(ptrapss,l), two(0xf07b, 0x0004), two(0xffff, 0xffff), "#l", m68851 },
1949 {"ptrapss", two(0xf07c, 0x0004), two(0xffff, 0xffff), "", m68851 },
1950
1951 {OP2(ptrapwc,w), two(0xf07a, 0x0009), two(0xffff, 0xffff), "#w", m68851 },
1952 {OP2(ptrapwc,l), two(0xf07b, 0x0009), two(0xffff, 0xffff), "#l", m68851 },
1953 {"ptrapwc", two(0xf07c, 0x0009), two(0xffff, 0xffff), "", m68851 },
1954
1955 {OP2(ptrapws,w), two(0xf07a, 0x0008), two(0xffff, 0xffff), "#w", m68851 },
1956 {OP2(ptrapws,l), two(0xf07b, 0x0008), two(0xffff, 0xffff), "#l", m68851 },
1957 {"ptrapws", two(0xf07c, 0x0008), two(0xffff, 0xffff), "", m68851 },
1958
1959 {"pvalid", two(0xf000, 0x2800), two(0xffc0, 0xffff), "Vs&s", m68851 },
1960 {"pvalid", two(0xf000, 0x2c00), two(0xffc0, 0xfff8), "A3&s", m68851 },
1961
1962 #endif /* NO_68851 */
1963
1964 {"reset", one(0047160), one(0177777), "", m68000up },
1965
1966 {OP2(rol,b), one(0160430), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1967 {OP2(rol,b), one(0160470), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1968 {OP2(rol,l), one(0160630), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1969 {OP2(rol,l), one(0160670), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1970 {OP2(rol,w), one(0160530), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1971 {OP2(rol,w), one(0160570), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1972 {OP2(rol,w), one(0163700), one(0177700), "~s", m68000up }, /* Rotate memory */
1973 {OP2(ror,b), one(0160030), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1974 {OP2(ror,b), one(0160070), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1975 {OP2(ror,l), one(0160230), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1976 {OP2(ror,l), one(0160270), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1977 {OP2(ror,w), one(0160130), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1978 {OP2(ror,w), one(0160170), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1979 {OP2(ror,w), one(0163300), one(0177700), "~s", m68000up }, /* Rotate memory */
1980
1981 {OP2(roxl,b), one(0160420), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
1982 {OP2(roxl,b), one(0160460), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
1983 {OP2(roxl,l), one(0160620), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
1984 {OP2(roxl,l), one(0160660), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
1985 {OP2(roxl,w), one(0160520), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
1986 {OP2(roxl,w), one(0160560), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
1987 {OP2(roxl,w), one(0162700), one(0177700), "~s", m68000up }, /* Rotate memory */
1988 {OP2(roxr,b), one(0160020), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
1989 {OP2(roxr,b), one(0160060), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
1990 {OP2(roxr,l), one(0160220), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
1991 {OP2(roxr,l), one(0160260), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
1992 {OP2(roxr,w), one(0160120), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
1993 {OP2(roxr,w), one(0160160), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
1994 {OP2(roxr,w), one(0162300), one(0177700), "~s", m68000up }, /* Rotate memory */
1995
1996 {"rtd", one(0047164), one(0177777), "#w", m68010up },
1997 {"rte", one(0047163), one(0177777), "", m68000up },
1998 {"rtm", one(0003300), one(0177760), "Rs", m68020 },
1999 {"rtr", one(0047167), one(0177777), "", m68000up },
2000 {"rts", one(0047165), one(0177777), "", m68000up },
2001
2002 {"sbcd", one(0100400), one(0170770), "DsDd", m68000up },
2003 {"sbcd", one(0100410), one(0170770), "-s-d", m68000up },
2004
2005 {"scc", one(0052300), one(0177700), "$s", m68000up },
2006 {"scs", one(0052700), one(0177700), "$s", m68000up },
2007 {"seq", one(0053700), one(0177700), "$s", m68000up },
2008 {"sf", one(0050700), one(0177700), "$s", m68000up },
2009 {"sge", one(0056300), one(0177700), "$s", m68000up },
2010 {"sfge", one(0056300), one(0177700), "$s", m68000up },
2011 {"sgt", one(0057300), one(0177700), "$s", m68000up },
2012 {"sfgt", one(0057300), one(0177700), "$s", m68000up },
2013 {"shi", one(0051300), one(0177700), "$s", m68000up },
2014 {"sle", one(0057700), one(0177700), "$s", m68000up },
2015 {"sfle", one(0057700), one(0177700), "$s", m68000up },
2016 {"sls", one(0051700), one(0177700), "$s", m68000up },
2017 {"slt", one(0056700), one(0177700), "$s", m68000up },
2018 {"sflt", one(0056700), one(0177700), "$s", m68000up },
2019 {"smi", one(0055700), one(0177700), "$s", m68000up },
2020 {"sne", one(0053300), one(0177700), "$s", m68000up },
2021 {"sfneq", one(0053300), one(0177700), "$s", m68000up },
2022 {"spl", one(0055300), one(0177700), "$s", m68000up },
2023 {"st", one(0050300), one(0177700), "$s", m68000up },
2024 {"svc", one(0054300), one(0177700), "$s", m68000up },
2025 {"svs", one(0054700), one(0177700), "$s", m68000up },
2026
2027 {"stop", one(0047162), one(0177777), "#w", m68000up },
2028
2029 {OP2(suba,l), one(0110700), one(0170700), "*lAd", m68000up },
2030 {OP2(suba,w), one(0110300), one(0170700), "*wAd", m68000up },
2031 {OP2(sub,b), one(0050400), one(0170700), "Qd%s", m68000up }, /* subq written as sub */
2032 {OP2(sub,b), one(0002000), one(0177700), "#b$s", m68000up }, /* subi written as sub */
2033 {OP2(sub,b), one(0110000), one(0170700), ";bDd", m68000up }, /* subb ? ?, Dd */
2034 {OP2(sub,b), one(0110400), one(0170700), "Dd~s", m68000up }, /* subb Dd, ? ? */
2035
2036 {OP2(subi,b), one(0002000), one(0177700), "#b$s", m68000up },
2037 {OP2(subi,l), one(0002200), one(0177700), "#l$s", m68000up },
2038 {OP2(subi,w), one(0002100), one(0177700), "#w$s", m68000up },
2039 {OP2(sub,l), one(0050600), one(0170700), "Qd%s", m68000up },
2040 {OP2(sub,l), one(0002200), one(0177700), "#l$s", m68000up },
2041 {OP2(sub,l), one(0110700), one(0170700), "*lAd", m68000up },
2042 {OP2(sub,l), one(0110200), one(0170700), "*lDd", m68000up },
2043 {OP2(sub,l), one(0110600), one(0170700), "Dd~s", m68000up },
2044 {OP2(subq,b), one(0050400), one(0170700), "Qd%s", m68000up },
2045 #ifdef MOTOROLA_SYNTAX
2046 {OP2(subq,b), one(0002000), one(0177700), "#b$s", m68000up }, /* FIXNIEL: sub instead of subq because too many frags */
2047 #endif
2048 {OP2(subq,l), one(0050600), one(0170700), "Qd%s", m68000up },
2049 #ifdef MOTOROLA_SYNTAX
2050 {OP2(subq,l), one(0002200), one(0177700), "#l$s", m68000up }, /* FIXNIEL: sub instead of subq because too many frags */
2051 #endif
2052 {OP2(subq,w), one(0050500), one(0170700), "Qd%s", m68000up },
2053 #ifdef MOTOROLA_SYNTAX
2054 {OP2(subq,w), one(0002100), one(0177700), "#w$s", m68000up }, /* FIXNIEL: sub instead of subq because too many frags */
2055 #endif
2056 {OP2(sub,w), one(0050500), one(0170700), "Qd%s", m68000up },
2057 {OP2(sub,w), one(0002100), one(0177700), "#w$s", m68000up },
2058 {OP2(sub,w), one(0110100), one(0170700), "*wDd", m68000up },
2059 {OP2(sub,w), one(0110300), one(0170700), "*wAd", m68000up }, /* suba written as sub */
2060 {OP2(sub,w), one(0110500), one(0170700), "Dd~s", m68000up },
2061 #ifdef ALLOW_DEFAULT_SIZES
2062 {"subi", one(0002200), one(0177700), "#l$s", m68000up },
2063 {"suba", one(0110700), one(0170700), "*lAd", m68000up },
2064 {"sub", one(0050500), one(0170700), "Qd%s", m68000up },
2065 {"sub", one(0002100), one(0177700), "#w$s", m68000up },
2066 {"sub", one(0110100), one(0170700), "*wDd", m68000up },
2067 {"sub", one(0110300), one(0170700), "*wAd", m68000up }, /* suba written as sub */
2068 {"sub", one(0110500), one(0170700), "Dd~s", m68000up },
2069 #endif
2070
2071 {OP2(subx,b), one(0110400), one(0170770), "DsDd", m68000up }, /* subxb Ds, Dd */
2072 {OP2(subx,b), one(0110410), one(0170770), "-s-d", m68000up }, /* subxb -(As), -(Ad) */
2073 {OP2(subx,l), one(0110600), one(0170770), "DsDd", m68000up },
2074 {OP2(subx,l), one(0110610), one(0170770), "-s-d", m68000up },
2075 {OP2(subx,w), one(0110500), one(0170770), "DsDd", m68000up },
2076 {OP2(subx,w), one(0110510), one(0170770), "-s-d", m68000up },
2077 #ifdef ALLOW_DEFAULT_SIZES
2078 {"subx", one(0110500), one(0170770), "DsDd", m68000up },
2079 {"subx", one(0110510), one(0170770), "-s-d", m68000up },
2080 #endif
2081
2082 {"swap", one(0044100), one(0177770), "Ds", m68000up },
2083 #ifdef MOTOROLA_SYNTAX
2084 {OP2(swap,w), one(0044100), one(0177770), "Ds", m68000up },
2085 #endif
2086
2087 {"tas", one(0045300), one(0177700), "$s", m68000up },
2088
2089 #ifdef MOTOROLA_SYNTAX
2090 {"tpcc", one(0047100), one(0177760), "Ts", m68000up },
2091 #endif
2092
2093 {"trap", one(0047100), one(0177760), "Ts", m68000up },
2094
2095
2096 #ifdef MOTOROLA_SYNTAX
2097 {"tcc", one(0052374), one(0177777), "", m68020up },
2098 #endif
2099
2100 {"trapcc", one(0052374), one(0177777), "", m68020up },
2101 {"trapcs", one(0052774), one(0177777), "", m68020up },
2102 {"trapeq", one(0053774), one(0177777), "", m68020up },
2103 {"trapf", one(0050774), one(0177777), "", m68020up },
2104 {"trapge", one(0056374), one(0177777), "", m68020up },
2105 {"trapgt", one(0057374), one(0177777), "", m68020up },
2106 {"traphi", one(0051374), one(0177777), "", m68020up },
2107 {"traple", one(0057774), one(0177777), "", m68020up },
2108 {"trapls", one(0051774), one(0177777), "", m68020up },
2109 {"traplt", one(0056774), one(0177777), "", m68020up },
2110 {"trapmi", one(0055774), one(0177777), "", m68020up },
2111 {"trapne", one(0053374), one(0177777), "", m68020up },
2112 {"trappl", one(0055374), one(0177777), "", m68020up },
2113 {"trapt", one(0050374), one(0177777), "", m68020up },
2114 {"trapvc", one(0054374), one(0177777), "", m68020up },
2115 {"trapvs", one(0054774), one(0177777), "", m68020up },
2116
2117 {"trapcc.w", one(0052372), one(0177777), V("","#w"), m68020up },
2118 {"trapcs.w", one(0052772), one(0177777), V("","#w"), m68020up },
2119 {"trapeq.w", one(0053772), one(0177777), V("","#w"), m68020up },
2120 {"trapf.w", one(0050772), one(0177777), V("","#w"), m68020up },
2121 {"trapge.w", one(0056372), one(0177777), V("","#w"), m68020up },
2122 {"trapgt.w", one(0057372), one(0177777), V("","#w"), m68020up },
2123 {"traphi.w", one(0051372), one(0177777), V("","#w"), m68020up },
2124 {"traple.w", one(0057772), one(0177777), V("","#w"), m68020up },
2125 {"trapls.w", one(0051772), one(0177777), V("","#w"), m68020up },
2126 {"traplt.w", one(0056772), one(0177777), V("","#w"), m68020up },
2127 {"trapmi.w", one(0055772), one(0177777), V("","#w"), m68020up },
2128 {"trapne.w", one(0053372), one(0177777), V("","#w"), m68020up },
2129 {"trappl.w", one(0055372), one(0177777), V("","#w"), m68020up },
2130 {"trapt.w", one(0050372), one(0177777), V("","#w"), m68020up },
2131 {"trapvc.w", one(0054372), one(0177777), V("","#w"), m68020up },
2132 {"trapvs.w", one(0054772), one(0177777), V("","#w"), m68020up },
2133
2134 {"trapcc.l", one(0052373), one(0177777), V("","#l"), m68020up },
2135 {"trapcs.l", one(0052773), one(0177777), V("","#l"), m68020up },
2136 {"trapeq.l", one(0053773), one(0177777), V("","#l"), m68020up },
2137 {"trapf.l", one(0050773), one(0177777), V("","#l"), m68020up },
2138 {"trapge.l", one(0056373), one(0177777), V("","#l"), m68020up },
2139 {"trapgt.l", one(0057373), one(0177777), V("","#l"), m68020up },
2140 {"traphi.l", one(0051373), one(0177777), V("","#l"), m68020up },
2141 {"traple.l", one(0057773), one(0177777), V("","#l"), m68020up },
2142 {"trapls.l", one(0051773), one(0177777), V("","#l"), m68020up },
2143 {"traplt.l", one(0056773), one(0177777), V("","#l"), m68020up },
2144 {"trapmi.l", one(0055773), one(0177777), V("","#l"), m68020up },
2145 {"trapne.l", one(0053373), one(0177777), V("","#l"), m68020up },
2146 {"trappl.l", one(0055373), one(0177777), V("","#l"), m68020up },
2147 {"trapt.l", one(0050373), one(0177777), V("","#l"), m68020up },
2148 {"trapvc.l", one(0054373), one(0177777), V("","#l"), m68020up },
2149 {"trapvs.l", one(0054773), one(0177777), V("","#l"), m68020up },
2150
2151 {"trapv", one(0047166), one(0177777), "", m68000up },
2152
2153
2154 {OP2(tst,b), one(0045000), one(0177700), ";b", m68000up },
2155 {OP2(tst,w), one(0045100), one(0177700), "*w", m68000up },
2156 {OP2(tst,l), one(0045200), one(0177700), "*l", m68000up },
2157 #ifdef ALLOW_DEFAULT_SIZES
2158 {"tst", one(0045200), one(0177700), "*l", m68000up },
2159 #endif
2160
2161 {"unlk", one(0047130), one(0177770), "As", m68000up },
2162 {"unpk", one(0100600), one(0170770), "DsDd#w", m68020up },
2163 {"unpk", one(0100610), one(0170770), "-s-d#w", m68020up },
2164
2165 /* Variable-sized branches */
2166
2167 {"jbsr", one(0060400), one(0177400), "Bg", m68000up },
2168 {"jbsr", one(0047200), one(0177700), "!s", m68000up },
2169 {"jra", one(0060000), one(0177400), "Bg", m68000up },
2170 {"jra", one(0047300), one(0177700), "!s", m68000up },
2171
2172 #ifdef MOTOROLA_SYNTAX
2173 {"jbra", one(0060000), one(0177400), "Bg", m68000up },
2174 {"jbra", one(0047300), one(0177700), "!s", m68000up },
2175 #endif
2176
2177 {"jhi", one(0061000), one(0177400), "Bg", m68000up },
2178 {"jls", one(0061400), one(0177400), "Bg", m68000up },
2179 {"jcc", one(0062000), one(0177400), "Bg", m68000up },
2180 {"jcs", one(0062400), one(0177400), "Bg", m68000up },
2181 {"jne", one(0063000), one(0177400), "Bg", m68000up },
2182 {"jeq", one(0063400), one(0177400), "Bg", m68000up },
2183 {"jvc", one(0064000), one(0177400), "Bg", m68000up },
2184 {"jvs", one(0064400), one(0177400), "Bg", m68000up },
2185 {"jpl", one(0065000), one(0177400), "Bg", m68000up },
2186 {"jmi", one(0065400), one(0177400), "Bg", m68000up },
2187 {"jge", one(0066000), one(0177400), "Bg", m68000up },
2188 {"jlt", one(0066400), one(0177400), "Bg", m68000up },
2189 {"jgt", one(0067000), one(0177400), "Bg", m68000up },
2190 {"jle", one(0067400), one(0177400), "Bg", m68000up },
2191
2192
2193 #ifdef MOTOROLA_SYNTAX
2194 /* Aliases: jbCC is the same as jCC */
2195 {"jbhi", one(0061000), one(0177400), "Bg", m68000up },
2196 {"jbls", one(0061400), one(0177400), "Bg", m68000up },
2197 {"jbcc", one(0062000), one(0177400), "Bg", m68000up },
2198 {"jbcs", one(0062400), one(0177400), "Bg", m68000up },
2199 {"jbne", one(0063000), one(0177400), "Bg", m68000up },
2200 {"jbeq", one(0063400), one(0177400), "Bg", m68000up },
2201 {"jbvc", one(0064000), one(0177400), "Bg", m68000up },
2202 {"jbvs", one(0064400), one(0177400), "Bg", m68000up },
2203 {"jbpl", one(0065000), one(0177400), "Bg", m68000up },
2204 {"jbmi", one(0065400), one(0177400), "Bg", m68000up },
2205 {"jbge", one(0066000), one(0177400), "Bg", m68000up },
2206 {"jblt", one(0066400), one(0177400), "Bg", m68000up },
2207 {"jbgt", one(0067000), one(0177400), "Bg", m68000up },
2208 {"jble", one(0067400), one(0177400), "Bg", m68000up },
2209 #endif /* MOTOROLA_SYNTAX */
2210
2211 /* aliases */
2212
2213 #ifdef MOTOROLA_SYNTAX
2214 {"move", one(0030000), one(0170000), "*w$d", m68000up },
2215 {"move", one(0030100), one(0170700), "*wAd", m68000up }, /* mova, written as mov */
2216 {"move", one(0040300), one(0177700), "Ss$s", m68000up }, /* Move from sr */
2217 {"move", one(0041300), one(0177700), "Cs$s", m68010up }, /* Move from ccr */
2218 {"move", one(0042300), one(0177700), ";wCd", m68000up }, /* mov to ccr */
2219 {"move", one(0043300), one(0177700), ";wSd", m68000up }, /* mov to sr */
2220
2221
2222 {"move", one(0020000), one(0170000), "*l$d", m68000up },
2223 {"move", one(0020100), one(0170700), "*lAd", m68000up },
2224 {"move", one(0070000), one(0170400), "MsDd", m68000up }, /* movq written as mov */
2225 {"move", one(0047140), one(0177770), "AsUd", m68000up }, /* mov to USP */
2226 {"move", one(0047150), one(0177770), "UdAs", m68000up }, /* mov from USP */
2227 #endif /* MOTOROLA_SYNTAX */
2228
2229
2230 {OP2(movq,l), one(0070000), one(0170400), "MsDd", m68000up },
2231 #ifdef MOTOROLA_SYNTAX
2232 {OP2(movq,l), one(0020000), one(0170000), "*l$d", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2233 {OP2(movq,l), one(0020100), one(0170700), "*lAd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2234 {OP2(movq,l), one(0047140), one(0177770), "AsUd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2235 {OP2(movq,l), one(0047150), one(0177770), "UdAs", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2236 #endif
2237 {OP2(moveq,l), one(0070000), one(0170400), "MsDd", m68000up },
2238 #ifdef MOTOROLA_SYNTAX
2239 {OP2(moveq,l), one(0020000), one(0170000), "*l$d", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2240 {OP2(moveq,l), one(0020100), one(0170700), "*lAd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2241 {OP2(moveq,l), one(0047140), one(0177770), "AsUd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2242 {OP2(moveq,l), one(0047150), one(0177770), "UdAs", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2243 #endif
2244 {OP2(mova,l), one(0020100), one(0170700), "*lAd", m68000up },
2245 {OP2(mova,w), one(0030100), one(0170700), "*wAd", m68000up },
2246 {OP2(mov,b), one(0010000), one(0170000), ";b$d", m68000up }, /* mov */
2247
2248 {OP2(mov,l), one(0070000), one(0170400), "MsDd", m68000up }, /* movq written as mov */
2249 {OP2(mov,l), one(0020000), one(0170000), "*l$d", m68000up },
2250 {OP2(mov,l), one(0020100), one(0170700), "*lAd", m68000up },
2251 {OP2(mov,l), one(0047140), one(0177770), "AsUd", m68000up }, /* mov to USP */
2252 {OP2(mov,l), one(0047150), one(0177770), "UdAs", m68000up }, /* mov from USP */
2253
2254 {"movc", one(0047173), one(0177777), "R1Jj", m68010up },
2255 {"movc", one(0047173), one(0177777), "R1#j", m68010up },
2256 {"movc", one(0047172), one(0177777), "JjR1", m68010up },
2257 {"movc", one(0047172), one(0177777), "#jR1", m68010up },
2258 {OP2(movm,l), one(0044300), one(0177700), "#w&s", m68000up }, /* movm reg to mem. */
2259 {OP2(movm,l), one(0044340), one(0177770), "#w-s", m68000up }, /* movm reg to autodecrement. */
2260 {"movml", one(0046300), one(0177700), "!s#w", m68000up }, /* movm mem to reg. */
2261 {"movml", one(0046330), one(0177770), "+s#w", m68000up }, /* movm autoinc to reg. */
2262 {"movml", one(0044300), one(0177700), "Lw&s", m68000up }, /* movm reg to mem. */
2263 {"movml", one(0044340), one(0177770), "lw-s", m68000up }, /* movm reg to autodecrement. */
2264 {"movml", one(0046300), one(0177700), "!sLw", m68000up }, /* movm mem to reg. */
2265 {"movml", one(0046330), one(0177770), "+sLw", m68000up }, /* movm autoinc to reg. */
2266 {OP2(movm,w), one(0044200), one(0177700), "#w&s", m68000up }, /* movm reg to mem. */
2267 {OP2(movm,w), one(0044240), one(0177770), "#w-s", m68000up }, /* movm reg to autodecrement. */
2268 {OP2(movm,w), one(0046200), one(0177700), "!s#w", m68000up }, /* movm mem to reg. */
2269 {OP2(movm,w), one(0046230), one(0177770), "+s#w", m68000up }, /* movm autoinc to reg. */
2270 {OP2(movm,w), one(0044200), one(0177700), "Lw&s", m68000up }, /* movm reg to mem. */
2271 {OP2(movm,w), one(0044240), one(0177770), "lw-s", m68000up }, /* movm reg to autodecrement. */
2272 {OP2(movm,w), one(0046200), one(0177700), "!sLw", m68000up }, /* movm mem to reg. */
2273 {OP2(movm,w), one(0046230), one(0177770), "+sLw", m68000up }, /* movm autoinc to reg. */
2274 {OP2(movp,l), one(0000510), one(0170770), "dsDd", m68000up }, /* memory to register */
2275 {OP2(movp,l), one(0000710), one(0170770), "Ddds", m68000up }, /* register to memory */
2276 {OP2(movp,w), one(0000410), one(0170770), "dsDd", m68000up }, /* memory to register */
2277 {OP2(movp,w), one(0000610), one(0170770), "Ddds", m68000up }, /* register to memory */
2278 {"movq", one(0070000), one(0170400), "MsDd", m68000up },
2279
2280 #ifdef MOTOROLA_SYNTAX
2281 {"movq", one(0020000), one(0170000), "*l$d", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2282 {"movq", one(0020100), one(0170700), "*lAd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2283 {"movq", one(0047140), one(0177770), "AsUd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2284 {"movq", one(0047150), one(0177770), "UdAs", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2285 #endif
2286
2287 {OP2(mov,w), one(0030000), one(0170000), "*w$d", m68000up },
2288 {OP2(mov,w), one(0030100), one(0170700), "*wAd", m68000up }, /* mova, written as mov */
2289 {OP2(mov,w), one(0040300), one(0177700), "Ss$s", m68000up }, /* Move from sr */
2290 {OP2(mov,w), one(0041300), one(0177700), "Cs$s", m68010up }, /* Move from ccr */
2291 {OP2(mov,w), one(0042300), one(0177700), ";wCd", m68000up }, /* mov to ccr */
2292 {OP2(mov,w), one(0043300), one(0177700), ";wSd", m68000up }, /* mov to sr */
2293 {OP2(movs,b), two(0007000, 0), two(0177700, 07777), "~sR1", m68010up },
2294 {OP2(movs,b), two(0007000, 04000), two(0177700, 07777), "R1~s", m68010up },
2295 {OP2(movs,l), two(0007200, 0), two(0177700, 07777), "~sR1", m68010up },
2296 {OP2(movs,l), two(0007200, 04000), two(0177700, 07777), "R1~s", m68010up },
2297 {OP2(movs,w), two(0007100, 0), two(0177700, 07777), "~sR1", m68010up },
2298 {OP2(movs,w), two(0007100, 04000), two(0177700, 07777), "R1~s", m68010up },
2299
2300 #ifdef MOTOROLA_SYNTAX
2301 {OP2(moveq,l), one(0070000), one(0170400), "MsDd", m68000up },
2302 {OP2(moveq,l), one(0070000), one(0170400), "MsDd", m68000up },
2303 {OP2(movea,l), one(0020100), one(0170700), "*lAd", m68000up },
2304 {OP2(movea,w), one(0030100), one(0170700), "*wAd", m68000up },
2305 {OP2(move,b), one(0010000), one(0170000), ";b$d", m68000up }, /* mov */
2306 {OP2(move,l), one(0070000), one(0170400), "MsDd", m68000up }, /* movq written as mov */
2307 {OP2(move,l), one(0020000), one(0170000), "*l$d", m68000up },
2308 {OP2(move,l), one(0020100), one(0170700), "*lAd", m68000up },
2309 {OP2(move,l), one(0047140), one(0177770), "AsUd", m68000up }, /* mov to USP */
2310 {OP2(move,l), one(0047150), one(0177770), "UdAs", m68000up }, /* mov from USP */
2311 {"movec", one(0047173), one(0177777), "R1Jj", m68010up },
2312 {"movec", one(0047173), one(0177777), "R1#j", m68010up },
2313 {"movec", one(0047172), one(0177777), "JjR1", m68010up },
2314 {"movec", one(0047172), one(0177777), "#jR1", m68010up },
2315 {OP2(movec,l), one(0047173), one(0177777), "R1Jj", m68010up },
2316 {OP2(movec,l), one(0047173), one(0177777), "R1#j", m68010up },
2317 {OP2(movec,l), one(0047172), one(0177777), "JjR1", m68010up },
2318 {OP2(movec,l), one(0047172), one(0177777), "#jR1", m68010up },
2319
2320 {"moveq", one(0070000), one(0170400), "MsDd", m68000up },
2321 {"moveq", one(0020000), one(0170000), "*l$d", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2322 {"moveq", one(0020100), one(0170700), "*lAd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2323 {"moveq", one(0047140), one(0177770), "AsUd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2324 {"moveq", one(0047150), one(0177770), "UdAs", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2325
2326 #endif /* MOTOROLA_SYNTAX */
2327
2328 };
2329
2330 int numopcodes=sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
2331
2332 struct m68k_opcode *endop = m68k_opcodes+sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
2333 #endif
2334 /*
2335 * Local Variables:
2336 * fill-column: 131
2337 * End:
2338 */
2339
2340
2341 /* end of m68k-opcode.h */
This page took 0.149718 seconds and 4 git commands to generate.