]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - include/opcode/m68k.h
* m68k.h: Merged m68kmri.h and m68k.h (using the former as a
[thirdparty/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(0xff20), "ce", m68040 },
530 {"cinvl", one(0xf400|SCOPE_LINE), one(0xff20), "ceas", m68040 },
531 {"cinvp", one(0xf400|SCOPE_PAGE), one(0xff20), "ceas", m68040 },
532
533 {"cpusha", one(0xf420|SCOPE_ALL), one(0xff20), "ce", m68040 },
534 {"cpushl", one(0xf420|SCOPE_LINE), one(0xff20), "ceas", m68040 },
535 {"cpushp", one(0xf420|SCOPE_PAGE), one(0xff20), "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
667 /* FIXME-NOW: The '040 book that I have claims that these should be
668 coded exactly like fadd. In fact, the table of opmodes calls them
669 fadd, fsadd, fdadd. That can't be right. If someone can give me the
670 right encoding, I'll fix it. By induction, I *think* the right
671 encoding is 38 & 3c, but I'm not sure.
672
673 in the mean time, if you know the encoding for the opmode field, you
674 can replace all of the "38),"'s and "3c),"'s below with the corrected
675 values and these guys should then just work. xoxorich. 31Aug91 */
676
677 #ifdef comment
678 {"fsabsb", two(0xF000, 0x5838), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
679 {"fsabsd", two(0xF000, 0x5438), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
680 {"fsabsl", two(0xF000, 0x4038), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
681 {"fsabsp", two(0xF000, 0x4C38), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
682 {"fsabss", two(0xF000, 0x4438), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
683 {"fsabsw", two(0xF000, 0x5038), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
684 {"fsabsx", two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
685 {"fsabsx", two(0xF000, 0x4838), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
686 {"fsabsx", two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiFt", m68040 },
687
688 {"fdabsb", two(0xF000, 0x583c), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040},
689 {"fdabsd", two(0xF000, 0x543c), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040},
690 {"fdabsl", two(0xF000, 0x403c), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040},
691 {"fdabsp", two(0xF000, 0x4C3c), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040},
692 {"fdabss", two(0xF000, 0x443c), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040},
693 {"fdabsw", two(0xF000, 0x503c), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040},
694 {"fdabsx", two(0xF000, 0x003c), two(0xF1C0, 0xE07F), "IiF8F7", m68040},
695 {"fdabsx", two(0xF000, 0x483c), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040},
696 {"fdabsx", two(0xF000, 0x003c), two(0xF1C0, 0xE07F), "IiFt", m68040},
697 #endif /* comment */
698
699 {OP2(facos,b), two(0xF000, 0x581C), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
700 {OP2(facos,d), two(0xF000, 0x541C), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
701 {OP2(facos,l), two(0xF000, 0x401C), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
702 {OP2(facos,p), two(0xF000, 0x4C1C), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
703 {OP2(facos,s), two(0xF000, 0x441C), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
704 {OP2(facos,w), two(0xF000, 0x501C), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
705 {OP2(facos,x), two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
706 {OP2(facos,x), two(0xF000, 0x481C), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
707 {OP2(facos,x), two(0xF000, 0x001C), two(0xF1C0, 0xE07F), "IiFt", mfloat },
708
709 {OP2(fadd,b), two(0xF000, 0x5822), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
710 {OP2(fadd,d), two(0xF000, 0x5422), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
711 {OP2(fadd,l), two(0xF000, 0x4022), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
712 {OP2(fadd,p), two(0xF000, 0x4C22), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
713 {OP2(fadd,s), two(0xF000, 0x4422), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
714 {OP2(fadd,w), two(0xF000, 0x5022), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
715 {OP2(fadd,x), two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
716 {OP2(fadd,x), two(0xF000, 0x4822), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
717 /* {"faddx", two(0xF000, 0x0022), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF removed */
718
719 {OP2(fsadd,b), two(0xF000, 0x5832), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
720 {OP2(fsadd,d), two(0xF000, 0x5432), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
721 {OP2(fsadd,l), two(0xF000, 0x4032), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
722 {OP2(fsadd,p), two(0xF000, 0x4C32), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
723 {OP2(fsadd,s), two(0xF000, 0x4432), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
724 {OP2(fsadd,w), two(0xF000, 0x5032), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
725 {OP2(fsadd,x), two(0xF000, 0x0032), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
726 {OP2(fsadd,x), two(0xF000, 0x4832), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
727 /* {"fsaddx", two(0xF000, 0x0032), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF removed */
728
729 {OP2(fdadd,b), two(0xF000, 0x5836), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
730 {OP2(fdadd,d), two(0xF000, 0x5436), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
731 {OP2(fdadd,l), two(0xF000, 0x4036), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
732 {OP2(fdadd,p), two(0xF000, 0x4C36), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
733 {OP2(fdadd,s), two(0xF000, 0x4436), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
734 {OP2(fdadd,w), two(0xF000, 0x5036), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
735 {OP2(fdadd,x), two(0xF000, 0x0036), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
736 {OP2(fdadd,x), two(0xF000, 0x4836), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
737 /* {"faddx", two(0xF000, 0x0036), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF removed */
738
739 {OP2(fasin,b), two(0xF000, 0x580C), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
740 {OP2(fasin,d), two(0xF000, 0x540C), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
741 {OP2(fasin,l), two(0xF000, 0x400C), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
742 {OP2(fasin,p), two(0xF000, 0x4C0C), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
743 {OP2(fasin,s), two(0xF000, 0x440C), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
744 {OP2(fasin,w), two(0xF000, 0x500C), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
745 {OP2(fasin,x), two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
746 {OP2(fasin,x), two(0xF000, 0x480C), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
747 {OP2(fasin,x), two(0xF000, 0x000C), two(0xF1C0, 0xE07F), "IiFt", mfloat },
748
749 {OP2(fatan,b), two(0xF000, 0x580A), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
750 {OP2(fatan,d), two(0xF000, 0x540A), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
751 {OP2(fatan,l), two(0xF000, 0x400A), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
752 {OP2(fatan,p), two(0xF000, 0x4C0A), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
753 {OP2(fatan,s), two(0xF000, 0x440A), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
754 {OP2(fatan,w), two(0xF000, 0x500A), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
755 {OP2(fatan,x), two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
756 {OP2(fatan,x), two(0xF000, 0x480A), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
757 {OP2(fatan,x), two(0xF000, 0x000A), two(0xF1C0, 0xE07F), "IiFt", mfloat },
758
759 {OP2(fatanh,b), two(0xF000, 0x580D), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
760 {OP2(fatanh,d), two(0xF000, 0x540D), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
761 {OP2(fatanh,l), two(0xF000, 0x400D), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
762 {OP2(fatanh,p), two(0xF000, 0x4C0D), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
763 {OP2(fatanh,s), two(0xF000, 0x440D), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
764 {OP2(fatanh,w), two(0xF000, 0x500D), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
765 {OP2(fatanh,x), two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
766 {OP2(fatanh,x), two(0xF000, 0x480D), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
767 {OP2(fatanh,x), two(0xF000, 0x000D), two(0xF1C0, 0xE07F), "IiFt", mfloat },
768
769 /* Fixed-size Float branches */
770
771 {"fbeq", one(0xF081), one(0xF1BF), "IdBW", mfloat },
772 {"fbf", one(0xF080), one(0xF1BF), "IdBW", mfloat },
773 {"fbge", one(0xF093), one(0xF1BF), "IdBW", mfloat },
774 {"fbgl", one(0xF096), one(0xF1BF), "IdBW", mfloat },
775 {"fbgle", one(0xF097), one(0xF1BF), "IdBW", mfloat },
776 {"fbgt", one(0xF092), one(0xF1BF), "IdBW", mfloat },
777 {"fble", one(0xF095), one(0xF1BF), "IdBW", mfloat },
778 {"fblt", one(0xF094), one(0xF1BF), "IdBW", mfloat },
779 {"fbne", one(0xF08E), one(0xF1BF), "IdBW", mfloat },
780 #ifndef MOTOROLA_SYNTAX
781 {"fbneq", one(0xF08E), one(0xF1BF), "IdBW", mfloat },
782 #endif
783 {"fbnge", one(0xF09C), one(0xF1BF), "IdBW", mfloat },
784 {"fbngl", one(0xF099), one(0xF1BF), "IdBW", mfloat },
785 {"fbngle", one(0xF098), one(0xF1BF), "IdBW", mfloat },
786 {"fbngt", one(0xF09D), one(0xF1BF), "IdBW", mfloat },
787 {"fbnle", one(0xF09A), one(0xF1BF), "IdBW", mfloat },
788 {"fbnlt", one(0xF09B), one(0xF1BF), "IdBW", mfloat },
789 {"fboge", one(0xF083), one(0xF1BF), "IdBW", mfloat },
790 {"fbogl", one(0xF086), one(0xF1BF), "IdBW", mfloat },
791 {"fbogt", one(0xF082), one(0xF1BF), "IdBW", mfloat },
792 {"fbole", one(0xF085), one(0xF1BF), "IdBW", mfloat },
793 {"fbolt", one(0xF084), one(0xF1BF), "IdBW", mfloat },
794 {"fbor", one(0xF087), one(0xF1BF), "IdBW", mfloat },
795 {"fbseq", one(0xF091), one(0xF1BF), "IdBW", mfloat },
796 {"fbsf", one(0xF090), one(0xF1BF), "IdBW", mfloat },
797 {"fbsne", one(0xF09E), one(0xF1BF), "IdBW", mfloat },
798 #ifndef MOTOROLA_SYNTAX
799 {"fbsneq", one(0xF09E), one(0xF1BF), "IdBW", mfloat },
800 #endif
801 {"fbst", one(0xF09F), one(0xF1BF), "IdBW", mfloat },
802 {"fbt", one(0xF08F), one(0xF1BF), "IdBW", mfloat },
803 {"fbueq", one(0xF089), one(0xF1BF), "IdBW", mfloat },
804 {"fbuge", one(0xF08B), one(0xF1BF), "IdBW", mfloat },
805 {"fbugt", one(0xF08A), one(0xF1BF), "IdBW", mfloat },
806 {"fbule", one(0xF08D), one(0xF1BF), "IdBW", mfloat },
807 {"fbult", one(0xF08C), one(0xF1BF), "IdBW", mfloat },
808 {"fbun", one(0xF088), one(0xF1BF), "IdBW", mfloat },
809
810 /* Float branches -- long (32-bit) displacements */
811
812 {"fbeql", one(0xF081), one(0xF1BF), "IdBC", mfloat },
813 {"fbfl", one(0xF080), one(0xF1BF), "IdBC", mfloat },
814 {"fbgel", one(0xF093), one(0xF1BF), "IdBC", mfloat },
815 {"fbgll", one(0xF096), one(0xF1BF), "IdBC", mfloat },
816 {"fbglel", one(0xF097), one(0xF1BF), "IdBC", mfloat },
817 {"fbgtl", one(0xF092), one(0xF1BF), "IdBC", mfloat },
818 {"fblel", one(0xF095), one(0xF1BF), "IdBC", mfloat },
819 {"fbltl", one(0xF094), one(0xF1BF), "IdBC", mfloat },
820 {"fbnel", one(0xF08E), one(0xF1BF), "IdBC", mfloat },
821 {"fbngel", one(0xF09C), one(0xF1BF), "IdBC", mfloat },
822 {"fbngll", one(0xF099), one(0xF1BF), "IdBC", mfloat },
823 {"fbnglel", one(0xF098), one(0xF1BF), "IdBC", mfloat },
824 {"fbngtl", one(0xF09D), one(0xF1BF), "IdBC", mfloat },
825 {"fbnlel", one(0xF09A), one(0xF1BF), "IdBC", mfloat },
826 {"fbnltl", one(0xF09B), one(0xF1BF), "IdBC", mfloat },
827 {"fbogel", one(0xF083), one(0xF1BF), "IdBC", mfloat },
828 {"fbogll", one(0xF086), one(0xF1BF), "IdBC", mfloat },
829 {"fbogtl", one(0xF082), one(0xF1BF), "IdBC", mfloat },
830 {"fbolel", one(0xF085), one(0xF1BF), "IdBC", mfloat },
831 {"fboltl", one(0xF084), one(0xF1BF), "IdBC", mfloat },
832 {"fborl", one(0xF087), one(0xF1BF), "IdBC", mfloat },
833 {"fbseql", one(0xF091), one(0xF1BF), "IdBC", mfloat },
834 {"fbsfl", one(0xF090), one(0xF1BF), "IdBC", mfloat },
835 {"fbsnel", one(0xF09E), one(0xF1BF), "IdBC", mfloat },
836 {"fbstl", one(0xF09F), one(0xF1BF), "IdBC", mfloat },
837 {"fbtl", one(0xF08F), one(0xF1BF), "IdBC", mfloat },
838 {"fbueql", one(0xF089), one(0xF1BF), "IdBC", mfloat },
839 {"fbugel", one(0xF08B), one(0xF1BF), "IdBC", mfloat },
840 {"fbugtl", one(0xF08A), one(0xF1BF), "IdBC", mfloat },
841 {"fbulel", one(0xF08D), one(0xF1BF), "IdBC", mfloat },
842 {"fbultl", one(0xF08C), one(0xF1BF), "IdBC", mfloat },
843 {"fbunl", one(0xF088), one(0xF1BF), "IdBC", mfloat },
844
845 {OP2(fcmp,b), two(0xF000, 0x5838), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
846 {OP2(fcmp,d), two(0xF000, 0x5438), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
847 {OP2(fcmp,l), two(0xF000, 0x4038), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
848 {OP2(fcmp,p), two(0xF000, 0x4C38), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
849 {OP2(fcmp,s), two(0xF000, 0x4438), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
850 {OP2(fcmp,w), two(0xF000, 0x5038), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
851 {OP2(fcmp,x), two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
852 {OP2(fcmp,x), two(0xF000, 0x4838), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
853 /* {"fcmpx", two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF removed */
854
855 {OP2(fcos,b), two(0xF000, 0x581D), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
856 {OP2(fcos,d), two(0xF000, 0x541D), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
857 {OP2(fcos,l), two(0xF000, 0x401D), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
858 {OP2(fcos,p), two(0xF000, 0x4C1D), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
859 {OP2(fcos,s), two(0xF000, 0x441D), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
860 {OP2(fcos,w), two(0xF000, 0x501D), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
861 {OP2(fcos,x), two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
862 {OP2(fcos,x), two(0xF000, 0x481D), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
863 {OP2(fcos,x), two(0xF000, 0x001D), two(0xF1C0, 0xE07F), "IiFt", mfloat },
864
865 {OP2(fcosh,b), two(0xF000, 0x5819), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
866 {OP2(fcosh,d), two(0xF000, 0x5419), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
867 {OP2(fcosh,l), two(0xF000, 0x4019), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
868 {OP2(fcosh,p), two(0xF000, 0x4C19), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
869 {OP2(fcosh,s), two(0xF000, 0x4419), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
870 {OP2(fcosh,w), two(0xF000, 0x5019), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
871 {OP2(fcosh,x), two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
872 {OP2(fcosh,x), two(0xF000, 0x4819), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
873 {OP2(fcosh,x), two(0xF000, 0x0019), two(0xF1C0, 0xE07F), "IiFt", mfloat },
874
875 {"fdbeq", two(0xF048, 0x0001), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
876 {"fdbf", two(0xF048, 0x0000), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
877 {"fdbge", two(0xF048, 0x0013), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
878 {"fdbgl", two(0xF048, 0x0016), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
879 {"fdbgle", two(0xF048, 0x0017), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
880 {"fdbgt", two(0xF048, 0x0012), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
881 {"fdble", two(0xF048, 0x0015), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
882 {"fdblt", two(0xF048, 0x0014), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
883 {"fdbne", two(0xF048, 0x000E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
884 #ifndef MOTOROLA_SYNTAX
885 {"fdbneq", two(0xF048, 0x000E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
886 #endif
887 {"fdbnge", two(0xF048, 0x001C), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
888 {"fdbngl", two(0xF048, 0x0019), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
889 {"fdbngle", two(0xF048, 0x0018), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
890 {"fdbngt", two(0xF048, 0x001D), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
891 {"fdbnle", two(0xF048, 0x001A), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
892 {"fdbnlt", two(0xF048, 0x001B), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
893 {"fdboge", two(0xF048, 0x0003), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
894 {"fdbogl", two(0xF048, 0x0006), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
895 {"fdbogt", two(0xF048, 0x0002), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
896 {"fdbole", two(0xF048, 0x0005), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
897 {"fdbolt", two(0xF048, 0x0004), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
898 {"fdbor", two(0xF048, 0x0007), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
899 {"fdbseq", two(0xF048, 0x0011), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
900 {"fdbsf", two(0xF048, 0x0010), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
901 {"fdbsne", two(0xF048, 0x001E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
902 #ifndef MOTOROLA_SYNTAX
903 {"fdbsneq", two(0xF048, 0x001E), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
904 #endif
905 {"fdbst", two(0xF048, 0x001F), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
906 {"fdbt", two(0xF048, 0x000F), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
907 {"fdbueq", two(0xF048, 0x0009), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
908 {"fdbuge", two(0xF048, 0x000B), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
909 {"fdbugt", two(0xF048, 0x000A), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
910 {"fdbule", two(0xF048, 0x000D), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
911 {"fdbult", two(0xF048, 0x000C), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
912 {"fdbun", two(0xF048, 0x0008), two(0xF1F8, 0xFFFF), "IiDsBw", mfloat },
913
914 {OP2(fdiv,b), two(0xF000, 0x5820), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
915 {OP2(fdiv,d), two(0xF000, 0x5420), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
916 {OP2(fdiv,l), two(0xF000, 0x4020), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
917 {OP2(fdiv,p), two(0xF000, 0x4C20), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
918 {OP2(fdiv,s), two(0xF000, 0x4420), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
919 {OP2(fdiv,w), two(0xF000, 0x5020), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
920 {OP2(fdiv,x), two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
921 {OP2(fdiv,x), two(0xF000, 0x4820), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
922 /* {"fdivx", two(0xF000, 0x0020), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
923
924 {OP2(fsdiv,b), two(0xF000, 0x5830), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
925 {OP2(fsdiv,d), two(0xF000, 0x5430), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
926 {OP2(fsdiv,l), two(0xF000, 0x4030), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
927 {OP2(fsdiv,p), two(0xF000, 0x4C30), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
928 {OP2(fsdiv,s), two(0xF000, 0x4430), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
929 {OP2(fsdiv,w), two(0xF000, 0x5030), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
930 {OP2(fsdiv,x), two(0xF000, 0x0030), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
931 {OP2(fsdiv,x), two(0xF000, 0x4830), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
932 /* {"fsdivx", two(0xF000, 0x0030), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF */
933
934 {OP2(fddiv,b), two(0xF000, 0x5834), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
935 {OP2(fddiv,d), two(0xF000, 0x5434), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
936 {OP2(fddiv,l), two(0xF000, 0x4034), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
937 {OP2(fddiv,p), two(0xF000, 0x4C34), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
938 {OP2(fddiv,s), two(0xF000, 0x4434), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
939 {OP2(fddiv,w), two(0xF000, 0x5034), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
940 {OP2(fddiv,x), two(0xF000, 0x0034), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
941 {OP2(fddiv,x), two(0xF000, 0x4834), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
942 /* {"fddivx", two(0xF000, 0x0034), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF */
943
944 {OP2(fetox,b), two(0xF000, 0x5810), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
945 {OP2(fetox,d), two(0xF000, 0x5410), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
946 {OP2(fetox,l), two(0xF000, 0x4010), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
947 {OP2(fetox,p), two(0xF000, 0x4C10), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
948 {OP2(fetox,s), two(0xF000, 0x4410), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
949 {OP2(fetox,w), two(0xF000, 0x5010), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
950 {OP2(fetox,x), two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
951 {OP2(fetox,x), two(0xF000, 0x4810), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
952 {OP2(fetox,x), two(0xF000, 0x0010), two(0xF1C0, 0xE07F), "IiFt", mfloat },
953
954 {OP2(fetoxm1,b), two(0xF000, 0x5808), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
955 {OP2(fetoxm1,d), two(0xF000, 0x5408), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
956 {OP2(fetoxm1,l), two(0xF000, 0x4008), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
957 {OP2(fetoxm1,p), two(0xF000, 0x4C08), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
958 {OP2(fetoxm1,s), two(0xF000, 0x4408), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
959 {OP2(fetoxm1,w), two(0xF000, 0x5008), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
960 {OP2(fetoxm1,x), two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
961 {OP2(fetoxm1,x), two(0xF000, 0x4808), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
962 {OP2(fetoxm1,x), two(0xF000, 0x0008), two(0xF1C0, 0xE07F), "IiFt", mfloat },
963
964 {OP2(fgetexp,b), two(0xF000, 0x581E), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
965 {OP2(fgetexp,d), two(0xF000, 0x541E), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
966 {OP2(fgetexp,l), two(0xF000, 0x401E), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
967 {OP2(fgetexp,p), two(0xF000, 0x4C1E), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
968 {OP2(fgetexp,s), two(0xF000, 0x441E), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
969 {OP2(fgetexp,w), two(0xF000, 0x501E), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
970 {OP2(fgetexp,x), two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
971 {OP2(fgetexp,x), two(0xF000, 0x481E), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
972 {OP2(fgetexp,x), two(0xF000, 0x001E), two(0xF1C0, 0xE07F), "IiFt", mfloat },
973
974 {OP2(fgetman,b), two(0xF000, 0x581F), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
975 {OP2(fgetman,d), two(0xF000, 0x541F), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
976 {OP2(fgetman,l), two(0xF000, 0x401F), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
977 {OP2(fgetman,p), two(0xF000, 0x4C1F), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
978 {OP2(fgetman,s), two(0xF000, 0x441F), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
979 {OP2(fgetman,w), two(0xF000, 0x501F), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
980 {OP2(fgetman,x), two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
981 {OP2(fgetman,x), two(0xF000, 0x481F), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
982 {OP2(fgetman,x), two(0xF000, 0x001F), two(0xF1C0, 0xE07F), "IiFt", mfloat },
983
984 {OP2(fint,b), two(0xF000, 0x5801), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
985 {OP2(fint,d), two(0xF000, 0x5401), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
986 {OP2(fint,l), two(0xF000, 0x4001), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
987 {OP2(fint,p), two(0xF000, 0x4C01), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
988 {OP2(fint,s), two(0xF000, 0x4401), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
989 {OP2(fint,w), two(0xF000, 0x5001), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
990 {OP2(fint,x), two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
991 {OP2(fint,x), two(0xF000, 0x4801), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
992 {OP2(fint,x), two(0xF000, 0x0001), two(0xF1C0, 0xE07F), "IiFt", mfloat },
993
994 {OP2(fintrz,b), two(0xF000, 0x5803), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
995 {OP2(fintrz,d), two(0xF000, 0x5403), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
996 {OP2(fintrz,l), two(0xF000, 0x4003), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
997 {OP2(fintrz,p), two(0xF000, 0x4C03), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
998 {OP2(fintrz,s), two(0xF000, 0x4403), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
999 {OP2(fintrz,w), two(0xF000, 0x5003), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1000 {OP2(fintrz,x), two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1001 {OP2(fintrz,x), two(0xF000, 0x4803), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1002 {OP2(fintrz,x), two(0xF000, 0x0003), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1003
1004 {OP2(flog10,b), two(0xF000, 0x5815), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1005 {OP2(flog10,d), two(0xF000, 0x5415), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1006 {OP2(flog10,l), two(0xF000, 0x4015), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1007 {OP2(flog10,p), two(0xF000, 0x4C15), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1008 {OP2(flog10,s), two(0xF000, 0x4415), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1009 {OP2(flog10,w), two(0xF000, 0x5015), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1010 {OP2(flog10,x), two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1011 {OP2(flog10,x), two(0xF000, 0x4815), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1012 {OP2(flog10,x), two(0xF000, 0x0015), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1013
1014 {OP2(flog2,b), two(0xF000, 0x5816), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1015 {OP2(flog2,d), two(0xF000, 0x5416), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1016 {OP2(flog2,l), two(0xF000, 0x4016), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1017 {OP2(flog2,p), two(0xF000, 0x4C16), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1018 {OP2(flog2,s), two(0xF000, 0x4416), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1019 {OP2(flog2,w), two(0xF000, 0x5016), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1020 {OP2(flog2,x), two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1021 {OP2(flog2,x), two(0xF000, 0x4816), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1022 {OP2(flog2,x), two(0xF000, 0x0016), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1023
1024 {OP2(flogn,b), two(0xF000, 0x5814), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1025 {OP2(flogn,d), two(0xF000, 0x5414), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1026 {OP2(flogn,l), two(0xF000, 0x4014), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1027 {OP2(flogn,p), two(0xF000, 0x4C14), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1028 {OP2(flogn,s), two(0xF000, 0x4414), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1029 {OP2(flogn,w), two(0xF000, 0x5014), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1030 {OP2(flogn,x), two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1031 {OP2(flogn,x), two(0xF000, 0x4814), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1032 {OP2(flogn,x), two(0xF000, 0x0014), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1033
1034 {OP2(flognp1,b), two(0xF000, 0x5806), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1035 {OP2(flognp1,d), two(0xF000, 0x5406), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1036 {OP2(flognp1,l), two(0xF000, 0x4006), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1037 {OP2(flognp1,p), two(0xF000, 0x4C06), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1038 {OP2(flognp1,s), two(0xF000, 0x4406), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1039 {OP2(flognp1,w), two(0xF000, 0x5006), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1040 {OP2(flognp1,x), two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1041 {OP2(flognp1,x), two(0xF000, 0x4806), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1042 {OP2(flognp1,x), two(0xF000, 0x0006), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1043
1044 {OP2(fmod,b), two(0xF000, 0x5821), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1045 {OP2(fmod,d), two(0xF000, 0x5421), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1046 {OP2(fmod,l), two(0xF000, 0x4021), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1047 {OP2(fmod,p), two(0xF000, 0x4C21), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1048 {OP2(fmod,s), two(0xF000, 0x4421), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1049 {OP2(fmod,w), two(0xF000, 0x5021), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1050 {OP2(fmod,x), two(0xF000, 0x0021), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1051 {OP2(fmod,x), two(0xF000, 0x4821), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1052 /* {OP2(fmod,x), two(0xF000, 0x0021), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
1053
1054 {OP2(fmove,b), two(0xF000, 0x5800), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat }, /* fmove from <ea> to fp<n> */
1055 {OP2(fmove,b), two(0xF000, 0x7800), two(0xF1C0, 0xFC7F), "IiF7@b", mfloat }, /* fmove from fp<n> to <ea> */
1056 {OP2(fmove,d), two(0xF000, 0x5400), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat }, /* fmove from <ea> to fp<n> */
1057 {OP2(fmove,d), two(0xF000, 0x7400), two(0xF1C0, 0xFC7F), "IiF7@F", mfloat }, /* fmove from fp<n> to <ea> */
1058 {OP2(fmove,l), two(0xF000, 0x4000), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat }, /* fmove from <ea> to fp<n> */
1059 {OP2(fmove,l), two(0xF000, 0x6000), two(0xF1C0, 0xFC7F), "IiF7@l", mfloat }, /* fmove from fp<n> to <ea> */
1060 /* Warning: The addressing modes on these are probably not right:
1061 esp, Areg direct is only allowed for FPI */
1062 /* fmove.l from/to system control registers: */
1063 {OP2(fmove,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s", mfloat },
1064 {OP2(fmove,l), two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ls8", mfloat },
1065
1066 /* {OP2(fmove,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s", mfloat },
1067 {OP2(fmove,l), two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*ss8", mfloat }, */
1068
1069 {OP2(fmove,p), two(0xF000, 0x4C00), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat }, /* fmove from <ea> to fp<n> */
1070 {OP2(fmove,p), two(0xF000, 0x6C00), two(0xF1C0, 0xFC00), "IiF7@pkC", mfloat }, /* fmove.p with k-factors: */
1071 {OP2(fmove,p), two(0xF000, 0x7C00), two(0xF1C0, 0xFC0F), "IiF7@pDk", mfloat }, /* fmove.p with k-factors: */
1072
1073 {OP2(fmove,s), two(0xF000, 0x4400), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat }, /* fmove from <ea> to fp<n> */
1074 {OP2(fmove,s), two(0xF000, 0x6400), two(0xF1C0, 0xFC7F), "IiF7@f", mfloat }, /* fmove from fp<n> to <ea> */
1075 {OP2(fmove,w), two(0xF000, 0x5000), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat }, /* fmove from <ea> to fp<n> */
1076 {OP2(fmove,w), two(0xF000, 0x7000), two(0xF1C0, 0xFC7F), "IiF7@w", mfloat }, /* fmove from fp<n> to <ea> */
1077 {OP2(fmove,x), two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiF8F7", mfloat }, /* fmove from <ea> to fp<n> */
1078 {OP2(fmove,x), two(0xF000, 0x4800), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat }, /* fmove from <ea> to fp<n> */
1079 {OP2(fmove,x), two(0xF000, 0x6800), two(0xF1C0, 0xFC7F), "IiF7@x", mfloat }, /* fmove from fp<n> to <ea> */
1080 /* JF removed {"fmovex", two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiFt", mfloat }, / * fmove from <ea> to fp<n> */
1081
1082 {OP2(fsmove,b), two(0xF000, 0x5800), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 }, /* fmove from <ea> to fp<n> */
1083 {OP2(fsmove,d), two(0xF000, 0x5400), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 }, /* fmove from <ea> to fp<n> */
1084 {OP2(fsmove,l), two(0xF000, 0x4000), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 }, /* fmove from <ea> to fp<n> */
1085 {OP2(fsmove,s), two(0xF000, 0x4400), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 }, /* fmove from <ea> to fp<n> */
1086 {OP2(fsmove,w), two(0xF000, 0x5000), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 }, /* fmove from <ea> to fp<n> */
1087 {OP2(fsmove,x), two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiF8F7", m68040 }, /* fmove from <ea> to fp<n> */
1088 {OP2(fsmove,x), two(0xF000, 0x4800), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 }, /* fmove from <ea> to fp<n> */
1089 /* JF removed {"fsmovex", two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiFt", m68040 }, / * fmove from <ea> to fp<n> */
1090
1091 {OP2(fdmove,b), two(0xF000, 0x5800), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 }, /* fmove from <ea> to fp<n> */
1092 {OP2(fdmove,d), two(0xF000, 0x5400), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 }, /* fmove from <ea> to fp<n> */
1093 {OP2(fdmove,l), two(0xF000, 0x4000), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 }, /* fmove from <ea> to fp<n> */
1094 {OP2(fdmove,s), two(0xF000, 0x4400), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 }, /* fmove from <ea> to fp<n> */
1095 {OP2(fdmove,w), two(0xF000, 0x5000), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 }, /* fmove from <ea> to fp<n> */
1096 {OP2(fdmove,x), two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiF8F7", m68040 }, /* fmove from <ea> to fp<n> */
1097 {OP2(fdmove,x), two(0xF000, 0x4800), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 }, /* fmove from <ea> to fp<n> */
1098 /* JF removed {"fdmovex", two(0xF000, 0x0000), two(0xF1C0, 0xE07F), "IiFt", m68040 }, / * fmove from <ea> to fp<n> */
1099
1100 {OP2(fmovecr,x), two(0xF000, 0x5C00), two(0xF1FF, 0xFC00), "Ii#CF7", mfloat }, /* fmovecr.x #ccc, FPn */
1101 {"fmovecr", two(0xF000, 0x5C00), two(0xF1FF, 0xFC00), "Ii#CF7", mfloat },
1102
1103 /* Other fmovemx. */
1104 {OP2(fmovem,x), two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat }, /* reg to control, static and dynamic: */
1105 {OP2(fmovem,x), two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk", mfloat }, /* from control to reg, static and dynamic: */
1106
1107 {OP2(fmovem,x), two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat }, /* to control, static and dynamic: */
1108 {OP2(fmovem,x), two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s", mfloat }, /* to control, static and dynamic: */
1109
1110 {OP2(fmovem,x), two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3", mfloat }, /* from control, static and dynamic: */
1111 {OP2(fmovem,x), two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3", mfloat }, /* from control, static and dynamic: */
1112
1113 {OP2(fmovem,x), two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat }, /* reg to autodecrement, static and dynamic */
1114 {OP2(fmovem,x), two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat }, /* to autodecrement, static and dynamic */
1115 {OP2(fmovem,x), two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat }, /* to autodecrement, static and dynamic */
1116
1117 {OP2(fmovem,x), two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk", mfloat }, /* from autoinc to reg, static and dynamic: */
1118 {OP2(fmovem,x), two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3", mfloat }, /* from autoincrement, static and dynamic: */
1119 {OP2(fmovem,x), two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3", mfloat }, /* from autoincrement, static and dynamic: */
1120
1121 {OP2(fmovem,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8@s", mfloat },
1122 {OP2(fmovem,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Ii#8@s", mfloat },
1123 {OP2(fmovem,l), two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s", mfloat },
1124
1125 {OP2(fmovem,l), two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*sL8", mfloat },
1126 {OP2(fmovem,l), two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*s#8", mfloat },
1127 {OP2(fmovem,l), two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ss8", mfloat },
1128
1129 /* fmovemx with register lists */
1130 {"fmovem", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "IdL3-s", mfloat }, /* to autodec, static & dynamic */
1131 {"fmovem", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Idl3&s", mfloat }, /* to control, static and dynamic */
1132 {"fmovem", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+sl3", mfloat }, /* from autoinc, static & dynamic */
1133 {"fmovem", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&sl3", mfloat }, /* from control, static and dynamic */
1134
1135 /* Alternate mnemonics for GNU as and GNU CC */
1136 {"fmovem", two(0xF020, 0xE000), two(0xF1F8, 0xFF00), "Id#3-s", mfloat }, /* to autodecrement, static and dynamic */
1137 {"fmovem", two(0xF020, 0xE800), two(0xF1F8, 0xFF8F), "IiDk-s", mfloat }, /* to autodecrement, static and dynamic */
1138
1139 {"fmovem", two(0xF000, 0xF000), two(0xF1C0, 0xFF00), "Id#3&s", mfloat }, /* to control, static and dynamic: */
1140 {"fmovem", two(0xF000, 0xF800), two(0xF1C0, 0xFF8F), "IiDk&s", mfloat }, /* to control, static and dynamic: */
1141
1142 {"fmovem", two(0xF018, 0xD000), two(0xF1F8, 0xFF00), "Id+s#3", mfloat }, /* from autoincrement, static and dynamic: */
1143 {"fmovem", two(0xF018, 0xD800), two(0xF1F8, 0xFF8F), "Ii+sDk", mfloat }, /* from autoincrement, static and dynamic: */
1144
1145 {"fmovem", two(0xF000, 0xD000), two(0xF1C0, 0xFF00), "Id&s#3", mfloat }, /* from control, static and dynamic: */
1146 {"fmovem", two(0xF000, 0xD800), two(0xF1C0, 0xFF8F), "Ii&sDk", mfloat }, /* from control, static and dynamic: */
1147
1148 /* fmoveml a FP-control register */
1149 {"fmovem", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "Iis8@s", mfloat },
1150 {"fmovem", two(0xF000, 0x8000), two(0xF1C0, 0xE3FF), "Ii*ss8", mfloat },
1151
1152 /* fmoveml a FP-control reglist */
1153 {"fmovem", two(0xF000, 0xA000), two(0xF1C0, 0xE3FF), "IiL8@s", mfloat },
1154 {"fmovem", two(0xF000, 0x8000), two(0xF2C0, 0xE3FF), "Ii*sL8", mfloat },
1155
1156 {OP2(fmul,b), two(0xF000, 0x5823), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1157 {OP2(fmul,d), two(0xF000, 0x5423), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1158 {OP2(fmul,l), two(0xF000, 0x4023), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1159 {OP2(fmul,p), two(0xF000, 0x4C23), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1160 {OP2(fmul,s), two(0xF000, 0x4423), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1161 {OP2(fmul,w), two(0xF000, 0x5023), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1162 {OP2(fmul,x), two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1163 {OP2(fmul,x), two(0xF000, 0x4823), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1164 /* {"fmulx", two(0xF000, 0x0023), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
1165
1166 {OP2(fsmul,b), two(0xF000, 0x5833), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1167 {OP2(fsmul,d), two(0xF000, 0x5433), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1168 {OP2(fsmul,l), two(0xF000, 0x4033), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1169 {OP2(fsmul,p), two(0xF000, 0x4C33), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1170 {OP2(fsmul,s), two(0xF000, 0x4433), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1171 {OP2(fsmul,w), two(0xF000, 0x5033), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1172 {OP2(fsmul,x), two(0xF000, 0x0033), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1173 {OP2(fsmul,x), two(0xF000, 0x4833), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1174 /* {"fsmulx", two(0xF000, 0x0033), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF */
1175
1176 {OP2(fdmul,b), two(0xF000, 0x5837), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1177 {OP2(fdmul,d), two(0xF000, 0x5437), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1178 {OP2(fdmul,l), two(0xF000, 0x4037), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1179 {OP2(fdmul,p), two(0xF000, 0x4C37), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1180 {OP2(fdmul,s), two(0xF000, 0x4437), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1181 {OP2(fdmul,w), two(0xF000, 0x5037), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1182 {OP2(fdmul,x), two(0xF000, 0x0037), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1183 {OP2(fdmul,x), two(0xF000, 0x4837), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1184 /* {"dfmulx", two(0xF000, 0x0037), two(0xF1C0, 0xE07F), "IiFt", m68040 }, JF */
1185
1186 {OP2(fneg,b), two(0xF000, 0x581A), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1187 {OP2(fneg,d), two(0xF000, 0x541A), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1188 {OP2(fneg,l), two(0xF000, 0x401A), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1189 {OP2(fneg,p), two(0xF000, 0x4C1A), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1190 {OP2(fneg,s), two(0xF000, 0x441A), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1191 {OP2(fneg,w), two(0xF000, 0x501A), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1192 {OP2(fneg,x), two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1193 {OP2(fneg,x), two(0xF000, 0x481A), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1194 {OP2(fneg,x), two(0xF000, 0x001A), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1195
1196 {OP2(fsneg,b), two(0xF000, 0x585A), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1197 {OP2(fsneg,d), two(0xF000, 0x545A), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1198 {OP2(fsneg,l), two(0xF000, 0x405A), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1199 {OP2(fsneg,p), two(0xF000, 0x4C5A), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1200 {OP2(fsneg,s), two(0xF000, 0x445A), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1201 {OP2(fsneg,w), two(0xF000, 0x505A), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1202 {OP2(fsneg,x), two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1203 {OP2(fsneg,x), two(0xF000, 0x485A), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1204 {OP2(fsneg,x), two(0xF000, 0x005A), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1205
1206 {OP2(fdneg,b), two(0xF000, 0x585E), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1207 {OP2(fdneg,d), two(0xF000, 0x545E), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1208 {OP2(fdneg,l), two(0xF000, 0x405E), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1209 {OP2(fdneg,p), two(0xF000, 0x4C5E), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1210 {OP2(fdneg,s), two(0xF000, 0x445E), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1211 {OP2(fdneg,w), two(0xF000, 0x505E), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1212 {OP2(fdneg,x), two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1213 {OP2(fdneg,x), two(0xF000, 0x485E), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1214 {OP2(fdneg,x), two(0xF000, 0x005E), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1215
1216 {"fnop", two(0xF280, 0x0000), two(0xFFFF, 0xFFFF), "Ii", mfloat },
1217
1218 {OP2(frem,b), two(0xF000, 0x5825), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1219 {OP2(frem,d), two(0xF000, 0x5425), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1220 {OP2(frem,l), two(0xF000, 0x4025), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1221 {OP2(frem,p), two(0xF000, 0x4C25), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1222 {OP2(frem,s), two(0xF000, 0x4425), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1223 {OP2(frem,w), two(0xF000, 0x5025), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1224 {OP2(frem,x), two(0xF000, 0x0025), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1225 {OP2(frem,x), two(0xF000, 0x4825), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1226 /* {"fremx", two(0xF000, 0x0025), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
1227
1228 {"frestore", one(0xF140), one(0xF1C0), "Id&s", mfloat },
1229 {"frestore", one(0xF158), one(0xF1F8), "Id+s", mfloat },
1230 {"fsave", one(0xF100), one(0xF1C0), "Id&s", mfloat },
1231 {"fsave", one(0xF120), one(0xF1F8), "Id-s", mfloat },
1232
1233 {OP2(fscale,b), two(0xF000, 0x5826), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1234 {OP2(fscale,d), two(0xF000, 0x5426), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1235 {OP2(fscale,l), two(0xF000, 0x4026), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1236 {OP2(fscale,p), two(0xF000, 0x4C26), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1237 {OP2(fscale,s), two(0xF000, 0x4426), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1238 {OP2(fscale,w), two(0xF000, 0x5026), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1239 {OP2(fscale,x), two(0xF000, 0x0026), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1240 {OP2(fscale,x), two(0xF000, 0x4826), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1241 /* {"fscalex", two(0xF000, 0x0026), two(0xF1C0, 0xE07F), "IiFt", mfloat }, JF */
1242
1243 /* $ is necessary to prevent the assembler from using PC-relative.
1244 If @ were used, "label: fseq label" could produce "ftrapeq",
1245 because "label" became "pc@label". */
1246 {"fseq", two(0xF040, 0x0001), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1247 {"fsf", two(0xF040, 0x0000), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1248 {"fsge", two(0xF040, 0x0013), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1249 {"fsgl", two(0xF040, 0x0016), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1250 {"fsgle", two(0xF040, 0x0017), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1251 {"fsgt", two(0xF040, 0x0012), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1252 {"fsle", two(0xF040, 0x0015), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1253 {"fslt", two(0xF040, 0x0014), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1254 {"fsne", two(0xF040, 0x000E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1255 #ifndef MOTOROLA_SYNTAX
1256 {"fsneq", two(0xF040, 0x000E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1257 #endif
1258 {"fsnge", two(0xF040, 0x001C), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1259 {"fsngl", two(0xF040, 0x0019), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1260 {"fsngle", two(0xF040, 0x0018), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1261 {"fsngt", two(0xF040, 0x001D), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1262 {"fsnle", two(0xF040, 0x001A), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1263 {"fsnlt", two(0xF040, 0x001B), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1264 {"fsoge", two(0xF040, 0x0003), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1265 {"fsogl", two(0xF040, 0x0006), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1266 {"fsogt", two(0xF040, 0x0002), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1267 {"fsole", two(0xF040, 0x0005), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1268 {"fsolt", two(0xF040, 0x0004), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1269 {"fsor", two(0xF040, 0x0007), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1270 {"fsseq", two(0xF040, 0x0011), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1271 {"fssf", two(0xF040, 0x0010), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1272 {"fssne", two(0xF040, 0x001E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1273 #ifndef MOTOROLA_SYNTAX
1274 {"fssneq", two(0xF040, 0x001E), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1275 #endif
1276 {"fsst", two(0xF040, 0x001F), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1277 {"fst", two(0xF040, 0x000F), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1278 {"fsueq", two(0xF040, 0x0009), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1279 {"fsuge", two(0xF040, 0x000B), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1280 {"fsugt", two(0xF040, 0x000A), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1281 {"fsule", two(0xF040, 0x000D), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1282 {"fsult", two(0xF040, 0x000C), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1283 {"fsun", two(0xF040, 0x0008), two(0xF1C0, 0xFFFF), "Ii$s", mfloat },
1284
1285 {OP2(fsgldiv,b), two(0xF000, 0x5824), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1286 {OP2(fsgldiv,d), two(0xF000, 0x5424), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1287 {OP2(fsgldiv,l), two(0xF000, 0x4024), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1288 {OP2(fsgldiv,p), two(0xF000, 0x4C24), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1289 {OP2(fsgldiv,s), two(0xF000, 0x4424), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1290 {OP2(fsgldiv,w), two(0xF000, 0x5024), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1291 {OP2(fsgldiv,x), two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1292 {OP2(fsgldiv,x), two(0xF000, 0x4824), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1293 {OP2(fsgldiv,x), two(0xF000, 0x0024), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1294
1295 {OP2(fsglmul,b), two(0xF000, 0x5827), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1296 {OP2(fsglmul,d), two(0xF000, 0x5427), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1297 {OP2(fsglmul,l), two(0xF000, 0x4027), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1298 {OP2(fsglmul,p), two(0xF000, 0x4C27), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1299 {OP2(fsglmul,s), two(0xF000, 0x4427), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1300 {OP2(fsglmul,w), two(0xF000, 0x5027), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1301 {OP2(fsglmul,x), two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1302 {OP2(fsglmul,x), two(0xF000, 0x4827), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1303 {OP2(fsglmul,x), two(0xF000, 0x0027), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1304
1305 {OP2(fsin,b), two(0xF000, 0x580E), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1306 {OP2(fsin,d), two(0xF000, 0x540E), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1307 {OP2(fsin,l), two(0xF000, 0x400E), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1308 {OP2(fsin,p), two(0xF000, 0x4C0E), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1309 {OP2(fsin,s), two(0xF000, 0x440E), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1310 {OP2(fsin,w), two(0xF000, 0x500E), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1311 {OP2(fsin,x), two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1312 {OP2(fsin,x), two(0xF000, 0x480E), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1313 {OP2(fsin,x), two(0xF000, 0x000E), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1314
1315 {OP2(fsinh,b), two(0xF000, 0x5802), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1316 {OP2(fsinh,d), two(0xF000, 0x5402), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1317 {OP2(fsinh,l), two(0xF000, 0x4002), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1318 {OP2(fsinh,p), two(0xF000, 0x4C02), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1319 {OP2(fsinh,s), two(0xF000, 0x4402), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1320 {OP2(fsinh,w), two(0xF000, 0x5002), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1321 {OP2(fsinh,x), two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1322 {OP2(fsinh,x), two(0xF000, 0x4802), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1323 {OP2(fsinh,x), two(0xF000, 0x0002), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1324
1325 {OP2(fsincos,b), two(0xF000, 0x5830), two(0xF1C0, 0xFC78), "Ii;bF3F7", mfloat },
1326 {OP2(fsincos,d), two(0xF000, 0x5430), two(0xF1C0, 0xFC78), "Ii;FF3F7", mfloat },
1327 {OP2(fsincos,l), two(0xF000, 0x4030), two(0xF1C0, 0xFC78), "Ii;lF3F7", mfloat },
1328 {OP2(fsincos,p), two(0xF000, 0x4C30), two(0xF1C0, 0xFC78), "Ii;pF3F7", mfloat },
1329 {OP2(fsincos,s), two(0xF000, 0x4430), two(0xF1C0, 0xFC78), "Ii;fF3F7", mfloat },
1330 {OP2(fsincos,w), two(0xF000, 0x5030), two(0xF1C0, 0xFC78), "Ii;wF3F7", mfloat },
1331 {OP2(fsincos,x), two(0xF000, 0x0030), two(0xF1C0, 0xE078), "IiF8F3F7", mfloat },
1332 {OP2(fsincos,x), two(0xF000, 0x4830), two(0xF1C0, 0xFC78), "Ii;xF3F7", mfloat },
1333
1334 {OP2(fsqrt,b), two(0xF000, 0x5804), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1335 {OP2(fsqrt,d), two(0xF000, 0x5404), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1336 {OP2(fsqrt,l), two(0xF000, 0x4004), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1337 {OP2(fsqrt,p), two(0xF000, 0x4C04), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1338 {OP2(fsqrt,s), two(0xF000, 0x4404), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1339 {OP2(fsqrt,w), two(0xF000, 0x5004), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1340 {OP2(fsqrt,x), two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1341 {OP2(fsqrt,x), two(0xF000, 0x4804), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1342 {OP2(fsqrt,x), two(0xF000, 0x0004), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1343
1344 {OP2(fssqrt,b), two(0xF000, 0x5841), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1345 {OP2(fssqrt,d), two(0xF000, 0x5441), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1346 {OP2(fssqrt,l), two(0xF000, 0x4041), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1347 {OP2(fssqrt,p), two(0xF000, 0x4C41), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1348 {OP2(fssqrt,s), two(0xF000, 0x4441), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1349 {OP2(fssqrt,w), two(0xF000, 0x5041), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1350 {OP2(fssqrt,x), two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1351 {OP2(fssqrt,x), two(0xF000, 0x4841), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1352 {OP2(fssqrt,x), two(0xF000, 0x0041), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1353
1354 {OP2(fdsqrt,b), two(0xF000, 0x5845), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1355 {OP2(fdsqrt,d), two(0xF000, 0x5445), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1356 {OP2(fdsqrt,l), two(0xF000, 0x4045), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1357 {OP2(fdsqrt,p), two(0xF000, 0x4C45), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1358 {OP2(fdsqrt,s), two(0xF000, 0x4445), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1359 {OP2(fdsqrt,w), two(0xF000, 0x5045), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1360 {OP2(fdsqrt,x), two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1361 {OP2(fdsqrt,x), two(0xF000, 0x4845), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1362 {OP2(fdsqrt,x), two(0xF000, 0x0045), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1363
1364 {OP2(fsub,b), two(0xF000, 0x5828), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1365 {OP2(fsub,d), two(0xF000, 0x5428), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1366 {OP2(fsub,l), two(0xF000, 0x4028), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1367 {OP2(fsub,p), two(0xF000, 0x4C28), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1368 {OP2(fsub,s), two(0xF000, 0x4428), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1369 {OP2(fsub,w), two(0xF000, 0x5028), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1370 {OP2(fsub,x), two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1371 {OP2(fsub,x), two(0xF000, 0x4828), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1372 {OP2(fsub,x), two(0xF000, 0x0028), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1373
1374 {OP2(fssub,b), two(0xF000, 0x5838), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1375 {OP2(fssub,d), two(0xF000, 0x5438), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1376 {OP2(fssub,l), two(0xF000, 0x4038), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1377 {OP2(fssub,p), two(0xF000, 0x4C38), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1378 {OP2(fssub,s), two(0xF000, 0x4438), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1379 {OP2(fssub,w), two(0xF000, 0x5038), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1380 {OP2(fssub,x), two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1381 {OP2(fssub,x), two(0xF000, 0x4838), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1382 {OP2(fssub,x), two(0xF000, 0x0038), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1383
1384 {OP2(fdsub,b), two(0xF000, 0x583c), two(0xF1C0, 0xFC7F), "Ii;bF7", m68040 },
1385 {OP2(fdsub,d), two(0xF000, 0x543c), two(0xF1C0, 0xFC7F), "Ii;FF7", m68040 },
1386 {OP2(fdsub,l), two(0xF000, 0x403c), two(0xF1C0, 0xFC7F), "Ii;lF7", m68040 },
1387 {OP2(fdsub,p), two(0xF000, 0x4C3c), two(0xF1C0, 0xFC7F), "Ii;pF7", m68040 },
1388 {OP2(fdsub,s), two(0xF000, 0x443c), two(0xF1C0, 0xFC7F), "Ii;fF7", m68040 },
1389 {OP2(fdsub,w), two(0xF000, 0x503c), two(0xF1C0, 0xFC7F), "Ii;wF7", m68040 },
1390 {OP2(fdsub,x), two(0xF000, 0x003c), two(0xF1C0, 0xE07F), "IiF8F7", m68040 },
1391 {OP2(fdsub,x), two(0xF000, 0x483c), two(0xF1C0, 0xFC7F), "Ii;xF7", m68040 },
1392 {OP2(fdsub,x), two(0xF000, 0x003c), two(0xF1C0, 0xE07F), "IiFt", m68040 },
1393
1394 {OP2(ftan,b), two(0xF000, 0x580F), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1395 {OP2(ftan,d), two(0xF000, 0x540F), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1396 {OP2(ftan,l), two(0xF000, 0x400F), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1397 {OP2(ftan,p), two(0xF000, 0x4C0F), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1398 {OP2(ftan,s), two(0xF000, 0x440F), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1399 {OP2(ftan,w), two(0xF000, 0x500F), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1400 {OP2(ftan,x), two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1401 {OP2(ftan,x), two(0xF000, 0x480F), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1402 {OP2(ftan,x), two(0xF000, 0x000F), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1403
1404 {OP2(ftanh,b), two(0xF000, 0x5809), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1405 {OP2(ftanh,d), two(0xF000, 0x5409), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1406 {OP2(ftanh,l), two(0xF000, 0x4009), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1407 {OP2(ftanh,p), two(0xF000, 0x4C09), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1408 {OP2(ftanh,s), two(0xF000, 0x4409), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1409 {OP2(ftanh,w), two(0xF000, 0x5009), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1410 {OP2(ftanh,x), two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1411 {OP2(ftanh,x), two(0xF000, 0x4809), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1412 {OP2(ftanh,x), two(0xF000, 0x0009), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1413
1414 {OP2(ftentox,b), two(0xF000, 0x5812), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1415 {OP2(ftentox,d), two(0xF000, 0x5412), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1416 {OP2(ftentox,l), two(0xF000, 0x4012), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1417 {OP2(ftentox,p), two(0xF000, 0x4C12), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1418 {OP2(ftentox,s), two(0xF000, 0x4412), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1419 {OP2(ftentox,w), two(0xF000, 0x5012), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1420 {OP2(ftentox,x), two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1421 {OP2(ftentox,x), two(0xF000, 0x4812), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1422 {OP2(ftentox,x), two(0xF000, 0x0012), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1423
1424 {"ftrapeq", two(0xF07C, 0x0001), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1425 {"ftrapf", two(0xF07C, 0x0000), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1426 {"ftrapge", two(0xF07C, 0x0013), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1427 {"ftrapgl", two(0xF07C, 0x0016), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1428 {"ftrapgle", two(0xF07C, 0x0017), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1429 {"ftrapgt", two(0xF07C, 0x0012), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1430 {"ftraple", two(0xF07C, 0x0015), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1431 {"ftraplt", two(0xF07C, 0x0014), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1432 {"ftrapne", two(0xF07C, 0x000E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1433 #ifndef MOTOROLA_SYNTAX
1434 {"ftrapneq", two(0xF07C, 0x000E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1435 #endif
1436 {"ftrapnge", two(0xF07C, 0x001C), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1437 {"ftrapngl", two(0xF07C, 0x0019), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1438 {"ftrapngle", two(0xF07C, 0x0018), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1439 {"ftrapngt", two(0xF07C, 0x001D), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1440 {"ftrapnle", two(0xF07C, 0x001A), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1441 {"ftrapnlt", two(0xF07C, 0x001B), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1442 {"ftrapoge", two(0xF07C, 0x0003), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1443 {"ftrapogl", two(0xF07C, 0x0006), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1444 {"ftrapogt", two(0xF07C, 0x0002), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1445 {"ftrapole", two(0xF07C, 0x0005), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1446 {"ftrapolt", two(0xF07C, 0x0004), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1447 {"ftrapor", two(0xF07C, 0x0007), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1448 {"ftrapseq", two(0xF07C, 0x0011), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1449 {"ftrapsf", two(0xF07C, 0x0010), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1450 {"ftrapsne", two(0xF07C, 0x001E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1451 #ifndef MOTOROLA_SYNTAX
1452 {"ftrapsneq", two(0xF07C, 0x001E), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1453 #endif
1454 {"ftrapst", two(0xF07C, 0x001F), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1455 {"ftrapt", two(0xF07C, 0x000F), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1456 {"ftrapueq", two(0xF07C, 0x0009), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1457 {"ftrapuge", two(0xF07C, 0x000B), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1458 {"ftrapugt", two(0xF07C, 0x000A), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1459 {"ftrapule", two(0xF07C, 0x000D), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1460 {"ftrapult", two(0xF07C, 0x000C), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1461 {"ftrapun", two(0xF07C, 0x0008), two(0xF1FF, 0xFFFF), "Ii", mfloat },
1462
1463 {OP2(ftrapeq,w), two(0xF07A, 0x0001), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1464 {OP2(ftrapf,w), two(0xF07A, 0x0000), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1465 {OP2(ftrapge,w), two(0xF07A, 0x0013), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1466 {OP2(ftrapgl,w), two(0xF07A, 0x0016), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1467 {OP2(ftrapgle,w), two(0xF07A, 0x0017), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1468 {OP2(ftrapgt,w), two(0xF07A, 0x0012), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1469 {OP2(ftraple,w), two(0xF07A, 0x0015), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1470 {OP2(ftraplt,w), two(0xF07A, 0x0014), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1471 {OP2(ftrapne,w), two(0xF07A, 0x000E), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1472 {OP2(ftrapnge,w), two(0xF07A, 0x001C), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1473 {OP2(ftrapngl,w), two(0xF07A, 0x0019), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1474 {OP2(ftrapngle,w), two(0xF07A, 0x0018), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1475 {OP2(ftrapngt,w), two(0xF07A, 0x001D), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1476 {OP2(ftrapnle,w), two(0xF07A, 0x001A), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1477 {OP2(ftrapnlt,w), two(0xF07A, 0x001B), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1478 {OP2(ftrapoge,w), two(0xF07A, 0x0003), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1479 {OP2(ftrapogl,w), two(0xF07A, 0x0006), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1480 {OP2(ftrapogt,w), two(0xF07A, 0x0002), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1481 {OP2(ftrapole,w), two(0xF07A, 0x0005), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1482 {OP2(ftrapolt,w), two(0xF07A, 0x0004), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1483 {OP2(ftrapor,w), two(0xF07A, 0x0007), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1484 {OP2(ftrapseq,w), two(0xF07A, 0x0011), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1485 {OP2(ftrapsf,w), two(0xF07A, 0x0010), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1486 {OP2(ftrapsne,w), two(0xF07A, 0x001E), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1487 {OP2(ftrapst,w), two(0xF07A, 0x001F), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1488 {OP2(ftrapt,w), two(0xF07A, 0x000F), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1489 {OP2(ftrapueq,w), two(0xF07A, 0x0009), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1490 {OP2(ftrapuge,w), two(0xF07A, 0x000B), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1491 {OP2(ftrapugt,w), two(0xF07A, 0x000A), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1492 {OP2(ftrapule,w), two(0xF07A, 0x000D), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1493 {OP2(ftrapult,w), two(0xF07A, 0x000C), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1494 {OP2(ftrapun,w), two(0xF07A, 0x0008), two(0xF1FF, 0xFFFF), "Ii^w", mfloat },
1495
1496 {OP2(ftrapeq,l), two(0xF07B, 0x0001), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1497 {OP2(ftrapf,l), two(0xF07B, 0x0000), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1498 {OP2(ftrapge,l), two(0xF07B, 0x0013), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1499 {OP2(ftrapgl,l), two(0xF07B, 0x0016), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1500 {OP2(ftrapgle,l), two(0xF07B, 0x0017), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1501 {OP2(ftrapgt,l), two(0xF07B, 0x0012), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1502 {OP2(ftraple,l), two(0xF07B, 0x0015), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1503 {OP2(ftraplt,l), two(0xF07B, 0x0014), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1504 {OP2(ftrapne,l), two(0xF07B, 0x000E), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1505 {OP2(ftrapnge,l), two(0xF07B, 0x001C), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1506 {OP2(ftrapngl,l), two(0xF07B, 0x0019), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1507 {OP2(ftrapngle,l), two(0xF07B, 0x0018), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1508 {OP2(ftrapngt,l), two(0xF07B, 0x001D), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1509 {OP2(ftrapnle,l), two(0xF07B, 0x001A), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1510 {OP2(ftrapnlt,l), two(0xF07B, 0x001B), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1511 {OP2(ftrapoge,l), two(0xF07B, 0x0003), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1512 {OP2(ftrapogl,l), two(0xF07B, 0x0006), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1513 {OP2(ftrapogt,l), two(0xF07B, 0x0002), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1514 {OP2(ftrapole,l), two(0xF07B, 0x0005), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1515 {OP2(ftrapolt,l), two(0xF07B, 0x0004), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1516 {OP2(ftrapor,l), two(0xF07B, 0x0007), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1517 {OP2(ftrapseq,l), two(0xF07B, 0x0011), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1518 {OP2(ftrapsf,l), two(0xF07B, 0x0010), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1519 {OP2(ftrapsne,l), two(0xF07B, 0x001E), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1520 {OP2(ftrapst,l), two(0xF07B, 0x001F), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1521 {OP2(ftrapt,l), two(0xF07B, 0x000F), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1522 {OP2(ftrapueq,l), two(0xF07B, 0x0009), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1523 {OP2(ftrapuge,l), two(0xF07B, 0x000B), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1524 {OP2(ftrapugt,l), two(0xF07B, 0x000A), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1525 {OP2(ftrapule,l), two(0xF07B, 0x000D), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1526 {OP2(ftrapult,l), two(0xF07B, 0x000C), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1527 {OP2(ftrapun,l), two(0xF07B, 0x0008), two(0xF1FF, 0xFFFF), "Ii^l", mfloat },
1528
1529 {OP2(ftst,b), two(0xF000, 0x583A), two(0xF1C0, 0xFC7F), "Ii;b", mfloat },
1530 {OP2(ftst,d), two(0xF000, 0x543A), two(0xF1C0, 0xFC7F), "Ii;F", mfloat },
1531 {OP2(ftst,l), two(0xF000, 0x403A), two(0xF1C0, 0xFC7F), "Ii;l", mfloat },
1532 {OP2(ftst,p), two(0xF000, 0x4C3A), two(0xF1C0, 0xFC7F), "Ii;p", mfloat },
1533 {OP2(ftst,s), two(0xF000, 0x443A), two(0xF1C0, 0xFC7F), "Ii;f", mfloat },
1534 {OP2(ftst,w), two(0xF000, 0x503A), two(0xF1C0, 0xFC7F), "Ii;w", mfloat },
1535 {OP2(ftst,x), two(0xF000, 0x003A), two(0xF1C0, 0xE07F), "IiF8", mfloat },
1536 {OP2(ftst,x), two(0xF000, 0x483A), two(0xF1C0, 0xFC7F), "Ii;x", mfloat },
1537
1538 {OP2(ftwotox,b), two(0xF000, 0x5811), two(0xF1C0, 0xFC7F), "Ii;bF7", mfloat },
1539 {OP2(ftwotox,d), two(0xF000, 0x5411), two(0xF1C0, 0xFC7F), "Ii;FF7", mfloat },
1540 {OP2(ftwotox,l), two(0xF000, 0x4011), two(0xF1C0, 0xFC7F), "Ii;lF7", mfloat },
1541 {OP2(ftwotox,p), two(0xF000, 0x4C11), two(0xF1C0, 0xFC7F), "Ii;pF7", mfloat },
1542 {OP2(ftwotox,s), two(0xF000, 0x4411), two(0xF1C0, 0xFC7F), "Ii;fF7", mfloat },
1543 {OP2(ftwotox,w), two(0xF000, 0x5011), two(0xF1C0, 0xFC7F), "Ii;wF7", mfloat },
1544 {OP2(ftwotox,x), two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiF8F7", mfloat },
1545 {OP2(ftwotox,x), two(0xF000, 0x4811), two(0xF1C0, 0xFC7F), "Ii;xF7", mfloat },
1546 {OP2(ftwotox,x), two(0xF000, 0x0011), two(0xF1C0, 0xE07F), "IiFt", mfloat },
1547
1548 /* Variable-sized float branches */
1549
1550 {"fjeq", one(0xF081), one(0xF1FF), "IdBc", mfloat },
1551 {"fjf", one(0xF080), one(0xF1FF), "IdBc", mfloat },
1552 {"fjge", one(0xF093), one(0xF1FF), "IdBc", mfloat },
1553 {"fjgl", one(0xF096), one(0xF1FF), "IdBc", mfloat },
1554 {"fjgle", one(0xF097), one(0xF1FF), "IdBc", mfloat },
1555 {"fjgt", one(0xF092), one(0xF1FF), "IdBc", mfloat },
1556 {"fjle", one(0xF095), one(0xF1FF), "IdBc", mfloat },
1557 {"fjlt", one(0xF094), one(0xF1FF), "IdBc", mfloat },
1558 {"fjne", one(0xF08E), one(0xF1FF), "IdBc", mfloat },
1559 #ifndef MOTOROLA_SYNTAX
1560 {"fjneq", one(0xF08E), one(0xF1FF), "IdBc", mfloat },
1561 #endif
1562 {"fjnge", one(0xF09C), one(0xF1FF), "IdBc", mfloat },
1563 {"fjngl", one(0xF099), one(0xF1FF), "IdBc", mfloat },
1564 {"fjngle", one(0xF098), one(0xF1FF), "IdBc", mfloat },
1565 {"fjngt", one(0xF09D), one(0xF1FF), "IdBc", mfloat },
1566 {"fjnle", one(0xF09A), one(0xF1FF), "IdBc", mfloat },
1567 {"fjnlt", one(0xF09B), one(0xF1FF), "IdBc", mfloat },
1568 {"fjoge", one(0xF083), one(0xF1FF), "IdBc", mfloat },
1569 {"fjogl", one(0xF086), one(0xF1FF), "IdBc", mfloat },
1570 {"fjogt", one(0xF082), one(0xF1FF), "IdBc", mfloat },
1571 {"fjole", one(0xF085), one(0xF1FF), "IdBc", mfloat },
1572 {"fjolt", one(0xF084), one(0xF1FF), "IdBc", mfloat },
1573 {"fjor", one(0xF087), one(0xF1FF), "IdBc", mfloat },
1574 {"fjseq", one(0xF091), one(0xF1FF), "IdBc", mfloat },
1575 {"fjsf", one(0xF090), one(0xF1FF), "IdBc", mfloat },
1576 {"fjsne", one(0xF09E), one(0xF1FF), "IdBc", mfloat },
1577 #ifndef MOTOROLA_SYNTAX
1578 {"fjsneq", one(0xF09E), one(0xF1FF), "IdBc", mfloat },
1579 #endif
1580 {"fjst", one(0xF09F), one(0xF1FF), "IdBc", mfloat },
1581 {"fjt", one(0xF08F), one(0xF1FF), "IdBc", mfloat },
1582 {"fjueq", one(0xF089), one(0xF1FF), "IdBc", mfloat },
1583 {"fjuge", one(0xF08B), one(0xF1FF), "IdBc", mfloat },
1584 {"fjugt", one(0xF08A), one(0xF1FF), "IdBc", mfloat },
1585 {"fjule", one(0xF08D), one(0xF1FF), "IdBc", mfloat },
1586 {"fjult", one(0xF08C), one(0xF1FF), "IdBc", mfloat },
1587 {"fjun", one(0xF088), one(0xF1FF), "IdBc", mfloat },
1588 /* float stuff ends here */
1589 {"illegal", one(0045374), one(0177777), "", m68000up },
1590
1591
1592 #ifdef MOTOROLA_SYNTAX
1593 {OP2(jmp,s), one(0047300), one(0177700), "!s", m68000up },
1594 {OP2(jmp,l), one(0047300), one(0177700), "!s", m68000up },
1595 #endif
1596
1597 {"jmp", one(0047300), one(0177700), "!s", m68000up },
1598 {"jsr", one(0047200), one(0177700), "!s", m68000up },
1599 {"lea", one(0040700), one(0170700), "!sAd", m68000up },
1600 #ifdef MOTOROLA_SYNTAX
1601 {OP2(lea,l), one(0040700), one(0170700), "!sAd", m68000up }, /* allow lea as leal */
1602 #endif
1603
1604 {OP2(link,w), one(0047120), one(0177770), "As#w", m68000up },
1605 {OP2(link,l), one(0044010), one(0177770), "As#l", m68020up },
1606 {"link", one(0047120), one(0177770), "As#w", m68000up },
1607 {"link", one(0044010), one(0177770), "As#l", m68020up },
1608
1609 {OP2(lsl,b), one(0160410), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1610 {OP2(lsl,b), one(0160450), one(0170770), "DdDs", m68000up }, /* lsrb Dd, Ds */
1611 {OP2(lsl,w), one(0160510), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1612 {OP2(lsl,w), one(0160550), one(0170770), "DdDs", m68000up }, /* lsrb Dd, Ds */
1613 {OP2(lsl,w), one(0161700), one(0177700), "~s", m68000up }, /* Shift memory */
1614 {OP2(lsl,l), one(0160610), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1615 {OP2(lsl,l), one(0160650), one(0170770), "DdDs", m68000up }, /* lsrb Dd, Ds */
1616
1617 {OP2(lsr,b), one(0160010), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1618 {OP2(lsr,b), one(0160050), one(0170770), "DdDs", m68000up }, /* lsrb Dd, Ds */
1619 {OP2(lsr,l), one(0160210), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1620 {OP2(lsr,l), one(0160250), one(0170770), "DdDs", m68000up }, /* lsrb #Q, Ds */
1621 {OP2(lsr,w), one(0160110), one(0170770), "QdDs", m68000up }, /* lsrb #Q, Ds */
1622 {OP2(lsr,w), one(0160150), one(0170770), "DdDs", m68000up }, /* lsrb #Q, Ds */
1623 {OP2(lsr,w), one(0161300), one(0177700), "~s", m68000up }, /* Shift memory */
1624
1625 {OP2(movea,l), one(0020100), one(0170700), "*lAd", m68000up },
1626 {OP2(movea,w), one(0030100), one(0170700), "*wAd", m68000up },
1627 {OP2(move,b), one(0010000), one(0170000), ";b$d", m68000up }, /* move */
1628 {OP2(move,l), one(0070000), one(0170400), "MsDd", m68000up }, /* moveq written as move */
1629 {OP2(move,l), one(0020000), one(0170000), "*l$d", m68000up },
1630 {OP2(move,l), one(0020100), one(0170700), "*lAd", m68000up },
1631 {OP2(move,l), one(0047140), one(0177770), "AsUd", m68000up }, /* move to USP */
1632 {OP2(move,l), one(0047150), one(0177770), "UdAs", m68000up }, /* move from USP */
1633
1634 {"movec", one(0047173), one(0177777), "R1Jj", m68010up },
1635 {"movec", one(0047173), one(0177777), "R1#j", m68010up },
1636 {"movec", one(0047172), one(0177777), "JjR1", m68010up },
1637 {"movec", one(0047172), one(0177777), "#jR1", m68010up },
1638
1639 /* JF added these next four for the assembler */
1640 {OP2(movem,l), one(0044300), one(0177700), "Lw&s", m68000up }, /* movem reg to mem. */
1641 {OP2(movem,l), one(0044340), one(0177770), "lw-s", m68000up }, /* movem reg to autodecrement. */
1642 {OP2(movem,l), one(0046300), one(0177700), "!sLw", m68000up }, /* movem mem to reg. */
1643 {OP2(movem,l), one(0046330), one(0177770), "+sLw", m68000up }, /* movem autoinc to reg. */
1644
1645 {OP2(movem,l), one(0044300), one(0177700), "#w&s", m68000up }, /* movem reg to mem. */
1646 {OP2(movem,l), one(0044340), one(0177770), "#w-s", m68000up }, /* movem reg to autodecrement. */
1647 {OP2(movem,l), one(0046300), one(0177700), "!s#w", m68000up }, /* movem mem to reg. */
1648 {OP2(movem,l), one(0046330), one(0177770), "+s#w", m68000up }, /* movem autoinc to reg. */
1649
1650 /* JF added these next four for the assembler */
1651 {OP2(movem,w), one(0044200), one(0177700), "Lw&s", m68000up }, /* movem reg to mem. */
1652 {OP2(movem,w), one(0044240), one(0177770), "lw-s", m68000up }, /* movem reg to autodecrement. */
1653 {OP2(movem,w), one(0046200), one(0177700), "!sLw", m68000up }, /* movem mem to reg. */
1654 {OP2(movem,w), one(0046230), one(0177770), "+sLw", m68000up }, /* movem autoinc to reg. */
1655
1656 {OP2(movem,w), one(0044200), one(0177700), "#w&s", m68000up }, /* movem reg to mem. */
1657 {OP2(movem,w), one(0044240), one(0177770), "#w-s", m68000up }, /* movem reg to autodecrement. */
1658 {OP2(movem,w), one(0046200), one(0177700), "!s#w", m68000up }, /* movem mem to reg. */
1659 {OP2(movem,w), one(0046230), one(0177770), "+s#w", m68000up }, /* movem autoinc to reg. */
1660 #ifdef ALLOW_DEFAULT_SIZES
1661 {"movem", one(0044200), one(0177700), "Lw&s", m68000up }, /* movem reg to mem. */
1662 {"movem", one(0044240), one(0177770), "lw-s", m68000up }, /* movem reg to autodecrement. */
1663 {"movem", one(0046200), one(0177700), "!sLw", m68000up }, /* movem mem to reg. */
1664 {"movem", one(0046230), one(0177770), "+sLw", m68000up }, /* movem autoinc to reg. */
1665
1666 {"movem", one(0044200), one(0177700), "#w&s", m68000up }, /* movem reg to mem. */
1667 {"movem", one(0044240), one(0177770), "#w-s", m68000up }, /* movem reg to autodecrement. */
1668 {"movem", one(0046200), one(0177700), "!s#w", m68000up }, /* movem mem to reg. */
1669 {"movem", one(0046230), one(0177770), "+s#w", m68000up }, /* movem autoinc to reg. */
1670 #endif
1671
1672 {OP2(movep,l), one(0000510), one(0170770), "dsDd", m68000up }, /* memory to register */
1673 {OP2(movep,l), one(0000710), one(0170770), "Ddds", m68000up }, /* register to memory */
1674 {OP2(movep,w), one(0000410), one(0170770), "dsDd", m68000up }, /* memory to register */
1675 {OP2(movep,w), one(0000610), one(0170770), "Ddds", m68000up }, /* register to memory */
1676 #ifdef ALLOW_DEFAULT_SIZES
1677 {"movep", one(0000410), one(0170770), "dsDd", m68000up }, /* memory to register */
1678 {"movep", one(0000610), one(0170770), "Ddds", m68000up }, /* register to memory */
1679 #endif
1680 {OP2(move,q), one(0070000), one(0170400), "MsDd", m68000up },
1681 {OP2(move,w), one(0030000), one(0170000), "*w$d", m68000up },
1682 {OP2(move,w), one(0030100), one(0170700), "*wAd", m68000up }, /* movea, written as move */
1683 {OP2(move,w), one(0040300), one(0177700), "Ss$s", m68000up }, /* Move from sr */
1684 {OP2(move,w), one(0041300), one(0177700), "Cs$s", m68010up }, /* Move from ccr */
1685 {OP2(move,w), one(0042300), one(0177700), ";wCd", m68000up }, /* move to ccr */
1686 {OP2(move,w), one(0043300), one(0177700), ";wSd", m68000up }, /* move to sr */
1687
1688
1689 {OP2(moves,b), two(0007000, 0), two(0177700, 07777), "~sR1", m68010up }, /* moves from memory */
1690 {OP2(moves,b), two(0007000, 04000), two(0177700, 07777), "R1~s", m68010up }, /* moves to memory */
1691 {OP2(moves,l), two(0007200, 0), two(0177700, 07777), "~sR1", m68010up }, /* moves from memory */
1692 {OP2(moves,l), two(0007200, 04000), two(0177700, 07777), "R1~s", m68010up }, /* moves to memory */
1693 {OP2(moves,w), two(0007100, 0), two(0177700, 07777), "~sR1", m68010up }, /* moves from memory */
1694 {OP2(moves,w), two(0007100, 04000), two(0177700, 07777), "R1~s", m68010up }, /* moves to memory */
1695
1696 {"move16", two(0xf620, 0x8000), two(0xfff8, 0x8fff), "+s+1", m68040 },
1697 {"move16", one(0xf600), one(0xfff8), "+s_L", m68040 },
1698 {"move16", one(0xf608), one(0xfff8), "_L+s", m68040 },
1699 {"move16", one(0xf610), one(0xfff8), "as_L", m68040 },
1700 {"move16", one(0xf618), one(0xfff8), "_Las", m68040 },
1701
1702 {OP2(muls,l), two(0046000, 004000), two(0177700, 0107770), ";lD1", m68020up },
1703 {OP2(muls,l), two(0046000, 006000), two(0177700, 0107770), ";lD3D1", m68020up },
1704 {OP2(muls,w), one(0140700), one(0170700), ";wDd", m68000up },
1705 {"muls", one(0140700), one(0170700), ";wDd", m68000up },
1706 {OP2(mulu,l), two(0046000, 000000), two(0177700, 0107770), ";lD1", m68020up },
1707 {OP2(mulu,l), two(0046000, 002000), two(0177700, 0107770), ";lD3D1", m68020up },
1708 {OP2(mulu,w), one(0140300), one(0170700), ";wDd", m68000up },
1709 {"mulu", one(0140300), one(0170700), ";wDd", m68000up },
1710 {"nbcd", one(0044000), one(0177700), "$s", m68000up },
1711
1712 {OP2(neg,b), one(0042000), one(0177700), "$s", m68000up },
1713 {OP2(neg,l), one(0042200), one(0177700), "$s", m68000up },
1714 {OP2(neg,w), one(0042100), one(0177700), "$s", m68000up },
1715 #ifdef ALLOW_DEFAULT_SIZES
1716 {"neg", one(0042200), one(0177700), "$s", m68000up },
1717 #endif
1718
1719 {OP2(negx,b), one(0040000), one(0177700), "$s", m68000up },
1720 {OP2(negx,l), one(0040200), one(0177700), "$s", m68000up },
1721 {OP2(negx,w), one(0040100), one(0177700), "$s", m68000up },
1722 #ifdef ALLOW_DEFAULT_SIZES
1723 {"negx", one(0040200), one(0177700), "$s", m68000up },
1724 #endif
1725
1726 {"nop", one(0047161), one(0177777), "", m68000up },
1727
1728 {OP2(not,b), one(0043000), one(0177700), "$s", m68000up },
1729 {OP2(not,l), one(0043200), one(0177700), "$s", m68000up },
1730 {OP2(not,w), one(0043100), one(0177700), "$s", m68000up },
1731 #ifdef ALLOW_DEFAULT_SIZES
1732 {"not", one(0043200), one(0177700), "$s", m68000up },
1733 #endif
1734
1735 {OP2(or,b), one(0000000), one(0177700), "#b$s", m68000up }, /* ori written as or */
1736 {OP2(or,b), one(0000074), one(0177777), "#bCs", m68000up }, /* ori to ccr */
1737 {OP2(or,b), one(0100000), one(0170700), ";bDd", m68000up }, /* memory to register */
1738 {OP2(or,b), one(0100400), one(0170700), "Dd~s", m68000up }, /* register to memory */
1739 {OP2(ori,b), one(0000000), one(0177700), "#b$s", m68000up },
1740 {OP2(ori,b), one(0000074), one(0177777), "#bCs", m68000up }, /* ori to ccr */
1741 {OP2(ori,l), one(0000200), one(0177700), "#l$s", m68000up },
1742 {OP2(ori,w), one(0000100), one(0177700), "#w$s", m68000up },
1743 {OP2(ori,w), one(0000174), one(0177777), "#wSs", m68000up }, /* ori to sr */
1744 {OP2(or,l), one(0000200), one(0177700), "#l$s", m68000up },
1745 {OP2(or,l), one(0100200), one(0170700), ";lDd", m68000up }, /* memory to register */
1746 {OP2(or,l), one(0100600), one(0170700), "Dd~s", m68000up }, /* register to memory */
1747 {OP2(or,w), one(0000100), one(0177700), "#w$s", m68000up },
1748 {OP2(or,w), one(0000174), one(0177777), "#wSs", m68000up }, /* ori to sr */
1749 {OP2(or,w), one(0100100), one(0170700), ";wDd", m68000up }, /* memory to register */
1750 {OP2(or,w), one(0100500), one(0170700), "Dd~s", m68000up }, /* register to memory */
1751 #ifdef ALLOW_DEFAULT_SIZES
1752 {"ori", one(0000174), one(0177777), "#wSs", m68000up }, /* ori to sr */
1753
1754 {"or", one(0000100), one(0177700), "#w$s", m68000up },
1755 {"or", one(0000174), one(0177777), "#wSs", m68000up }, /* ori to sr */
1756 {"or", one(0100100), one(0170700), ";wDd", m68000up }, /* memory to register */
1757 {"or", one(0100500), one(0170700), "Dd~s", m68000up }, /* register to memory */
1758 #endif
1759
1760 {"pack", one(0100500), one(0170770), "DsDd#w", m68020up }, /* pack Ds, Dd, #w */
1761 {"pack", one(0100510), one(0170770), "-s-d#w", m68020up }, /* pack -(As), -(Ad), #w */
1762
1763 #ifndef NO_68851
1764 {"pbac", one(0xf0c7), one(0xffbf), "Bc", m68851 },
1765 {OP2(pbac,w), one(0xf087), one(0xffbf), "Bc", m68851 },
1766 {"pbas", one(0xf0c6), one(0xffbf), "Bc", m68851 },
1767 {OP2(pbas,w), one(0xf086), one(0xffbf), "Bc", m68851 },
1768 {"pbbc", one(0xf0c1), one(0xffbf), "Bc", m68851 },
1769 {OP2(pbbc,w), one(0xf081), one(0xffbf), "Bc", m68851 },
1770 {"pbbs", one(0xf0c0), one(0xffbf), "Bc", m68851 },
1771 {OP2(pbbs,w), one(0xf080), one(0xffbf), "Bc", m68851 },
1772 {"pbcc", one(0xf0cf), one(0xffbf), "Bc", m68851 },
1773 {OP2(pbcc,w), one(0xf08f), one(0xffbf), "Bc", m68851 },
1774 {"pbcs", one(0xf0ce), one(0xffbf), "Bc", m68851 },
1775 {OP2(pbcs,w), one(0xf08e), one(0xffbf), "Bc", m68851 },
1776 {"pbgc", one(0xf0cd), one(0xffbf), "Bc", m68851 },
1777 {OP2(pbgc,w), one(0xf08d), one(0xffbf), "Bc", m68851 },
1778 {"pbgs", one(0xf0cc), one(0xffbf), "Bc", m68851 },
1779 {OP2(pbgs,w), one(0xf08c), one(0xffbf), "Bc", m68851 },
1780 {"pbic", one(0xf0cb), one(0xffbf), "Bc", m68851 },
1781 {OP2(pbic,w), one(0xf08b), one(0xffbf), "Bc", m68851 },
1782 {"pbis", one(0xf0ca), one(0xffbf), "Bc", m68851 },
1783 {OP2(pbis,w), one(0xf08a), one(0xffbf), "Bc", m68851 },
1784 {"pblc", one(0xf0c3), one(0xffbf), "Bc", m68851 },
1785 {OP2(pblc,w), one(0xf083), one(0xffbf), "Bc", m68851 },
1786 {"pbls", one(0xf0c2), one(0xffbf), "Bc", m68851 },
1787 {OP2(pbls,w), one(0xf082), one(0xffbf), "Bc", m68851 },
1788 {"pbsc", one(0xf0c5), one(0xffbf), "Bc", m68851 },
1789 {OP2(pbsc,w), one(0xf085), one(0xffbf), "Bc", m68851 },
1790 {"pbss", one(0xf0c4), one(0xffbf), "Bc", m68851 },
1791 {OP2(pbss,w), one(0xf084), one(0xffbf), "Bc", m68851 },
1792 {"pbwc", one(0xf0c9), one(0xffbf), "Bc", m68851 },
1793 {OP2(pbwc,w), one(0xf089), one(0xffbf), "Bc", m68851 },
1794 {"pbws", one(0xf0c8), one(0xffbf), "Bc", m68851 },
1795 {OP2(pbws,w), one(0xf088), one(0xffbf), "Bc", m68851 },
1796
1797 {"pdbac", two(0xf048, 0x0007), two(0xfff8, 0xffff), "DsBw", m68851 },
1798 {"pdbas", two(0xf048, 0x0006), two(0xfff8, 0xffff), "DsBw", m68851 },
1799 {"pdbbc", two(0xf048, 0x0001), two(0xfff8, 0xffff), "DsBw", m68851 },
1800 {"pdbbs", two(0xf048, 0x0000), two(0xfff8, 0xffff), "DsBw", m68851 },
1801 {"pdbcc", two(0xf048, 0x000f), two(0xfff8, 0xffff), "DsBw", m68851 },
1802 {"pdbcs", two(0xf048, 0x000e), two(0xfff8, 0xffff), "DsBw", m68851 },
1803 {"pdbgc", two(0xf048, 0x000d), two(0xfff8, 0xffff), "DsBw", m68851 },
1804 {"pdbgs", two(0xf048, 0x000c), two(0xfff8, 0xffff), "DsBw", m68851 },
1805 {"pdbic", two(0xf048, 0x000b), two(0xfff8, 0xffff), "DsBw", m68851 },
1806 {"pdbis", two(0xf048, 0x000a), two(0xfff8, 0xffff), "DsBw", m68851 },
1807 {"pdblc", two(0xf048, 0x0003), two(0xfff8, 0xffff), "DsBw", m68851 },
1808 {"pdbls", two(0xf048, 0x0002), two(0xfff8, 0xffff), "DsBw", m68851 },
1809 {"pdbsc", two(0xf048, 0x0005), two(0xfff8, 0xffff), "DsBw", m68851 },
1810 {"pdbss", two(0xf048, 0x0004), two(0xfff8, 0xffff), "DsBw", m68851 },
1811 {"pdbwc", two(0xf048, 0x0009), two(0xfff8, 0xffff), "DsBw", m68851 },
1812 {"pdbws", two(0xf048, 0x0008), two(0xfff8, 0xffff), "DsBw", m68851 },
1813 #endif /* NO_68851 */
1814
1815 {"pea", one(0044100), one(0177700), "!s", m68000up },
1816
1817 #ifndef NO_68851
1818 {"pflusha", two(0xf000, 0x2400), two(0xffff, 0xffff), "", m68030 | m68851 },
1819 {"pflusha", one(0xf510), one(0xfff8), "", m68040 },
1820
1821 {"pflush", two(0xf000, 0x3010), two(0xffc0, 0xfe10), "T3T9", m68030 | m68851 },
1822 {"pflush", two(0xf000, 0x3810), two(0xffc0, 0xfe10), "T3T9&s", m68030 | m68851 },
1823 {"pflush", two(0xf000, 0x3008), two(0xffc0, 0xfe18), "D3T9", m68030 | m68851 },
1824 {"pflush", two(0xf000, 0x3808), two(0xffc0, 0xfe18), "D3T9&s", m68030 | m68851 },
1825 {"pflush", two(0xf000, 0x3000), two(0xffc0, 0xfe1e), "f3T9", m68030 | m68851 },
1826 {"pflush", two(0xf000, 0x3800), two(0xffc0, 0xfe1e), "f3T9&s", m68030 | m68851 },
1827 {"pflush", one(0xf500), one(0xfff8), "As", m68040 },
1828
1829 {"pflushan", one(0xf518), one(0xfff8), "", m68040 },
1830 {"pflushn", one(0xf508), one(0xfff8), "As", m68040 },
1831
1832 {"pflushr", two(0xf000, 0xa000), two(0xffc0, 0xffff), "|s", m68851 },
1833
1834 {"pflushs", two(0xf000, 0x3410), two(0xfff8, 0xfe10), "T3T9", m68851 },
1835 {"pflushs", two(0xf000, 0x3c10), two(0xfff8, 0xfe00), "T3T9&s", m68851 },
1836 {"pflushs", two(0xf000, 0x3408), two(0xfff8, 0xfe18), "D3T9", m68851 },
1837 {"pflushs", two(0xf000, 0x3c08), two(0xfff8, 0xfe18), "D3T9&s", m68851 },
1838 {"pflushs", two(0xf000, 0x3400), two(0xfff8, 0xfe1e), "f3T9", m68851 },
1839 {"pflushs", two(0xf000, 0x3c00), two(0xfff8, 0xfe1e), "f3T9&s", m68851 },
1840
1841 {"ploadr", two(0xf000, 0x2210), two(0xffc0, 0xfff0), "T3&s", m68030 | m68851 },
1842 {"ploadr", two(0xf000, 0x2208), two(0xffc0, 0xfff8), "D3&s", m68030 | m68851 },
1843 {"ploadr", two(0xf000, 0x2200), two(0xffc0, 0xfffe), "f3&s", m68030 | m68851 },
1844 {"ploadw", two(0xf000, 0x2010), two(0xffc0, 0xfff0), "T3&s", m68030 | m68851 },
1845 {"ploadw", two(0xf000, 0x2008), two(0xffc0, 0xfff8), "D3&s", m68030 | m68851 },
1846 {"ploadw", two(0xf000, 0x2000), two(0xffc0, 0xfffe), "f3&s", m68030 | m68851 },
1847
1848 /* TC, CRP, DRP, SRP, CAL, VAL, SCC, AC */
1849 {"pmove", two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "*sP8", m68030 | m68851 },
1850 {"pmove", two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "P8%s", m68030 | m68851 },
1851 {"pmove", two(0xf000, 0x4000), two(0xffc0, 0xe3ff), "|sW8", m68030 | m68851 },
1852 {"pmove", two(0xf000, 0x4200), two(0xffc0, 0xe3ff), "W8~s", m68030 | m68851 },
1853
1854 /* BADx, BACx */
1855 {"pmove", two(0xf000, 0x6200), two(0xffc0, 0xe3e3), "*sX3", m68030 | m68851 },
1856 {"pmove", two(0xf000, 0x6000), two(0xffc0, 0xe3e3), "X3%s", m68030 | m68851 },
1857
1858 /* PSR, PCSR */
1859 /* {"pmove", two(0xf000, 0x6100), two(oxffc0, oxffff), "*sZ8", m68030 | m68851 }, */
1860 {"pmove", two(0xf000, 0x6000), two(0xffc0, 0xffff), "*sY8", m68030 | m68851 },
1861 {"pmove", two(0xf000, 0x6200), two(0xffc0, 0xffff), "Y8%s", m68030 | m68851 },
1862 {"pmove", two(0xf000, 0x6600), two(0xffc0, 0xffff), "Z8%s", m68030 | m68851 },
1863
1864 {"prestore", one(0xf140), one(0xffc0), "&s", m68851 },
1865 {"prestore", one(0xf158), one(0xfff8), "+s", m68851 },
1866 #ifndef MOTOROLA_SYNTAX
1867 /* The two identical psave instructions seems dubious. FIXME */
1868 {"psave", one(0xf100), one(0xffc0), "&s", m68851 },
1869 {"psave", one(0xf100), one(0xffc0), "+s", m68851 },
1870 #endif
1871
1872 {"psac", two(0xf040, 0x0007), two(0xffc0, 0xffff), "@s", m68851 },
1873 {"psas", two(0xf040, 0x0006), two(0xffc0, 0xffff), "@s", m68851 },
1874 {"psbc", two(0xf040, 0x0001), two(0xffc0, 0xffff), "@s", m68851 },
1875 {"psbs", two(0xf040, 0x0000), two(0xffc0, 0xffff), "@s", m68851 },
1876 {"pscc", two(0xf040, 0x000f), two(0xffc0, 0xffff), "@s", m68851 },
1877 {"pscs", two(0xf040, 0x000e), two(0xffc0, 0xffff), "@s", m68851 },
1878 {"psgc", two(0xf040, 0x000d), two(0xffc0, 0xffff), "@s", m68851 },
1879 {"psgs", two(0xf040, 0x000c), two(0xffc0, 0xffff), "@s", m68851 },
1880 {"psic", two(0xf040, 0x000b), two(0xffc0, 0xffff), "@s", m68851 },
1881 {"psis", two(0xf040, 0x000a), two(0xffc0, 0xffff), "@s", m68851 },
1882 {"pslc", two(0xf040, 0x0003), two(0xffc0, 0xffff), "@s", m68851 },
1883 {"psls", two(0xf040, 0x0002), two(0xffc0, 0xffff), "@s", m68851 },
1884 {"pssc", two(0xf040, 0x0005), two(0xffc0, 0xffff), "@s", m68851 },
1885 {"psss", two(0xf040, 0x0004), two(0xffc0, 0xffff), "@s", m68851 },
1886 {"pswc", two(0xf040, 0x0009), two(0xffc0, 0xffff), "@s", m68851 },
1887 {"psws", two(0xf040, 0x0008), two(0xffc0, 0xffff), "@s", m68851 },
1888
1889 {"ptestr", two(0xf000, 0x8210), two(0xffc0, 0xe3f0), "T3&sQ8", m68030 | m68851 },
1890 {"ptestr", two(0xf000, 0x8310), two(0xffc0, 0xe310), "T3&sQ8A9", m68030 | m68851 },
1891 {"ptestr", two(0xf000, 0x8208), two(0xffc0, 0xe3f8), "D3&sQ8", m68030 | m68851 },
1892 {"ptestr", two(0xf000, 0x8308), two(0xffc0, 0xe318), "D3&sQ8A9", m68030 | m68851 },
1893 {"ptestr", two(0xf000, 0x8200), two(0xffc0, 0xe3fe), "f3&sQ8", m68030 | m68851 },
1894 {"ptestr", two(0xf000, 0x8300), two(0xffc0, 0xe31e), "f3&sQ8A9", m68030 | m68851 },
1895
1896 {"ptestr", one(0xf568), one(0xfff8), "As", m68040 },
1897
1898 {"ptestw", two(0xf000, 0x8010), two(0xffc0, 0xe3f0), "T3&sQ8", m68030 | m68851 },
1899 {"ptestw", two(0xf000, 0x8110), two(0xffc0, 0xe310), "T3&sQ8A9", m68030 | m68851 },
1900 {"ptestw", two(0xf000, 0x8008), two(0xffc0, 0xe3f8), "D3&sQ8", m68030 | m68851 },
1901 {"ptestw", two(0xf000, 0x8108), two(0xffc0, 0xe318), "D3&sQ8A9", m68030 | m68851 },
1902 {"ptestw", two(0xf000, 0x8000), two(0xffc0, 0xe3fe), "f3&sQ8", m68030 | m68851 },
1903 {"ptestw", two(0xf000, 0x8100), two(0xffc0, 0xe31e), "f3&sQ8A9", m68030 | m68851 },
1904
1905 {"ptestw", one(0xf548), one(0xfff8), "As", m68040 },
1906
1907 {OP2(ptrapac,w), two(0xf07a, 0x0007), two(0xffff, 0xffff), "#w", m68851 },
1908 {OP2(ptrapac,l), two(0xf07b, 0x0007), two(0xffff, 0xffff), "#l", m68851 },
1909 {"ptrapac", two(0xf07c, 0x0007), two(0xffff, 0xffff), "", m68851 },
1910
1911 {OP2(ptrapas,w), two(0xf07a, 0x0006), two(0xffff, 0xffff), "#w", m68851 },
1912 {OP2(ptrapas,l), two(0xf07b, 0x0006), two(0xffff, 0xffff), "#l", m68851 },
1913 {"ptrapas", two(0xf07c, 0x0006), two(0xffff, 0xffff), "", m68851 },
1914
1915 {OP2(ptrapbc,w), two(0xf07a, 0x0001), two(0xffff, 0xffff), "#w", m68851 },
1916 {OP2(ptrapbc,l), two(0xf07b, 0x0001), two(0xffff, 0xffff), "#l", m68851 },
1917 {"ptrapbc", two(0xf07c, 0x0001), two(0xffff, 0xffff), "", m68851 },
1918
1919 {OP2(ptrapbs,w), two(0xf07a, 0x0000), two(0xffff, 0xffff), "#w", m68851 },
1920 {OP2(ptrapbs,l), two(0xf07b, 0x0000), two(0xffff, 0xffff), "#l", m68851 },
1921 {"ptrapbs", two(0xf07c, 0x0000), two(0xffff, 0xffff), "", m68851 },
1922
1923 {OP2(ptrapcc,w), two(0xf07a, 0x000f), two(0xffff, 0xffff), "#w", m68851 },
1924 {OP2(ptrapcc,l), two(0xf07b, 0x000f), two(0xffff, 0xffff), "#l", m68851 },
1925 {"ptrapcc", two(0xf07c, 0x000f), two(0xffff, 0xffff), "", m68851 },
1926
1927 {OP2(ptrapcs,w), two(0xf07a, 0x000e), two(0xffff, 0xffff), "#w", m68851 },
1928 {OP2(ptrapcs,l), two(0xf07b, 0x000e), two(0xffff, 0xffff), "#l", m68851 },
1929 {"ptrapcs", two(0xf07c, 0x000e), two(0xffff, 0xffff), "", m68851 },
1930
1931 {OP2(ptrapgc,w), two(0xf07a, 0x000d), two(0xffff, 0xffff), "#w", m68851 },
1932 {OP2(ptrapgc,l), two(0xf07b, 0x000d), two(0xffff, 0xffff), "#l", m68851 },
1933 {"ptrapgc", two(0xf07c, 0x000d), two(0xffff, 0xffff), "", m68851 },
1934
1935 {OP2(ptrapgs,w), two(0xf07a, 0x000c), two(0xffff, 0xffff), "#w", m68851 },
1936 {OP2(ptrapgs,l), two(0xf07b, 0x000c), two(0xffff, 0xffff), "#l", m68851 },
1937 {"ptrapgs", two(0xf07c, 0x000c), two(0xffff, 0xffff), "", m68851 },
1938
1939 {OP2(ptrapic,w), two(0xf07a, 0x000b), two(0xffff, 0xffff), "#w", m68851 },
1940 {OP2(ptrapic,l), two(0xf07b, 0x000b), two(0xffff, 0xffff), "#l", m68851 },
1941 {"ptrapic", two(0xf07c, 0x000b), two(0xffff, 0xffff), "", m68851 },
1942
1943 {OP2(ptrapis,w), two(0xf07a, 0x000a), two(0xffff, 0xffff), "#w", m68851 },
1944 {OP2(ptrapis,l), two(0xf07b, 0x000a), two(0xffff, 0xffff), "#l", m68851 },
1945 {"ptrapis", two(0xf07c, 0x000a), two(0xffff, 0xffff), "", m68851 },
1946
1947 {OP2(ptraplc,w), two(0xf07a, 0x0003), two(0xffff, 0xffff), "#w", m68851 },
1948 {OP2(ptraplc,l), two(0xf07b, 0x0003), two(0xffff, 0xffff), "#l", m68851 },
1949 {"ptraplc", two(0xf07c, 0x0003), two(0xffff, 0xffff), "", m68851 },
1950
1951 {OP2(ptrapls,w), two(0xf07a, 0x0002), two(0xffff, 0xffff), "#w", m68851 },
1952 {OP2(ptrapls,l), two(0xf07b, 0x0002), two(0xffff, 0xffff), "#l", m68851 },
1953 {"ptrapls", two(0xf07c, 0x0002), two(0xffff, 0xffff), "", m68851 },
1954
1955 {OP2(ptrapsc,w), two(0xf07a, 0x0005), two(0xffff, 0xffff), "#w", m68851 },
1956 {OP2(ptrapsc,l), two(0xf07b, 0x0005), two(0xffff, 0xffff), "#l", m68851 },
1957 {"ptrapsc", two(0xf07c, 0x0005), two(0xffff, 0xffff), "", m68851 },
1958
1959 {OP2(ptrapss,w), two(0xf07a, 0x0004), two(0xffff, 0xffff), "#w", m68851 },
1960 {OP2(ptrapss,l), two(0xf07b, 0x0004), two(0xffff, 0xffff), "#l", m68851 },
1961 {"ptrapss", two(0xf07c, 0x0004), two(0xffff, 0xffff), "", m68851 },
1962
1963 {OP2(ptrapwc,w), two(0xf07a, 0x0009), two(0xffff, 0xffff), "#w", m68851 },
1964 {OP2(ptrapwc,l), two(0xf07b, 0x0009), two(0xffff, 0xffff), "#l", m68851 },
1965 {"ptrapwc", two(0xf07c, 0x0009), two(0xffff, 0xffff), "", m68851 },
1966
1967 {OP2(ptrapws,w), two(0xf07a, 0x0008), two(0xffff, 0xffff), "#w", m68851 },
1968 {OP2(ptrapws,l), two(0xf07b, 0x0008), two(0xffff, 0xffff), "#l", m68851 },
1969 {"ptrapws", two(0xf07c, 0x0008), two(0xffff, 0xffff), "", m68851 },
1970
1971 {"pvalid", two(0xf000, 0x2800), two(0xffc0, 0xffff), "Vs&s", m68851 },
1972 {"pvalid", two(0xf000, 0x2c00), two(0xffc0, 0xfff8), "A3&s", m68851 },
1973
1974 #endif /* NO_68851 */
1975
1976 {"reset", one(0047160), one(0177777), "", m68000up },
1977
1978 {OP2(rol,b), one(0160430), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1979 {OP2(rol,b), one(0160470), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1980 {OP2(rol,l), one(0160630), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1981 {OP2(rol,l), one(0160670), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1982 {OP2(rol,w), one(0160530), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1983 {OP2(rol,w), one(0160570), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1984 {OP2(rol,w), one(0163700), one(0177700), "~s", m68000up }, /* Rotate memory */
1985 {OP2(ror,b), one(0160030), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1986 {OP2(ror,b), one(0160070), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1987 {OP2(ror,l), one(0160230), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1988 {OP2(ror,l), one(0160270), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1989 {OP2(ror,w), one(0160130), one(0170770), "QdDs", m68000up }, /* rorb #Q, Ds */
1990 {OP2(ror,w), one(0160170), one(0170770), "DdDs", m68000up }, /* rorb Dd, Ds */
1991 {OP2(ror,w), one(0163300), one(0177700), "~s", m68000up }, /* Rotate memory */
1992
1993 {OP2(roxl,b), one(0160420), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
1994 {OP2(roxl,b), one(0160460), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
1995 {OP2(roxl,l), one(0160620), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
1996 {OP2(roxl,l), one(0160660), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
1997 {OP2(roxl,w), one(0160520), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
1998 {OP2(roxl,w), one(0160560), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
1999 {OP2(roxl,w), one(0162700), one(0177700), "~s", m68000up }, /* Rotate memory */
2000 {OP2(roxr,b), one(0160020), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
2001 {OP2(roxr,b), one(0160060), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
2002 {OP2(roxr,l), one(0160220), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
2003 {OP2(roxr,l), one(0160260), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
2004 {OP2(roxr,w), one(0160120), one(0170770), "QdDs", m68000up }, /* roxrb #Q, Ds */
2005 {OP2(roxr,w), one(0160160), one(0170770), "DdDs", m68000up }, /* roxrb Dd, Ds */
2006 {OP2(roxr,w), one(0162300), one(0177700), "~s", m68000up }, /* Rotate memory */
2007
2008 {"rtd", one(0047164), one(0177777), "#w", m68010up },
2009 {"rte", one(0047163), one(0177777), "", m68000up },
2010 {"rtm", one(0003300), one(0177760), "Rs", m68020 },
2011 {"rtr", one(0047167), one(0177777), "", m68000up },
2012 {"rts", one(0047165), one(0177777), "", m68000up },
2013
2014 {"sbcd", one(0100400), one(0170770), "DsDd", m68000up },
2015 {"sbcd", one(0100410), one(0170770), "-s-d", m68000up },
2016
2017 {"scc", one(0052300), one(0177700), "$s", m68000up },
2018 {"scs", one(0052700), one(0177700), "$s", m68000up },
2019 {"seq", one(0053700), one(0177700), "$s", m68000up },
2020 {"sf", one(0050700), one(0177700), "$s", m68000up },
2021 {"sge", one(0056300), one(0177700), "$s", m68000up },
2022 {"sfge", one(0056300), one(0177700), "$s", m68000up },
2023 {"sgt", one(0057300), one(0177700), "$s", m68000up },
2024 {"sfgt", one(0057300), one(0177700), "$s", m68000up },
2025 {"shi", one(0051300), one(0177700), "$s", m68000up },
2026 {"sle", one(0057700), one(0177700), "$s", m68000up },
2027 {"sfle", one(0057700), one(0177700), "$s", m68000up },
2028 {"sls", one(0051700), one(0177700), "$s", m68000up },
2029 {"slt", one(0056700), one(0177700), "$s", m68000up },
2030 {"sflt", one(0056700), one(0177700), "$s", m68000up },
2031 {"smi", one(0055700), one(0177700), "$s", m68000up },
2032 {"sne", one(0053300), one(0177700), "$s", m68000up },
2033 {"sfneq", one(0053300), one(0177700), "$s", m68000up },
2034 {"spl", one(0055300), one(0177700), "$s", m68000up },
2035 {"st", one(0050300), one(0177700), "$s", m68000up },
2036 {"svc", one(0054300), one(0177700), "$s", m68000up },
2037 {"svs", one(0054700), one(0177700), "$s", m68000up },
2038
2039 {"stop", one(0047162), one(0177777), "#w", m68000up },
2040
2041 {OP2(suba,l), one(0110700), one(0170700), "*lAd", m68000up },
2042 {OP2(suba,w), one(0110300), one(0170700), "*wAd", m68000up },
2043 {OP2(sub,b), one(0050400), one(0170700), "Qd%s", m68000up }, /* subq written as sub */
2044 {OP2(sub,b), one(0002000), one(0177700), "#b$s", m68000up }, /* subi written as sub */
2045 {OP2(sub,b), one(0110000), one(0170700), ";bDd", m68000up }, /* subb ? ?, Dd */
2046 {OP2(sub,b), one(0110400), one(0170700), "Dd~s", m68000up }, /* subb Dd, ? ? */
2047
2048 {OP2(subi,b), one(0002000), one(0177700), "#b$s", m68000up },
2049 {OP2(subi,l), one(0002200), one(0177700), "#l$s", m68000up },
2050 {OP2(subi,w), one(0002100), one(0177700), "#w$s", m68000up },
2051 {OP2(sub,l), one(0050600), one(0170700), "Qd%s", m68000up },
2052 {OP2(sub,l), one(0002200), one(0177700), "#l$s", m68000up },
2053 {OP2(sub,l), one(0110700), one(0170700), "*lAd", m68000up },
2054 {OP2(sub,l), one(0110200), one(0170700), "*lDd", m68000up },
2055 {OP2(sub,l), one(0110600), one(0170700), "Dd~s", m68000up },
2056 {OP2(subq,b), one(0050400), one(0170700), "Qd%s", m68000up },
2057 #ifdef MOTOROLA_SYNTAX
2058 {OP2(subq,b), one(0002000), one(0177700), "#b$s", m68000up }, /* FIXNIEL: sub instead of subq because too many frags */
2059 #endif
2060 {OP2(subq,l), one(0050600), one(0170700), "Qd%s", m68000up },
2061 #ifdef MOTOROLA_SYNTAX
2062 {OP2(subq,l), one(0002200), one(0177700), "#l$s", m68000up }, /* FIXNIEL: sub instead of subq because too many frags */
2063 #endif
2064 {OP2(subq,w), one(0050500), one(0170700), "Qd%s", m68000up },
2065 #ifdef MOTOROLA_SYNTAX
2066 {OP2(subq,w), one(0002100), one(0177700), "#w$s", m68000up }, /* FIXNIEL: sub instead of subq because too many frags */
2067 #endif
2068 {OP2(sub,w), one(0050500), one(0170700), "Qd%s", m68000up },
2069 {OP2(sub,w), one(0002100), one(0177700), "#w$s", m68000up },
2070 {OP2(sub,w), one(0110100), one(0170700), "*wDd", m68000up },
2071 {OP2(sub,w), one(0110300), one(0170700), "*wAd", m68000up }, /* suba written as sub */
2072 {OP2(sub,w), one(0110500), one(0170700), "Dd~s", m68000up },
2073 #ifdef ALLOW_DEFAULT_SIZES
2074 {"subi", one(0002200), one(0177700), "#l$s", m68000up },
2075 {"suba", one(0110700), one(0170700), "*lAd", m68000up },
2076 {"sub", one(0050500), one(0170700), "Qd%s", m68000up },
2077 {"sub", one(0002100), one(0177700), "#w$s", m68000up },
2078 {"sub", one(0110100), one(0170700), "*wDd", m68000up },
2079 {"sub", one(0110300), one(0170700), "*wAd", m68000up }, /* suba written as sub */
2080 {"sub", one(0110500), one(0170700), "Dd~s", m68000up },
2081 #endif
2082
2083 {OP2(subx,b), one(0110400), one(0170770), "DsDd", m68000up }, /* subxb Ds, Dd */
2084 {OP2(subx,b), one(0110410), one(0170770), "-s-d", m68000up }, /* subxb -(As), -(Ad) */
2085 {OP2(subx,l), one(0110600), one(0170770), "DsDd", m68000up },
2086 {OP2(subx,l), one(0110610), one(0170770), "-s-d", m68000up },
2087 {OP2(subx,w), one(0110500), one(0170770), "DsDd", m68000up },
2088 {OP2(subx,w), one(0110510), one(0170770), "-s-d", m68000up },
2089 #ifdef ALLOW_DEFAULT_SIZES
2090 {"subx", one(0110500), one(0170770), "DsDd", m68000up },
2091 {"subx", one(0110510), one(0170770), "-s-d", m68000up },
2092 #endif
2093
2094 {"swap", one(0044100), one(0177770), "Ds", m68000up },
2095 #ifdef MOTOROLA_SYNTAX
2096 {OP2(swap,w), one(0044100), one(0177770), "Ds", m68000up },
2097 #endif
2098
2099 {"tas", one(0045300), one(0177700), "$s", m68000up },
2100
2101 #ifdef MOTOROLA_SYNTAX
2102 {"tpcc", one(0047100), one(0177760), "Ts", m68000up },
2103 #endif
2104
2105 {"trap", one(0047100), one(0177760), "Ts", m68000up },
2106
2107
2108 #ifdef MOTOROLA_SYNTAX
2109 {"tcc", one(0052374), one(0177777), "", m68020up },
2110 #endif
2111
2112 {"trapcc", one(0052374), one(0177777), "", m68020up },
2113 {"trapcs", one(0052774), one(0177777), "", m68020up },
2114 {"trapeq", one(0053774), one(0177777), "", m68020up },
2115 {"trapf", one(0050774), one(0177777), "", m68020up },
2116 {"trapge", one(0056374), one(0177777), "", m68020up },
2117 {"trapgt", one(0057374), one(0177777), "", m68020up },
2118 {"traphi", one(0051374), one(0177777), "", m68020up },
2119 {"traple", one(0057774), one(0177777), "", m68020up },
2120 {"trapls", one(0051774), one(0177777), "", m68020up },
2121 {"traplt", one(0056774), one(0177777), "", m68020up },
2122 {"trapmi", one(0055774), one(0177777), "", m68020up },
2123 {"trapne", one(0053374), one(0177777), "", m68020up },
2124 {"trappl", one(0055374), one(0177777), "", m68020up },
2125 {"trapt", one(0050374), one(0177777), "", m68020up },
2126 {"trapvc", one(0054374), one(0177777), "", m68020up },
2127 {"trapvs", one(0054774), one(0177777), "", m68020up },
2128
2129 {"trapcc.w", one(0052372), one(0177777), V("","#w"), m68020up },
2130 {"trapcs.w", one(0052772), one(0177777), V("","#w"), m68020up },
2131 {"trapeq.w", one(0053772), one(0177777), V("","#w"), m68020up },
2132 {"trapf.w", one(0050772), one(0177777), V("","#w"), m68020up },
2133 {"trapge.w", one(0056372), one(0177777), V("","#w"), m68020up },
2134 {"trapgt.w", one(0057372), one(0177777), V("","#w"), m68020up },
2135 {"traphi.w", one(0051372), one(0177777), V("","#w"), m68020up },
2136 {"traple.w", one(0057772), one(0177777), V("","#w"), m68020up },
2137 {"trapls.w", one(0051772), one(0177777), V("","#w"), m68020up },
2138 {"traplt.w", one(0056772), one(0177777), V("","#w"), m68020up },
2139 {"trapmi.w", one(0055772), one(0177777), V("","#w"), m68020up },
2140 {"trapne.w", one(0053372), one(0177777), V("","#w"), m68020up },
2141 {"trappl.w", one(0055372), one(0177777), V("","#w"), m68020up },
2142 {"trapt.w", one(0050372), one(0177777), V("","#w"), m68020up },
2143 {"trapvc.w", one(0054372), one(0177777), V("","#w"), m68020up },
2144 {"trapvs.w", one(0054772), one(0177777), V("","#w"), m68020up },
2145
2146 {"trapcc.l", one(0052373), one(0177777), V("","#l"), m68020up },
2147 {"trapcs.l", one(0052773), one(0177777), V("","#l"), m68020up },
2148 {"trapeq.l", one(0053773), one(0177777), V("","#l"), m68020up },
2149 {"trapf.l", one(0050773), one(0177777), V("","#l"), m68020up },
2150 {"trapge.l", one(0056373), one(0177777), V("","#l"), m68020up },
2151 {"trapgt.l", one(0057373), one(0177777), V("","#l"), m68020up },
2152 {"traphi.l", one(0051373), one(0177777), V("","#l"), m68020up },
2153 {"traple.l", one(0057773), one(0177777), V("","#l"), m68020up },
2154 {"trapls.l", one(0051773), one(0177777), V("","#l"), m68020up },
2155 {"traplt.l", one(0056773), one(0177777), V("","#l"), m68020up },
2156 {"trapmi.l", one(0055773), one(0177777), V("","#l"), m68020up },
2157 {"trapne.l", one(0053373), one(0177777), V("","#l"), m68020up },
2158 {"trappl.l", one(0055373), one(0177777), V("","#l"), m68020up },
2159 {"trapt.l", one(0050373), one(0177777), V("","#l"), m68020up },
2160 {"trapvc.l", one(0054373), one(0177777), V("","#l"), m68020up },
2161 {"trapvs.l", one(0054773), one(0177777), V("","#l"), m68020up },
2162
2163 {"trapv", one(0047166), one(0177777), "", m68000up },
2164
2165
2166 {OP2(tst,b), one(0045000), one(0177700), ";b", m68000up },
2167 {OP2(tst,w), one(0045100), one(0177700), "*w", m68000up },
2168 {OP2(tst,l), one(0045200), one(0177700), "*l", m68000up },
2169 #ifdef ALLOW_DEFAULT_SIZES
2170 {"tst", one(0045200), one(0177700), "*l", m68000up },
2171 #endif
2172
2173 {"unlk", one(0047130), one(0177770), "As", m68000up },
2174 {"unpk", one(0100600), one(0170770), "DsDd#w", m68020up },
2175 {"unpk", one(0100610), one(0170770), "-s-d#w", m68020up },
2176
2177 /* Variable-sized branches */
2178
2179 {"jbsr", one(0060400), one(0177400), "Bg", m68000up },
2180 {"jbsr", one(0047200), one(0177700), "!s", m68000up },
2181 {"jra", one(0060000), one(0177400), "Bg", m68000up },
2182 {"jra", one(0047300), one(0177700), "!s", m68000up },
2183
2184 #ifdef MOTOROLA_SYNTAX
2185 {"jbra", one(0060000), one(0177400), "Bg", m68000up },
2186 {"jbra", one(0047300), one(0177700), "!s", m68000up },
2187 #endif
2188
2189 {"jhi", one(0061000), one(0177400), "Bg", m68000up },
2190 {"jls", one(0061400), one(0177400), "Bg", m68000up },
2191 {"jcc", one(0062000), one(0177400), "Bg", m68000up },
2192 {"jcs", one(0062400), one(0177400), "Bg", m68000up },
2193 {"jne", one(0063000), one(0177400), "Bg", m68000up },
2194 {"jeq", one(0063400), one(0177400), "Bg", m68000up },
2195 {"jvc", one(0064000), one(0177400), "Bg", m68000up },
2196 {"jvs", one(0064400), one(0177400), "Bg", m68000up },
2197 {"jpl", one(0065000), one(0177400), "Bg", m68000up },
2198 {"jmi", one(0065400), one(0177400), "Bg", m68000up },
2199 {"jge", one(0066000), one(0177400), "Bg", m68000up },
2200 {"jlt", one(0066400), one(0177400), "Bg", m68000up },
2201 {"jgt", one(0067000), one(0177400), "Bg", m68000up },
2202 {"jle", one(0067400), one(0177400), "Bg", m68000up },
2203
2204
2205 #ifdef MOTOROLA_SYNTAX
2206 /* Aliases: jbCC is the same as jCC */
2207 {"jbhi", one(0061000), one(0177400), "Bg", m68000up },
2208 {"jbls", one(0061400), one(0177400), "Bg", m68000up },
2209 {"jbcc", one(0062000), one(0177400), "Bg", m68000up },
2210 {"jbcs", one(0062400), one(0177400), "Bg", m68000up },
2211 {"jbne", one(0063000), one(0177400), "Bg", m68000up },
2212 {"jbeq", one(0063400), one(0177400), "Bg", m68000up },
2213 {"jbvc", one(0064000), one(0177400), "Bg", m68000up },
2214 {"jbvs", one(0064400), one(0177400), "Bg", m68000up },
2215 {"jbpl", one(0065000), one(0177400), "Bg", m68000up },
2216 {"jbmi", one(0065400), one(0177400), "Bg", m68000up },
2217 {"jbge", one(0066000), one(0177400), "Bg", m68000up },
2218 {"jblt", one(0066400), one(0177400), "Bg", m68000up },
2219 {"jbgt", one(0067000), one(0177400), "Bg", m68000up },
2220 {"jble", one(0067400), one(0177400), "Bg", m68000up },
2221 #endif /* MOTOROLA_SYNTAX */
2222
2223 /* aliases */
2224
2225 #ifdef MOTOROLA_SYNTAX
2226 {"move", one(0030000), one(0170000), "*w$d", m68000up },
2227 {"move", one(0030100), one(0170700), "*wAd", m68000up }, /* mova, written as mov */
2228 {"move", one(0040300), one(0177700), "Ss$s", m68000up }, /* Move from sr */
2229 {"move", one(0041300), one(0177700), "Cs$s", m68010up }, /* Move from ccr */
2230 {"move", one(0042300), one(0177700), ";wCd", m68000up }, /* mov to ccr */
2231 {"move", one(0043300), one(0177700), ";wSd", m68000up }, /* mov to sr */
2232
2233
2234 {"move", one(0020000), one(0170000), "*l$d", m68000up },
2235 {"move", one(0020100), one(0170700), "*lAd", m68000up },
2236 {"move", one(0070000), one(0170400), "MsDd", m68000up }, /* movq written as mov */
2237 {"move", one(0047140), one(0177770), "AsUd", m68000up }, /* mov to USP */
2238 {"move", one(0047150), one(0177770), "UdAs", m68000up }, /* mov from USP */
2239 #endif /* MOTOROLA_SYNTAX */
2240
2241
2242 {OP2(movq,l), one(0070000), one(0170400), "MsDd", m68000up },
2243 #ifdef MOTOROLA_SYNTAX
2244 {OP2(movq,l), one(0020000), one(0170000), "*l$d", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2245 {OP2(movq,l), one(0020100), one(0170700), "*lAd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2246 {OP2(movq,l), one(0047140), one(0177770), "AsUd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2247 {OP2(movq,l), one(0047150), one(0177770), "UdAs", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2248 #endif
2249 {OP2(moveq,l), one(0070000), one(0170400), "MsDd", m68000up },
2250 #ifdef MOTOROLA_SYNTAX
2251 {OP2(moveq,l), one(0020000), one(0170000), "*l$d", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2252 {OP2(moveq,l), one(0020100), one(0170700), "*lAd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2253 {OP2(moveq,l), one(0047140), one(0177770), "AsUd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2254 {OP2(moveq,l), one(0047150), one(0177770), "UdAs", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2255 #endif
2256 {OP2(mova,l), one(0020100), one(0170700), "*lAd", m68000up },
2257 {OP2(mova,w), one(0030100), one(0170700), "*wAd", m68000up },
2258 {OP2(mov,b), one(0010000), one(0170000), ";b$d", m68000up }, /* mov */
2259
2260 {OP2(mov,l), one(0070000), one(0170400), "MsDd", m68000up }, /* movq written as mov */
2261 {OP2(mov,l), one(0020000), one(0170000), "*l$d", m68000up },
2262 {OP2(mov,l), one(0020100), one(0170700), "*lAd", m68000up },
2263 {OP2(mov,l), one(0047140), one(0177770), "AsUd", m68000up }, /* mov to USP */
2264 {OP2(mov,l), one(0047150), one(0177770), "UdAs", m68000up }, /* mov from USP */
2265
2266 {"movc", one(0047173), one(0177777), "R1Jj", m68010up },
2267 {"movc", one(0047173), one(0177777), "R1#j", m68010up },
2268 {"movc", one(0047172), one(0177777), "JjR1", m68010up },
2269 {"movc", one(0047172), one(0177777), "#jR1", m68010up },
2270 {OP2(movm,l), one(0044300), one(0177700), "#w&s", m68000up }, /* movm reg to mem. */
2271 {OP2(movm,l), one(0044340), one(0177770), "#w-s", m68000up }, /* movm reg to autodecrement. */
2272 {"movml", one(0046300), one(0177700), "!s#w", m68000up }, /* movm mem to reg. */
2273 {"movml", one(0046330), one(0177770), "+s#w", m68000up }, /* movm autoinc to reg. */
2274 {"movml", one(0044300), one(0177700), "Lw&s", m68000up }, /* movm reg to mem. */
2275 {"movml", one(0044340), one(0177770), "lw-s", m68000up }, /* movm reg to autodecrement. */
2276 {"movml", one(0046300), one(0177700), "!sLw", m68000up }, /* movm mem to reg. */
2277 {"movml", one(0046330), one(0177770), "+sLw", m68000up }, /* movm autoinc to reg. */
2278 {OP2(movm,w), one(0044200), one(0177700), "#w&s", m68000up }, /* movm reg to mem. */
2279 {OP2(movm,w), one(0044240), one(0177770), "#w-s", m68000up }, /* movm reg to autodecrement. */
2280 {OP2(movm,w), one(0046200), one(0177700), "!s#w", m68000up }, /* movm mem to reg. */
2281 {OP2(movm,w), one(0046230), one(0177770), "+s#w", m68000up }, /* movm autoinc to reg. */
2282 {OP2(movm,w), one(0044200), one(0177700), "Lw&s", m68000up }, /* movm reg to mem. */
2283 {OP2(movm,w), one(0044240), one(0177770), "lw-s", m68000up }, /* movm reg to autodecrement. */
2284 {OP2(movm,w), one(0046200), one(0177700), "!sLw", m68000up }, /* movm mem to reg. */
2285 {OP2(movm,w), one(0046230), one(0177770), "+sLw", m68000up }, /* movm autoinc to reg. */
2286 {OP2(movp,l), one(0000510), one(0170770), "dsDd", m68000up }, /* memory to register */
2287 {OP2(movp,l), one(0000710), one(0170770), "Ddds", m68000up }, /* register to memory */
2288 {OP2(movp,w), one(0000410), one(0170770), "dsDd", m68000up }, /* memory to register */
2289 {OP2(movp,w), one(0000610), one(0170770), "Ddds", m68000up }, /* register to memory */
2290 {"movq", one(0070000), one(0170400), "MsDd", m68000up },
2291
2292 #ifdef MOTOROLA_SYNTAX
2293 {"movq", one(0020000), one(0170000), "*l$d", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2294 {"movq", one(0020100), one(0170700), "*lAd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2295 {"movq", one(0047140), one(0177770), "AsUd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2296 {"movq", one(0047150), one(0177770), "UdAs", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2297 #endif
2298
2299 {OP2(mov,w), one(0030000), one(0170000), "*w$d", m68000up },
2300 {OP2(mov,w), one(0030100), one(0170700), "*wAd", m68000up }, /* mova, written as mov */
2301 {OP2(mov,w), one(0040300), one(0177700), "Ss$s", m68000up }, /* Move from sr */
2302 {OP2(mov,w), one(0041300), one(0177700), "Cs$s", m68010up }, /* Move from ccr */
2303 {OP2(mov,w), one(0042300), one(0177700), ";wCd", m68000up }, /* mov to ccr */
2304 {OP2(mov,w), one(0043300), one(0177700), ";wSd", m68000up }, /* mov to sr */
2305 {OP2(movs,b), two(0007000, 0), two(0177700, 07777), "~sR1", m68010up },
2306 {OP2(movs,b), two(0007000, 04000), two(0177700, 07777), "R1~s", m68010up },
2307 {OP2(movs,l), two(0007200, 0), two(0177700, 07777), "~sR1", m68010up },
2308 {OP2(movs,l), two(0007200, 04000), two(0177700, 07777), "R1~s", m68010up },
2309 {OP2(movs,w), two(0007100, 0), two(0177700, 07777), "~sR1", m68010up },
2310 {OP2(movs,w), two(0007100, 04000), two(0177700, 07777), "R1~s", m68010up },
2311
2312 #ifdef MOTOROLA_SYNTAX
2313 {OP2(moveq,l), one(0070000), one(0170400), "MsDd", m68000up },
2314 {OP2(moveq,l), one(0070000), one(0170400), "MsDd", m68000up },
2315 {OP2(movea,l), one(0020100), one(0170700), "*lAd", m68000up },
2316 {OP2(movea,w), one(0030100), one(0170700), "*wAd", m68000up },
2317 {OP2(move,b), one(0010000), one(0170000), ";b$d", m68000up }, /* mov */
2318 {OP2(move,l), one(0070000), one(0170400), "MsDd", m68000up }, /* movq written as mov */
2319 {OP2(move,l), one(0020000), one(0170000), "*l$d", m68000up },
2320 {OP2(move,l), one(0020100), one(0170700), "*lAd", m68000up },
2321 {OP2(move,l), one(0047140), one(0177770), "AsUd", m68000up }, /* mov to USP */
2322 {OP2(move,l), one(0047150), one(0177770), "UdAs", m68000up }, /* mov from USP */
2323 {"movec", one(0047173), one(0177777), "R1Jj", m68010up },
2324 {"movec", one(0047173), one(0177777), "R1#j", m68010up },
2325 {"movec", one(0047172), one(0177777), "JjR1", m68010up },
2326 {"movec", one(0047172), one(0177777), "#jR1", m68010up },
2327 {OP2(movec,l), one(0047173), one(0177777), "R1Jj", m68010up },
2328 {OP2(movec,l), one(0047173), one(0177777), "R1#j", m68010up },
2329 {OP2(movec,l), one(0047172), one(0177777), "JjR1", m68010up },
2330 {OP2(movec,l), one(0047172), one(0177777), "#jR1", m68010up },
2331
2332 {"moveq", one(0070000), one(0170400), "MsDd", m68000up },
2333 {"moveq", one(0020000), one(0170000), "*l$d", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2334 {"moveq", one(0020100), one(0170700), "*lAd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2335 {"moveq", one(0047140), one(0177770), "AsUd", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2336 {"moveq", one(0047150), one(0177770), "UdAs", m68000up }, /* FIXNIEL: move instead of movw because too many frags */
2337
2338 #endif /* MOTOROLA_SYNTAX */
2339
2340 };
2341
2342 int numopcodes=sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
2343
2344 struct m68k_opcode *endop = m68k_opcodes+sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
2345 #endif
2346 /*
2347 * Local Variables:
2348 * fill-column: 131
2349 * End:
2350 */
2351
2352
2353 /* end of m68k-opcode.h */