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