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