]> Git Repo - binutils.git/blob - gdb/m68k-opcode.h
gdb-2.4+.aux.coff
[binutils.git] / gdb / m68k-opcode.h
1 /* Opcode table for m68000/m68020 and m68881.  */
2
3 struct m68k_opcode
4 {
5   char *name;
6   unsigned long opcode;
7   unsigned long  match;
8   char *args;
9 };
10
11 /* We store four bytes of opcode for all opcodes because that
12    is the most any of them need.  The actual length of an instruction
13    is always at least 2 bytes, and is as much longer as necessary to
14    hold the operands it has.
15
16    The match component is a mask saying which bits must match
17    particular opcode in order for an instruction to be an instance
18    of that opcode.
19
20    The args component is a string containing two characters
21    for each operand of the instruction.  The first specifies
22    the kind of operand; the second, the place it is stored.  */
23
24 /* Kinds of operands:
25    D  data register only.  Stored as 3 bits.
26    A  address register only.  Stored as 3 bits.
27    R  either kind of register.  Stored as 4 bits.
28    F  floating point coprocessor register only.   Stored as 3 bits.
29    O  an offset (or width): immediate data 0-31 or data register.
30       Stored as 6 bits in special format for BF... insns.
31    +  autoincrement only.  Stored as 3 bits (number of the address register).
32    -  autodecrement only.  Stored as 3 bits (number of the address register).
33    Q  quick immediate data.  Stored as 3 bits.
34       This matches an immediate operand only when value is in range 1 .. 8.
35    M  moveq immediate data.  Stored as 8 bits.
36       This matches an immediate operand only when value is in range -128..127
37    T  trap vector immediate data.  Stored as 4 bits.
38
39    k  K-factor for fmove.p instruction.   Stored as a 7-bit constant or
40       a three bit register offset, depending on the field type.
41
42    #  immediate data.  Stored in special places (b, w or l)
43       which say how many bits to store.
44    ^  immediate data for floating point instructions.   Special places
45       are offset by 2 bytes from '#'...
46    B  pc-relative address, converted to an offset
47       that is treated as immediate data.
48    d  displacement and register.  Stores the register as 3 bits
49       and stores the displacement in the entire second word.
50
51    C  the CCR.  No need to store it; this is just for filtering validity.
52    S  the SR.  No need to store, just as with CCR.
53    U  the USP.  No need to store, just as with CCR.
54
55    I  Coprocessor ID.   Not printed if 1.   The Coprocessor ID is always
56       extracted from the 'd' field of word one, which means that an extended
57       coprocessor opcode can be skipped using the 'i' place, if needed.
58
59    s  System Control register for the floating point coprocessor.
60
61    J  Misc register for movec instruction, stored in 'j' format.
62         Possible values:
63         000     SFC     Source Function Code reg
64         001     DFC     Data Function Code reg
65         002     CACR    Cache Control Register
66         800     USP     User Stack Pointer
67         801     VBR     Vector Base reg
68         802     CAAR    Cache Address Register
69         803     MSP     Master Stack Pointer
70         804     ISP     Interrupt Stack Pointer
71
72  These specify various classes of addressing modes.
73  They are all stored as 6 bits using an address mode and a register number;
74  they differ in which addressing modes they match.
75
76    *  all                                       (modes 0-6,7.*)
77    ~  alterable memory                          (modes 2-6,7.0,7.1)(not 0,1,7.~)
78    %  alterable                                 (modes 0-6,7.0,7.1)(not 7.~)
79    ;  data                                      (modes 0,2-6,7.*)(not 1)
80    @  data, but not immediate                   (modes 0,2-6,7.???)(not 1,7.?)  This may really be ;, the 68020 book says it is
81    !  control                                   (modes 2,5,6,7.*-)(not 0,1,3,4,7.4)
82    &  alterable control                         (modes 2,5,6,7.0,7.1)(not 0,1,7.???)
83    $  alterable data                            (modes 0,2-6,7.0,7.1)(not 1,7.~)
84    ?  alterable control, or data register       (modes 0,2,5,6,7.0,7.1)(not 1,3,4,7.~)
85    /  control, or data register                 (modes 0,2,5,6,7.0,7.1,7.2,7.3)(not 1,3,4,7.4)
86 */
87
88 /* Places to put an operand, for non-general operands:
89    s  source, low bits of first word.
90    d  dest, shifted 9 in first word
91    1  second word, shifted 12
92    2  second word, shifted 6
93    3  second word, shifted 0
94    4  third word, shifted 12
95    5  third word, shifted 6
96    6  third word, shifted 0
97    7  second word, shifted 7
98    8  second word, shifted 10
99    D  store in both place 1 and place 3; for divul and divsl.
100    b  second word, low byte
101    w  second word (entire)
102    l  second and third word (entire)
103    g  branch offset for bra and similar instructions.
104       The place to store depends on the magnitude of offset.
105    t  store in both place 7 and place 8; for floating point operations
106    c  branch offset for cpBcc operations.
107       The place to store is word two if bit six of word one is zero,
108       and words two and three if bit six of word one is one.
109    i  Increment by two, to skip over coprocessor extended operands.   Only
110       works with the 'I' format.
111    k  Dynamic K-factor field.   Bits 6-4 of word 2, used as a register number.
112       Also used for dynamic fmovem instruction.
113    C  floating point coprocessor constant - 7 bits.  Also used for static
114       K-factors...
115    j  Movec register #, stored in 12 low bits of second word.
116
117  Places to put operand, for general operands:
118    d  destination, shifted 6 bits in first word
119    b  source, at low bit of first word, and immediate uses one byte
120    w  source, at low bit of first word, and immediate uses two bytes
121    l  source, at low bit of first word, and immediate uses four bytes
122    s  source, at low bit of first word.
123       Used sometimes in contexts where immediate is not allowed anyway.
124    f  single precision float, low bit of 1st word, immediate uses 4 bytes
125    F  double precision float, low bit of 1st word, immediate uses 8 bytes
126    x  extended precision float, low bit of 1st word, immediate uses 12 bytes
127    p  packed float, low bit of 1st word, immediate uses 12 bytes
128 */
129
130 #define one(x) ((x) << 16)
131 #define two(x, y) (((x) << 16) + y)
132
133 /* The assembler requires that this array be sorted as follows:
134    all instances of the same mnemonic must be consecutive.
135    All instances of the same mnemonic with the same number of operands
136    must be consecutive.
137  */
138 struct m68k_opcode m68k_opcodes[] =
139 {
140 {"abcd",        one(0140400),           one(0170770),           "DsDd"},
141 {"abcd",        one(0140410),           one(0170770),           "-s-d"},
142
143                 /* Add instructions */
144 {"addal",       one(0150700),           one(0170700),           "*lAd"},
145 {"addaw",       one(0150300),           one(0170700),           "*wAd"},
146 {"addib",       one(0003000),           one(0177700),           "#b$b"},
147 {"addil",       one(0003200),           one(0177700),           "#l$l"},
148 {"addiw",       one(0003100),           one(0177700),           "#w$w"},
149 {"addqb",       one(0050000),           one(0170700),           "Qd$b"},
150 {"addql",       one(0050200),           one(0170700),           "Qd%l"},
151 {"addqw",       one(0050100),           one(0170700),           "Qd%w"},
152
153 {"addb",        one(0003000),           one(0177700),           "#b$b"},        /* addi written as add */
154 {"addb",        one(0050000),           one(0170700),           "Qd$b"},        /* addq written as add */
155 {"addb",        one(0150000),           one(0170700),           ";bDd"},        /* addb <ea>,   Dd */
156 {"addb",        one(0150400),           one(0170700),           "Dd~b"},        /* addb Dd,     <ea> */
157
158 {"addw",        one(0003100),           one(0177700),           "#w$w"},        /* addi written as add */
159 {"addw",        one(0150300),           one(0170700),           "*wAd"},        /* adda written as add */
160 {"addw",        one(0050100),           one(0170700),           "Qd%w"},        /* addq written as add */
161 {"addw",        one(0150100),           one(0170700),           "*wDd"},        /* addw <ea>,   Dd */
162 {"addw",        one(0150500),           one(0170700),           "Dd~w"},        /* addw Dd,     <ea> */
163
164 {"addl",        one(0003200),           one(0177700),           "#l$l"},        /* addi written as add */
165 {"addl",        one(0150700),           one(0170700),           "*lAd"},        /* adda written as add */
166 {"addl",        one(0050200),           one(0170700),           "Qd%l"},        /* addq written as add */
167 {"addl",        one(0150200),           one(0170700),           "*lDd"},        /* addl <ea>,   Dd */
168 {"addl",        one(0150600),           one(0170700),           "Dd~l"},        /* addl Dd,     <ea> */
169
170 {"addxb",       one(0150400),           one(0170770),           "DsDd"},
171 {"addxb",       one(0150410),           one(0170770),           "-s-d"},
172 {"addxl",       one(0150600),           one(0170770),           "DsDd"},
173 {"addxl",       one(0150610),           one(0170770),           "-s-d"},
174 {"addxw",       one(0150500),           one(0170770),           "DsDd"},
175 {"addxw",       one(0150510),           one(0170770),           "-s-d"},
176
177 {"andib",       one(0001000),           one(0177700),           "#b$b"},
178 {"andib",       one(0001074),           one(0177777),           "#bCb"},        /* andi to ccr */
179 {"andiw",       one(0001100),           one(0177700),           "#w$w"},
180 {"andiw",       one(0001174),           one(0177777),           "#wSw"},        /* andi to sr */
181 {"andil",       one(0001200),           one(0177700),           "#l$l"},
182
183 {"andb",        one(0001000),           one(0177700),           "#b$b"},        /* andi written as or */
184 {"andb",        one(0001074),           one(0177777),           "#bCb"},        /* andi to ccr */
185 {"andb",        one(0140000),           one(0170700),           ";bDd"},        /* memory to register */
186 {"andb",        one(0140400),           one(0170700),           "Dd~b"},        /* register to memory */
187 {"andw",        one(0001100),           one(0177700),           "#w$w"},        /* andi written as or */
188 {"andw",        one(0001174),           one(0177777),           "#wSw"},        /* andi to sr */
189 {"andw",        one(0140100),           one(0170700),           ";wDd"},        /* memory to register */
190 {"andw",        one(0140500),           one(0170700),           "Dd~w"},        /* register to memory */
191 {"andl",        one(0001200),           one(0177700),           "#l$l"},        /* andi written as or */
192 {"andl",        one(0140200),           one(0170700),           ";lDd"},        /* memory to register */
193 {"andl",        one(0140600),           one(0170700),           "Dd~l"},        /* register to memory */
194
195 {"aslb",        one(0160400),           one(0170770),           "QdDs"},
196 {"aslb",        one(0160440),           one(0170770),           "DdDs"},
197 {"asll",        one(0160600),           one(0170770),           "QdDs"},
198 {"asll",        one(0160640),           one(0170770),           "DdDs"},
199 {"aslw",        one(0160500),           one(0170770),           "QdDs"},
200 {"aslw",        one(0160540),           one(0170770),           "DdDs"},
201 {"aslw",        one(0160700),           one(0177700),           "~s"},  /* Shift memory */
202 {"asrb",        one(0160000),           one(0170770),           "QdDs"},
203 {"asrb",        one(0160040),           one(0170770),           "DdDs"},
204 {"asrl",        one(0160200),           one(0170770),           "QdDs"},
205 {"asrl",        one(0160240),           one(0170770),           "DdDs"},
206 {"asrw",        one(0160100),           one(0170770),           "QdDs"},
207 {"asrw",        one(0160140),           one(0170770),           "DdDs"},
208 {"asrw",        one(0160300),           one(0177700),           "~s"},  /* Shift memory */
209
210 {"bhi",         one(0061000),           one(0177400),           "Bg"},
211 {"bls",         one(0061400),           one(0177400),           "Bg"},
212 {"bcc",         one(0062000),           one(0177400),           "Bg"},
213 {"bcs",         one(0062400),           one(0177400),           "Bg"},
214 {"bne",         one(0063000),           one(0177400),           "Bg"},
215 {"beq",         one(0063400),           one(0177400),           "Bg"},
216 {"bvc",         one(0064000),           one(0177400),           "Bg"},
217 {"bvs",         one(0064400),           one(0177400),           "Bg"},
218 {"bpl",         one(0065000),           one(0177400),           "Bg"},
219 {"bmi",         one(0065400),           one(0177400),           "Bg"},
220 {"bge",         one(0066000),           one(0177400),           "Bg"},
221 {"blt",         one(0066400),           one(0177400),           "Bg"},
222 {"bgt",         one(0067000),           one(0177400),           "Bg"},
223 {"ble",         one(0067400),           one(0177400),           "Bg"},
224
225 {"bchg",        one(0000500),           one(0170700),           "Dd$s"},
226 {"bchg",        one(0004100),           one(0177700),           "#b$s"},
227 {"bclr",        one(0000600),           one(0170700),           "Dd$s"},
228 {"bclr",        one(0004200),           one(0177700),           "#b$s"},
229 {"bfchg",       two(0165300, 0),        two(0177700, 0170000),  "?sO2O3"},
230 {"bfclr",       two(0166300, 0),        two(0177700, 0170000),  "?sO2O3"},
231 {"bfexts",      two(0165700, 0),        two(0177700, 0100000),  "/sO2O3D1"},
232 {"bfextu",      two(0164700, 0),        two(0177700, 0100000),  "/sO2O3D1"},
233 {"bfffo",       two(0166700, 0),        two(0177700, 0100000),  "/sO2O3D1"},
234 {"bfins",       two(0167700, 0),        two(0177700, 0100000),  "D1?sO2O3"},
235 {"bfset",       two(0167300, 0),        two(0177700, 0170000),  "?sO2O3"},
236 {"bftst",       two(0164300, 0),        two(0177700, 0170000),  "/sO2O3"},
237 {"bset",        one(0000700),           one(0170700),           "Dd$s"},
238 {"bset",        one(0004300),           one(0177700),           "#b$s"},
239 {"btst",        one(0000400),           one(0170700),           "Dd@s"},
240 {"btst",        one(0004000),           one(0177700),           "#b@s"},
241
242 {"bkpt",        one(0044110),           one(0177770),           "Qs"},
243 {"bra",         one(0060000),           one(0177400),           "Bg"},
244 {"bsr",         one(0060400),           one(0177400),           "Bg"},
245 {"callm",       one(0003300),           one(0177700),           "#b!s"},
246 {"cas2l",       two(0007374, 0),        two(0177777, 0107070),  "D3D6D2D5R1R4"}, /* JF FOO this is really a 3 word ins */
247 {"cas2w",       two(0006374, 0),        two(0177777, 0107070),  "D3D6D2D5R1R4"}, /* JF ditto */
248 {"casb",        two(0005300, 0),        two(0177700, 0177070),  "D3D2~s"},
249 {"casl",        two(0007300, 0),        two(0177700, 0177070),  "D3D2~s"},
250 {"casw",        two(0006300, 0),        two(0177700, 0177070),  "D3D2~s"},
251
252 /*  {"chk",     one(0040600),           one(0170700),           ";wDd"}, JF FOO this looks wrong */
253 {"chk2b",       two(0000300, 0004000),  two(0177700, 07777),    "!sR1"},
254 {"chk2l",       two(0002300, 0004000),  two(0177700, 07777),    "!sR1"},
255 {"chk2w",       two(0001300, 0004000),  two(0177700, 07777),    "!sR1"},
256 {"chkl",        one(0040400),           one(0170700),           ";lDd"},
257 {"chkw",        one(0040600),           one(0170700),           ";wDd"},
258 {"clrb",        one(0041000),           one(0177700),           "$s"},
259 {"clrl",        one(0041200),           one(0177700),           "$s"},
260 {"clrw",        one(0041100),           one(0177700),           "$s"},
261
262 {"cmp2b",       two(0000300, 0),        two(0177700, 07777),    "!sR1"},
263 {"cmp2l",       two(0002300, 0),        two(0177700, 07777),    "!sR1"},
264 {"cmp2w",       two(0001300, 0),        two(0177700, 07777),    "!sR1"},
265 {"cmpal",       one(0130700),           one(0170700),           "*lAd"},
266 {"cmpaw",       one(0130300),           one(0170700),           "*wAd"},
267 {"cmpib",       one(0006000),           one(0177700),           "#b;b"},
268 {"cmpil",       one(0006200),           one(0177700),           "#l;l"},
269 {"cmpiw",       one(0006100),           one(0177700),           "#w;w"},
270 {"cmpb",        one(0006000),           one(0177700),           "#b;b"},        /* cmpi written as cmp */
271 {"cmpb",        one(0130000),           one(0170700),           ";bDd"},
272 {"cmpw",        one(0006100),           one(0177700),           "#w;w"},
273 {"cmpw",        one(0130100),           one(0170700),           "*wDd"},
274 {"cmpw",        one(0130300),           one(0170700),           "*wAd"},        /* cmpa written as cmp */
275 {"cmpl",        one(0006200),           one(0177700),           "#l;l"},
276 {"cmpl",        one(0130200),           one(0170700),           "*lDd"},
277 {"cmpl",        one(0130700),           one(0170700),           "*lAd"},
278 {"cmpmb",       one(0130410),           one(0170770),           "+s+d"},
279 {"cmpml",       one(0130610),           one(0170770),           "+s+d"},
280 {"cmpmw",       one(0130510),           one(0170770),           "+s+d"},
281
282 {"dbcc",        one(0052310),           one(0177770),           "DsBw"},
283 {"dbcs",        one(0052710),           one(0177770),           "DsBw"},
284 {"dbeq",        one(0053710),           one(0177770),           "DsBw"},
285 {"dbf",         one(0050710),           one(0177770),           "DsBw"},
286 {"dbge",        one(0056310),           one(0177770),           "DsBw"},
287 {"dbgt",        one(0057310),           one(0177770),           "DsBw"},
288 {"dbhi",        one(0051310),           one(0177770),           "DsBw"},
289 {"dble",        one(0057710),           one(0177770),           "DsBw"},
290 {"dbls",        one(0051710),           one(0177770),           "DsBw"},
291 {"dblt",        one(0056710),           one(0177770),           "DsBw"},
292 {"dbmi",        one(0055710),           one(0177770),           "DsBw"},
293 {"dbne",        one(0053310),           one(0177770),           "DsBw"},
294 {"dbpl",        one(0055310),           one(0177770),           "DsBw"},
295 {"dbra",        one(0050710),           one(0177770),           "DsBw"},
296 {"dbt",         one(0050310),           one(0177770),           "DsBw"},
297 {"dbvc",        one(0054310),           one(0177770),           "DsBw"},
298 {"dbvs",        one(0054710),           one(0177770),           "DsBw"},
299
300 {"divsl",       two(0046100, 0006000),  two(0177700, 0107770),  ";lD3D1"},
301 {"divsl",       two(0046100, 0004000),  two(0177700, 0107770),  ";lDD"},
302 {"divsll",      two(0046100, 0004000),  two(0177700, 0107770),  ";lD3D1"},
303 {"divsw",       one(0100700),           one(0170700),           ";wDd"},
304 {"divs",        one(0100700),           one(0170700),           ";wDd"},
305 {"divul",       two(0046100, 0002000),  two(0177700, 0107770),  ";lD3D1"},
306 {"divul",       two(0046100, 0000000),  two(0177700, 0107770),  ";lDD"},
307 {"divull",      two(0046100, 0000000),  two(0177700, 0107770),  ";lD3D1"},
308 {"divuw",       one(0100300),           one(0170700),           ";wDd"},
309 {"divu",        one(0100300),           one(0170700),           ";wDd"},
310 {"eorb",        one(0005000),           one(0177700),           "#b$s"},        /* eori written as or */
311 {"eorb",        one(0005074),           one(0177777),           "#bCs"},        /* eori to ccr */
312 {"eorb",        one(0130400),           one(0170700),           "Dd$s"},        /* register to memory */
313 {"eorib",       one(0005000),           one(0177700),           "#b$s"},
314 {"eorib",       one(0005074),           one(0177777),           "#bCs"},        /* eori to ccr */
315 {"eoril",       one(0005200),           one(0177700),           "#l$s"},
316 {"eoriw",       one(0005100),           one(0177700),           "#w$s"},
317 {"eoriw",       one(0005174),           one(0177777),           "#wSs"},        /* eori to sr */
318 {"eorl",        one(0005200),           one(0177700),           "#l$s"},
319 {"eorl",        one(0130600),           one(0170700),           "Dd$s"},
320 {"eorw",        one(0005100),           one(0177700),           "#w$s"},
321 {"eorw",        one(0005174),           one(0177777),           "#wSs"},        /* eori to sr */
322 {"eorw",        one(0130500),           one(0170700),           "Dd$s"},
323
324 {"exg",         one(0140500),           one(0170770),           "DdDs"},
325 {"exg",         one(0140510),           one(0170770),           "AdAs"},
326 {"exg",         one(0140610),           one(0170770),           "DdAs"},
327 {"exg",         one(0140610),           one(0170770),           "AsDd"},
328
329 {"extw",        one(0044200),           one(0177770),           "Ds"},
330 {"extl",        one(0044300),           one(0177770),           "Ds"},
331 {"extbl",       one(0044700),           one(0177770),           "Ds"},
332 {"extb.l",      one(0044700),           one(0177770),           "Ds"},  /* Not sure we should support this one*/
333
334 {"illegal",     one(0045374),           one(0177777),           ""},
335 {"jmp",         one(0047300),           one(0177700),           "!s"},
336 {"jsr",         one(0047200),           one(0177700),           "!s"},
337 {"lea",         one(0040700),           one(0170700),           "!sAd"},
338 {"linkw",       one(0047120),           one(0177770),           "As#w"},
339 {"linkl",       one(0044010),           one(0177770),           "As#l"},
340 {"link",        one(0047120),           one(0177770),           "As#w"},
341 {"link",        one(0044010),           one(0177770),           "As#l"},
342
343 {"lslb",        one(0160410),           one(0170770),           "QdDs"},        /* lsrb #Q,     Ds */
344 {"lslb",        one(0160450),           one(0170770),           "DdDs"},        /* lsrb Dd,     Ds */
345 {"lslw",        one(0160510),           one(0170770),           "QdDs"},        /* lsrb #Q,     Ds */
346 {"lslw",        one(0160550),           one(0170770),           "DdDs"},        /* lsrb Dd,     Ds */
347 {"lslw",        one(0161700),           one(0177700),           "~s"},  /* Shift memory */
348 {"lsll",        one(0160610),           one(0170770),           "QdDs"},        /* lsrb #Q,     Ds */
349 {"lsll",        one(0160650),           one(0170770),           "DdDs"},        /* lsrb Dd,     Ds */
350
351 {"lsrb",        one(0160010),           one(0170770),           "QdDs"} /* lsrb #Q,     Ds */,
352 {"lsrb",        one(0160050),           one(0170770),           "DdDs"},        /* lsrb Dd,     Ds */
353 {"lsrl",        one(0160210),           one(0170770),           "QdDs"},        /* lsrb #Q,     Ds */
354 {"lsrl",        one(0160250),           one(0170770),           "DdDs"},        /* lsrb #Q,     Ds */
355 {"lsrw",        one(0160110),           one(0170770),           "QdDs"},        /* lsrb #Q,     Ds */
356 {"lsrw",        one(0160150),           one(0170770),           "DdDs"},        /* lsrb #Q,     Ds */
357 {"lsrw",        one(0161300),           one(0177700),           "~s"},  /* Shift memory */
358
359 {"moveal",      one(0020100),           one(0170700),           "*lAd"},
360 {"moveaw",      one(0030100),           one(0170700),           "*wAd"},
361 {"moveb",       one(0010000),           one(0170000),           ";b$d"},        /* move */
362
363 {"movec",       one(0047173),           one(0177777),           "R1Jj"},
364 {"movec",       one(0047173),           one(0177777),           "R1#j"},
365 {"movec",       one(0047172),           one(0177777),           "JjR1"},
366 {"movec",       one(0047172),           one(0177777),           "#jR1"},
367
368 {"movel",       one(0020000),           one(0170000),           "*l$d"},
369 {"movel",       one(0020100),           one(0170700),           "*lAd"},
370 {"movel",       one(0047140),           one(0177770),           "AsUd"},        /* move to USP */
371 {"movel",       one(0047150),           one(0177770),           "UdAs"},        /* move from USP */
372 {"movel",       one(0070000),           one(0170400),           "MsDd"},        /* moveq written as move */
373
374 {"moveml",      one(0044300),           one(0177700),           "#w&s"},        /* movem reg to mem. */
375 {"moveml",      one(0044340),           one(0177770),           "#w-s"},        /* movem reg to autodecrement. */
376 {"moveml",      one(0046300),           one(0177700),           "!s#w"},        /* movem mem to reg. */
377 {"moveml",      one(0046330),           one(0177770),           "+s#w"},        /* movem autoinc to reg. */
378
379 {"movemw",      one(0044200),           one(0177700),           "#w&s"},        /* movem reg to mem. */
380 {"movemw",      one(0044240),           one(0177770),           "#w-s"},        /* movem reg to autodecrement. */
381 {"movemw",      one(0046200),           one(0177700),           "!s#w"},        /* movem mem to reg. */
382 {"movemw",      one(0046230),           one(0177770),           "+s#w"},        /* movem autoinc to reg. */
383
384 {"movepl",      one(0000510),           one(0170770),           "dsDd"},        /* memory to register */
385 {"movepl",      one(0000710),           one(0170770),           "Ddds"},        /* register to memory */
386 {"movepw",      one(0000410),           one(0170770),           "dsDd"},        /* memory to register */
387 {"movepw",      one(0000610),           one(0170770),           "Ddds"},        /* register to memory */
388 {"moveq",       one(0070000),           one(0170400),           "MsDd"},
389 {"movew",       one(0030000),           one(0170000),           "*w$d"},
390 {"movew",       one(0030100),           one(0170700),           "*wAd"},        /* movea,       written as move */
391 {"movew",       one(0040300),           one(0177700),           "Ss$s"},        /* Move from sr */
392 {"movew",       one(0041300),           one(0177700),           "Cs$s"},        /* Move from ccr */
393 {"movew",       one(0042300),           one(0177700),           ";wCd"},        /* move to ccr */
394 {"movew",       one(0043300),           one(0177700),           ";wSd"},        /* move to sr */
395
396 {"movesb",      two(0007000, 0),        two(0177700, 07777),    "~sR1"},         /* moves from memory */
397 {"movesb",      two(0007000, 04000),    two(0177700, 07777),    "R1~s"},         /* moves to memory */
398 {"movesl",      two(0007200, 0),        two(0177700, 07777),    "~sR1"},         /* moves from memory */
399 {"movesl",      two(0007200, 04000),    two(0177700, 07777),    "R1~s"},         /* moves to memory */
400 {"movesw",      two(0007100, 0),        two(0177700, 07777),    "~sR1"},         /* moves from memory */
401 {"movesw",      two(0007100, 04000),    two(0177700, 07777),    "R1~s"},         /* moves to memory */
402
403 {"mulsl",       two(0046000, 004000),   two(0177700, 0107770),  ";lD1"},
404 {"mulsl",       two(0046000, 006000),   two(0177700, 0107770),  ";lD3D1"},
405 {"mulsw",       one(0140700),           one(0170700),           ";wDd"},
406 {"muls",        one(0140700),           one(0170700),           ";wDd"},
407 {"mulul",       two(0046000, 000000),   two(0177700, 0107770),  ";lD1"},
408 {"mulul",       two(0046000, 002000),   two(0177700, 0107770),  ";lD3D1"},
409 {"muluw",       one(0140300),           one(0170700),           ";lDd"},
410 {"mulu",        one(0140300),           one(0170700),           ";lDd"},
411 {"nbcd",        one(0044000),           one(0177700),           "$s"},
412 {"negb",        one(0042000),           one(0177700),           "$s"},
413 {"negl",        one(0042200),           one(0177700),           "$s"},
414 {"negw",        one(0042100),           one(0177700),           "$s"},
415 {"negxb",       one(0040000),           one(0177700),           "$s"},
416 {"negxl",       one(0040200),           one(0177700),           "$s"},
417 {"negxw",       one(0040100),           one(0177700),           "$s"},
418 {"nop",         one(0047161),           one(0177777),           ""},
419 {"notb",        one(0043000),           one(0177700),           "$s"},
420 {"notl",        one(0043200),           one(0177700),           "$s"},
421 {"notw",        one(0043100),           one(0177700),           "$s"},
422
423 {"orb",         one(0000000),           one(0177700),           "#b$s"},        /* ori written as or */
424 {"orb",         one(0000074),           one(0177777),           "#bCs"},        /* ori to ccr */
425 {"orb",         one(0100000),           one(0170700),           ";bDd"},        /* memory to register */
426 {"orb",         one(0100400),           one(0170700),           "Dd~s"},        /* register to memory */
427 {"orib",        one(0000000),           one(0177700),           "#b$s"},
428 {"orib",        one(0000074),           one(0177777),           "#bCs"},        /* ori to ccr */
429 {"oril",        one(0000200),           one(0177700),           "#l$s"},
430 {"oriw",        one(0000100),           one(0177700),           "#w$s"},
431 {"oriw",        one(0000174),           one(0177777),           "#wSs"},        /* ori to sr */
432 {"orl",         one(0000200),           one(0177700),           "#l$s"},
433 {"orl",         one(0100200),           one(0170700),           ";lDd"},        /* memory to register */
434 {"orl",         one(0100600),           one(0170700),           "Dd~s"},        /* register to memory */
435 {"orw",         one(0000100),           one(0177700),           "#w$s"},
436 {"orw",         one(0000174),           one(0177777),           "#wSs"},        /* ori to sr */
437 {"orw",         one(0100100),           one(0170700),           ";wDd"},        /* memory to register */
438 {"orw",         one(0100500),           one(0170700),           "Dd~s"},        /* register to memory */
439
440 {"pack",        one(0100500),           one(0170770),           "DsDd#w"},      /* pack Ds,     Dd,     #w */
441 {"pack",        one(0100510),           one(0170770),           "-s-d#w"},      /* pack -(As),  -(Ad),  #w */
442 {"pea",         one(0044100),           one(0177700),           "!s"},
443 {"reset",       one(0047160),           one(0177777),           ""},
444
445 {"rolb",        one(0160430),           one(0170770),           "QdDs"},        /* rorb #Q,     Ds */
446 {"rolb",        one(0160470),           one(0170770),           "DdDs"},        /* rorb Dd,     Ds */
447 {"roll",        one(0160630),           one(0170770),           "QdDs"},        /* rorb #Q,     Ds */
448 {"roll",        one(0160670),           one(0170770),           "DdDs"},        /* rorb Dd,     Ds */
449 {"rolw",        one(0160530),           one(0170770),           "QdDs"},        /* rorb #Q,     Ds */
450 {"rolw",        one(0160570),           one(0170770),           "DdDs"},        /* rorb Dd,     Ds */
451 {"rolw",        one(0163700),           one(0177700),           "~s"},  /* Rotate memory */
452 {"rorb",        one(0160030),           one(0170770),           "QdDs"},        /* rorb #Q,     Ds */
453 {"rorb",        one(0160070),           one(0170770),           "DdDs"},        /* rorb Dd,     Ds */
454 {"rorl",        one(0160230),           one(0170770),           "QdDs"},        /* rorb #Q,     Ds */
455 {"rorl",        one(0160270),           one(0170770),           "DdDs"},        /* rorb Dd,     Ds */
456 {"rorw",        one(0160130),           one(0170770),           "QdDs"},        /* rorb #Q,     Ds */
457 {"rorw",        one(0160170),           one(0170770),           "DdDs"},        /* rorb Dd,     Ds */
458 {"rorw",        one(0163300),           one(0177700),           "~s"},  /* Rotate memory */
459
460 {"roxlb",       one(0160420),           one(0170770),           "QdDs"},        /* roxrb #Q,    Ds */
461 {"roxlb",       one(0160460),           one(0170770),           "DdDs"},        /* roxrb Dd,    Ds */
462 {"roxll",       one(0160620),           one(0170770),           "QdDs"},        /* roxrb #Q,    Ds */
463 {"roxll",       one(0160660),           one(0170770),           "DdDs"},        /* roxrb Dd,    Ds */
464 {"roxlw",       one(0160520),           one(0170770),           "QdDs"},        /* roxrb #Q,    Ds */
465 {"roxlw",       one(0160560),           one(0170770),           "DdDs"},        /* roxrb Dd,    Ds */
466 {"roxlw",       one(0162700),           one(0177700),           "~s"},  /* Rotate memory */
467 {"roxrb",       one(0160020),           one(0170770),           "QdDs"},        /* roxrb #Q,    Ds */
468 {"roxrb",       one(0160060),           one(0170770),           "DdDs"},        /* roxrb Dd,    Ds */
469 {"roxrl",       one(0160220),           one(0170770),           "QdDs"},        /* roxrb #Q,    Ds */
470 {"roxrl",       one(0160260),           one(0170770),           "DdDs"},        /* roxrb Dd,    Ds */
471 {"roxrw",       one(0160120),           one(0170770),           "QdDs"},        /* roxrb #Q,    Ds */
472 {"roxrw",       one(0160160),           one(0170770),           "DdDs"},        /* roxrb Dd,    Ds */
473 {"roxrw",       one(0162300),           one(0177700),           "~s"},  /* Rotate memory */
474
475 {"rtd",         one(0047164),           one(0177777),           "#w"},
476 {"rte",         one(0047163),           one(0177777),           ""},
477 {"rtm",         one(0003300),           one(0177760),           "Rs"},
478 {"rtr",         one(0047167),           one(0177777),           ""},
479 {"rts",         one(0047165),           one(0177777),           ""},
480
481 {"scc",         one(0052300),           one(0177700),           "$s"},
482 {"scs",         one(0052700),           one(0177700),           "$s"},
483 {"seq",         one(0053700),           one(0177700),           "$s"},
484 {"sf",          one(0050700),           one(0177700),           "$s"},
485 {"sge",         one(0056300),           one(0177700),           "$s"},
486 {"sgt",         one(0057300),           one(0177700),           "$s"},
487 {"shi",         one(0051300),           one(0177700),           "$s"},
488 {"sle",         one(0057700),           one(0177700),           "$s"},
489 {"sls",         one(0051700),           one(0177700),           "$s"},
490 {"slt",         one(0056700),           one(0177700),           "$s"},
491 {"smi",         one(0055700),           one(0177700),           "$s"},
492 {"sne",         one(0053300),           one(0177700),           "$s"},
493 {"spl",         one(0055300),           one(0177700),           "$s"},
494 {"st",          one(0050300),           one(0177700),           "$s"},
495 {"svc",         one(0054300),           one(0177700),           "$s"},
496 {"svs",         one(0054700),           one(0177700),           "$s"},
497
498 {"sbcd",        one(0100400),           one(0170770),           "DsDd"},
499 {"sbcd",        one(0100410),           one(0170770),           "-s-d"},
500 {"stop",        one(0047162),           one(0177777),           "#w"},
501
502 {"subal",       one(0110700),           one(0170700),           "*lAd"},
503 {"subaw",       one(0110300),           one(0170700),           "*wAd"},
504 {"subb",        one(0002000),           one(0177700),           "#b$s"},        /* subi written as sub */
505 {"subb",        one(0050400),           one(0170700),           "Qd%s"},        /* subq written as sub */
506 {"subb",        one(0110000),           one(0170700),           ";bDd"},        /* subb ??,     Dd */
507 {"subb",        one(0110400),           one(0170700),           "Dd~s"},        /* subb Dd,     ?? */
508 {"subib",       one(0002000),           one(0177700),           "#b$s"},
509 {"subil",       one(0002200),           one(0177700),           "#l$s"},
510 {"subiw",       one(0002100),           one(0177700),           "#w$s"},
511 {"subl",        one(0002200),           one(0177700),           "#l$s"},
512 {"subl",        one(0050600),           one(0170700),           "Qd%s"},
513 {"subl",        one(0110200),           one(0170700),           "*lDd"},
514 {"subl",        one(0110600),           one(0170700),           "Dd~s"},
515 {"subl",        one(0110700),           one(0170700),           "*lAd"},
516 {"subqb",       one(0050400),           one(0170700),           "Qd%s"},
517 {"subql",       one(0050600),           one(0170700),           "Qd%s"},
518 {"subqw",       one(0050500),           one(0170700),           "Qd%s"},
519 {"subw",        one(0002100),           one(0177700),           "#w$s"},
520 {"subw",        one(0050500),           one(0170700),           "Qd%s"},
521 {"subw",        one(0110100),           one(0170700),           "*wDd"},
522 {"subw",        one(0110300),           one(0170700),           "*wAd"},        /* suba written as sub */
523 {"subw",        one(0110500),           one(0170700),           "Dd~s"},
524
525 {"subxb",       one(0110400),           one(0170770),           "DsDd"},        /* subxb Ds,    Dd */
526 {"subxb",       one(0110410),           one(0170770),           "-s-d"},        /* subxb -(As), -(Ad) */
527 {"subxl",       one(0110600),           one(0170770),           "DsDd"},
528 {"subxl",       one(0110610),           one(0170770),           "-s-d"},
529 {"subxw",       one(0110500),           one(0170770),           "DsDd"},
530 {"subxw",       one(0110510),           one(0170770),           "-s-d"},
531
532 {"swap",        one(0044100),           one(0177770),           "Ds"},
533         
534 {"tas",         one(0045300),           one(0177700),           "$s"},
535 {"trap",        one(0047100),           one(0177760),           "Ts"},
536
537 {"trapcc",      one(0052374),           one(0177777),           ""},
538 {"trapcs",      one(0052774),           one(0177777),           ""},
539 {"trapeq",      one(0053774),           one(0177777),           ""},
540 {"trapf",       one(0050774),           one(0177777),           ""},
541 {"trapge",      one(0056374),           one(0177777),           ""},
542 {"trapgt",      one(0057374),           one(0177777),           ""},
543 {"traphi",      one(0051374),           one(0177777),           ""},
544 {"traple",      one(0057774),           one(0177777),           ""},
545 {"trapls",      one(0051774),           one(0177777),           ""},
546 {"traplt",      one(0056774),           one(0177777),           ""},
547 {"trapmi",      one(0055774),           one(0177777),           ""},
548 {"trapne",      one(0053374),           one(0177777),           ""},
549 {"trappl",      one(0055374),           one(0177777),           ""},
550 {"trapt",       one(0050374),           one(0177777),           ""},
551 {"trapvc",      one(0054374),           one(0177777),           ""},
552 {"trapvs",      one(0054774),           one(0177777),           ""},
553
554 {"trapcc.w",    one(0052372),           one(0177777),           ""},
555 {"trapcs.w",    one(0052772),           one(0177777),           ""},
556 {"trapeq.w",    one(0053772),           one(0177777),           ""},
557 {"trapf.w",     one(0050772),           one(0177777),           ""},
558 {"trapge.w",    one(0056372),           one(0177777),           ""},
559 {"trapgt.w",    one(0057372),           one(0177777),           ""},
560 {"traphi.w",    one(0051372),           one(0177777),           ""},
561 {"traple.w",    one(0057772),           one(0177777),           ""},
562 {"trapls.w",    one(0051772),           one(0177777),           ""},
563 {"traplt.w",    one(0056772),           one(0177777),           ""},
564 {"trapmi.w",    one(0055772),           one(0177777),           ""},
565 {"trapne.w",    one(0053372),           one(0177777),           ""},
566 {"trappl.w",    one(0055372),           one(0177777),           ""},
567 {"trapt.w",     one(0050372),           one(0177777),           ""},
568 {"trapvc.w",    one(0054372),           one(0177777),           ""},
569 {"trapvs.w",    one(0054772),           one(0177777),           ""},
570
571 {"trapcc.l",    one(0052373),           one(0177777),           ""},
572 {"trapcs.l",    one(0052773),           one(0177777),           ""},
573 {"trapeq.l",    one(0053773),           one(0177777),           ""},
574 {"trapf.l",     one(0050773),           one(0177777),           ""},
575 {"trapge.l",    one(0056373),           one(0177777),           ""},
576 {"trapgt.l",    one(0057373),           one(0177777),           ""},
577 {"traphi.l",    one(0051373),           one(0177777),           ""},
578 {"traple.l",    one(0057773),           one(0177777),           ""},
579 {"trapls.l",    one(0051773),           one(0177777),           ""},
580 {"traplt.l",    one(0056773),           one(0177777),           ""},
581 {"trapmi.l",    one(0055773),           one(0177777),           ""},
582 {"trapne.l",    one(0053373),           one(0177777),           ""},
583 {"trappl.l",    one(0055373),           one(0177777),           ""},
584 {"trapt.l",     one(0050373),           one(0177777),           ""},
585 {"trapvc.l",    one(0054373),           one(0177777),           ""},
586 {"trapvs.l",    one(0054773),           one(0177777),           ""},
587
588 {"trapv",       one(0047166),           one(0177777),           ""},
589
590 {"tstb",        one(0045000),           one(0177700),           ";b"},
591 {"tstw",        one(0045100),           one(0177700),           "*w"},
592 {"tstl",        one(0045200),           one(0177700),           "*l"},
593
594 {"unlk",        one(0047130),           one(0177770),           "As"},
595 {"unpk",        one(0100600),           one(0170770),           "DsDd#w"},
596 {"unpk",        one(0100610),           one(0170770),           "-s-d#w"},
597         /* JF floating pt stuff moved down here */
598
599 {"fabsb",       two(0xF000, 0x5818),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
600 {"fabsd",       two(0xF000, 0x5418),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
601 {"fabsl",       two(0xF000, 0x4018),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
602 {"fabsp",       two(0xF000, 0x4C18),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
603 {"fabss",       two(0xF000, 0x4418),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
604 {"fabsw",       two(0xF000, 0x5018),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
605 {"fabsx",       two(0xF000, 0x0018),    two(0xF1C0, 0xE07F),    "IiF8F7"},
606 {"fabsx",       two(0xF000, 0x4818),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
607 {"fabsx",       two(0xF000, 0x0018),    two(0xF1C0, 0xE07F),    "IiFt"},
608
609 {"facosb",      two(0xF000, 0x581C),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
610 {"facosd",      two(0xF000, 0x541C),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
611 {"facosl",      two(0xF000, 0x401C),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
612 {"facosp",      two(0xF000, 0x4C1C),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
613 {"facoss",      two(0xF000, 0x441C),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
614 {"facosw",      two(0xF000, 0x501C),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
615 {"facosx",      two(0xF000, 0x001C),    two(0xF1C0, 0xE07F),    "IiF8F7"},
616 {"facosx",      two(0xF000, 0x481C),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
617 {"facosx",      two(0xF000, 0x001C),    two(0xF1C0, 0xE07F),    "IiFt"},
618
619 {"faddb",       two(0xF000, 0x5822),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
620 {"faddd",       two(0xF000, 0x5422),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
621 {"faddl",       two(0xF000, 0x4022),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
622 {"faddp",       two(0xF000, 0x4C22),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
623 {"fadds",       two(0xF000, 0x4422),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
624 {"faddw",       two(0xF000, 0x5022),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
625 {"faddx",       two(0xF000, 0x0022),    two(0xF1C0, 0xE07F),    "IiF8F7"},
626 {"faddx",       two(0xF000, 0x4822),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
627
628 {"fasinb",      two(0xF000, 0x580C),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
629 {"fasind",      two(0xF000, 0x540C),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
630 {"fasinl",      two(0xF000, 0x400C),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
631 {"fasinp",      two(0xF000, 0x4C0C),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
632 {"fasins",      two(0xF000, 0x440C),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
633 {"fasinw",      two(0xF000, 0x500C),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
634 {"fasinx",      two(0xF000, 0x000C),    two(0xF1C0, 0xE07F),    "IiF8F7"},
635 {"fasinx",      two(0xF000, 0x480C),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
636 {"fasinx",      two(0xF000, 0x000C),    two(0xF1C0, 0xE07F),    "IiFt"},
637
638 {"fatanb",      two(0xF000, 0x580A),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
639 {"fatand",      two(0xF000, 0x540A),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
640 {"fatanl",      two(0xF000, 0x400A),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
641 {"fatanp",      two(0xF000, 0x4C0A),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
642 {"fatans",      two(0xF000, 0x440A),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
643 {"fatanw",      two(0xF000, 0x500A),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
644 {"fatanx",      two(0xF000, 0x000A),    two(0xF1C0, 0xE07F),    "IiF8F7"},
645 {"fatanx",      two(0xF000, 0x480A),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
646 {"fatanx",      two(0xF000, 0x000A),    two(0xF1C0, 0xE07F),    "IiFt"},
647
648 {"fatanhb",     two(0xF000, 0x580D),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
649 {"fatanhd",     two(0xF000, 0x540D),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
650 {"fatanhl",     two(0xF000, 0x400D),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
651 {"fatanhp",     two(0xF000, 0x4C0D),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
652 {"fatanhs",     two(0xF000, 0x440D),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
653 {"fatanhw",     two(0xF000, 0x500D),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
654 {"fatanhx",     two(0xF000, 0x000D),    two(0xF1C0, 0xE07F),    "IiF8F7"},
655 {"fatanhx",     two(0xF000, 0x480D),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
656 {"fatanhx",     two(0xF000, 0x000D),    two(0xF1C0, 0xE07F),    "IiFt"},
657
658 {"fbeq",        one(0xF081),            one(0xF1FF),            "IdBc"},
659 {"fbf",         one(0xF080),            one(0xF1FF),            "IdBc"},
660 {"fbge",        one(0xF093),            one(0xF1FF),            "IdBc"},
661 {"fbgl",        one(0xF096),            one(0xF1FF),            "IdBc"},
662 {"fbgle",       one(0xF097),            one(0xF1FF),            "IdBc"},
663 {"fbgt",        one(0xF092),            one(0xF1FF),            "IdBc"},
664 {"fble",        one(0xF095),            one(0xF1FF),            "IdBc"},
665 {"fblt",        one(0xF094),            one(0xF1FF),            "IdBc"},
666 {"fbne",        one(0xF08E),            one(0xF1FF),            "IdBc"},
667 {"fbnge",       one(0xF09C),            one(0xF1FF),            "IdBc"},
668 {"fbngl",       one(0xF099),            one(0xF1FF),            "IdBc"},
669 {"fbngle",      one(0xF098),            one(0xF1FF),            "IdBc"},
670 {"fbngt",       one(0xF09D),            one(0xF1FF),            "IdBc"},
671 {"fbnle",       one(0xF09A),            one(0xF1FF),            "IdBc"},
672 {"fbnlt",       one(0xF09B),            one(0xF1FF),            "IdBc"},
673 {"fboge",       one(0xF083),            one(0xF1FF),            "IdBc"},
674 {"fbogl",       one(0xF086),            one(0xF1FF),            "IdBc"},
675 {"fbogt",       one(0xF082),            one(0xF1FF),            "IdBc"},
676 {"fbole",       one(0xF085),            one(0xF1FF),            "IdBc"},
677 {"fbolt",       one(0xF084),            one(0xF1FF),            "IdBc"},
678 {"fbor",        one(0xF087),            one(0xF1FF),            "IdBc"},
679 {"fbseq",       one(0xF091),            one(0xF1FF),            "IdBc"},
680 {"fbsf",        one(0xF090),            one(0xF1FF),            "IdBc"},
681 {"fbsne",       one(0xF09E),            one(0xF1FF),            "IdBc"},
682 {"fbst",        one(0xF09F),            one(0xF1FF),            "IdBc"},
683 {"fbt",         one(0xF08F),            one(0xF1FF),            "IdBc"},
684 {"fbueq",       one(0xF089),            one(0xF1FF),            "IdBc"},
685 {"fbuge",       one(0xF08B),            one(0xF1FF),            "IdBc"},
686 {"fbugt",       one(0xF08A),            one(0xF1FF),            "IdBc"},
687 {"fbule",       one(0xF08D),            one(0xF1FF),            "IdBc"},
688 {"fbult",       one(0xF08C),            one(0xF1FF),            "IdBc"},
689 {"fbun",        one(0xF088),            one(0xF1FF),            "IdBc"},
690
691 {"fcmpb",       two(0xF000, 0x5838),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
692 {"fcmpd",       two(0xF000, 0x5438),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
693 {"fcmpl",       two(0xF000, 0x4038),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
694 {"fcmpp",       two(0xF000, 0x4C38),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
695 {"fcmps",       two(0xF000, 0x4438),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
696 {"fcmpw",       two(0xF000, 0x5038),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
697 {"fcmpx",       two(0xF000, 0x0038),    two(0xF1C0, 0xE07F),    "IiF8F7"},
698 {"fcmpx",       two(0xF000, 0x4838),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
699
700 {"fcosb",       two(0xF000, 0x581D),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
701 {"fcosd",       two(0xF000, 0x541D),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
702 {"fcosl",       two(0xF000, 0x401D),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
703 {"fcosp",       two(0xF000, 0x4C1D),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
704 {"fcoss",       two(0xF000, 0x441D),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
705 {"fcosw",       two(0xF000, 0x501D),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
706 {"fcosx",       two(0xF000, 0x001D),    two(0xF1C0, 0xE07F),    "IiF8F7"},
707 {"fcosx",       two(0xF000, 0x481D),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
708 {"fcosx",       two(0xF000, 0x001D),    two(0xF1C0, 0xE07F),    "IiFt"},
709
710 {"fcoshb",      two(0xF000, 0x5819),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
711 {"fcoshd",      two(0xF000, 0x5419),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
712 {"fcoshl",      two(0xF000, 0x4019),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
713 {"fcoshp",      two(0xF000, 0x4C19),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
714 {"fcoshs",      two(0xF000, 0x4419),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
715 {"fcoshw",      two(0xF000, 0x5019),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
716 {"fcoshx",      two(0xF000, 0x0019),    two(0xF1C0, 0xE07F),    "IiF8F7"},
717 {"fcoshx",      two(0xF000, 0x4819),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
718 {"fcoshx",      two(0xF000, 0x0019),    two(0xF1C0, 0xE07F),    "IiFt"},
719
720 {"fdbeq",       two(0xF048, 0x0001),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
721 {"fdbf",        two(0xF048, 0x0000),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
722 {"fdbge",       two(0xF048, 0x0013),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
723 {"fdbgl",       two(0xF048, 0x0016),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
724 {"fdbgle",      two(0xF048, 0x0017),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
725 {"fdbgt",       two(0xF048, 0x0012),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
726 {"fdble",       two(0xF048, 0x0015),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
727 {"fdblt",       two(0xF048, 0x0014),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
728 {"fdbne",       two(0xF048, 0x000E),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
729 {"fdbnge",      two(0xF048, 0x001C),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
730 {"fdbngl",      two(0xF048, 0x0019),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
731 {"fdbngle",     two(0xF048, 0x0018),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
732 {"fdbngt",      two(0xF048, 0x001D),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
733 {"fdbnle",      two(0xF048, 0x001A),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
734 {"fdbnlt",      two(0xF048, 0x001B),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
735 {"fdboge",      two(0xF048, 0x0003),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
736 {"fdbogl",      two(0xF048, 0x0006),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
737 {"fdbogt",      two(0xF048, 0x0002),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
738 {"fdbole",      two(0xF048, 0x0005),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
739 {"fdbolt",      two(0xF048, 0x0004),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
740 {"fdbor",       two(0xF048, 0x0007),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
741 {"fdbseq",      two(0xF048, 0x0011),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
742 {"fdbsf",       two(0xF048, 0x0010),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
743 {"fdbsne",      two(0xF048, 0x001E),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
744 {"fdbst",       two(0xF048, 0x001F),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
745 {"fdbt",        two(0xF048, 0x000F),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
746 {"fdbueq",      two(0xF048, 0x0009),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
747 {"fdbuge",      two(0xF048, 0x000B),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
748 {"fdbugt",      two(0xF048, 0x000A),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
749 {"fdbule",      two(0xF048, 0x000D),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
750 {"fdbult",      two(0xF048, 0x000C),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
751 {"fdbun",       two(0xF048, 0x0008),    two(0xF1F8, 0xFFFF),    "IiDsBw"},
752
753 {"fdivb",       two(0xF000, 0x5820),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
754 {"fdivd",       two(0xF000, 0x5420),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
755 {"fdivl",       two(0xF000, 0x4020),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
756 {"fdivp",       two(0xF000, 0x4C20),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
757 {"fdivs",       two(0xF000, 0x4420),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
758 {"fdivw",       two(0xF000, 0x5020),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
759 {"fdivx",       two(0xF000, 0x0020),    two(0xF1C0, 0xE07F),    "IiF8F7"},
760 {"fdivx",       two(0xF000, 0x4820),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
761
762 {"fetoxb",      two(0xF000, 0x5810),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
763 {"fetoxd",      two(0xF000, 0x5410),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
764 {"fetoxl",      two(0xF000, 0x4010),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
765 {"fetoxp",      two(0xF000, 0x4C10),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
766 {"fetoxs",      two(0xF000, 0x4410),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
767 {"fetoxw",      two(0xF000, 0x5010),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
768 {"fetoxx",      two(0xF000, 0x0010),    two(0xF1C0, 0xE07F),    "IiF8F7"},
769 {"fetoxx",      two(0xF000, 0x4810),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
770 {"fetoxx",      two(0xF000, 0x0010),    two(0xF1C0, 0xE07F),    "IiFt"},
771
772 {"fetoxm1b",    two(0xF000, 0x5808),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
773 {"fetoxm1d",    two(0xF000, 0x5408),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
774 {"fetoxm1l",    two(0xF000, 0x4008),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
775 {"fetoxm1p",    two(0xF000, 0x4C08),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
776 {"fetoxm1s",    two(0xF000, 0x4408),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
777 {"fetoxm1w",    two(0xF000, 0x5008),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
778 {"fetoxm1x",    two(0xF000, 0x0008),    two(0xF1C0, 0xE07F),    "IiF8F7"},
779 {"fetoxm1x",    two(0xF000, 0x4808),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
780 {"fetoxm1x",    two(0xF000, 0x0008),    two(0xF1C0, 0xE07F),    "IiFt"},
781
782 {"fgetexpb",    two(0xF000, 0x581E),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
783 {"fgetexpd",    two(0xF000, 0x541E),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
784 {"fgetexpl",    two(0xF000, 0x401E),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
785 {"fgetexpp",    two(0xF000, 0x4C1E),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
786 {"fgetexps",    two(0xF000, 0x441E),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
787 {"fgetexpw",    two(0xF000, 0x501E),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
788 {"fgetexpx",    two(0xF000, 0x001E),    two(0xF1C0, 0xE07F),    "IiF8F7"},
789 {"fgetexpx",    two(0xF000, 0x481E),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
790 {"fgetexpx",    two(0xF000, 0x001E),    two(0xF1C0, 0xE07F),    "IiFt"},
791
792 {"fgetmanb",    two(0xF000, 0x581F),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
793 {"fgetmand",    two(0xF000, 0x541F),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
794 {"fgetmanl",    two(0xF000, 0x401F),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
795 {"fgetmanp",    two(0xF000, 0x4C1F),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
796 {"fgetmans",    two(0xF000, 0x441F),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
797 {"fgetmanw",    two(0xF000, 0x501F),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
798 {"fgetmanx",    two(0xF000, 0x001F),    two(0xF1C0, 0xE07F),    "IiF8F7"},
799 {"fgetmanx",    two(0xF000, 0x481F),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
800 {"fgetmanx",    two(0xF000, 0x001F),    two(0xF1C0, 0xE07F),    "IiFt"},
801
802 {"fintb",       two(0xF000, 0x5801),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
803 {"fintd",       two(0xF000, 0x5401),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
804 {"fintl",       two(0xF000, 0x4001),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
805 {"fintp",       two(0xF000, 0x4C01),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
806 {"fints",       two(0xF000, 0x4401),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
807 {"fintw",       two(0xF000, 0x5001),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
808 {"fintx",       two(0xF000, 0x0001),    two(0xF1C0, 0xE07F),    "IiF8F7"},
809 {"fintx",       two(0xF000, 0x4801),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
810 {"fintx",       two(0xF000, 0x0001),    two(0xF1C0, 0xE07F),    "IiFt"},
811
812 {"fintrzb",     two(0xF000, 0x5803),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
813 {"fintrzd",     two(0xF000, 0x5403),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
814 {"fintrzl",     two(0xF000, 0x4003),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
815 {"fintrzp",     two(0xF000, 0x4C03),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
816 {"fintrzs",     two(0xF000, 0x4403),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
817 {"fintrzw",     two(0xF000, 0x5003),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
818 {"fintrzx",     two(0xF000, 0x0003),    two(0xF1C0, 0xE07F),    "IiF8F7"},
819 {"fintrzx",     two(0xF000, 0x4803),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
820 {"fintrzx",     two(0xF000, 0x0003),    two(0xF1C0, 0xE07F),    "IiFt"},
821
822 {"flog10b",     two(0xF000, 0x5815),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
823 {"flog10d",     two(0xF000, 0x5415),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
824 {"flog10l",     two(0xF000, 0x4015),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
825 {"flog10p",     two(0xF000, 0x4C15),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
826 {"flog10s",     two(0xF000, 0x4415),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
827 {"flog10w",     two(0xF000, 0x5015),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
828 {"flog10x",     two(0xF000, 0x0015),    two(0xF1C0, 0xE07F),    "IiF8F7"},
829 {"flog10x",     two(0xF000, 0x4815),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
830 {"flog10x",     two(0xF000, 0x0015),    two(0xF1C0, 0xE07F),    "IiFt"},
831
832 {"flog2b",      two(0xF000, 0x5816),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
833 {"flog2d",      two(0xF000, 0x5416),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
834 {"flog2l",      two(0xF000, 0x4016),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
835 {"flog2p",      two(0xF000, 0x4C16),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
836 {"flog2s",      two(0xF000, 0x4416),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
837 {"flog2w",      two(0xF000, 0x5016),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
838 {"flog2x",      two(0xF000, 0x0016),    two(0xF1C0, 0xE07F),    "IiF8F7"},
839 {"flog2x",      two(0xF000, 0x4816),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
840 {"flog2x",      two(0xF000, 0x0016),    two(0xF1C0, 0xE07F),    "IiFt"},
841
842 {"flognb",      two(0xF000, 0x5814),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
843 {"flognd",      two(0xF000, 0x5414),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
844 {"flognl",      two(0xF000, 0x4014),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
845 {"flognp",      two(0xF000, 0x4C14),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
846 {"flogns",      two(0xF000, 0x4414),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
847 {"flognw",      two(0xF000, 0x5014),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
848 {"flognx",      two(0xF000, 0x0014),    two(0xF1C0, 0xE07F),    "IiF8F7"},
849 {"flognx",      two(0xF000, 0x4814),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
850 {"flognx",      two(0xF000, 0x0014),    two(0xF1C0, 0xE07F),    "IiFt"},
851
852 {"flognp1b",    two(0xF000, 0x5806),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
853 {"flognp1d",    two(0xF000, 0x5406),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
854 {"flognp1l",    two(0xF000, 0x4006),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
855 {"flognp1p",    two(0xF000, 0x4C06),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
856 {"flognp1s",    two(0xF000, 0x4406),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
857 {"flognp1w",    two(0xF000, 0x5006),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
858 {"flognp1x",    two(0xF000, 0x0006),    two(0xF1C0, 0xE07F),    "IiF8F7"},
859 {"flognp1x",    two(0xF000, 0x4806),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
860 {"flognp1x",    two(0xF000, 0x0006),    two(0xF1C0, 0xE07F),    "IiFt"},
861
862 {"fmodb",       two(0xF000, 0x5821),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
863 {"fmodd",       two(0xF000, 0x5421),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
864 {"fmodl",       two(0xF000, 0x4021),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
865 {"fmodp",       two(0xF000, 0x4C21),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
866 {"fmods",       two(0xF000, 0x4421),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
867 {"fmodw",       two(0xF000, 0x5021),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
868 {"fmodx",       two(0xF000, 0x0021),    two(0xF1C0, 0xE07F),    "IiF8F7"},
869 {"fmodx",       two(0xF000, 0x4821),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
870
871 {"fmoveb",      two(0xF000, 0x5800),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},              /* fmove from <ea> to fp<n> */
872 {"fmoveb",      two(0xF000, 0x7800),    two(0xF1C0, 0xFC7F),    "IiF7@b"},              /* fmove from fp<n> to <ea> */
873 {"fmoved",      two(0xF000, 0x5400),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},              /* fmove from <ea> to fp<n> */
874 {"fmoved",      two(0xF000, 0x7400),    two(0xF1C0, 0xFC7F),    "IiF7@F"},              /* fmove from fp<n> to <ea> */
875 {"fmovel",      two(0xF000, 0x4000),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},              /* fmove from <ea> to fp<n> */
876 {"fmovel",      two(0xF000, 0x6000),    two(0xF1C0, 0xFC7F),    "IiF7@l"},              /* fmove from fp<n> to <ea> */
877         /* JF for the assembler */
878 {"fmovel",      two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "Iis8@s"},
879 {"fmovel",      two(0xF000, 0x8000),    two(0xF1C0, 0xE3FF),    "Ii@ss8"},
880 /* JF {"fmovep",        two(0xF000, 0x4C00),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},              /* fmove from <ea> to fp<n> */
881 {"fmovep",      two(0xF000, 0x6C00),    two(0xF1C0, 0xFC00),    "IiF7@pkC"},            /* fmove.p with k-factors: */
882 {"fmovep",      two(0xF000, 0x7C00),    two(0xF1C0, 0xFC0F),    "IiF7@pDk"},            /* fmove.p with k-factors: */
883 {"fmoves",      two(0xF000, 0x4400),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},              /* fmove from <ea> to fp<n> */
884 {"fmoves",      two(0xF000, 0x6400),    two(0xF1C0, 0xFC7F),    "IiF7@f"},              /* fmove from fp<n> to <ea> */
885 {"fmovew",      two(0xF000, 0x5000),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},              /* fmove from <ea> to fp<n> */
886 {"fmovew",      two(0xF000, 0x7000),    two(0xF1C0, 0xFC7F),    "IiF7@w"},              /* fmove from fp<n> to <ea> */
887 {"fmovex",      two(0xF000, 0x0000),    two(0xF1C0, 0xE07F),    "IiF8F7"},              /* fmove from <ea> to fp<n> */
888 {"fmovex",      two(0xF000, 0x4800),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},              /* fmove from <ea> to fp<n> */
889 {"fmovex",      two(0xF000, 0x6800),    two(0xF1C0, 0xFC7F),    "IiF7@x"},              /* fmove from fp<n> to <ea> */
890
891                 /* fmove.l from/to system control registers: */
892
893 /* fmove.l and fmovem.l are the same instruction.   fmovem.l makes sense in
894    more cases,  so I've dumped fmove.l pro tem, but this is the wrong
895    way to solve the problem in the long run.   Hmmm. */
896 /*  {"fmovel",  two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "Iis8@s"},      */
897 /*  {"fmovel",  two(0xF000, 0x8000),    two(0xF1C0, 0xE3FF),    "Ii@ss8"},      */
898
899 {"fmovecrx",    two(0xF000, 0x5C00),    two(0xF1FF, 0xFC00),    "Ii#CF7"},              /* fmovecr.x #ccc,      FPn */
900 {"fmovecr",     two(0xF000, 0x5C00),    two(0xF1FF, 0xFC00),    "Ii#CF7"},
901
902 {"fmovemx",     two(0xF020, 0xE000),    two(0xF1F8, 0xFF00),    "Id#3-s"},              /* fmovem.x to autodecrement,   static and dynamic */
903 {"fmovemx",     two(0xF020, 0xE800),    two(0xF1F8, 0xFF8F),    "IiDk-s"},              /* fmovem.x to autodecrement,   static and dynamic */
904
905 {"fmovemx",     two(0xF000, 0xF000),    two(0xF1C0, 0xFF00),    "Id#3&s"},              /* fmovem.x to control, static and dynamic: */
906 {"fmovemx",     two(0xF000, 0xF800),    two(0xF1C0, 0xFF8F),    "IiDk&s"},              /* fmovem.x to control, static and dynamic: */
907
908 {"fmovemx",     two(0xF018, 0xD000),    two(0xF1F8, 0xFF00),    "Id#3+s"},              /* fmovem.x from autoincrement, static and dynamic: */
909 {"fmovemx",     two(0xF018, 0xD800),    two(0xF1F8, 0xFF8F),    "IiDk+s"},              /* fmovem.x from autoincrement, static and dynamic: */
910   
911 {"fmovemx",     two(0xF000, 0xD000),    two(0xF1C0, 0xFF00),    "Id#3&s"},              /* fmovem.x from control,       static and dynamic: */
912 {"fmovemx",     two(0xF000, 0xD800),    two(0xF1C0, 0xFF8F),    "IiDk&s"},              /* fmovem.x from control,       static and dynamic: */
913
914 /* fmoveml and fmovel are the same instruction.   This may cause some
915    confusion in the assembler. */
916
917 {"fmoveml",     two(0xF000, 0xA000),    two(0xF1C0, 0xE3FF),    "Ii#8%s"},              /* fmovem.l to/from system control register(s): */
918 {"fmoveml",     two(0xF000, 0x8000),    two(0xF1C0, 0xE3FF),    "Ii%s#8"},              /* fmovem.l to/from system control register(s): */
919
920 {"fmulb",       two(0xF000, 0x5823),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
921 {"fmuld",       two(0xF000, 0x5423),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
922 {"fmull",       two(0xF000, 0x4023),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
923 {"fmulp",       two(0xF000, 0x4C23),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
924 {"fmuls",       two(0xF000, 0x4423),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
925 {"fmulw",       two(0xF000, 0x5023),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
926 {"fmulx",       two(0xF000, 0x0023),    two(0xF1C0, 0xE07F),    "IiF8F7"},
927 {"fmulx",       two(0xF000, 0x4823),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
928
929 {"fnegb",       two(0xF000, 0x581A),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
930 {"fnegd",       two(0xF000, 0x541A),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
931 {"fnegl",       two(0xF000, 0x401A),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
932 {"fnegp",       two(0xF000, 0x4C1A),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
933 {"fnegs",       two(0xF000, 0x441A),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
934 {"fnegw",       two(0xF000, 0x501A),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
935 {"fnegx",       two(0xF000, 0x001A),    two(0xF1C0, 0xE07F),    "IiF8F7"},
936 {"fnegx",       two(0xF000, 0x481A),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
937 {"fnegx",       two(0xF000, 0x001A),    two(0xF1C0, 0xE07F),    "IiFt"},
938
939 {"fremb",       two(0xF000, 0x5825),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
940 {"fremd",       two(0xF000, 0x5425),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
941 {"freml",       two(0xF000, 0x4025),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
942 {"fremp",       two(0xF000, 0x4C25),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
943 {"frems",       two(0xF000, 0x4425),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
944 {"fremw",       two(0xF000, 0x5025),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
945 {"fremx",       two(0xF000, 0x0025),    two(0xF1C0, 0xE07F),    "IiF8F7"},
946 {"fremx",       two(0xF000, 0x4825),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
947
948 {"frestore",    one(0xF140),            one(0xF1C0),            "Id&s"},
949 {"frestore",    one(0xF158),            one(0xF1F8),            "Id+s"},
950 {"fsave",       one(0xF100),            one(0xF1C0),            "Id&s"},
951 {"fsave",       one(0xF120),            one(0xF1F8),            "Id-s"},
952
953 {"fsincosb",    two(0xF000, 0x5830),    two(0xF1C0, 0xFC78),    "Ii;bF7FC"},
954 {"fsincosd",    two(0xF000, 0x5430),    two(0xF1C0, 0xFC78),    "Ii;FF7FC"},
955 {"fsincosl",    two(0xF000, 0x4030),    two(0xF1C0, 0xFC78),    "Ii;lF7FC"},
956 {"fsincosp",    two(0xF000, 0x4C30),    two(0xF1C0, 0xFC78),    "Ii;pF7FC"},
957 {"fsincoss",    two(0xF000, 0x4430),    two(0xF1C0, 0xFC78),    "Ii;fF7FC"},
958 {"fsincosw",    two(0xF000, 0x5030),    two(0xF1C0, 0xFC78),    "Ii;wF7FC"},
959 {"fsincosx",    two(0xF000, 0x0030),    two(0xF1C0, 0xE078),    "IiF8F7FC"},
960 {"fsincosx",    two(0xF000, 0x4830),    two(0xF1C0, 0xFC78),    "Ii;xF7FC"},
961
962 {"fscaleb",     two(0xF000, 0x5826),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
963 {"fscaled",     two(0xF000, 0x5426),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
964 {"fscalel",     two(0xF000, 0x4026),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
965 {"fscalep",     two(0xF000, 0x4C26),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
966 {"fscales",     two(0xF000, 0x4426),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
967 {"fscalew",     two(0xF000, 0x5026),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
968 {"fscalex",     two(0xF000, 0x0026),    two(0xF1C0, 0xE07F),    "IiF8F7"},
969 {"fscalex",     two(0xF000, 0x4826),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
970
971 {"fseq",        two(0xF040, 0x0001),    two(0xF1C0, 0xFFFF),    "Ii@s"},
972 {"fsf",         two(0xF040, 0x0000),    two(0xF1C0, 0xFFFF),    "Ii@s"},
973 {"fsge",        two(0xF040, 0x0013),    two(0xF1C0, 0xFFFF),    "Ii@s"},
974 {"fsgl",        two(0xF040, 0x0016),    two(0xF1C0, 0xFFFF),    "Ii@s"},
975 {"fsgle",       two(0xF040, 0x0017),    two(0xF1C0, 0xFFFF),    "Ii@s"},
976 {"fsgt",        two(0xF040, 0x0012),    two(0xF1C0, 0xFFFF),    "Ii@s"},
977 {"fsle",        two(0xF040, 0x0015),    two(0xF1C0, 0xFFFF),    "Ii@s"},
978 {"fslt",        two(0xF040, 0x0014),    two(0xF1C0, 0xFFFF),    "Ii@s"},
979 {"fsne",        two(0xF040, 0x000E),    two(0xF1C0, 0xFFFF),    "Ii@s"},
980 {"fsnge",       two(0xF040, 0x001C),    two(0xF1C0, 0xFFFF),    "Ii@s"},
981 {"fsngl",       two(0xF040, 0x0019),    two(0xF1C0, 0xFFFF),    "Ii@s"},
982 {"fsngle",      two(0xF040, 0x0018),    two(0xF1C0, 0xFFFF),    "Ii@s"},
983 {"fsngt",       two(0xF040, 0x001D),    two(0xF1C0, 0xFFFF),    "Ii@s"},
984 {"fsnle",       two(0xF040, 0x001A),    two(0xF1C0, 0xFFFF),    "Ii@s"},
985 {"fsnlt",       two(0xF040, 0x001B),    two(0xF1C0, 0xFFFF),    "Ii@s"},
986 {"fsoge",       two(0xF040, 0x0003),    two(0xF1C0, 0xFFFF),    "Ii@s"},
987 {"fsogl",       two(0xF040, 0x0006),    two(0xF1C0, 0xFFFF),    "Ii@s"},
988 {"fsogt",       two(0xF040, 0x0002),    two(0xF1C0, 0xFFFF),    "Ii@s"},
989 {"fsole",       two(0xF040, 0x0005),    two(0xF1C0, 0xFFFF),    "Ii@s"},
990 {"fsolt",       two(0xF040, 0x0004),    two(0xF1C0, 0xFFFF),    "Ii@s"},
991 {"fsor",        two(0xF040, 0x0007),    two(0xF1C0, 0xFFFF),    "Ii@s"},
992 {"fsseq",       two(0xF040, 0x0011),    two(0xF1C0, 0xFFFF),    "Ii@s"},
993 {"fssf",        two(0xF040, 0x0010),    two(0xF1C0, 0xFFFF),    "Ii@s"},
994 {"fssne",       two(0xF040, 0x001E),    two(0xF1C0, 0xFFFF),    "Ii@s"},
995 {"fsst",        two(0xF040, 0x001F),    two(0xF1C0, 0xFFFF),    "Ii@s"},
996 {"fst",         two(0xF040, 0x000F),    two(0xF1C0, 0xFFFF),    "Ii@s"},
997 {"fsueq",       two(0xF040, 0x0009),    two(0xF1C0, 0xFFFF),    "Ii@s"},
998 {"fsuge",       two(0xF040, 0x000B),    two(0xF1C0, 0xFFFF),    "Ii@s"},
999 {"fsugt",       two(0xF040, 0x000A),    two(0xF1C0, 0xFFFF),    "Ii@s"},
1000 {"fsule",       two(0xF040, 0x000D),    two(0xF1C0, 0xFFFF),    "Ii@s"},
1001 {"fsult",       two(0xF040, 0x000C),    two(0xF1C0, 0xFFFF),    "Ii@s"},
1002 {"fsun",        two(0xF040, 0x0008),    two(0xF1C0, 0xFFFF),    "Ii@s"},
1003
1004 {"fsgldivb",    two(0xF000, 0x5824),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1005 {"fsgldivd",    two(0xF000, 0x5424),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1006 {"fsgldivl",    two(0xF000, 0x4024),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1007 {"fsgldivp",    two(0xF000, 0x4C24),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1008 {"fsgldivs",    two(0xF000, 0x4424),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1009 {"fsgldivw",    two(0xF000, 0x5024),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1010 {"fsgldivx",    two(0xF000, 0x0024),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1011 {"fsgldivx",    two(0xF000, 0x4824),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1012
1013 {"fsglmulb",    two(0xF000, 0x5827),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1014 {"fsglmuld",    two(0xF000, 0x5427),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1015 {"fsglmull",    two(0xF000, 0x4027),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1016 {"fsglmulp",    two(0xF000, 0x4C27),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1017 {"fsglmuls",    two(0xF000, 0x4427),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1018 {"fsglmulw",    two(0xF000, 0x5027),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1019 {"fsglmulx",    two(0xF000, 0x0027),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1020 {"fsglmulx",    two(0xF000, 0x4827),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1021
1022 {"fsinb",       two(0xF000, 0x580E),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1023 {"fsind",       two(0xF000, 0x540E),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1024 {"fsinl",       two(0xF000, 0x400E),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1025 {"fsinp",       two(0xF000, 0x4C0E),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1026 {"fsins",       two(0xF000, 0x440E),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1027 {"fsinw",       two(0xF000, 0x500E),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1028 {"fsinx",       two(0xF000, 0x000E),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1029 {"fsinx",       two(0xF000, 0x480E),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1030 {"fsinx",       two(0xF000, 0x000E),    two(0xF1C0, 0xE07F),    "IiFt"},
1031
1032 {"fsinhb",      two(0xF000, 0x5802),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1033 {"fsinhd",      two(0xF000, 0x5402),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1034 {"fsinhl",      two(0xF000, 0x4002),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1035 {"fsinhp",      two(0xF000, 0x4C02),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1036 {"fsinhs",      two(0xF000, 0x4402),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1037 {"fsinhw",      two(0xF000, 0x5002),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1038 {"fsinhx",      two(0xF000, 0x0002),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1039 {"fsinhx",      two(0xF000, 0x4802),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1040 {"fsinhx",      two(0xF000, 0x0002),    two(0xF1C0, 0xE07F),    "IiFt"},
1041
1042 {"fsqrtb",      two(0xF000, 0x5804),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1043 {"fsqrtd",      two(0xF000, 0x5404),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1044 {"fsqrtl",      two(0xF000, 0x4004),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1045 {"fsqrtp",      two(0xF000, 0x4C04),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1046 {"fsqrts",      two(0xF000, 0x4404),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1047 {"fsqrtw",      two(0xF000, 0x5004),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1048 {"fsqrtx",      two(0xF000, 0x0004),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1049 {"fsqrtx",      two(0xF000, 0x4804),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1050 {"fsqrtx",      two(0xF000, 0x0004),    two(0xF1C0, 0xE07F),    "IiFt"},
1051
1052 {"fsubb",       two(0xF000, 0x5828),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1053 {"fsubd",       two(0xF000, 0x5428),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1054 {"fsubl",       two(0xF000, 0x4028),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1055 {"fsubp",       two(0xF000, 0x4C28),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1056 {"fsubs",       two(0xF000, 0x4428),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1057 {"fsubw",       two(0xF000, 0x5028),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1058 {"fsubx",       two(0xF000, 0x0028),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1059 {"fsubx",       two(0xF000, 0x4828),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1060
1061 {"ftanb",       two(0xF000, 0x580F),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1062 {"ftand",       two(0xF000, 0x540F),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1063 {"ftanl",       two(0xF000, 0x400F),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1064 {"ftanp",       two(0xF000, 0x4C0F),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1065 {"ftans",       two(0xF000, 0x440F),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1066 {"ftanw",       two(0xF000, 0x500F),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1067 {"ftanx",       two(0xF000, 0x000F),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1068 {"ftanx",       two(0xF000, 0x480F),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1069 {"ftanx",       two(0xF000, 0x000F),    two(0xF1C0, 0xE07F),    "IiFt"},
1070
1071 {"ftanhb",      two(0xF000, 0x5809),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1072 {"ftanhd",      two(0xF000, 0x5409),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1073 {"ftanhl",      two(0xF000, 0x4009),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1074 {"ftanhp",      two(0xF000, 0x4C09),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1075 {"ftanhs",      two(0xF000, 0x4409),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1076 {"ftanhw",      two(0xF000, 0x5009),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1077 {"ftanhx",      two(0xF000, 0x0009),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1078 {"ftanhx",      two(0xF000, 0x4809),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1079 {"ftanhx",      two(0xF000, 0x0009),    two(0xF1C0, 0xE07F),    "IiFt"},
1080
1081 {"ftentoxb",    two(0xF000, 0x5812),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1082 {"ftentoxd",    two(0xF000, 0x5412),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1083 {"ftentoxl",    two(0xF000, 0x4012),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1084 {"ftentoxp",    two(0xF000, 0x4C12),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1085 {"ftentoxs",    two(0xF000, 0x4412),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1086 {"ftentoxw",    two(0xF000, 0x5012),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1087 {"ftentoxx",    two(0xF000, 0x0012),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1088 {"ftentoxx",    two(0xF000, 0x4812),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1089 {"ftentoxx",    two(0xF000, 0x0012),    two(0xF1C0, 0xE07F),    "IiFt"},
1090
1091 {"ftrapeq",     two(0xF07C, 0x0001),    two(0xF1FF, 0xFFFF),    "Ii"},
1092 {"ftrapf",      two(0xF07C, 0x0000),    two(0xF1FF, 0xFFFF),    "Ii"},
1093 {"ftrapge",     two(0xF07C, 0x0013),    two(0xF1FF, 0xFFFF),    "Ii"},
1094 {"ftrapgl",     two(0xF07C, 0x0016),    two(0xF1FF, 0xFFFF),    "Ii"},
1095 {"ftrapgle",    two(0xF07C, 0x0017),    two(0xF1FF, 0xFFFF),    "Ii"},
1096 {"ftrapgt",     two(0xF07C, 0x0012),    two(0xF1FF, 0xFFFF),    "Ii"},
1097 {"ftraple",     two(0xF07C, 0x0015),    two(0xF1FF, 0xFFFF),    "Ii"},
1098 {"ftraplt",     two(0xF07C, 0x0014),    two(0xF1FF, 0xFFFF),    "Ii"},
1099 {"ftrapne",     two(0xF07C, 0x000E),    two(0xF1FF, 0xFFFF),    "Ii"},
1100 {"ftrapnge",    two(0xF07C, 0x001C),    two(0xF1FF, 0xFFFF),    "Ii"},
1101 {"ftrapngl",    two(0xF07C, 0x0019),    two(0xF1FF, 0xFFFF),    "Ii"},
1102 {"ftrapngle",   two(0xF07C, 0x0018),    two(0xF1FF, 0xFFFF),    "Ii"},
1103 {"ftrapngt",    two(0xF07C, 0x001D),    two(0xF1FF, 0xFFFF),    "Ii"},
1104 {"ftrapnle",    two(0xF07C, 0x001A),    two(0xF1FF, 0xFFFF),    "Ii"},
1105 {"ftrapnlt",    two(0xF07C, 0x001B),    two(0xF1FF, 0xFFFF),    "Ii"},
1106 {"ftrapoge",    two(0xF07C, 0x0003),    two(0xF1FF, 0xFFFF),    "Ii"},
1107 {"ftrapogl",    two(0xF07C, 0x0006),    two(0xF1FF, 0xFFFF),    "Ii"},
1108 {"ftrapogt",    two(0xF07C, 0x0002),    two(0xF1FF, 0xFFFF),    "Ii"},
1109 {"ftrapole",    two(0xF07C, 0x0005),    two(0xF1FF, 0xFFFF),    "Ii"},
1110 {"ftrapolt",    two(0xF07C, 0x0004),    two(0xF1FF, 0xFFFF),    "Ii"},
1111 {"ftrapor",     two(0xF07C, 0x0007),    two(0xF1FF, 0xFFFF),    "Ii"},
1112 {"ftrapseq",    two(0xF07C, 0x0011),    two(0xF1FF, 0xFFFF),    "Ii"},
1113 {"ftrapsf",     two(0xF07C, 0x0010),    two(0xF1FF, 0xFFFF),    "Ii"},
1114 {"ftrapsne",    two(0xF07C, 0x001E),    two(0xF1FF, 0xFFFF),    "Ii"},
1115 {"ftrapst",     two(0xF07C, 0x001F),    two(0xF1FF, 0xFFFF),    "Ii"},
1116 {"ftrapt",      two(0xF07C, 0x000F),    two(0xF1FF, 0xFFFF),    "Ii"},
1117 {"ftrapueq",    two(0xF07C, 0x0009),    two(0xF1FF, 0xFFFF),    "Ii"},
1118 {"ftrapuge",    two(0xF07C, 0x000B),    two(0xF1FF, 0xFFFF),    "Ii"},
1119 {"ftrapugt",    two(0xF07C, 0x000A),    two(0xF1FF, 0xFFFF),    "Ii"},
1120 {"ftrapule",    two(0xF07C, 0x000D),    two(0xF1FF, 0xFFFF),    "Ii"},
1121 {"ftrapult",    two(0xF07C, 0x000C),    two(0xF1FF, 0xFFFF),    "Ii"},
1122 {"ftrapun",     two(0xF07C, 0x0008),    two(0xF1FF, 0xFFFF),    "Ii"},
1123         
1124 {"ftrapeqw",    two(0xF07A, 0x0001),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1125 {"ftrapfw",     two(0xF07A, 0x0000),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1126 {"ftrapgew",    two(0xF07A, 0x0013),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1127 {"ftrapglw",    two(0xF07A, 0x0016),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1128 {"ftrapglew",   two(0xF07A, 0x0017),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1129 {"ftrapgtw",    two(0xF07A, 0x0012),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1130 {"ftraplew",    two(0xF07A, 0x0015),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1131 {"ftrapltw",    two(0xF07A, 0x0014),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1132 {"ftrapnew",    two(0xF07A, 0x000E),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1133 {"ftrapngew",   two(0xF07A, 0x001C),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1134 {"ftrapnglw",   two(0xF07A, 0x0019),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1135 {"ftrapnglew",  two(0xF07A, 0x0018),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1136 {"ftrapngtw",   two(0xF07A, 0x001D),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1137 {"ftrapnlew",   two(0xF07A, 0x001A),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1138 {"ftrapnltw",   two(0xF07A, 0x001B),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1139 {"ftrapogew",   two(0xF07A, 0x0003),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1140 {"ftrapoglw",   two(0xF07A, 0x0006),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1141 {"ftrapogtw",   two(0xF07A, 0x0002),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1142 {"ftrapolew",   two(0xF07A, 0x0005),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1143 {"ftrapoltw",   two(0xF07A, 0x0004),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1144 {"ftraporw",    two(0xF07A, 0x0007),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1145 {"ftrapseqw",   two(0xF07A, 0x0011),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1146 {"ftrapsfw",    two(0xF07A, 0x0010),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1147 {"ftrapsnew",   two(0xF07A, 0x001E),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1148 {"ftrapstw",    two(0xF07A, 0x001F),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1149 {"ftraptw",     two(0xF07A, 0x000F),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1150 {"ftrapueqw",   two(0xF07A, 0x0009),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1151 {"ftrapugew",   two(0xF07A, 0x000B),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1152 {"ftrapugtw",   two(0xF07A, 0x000A),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1153 {"ftrapulew",   two(0xF07A, 0x000D),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1154 {"ftrapultw",   two(0xF07A, 0x000C),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1155 {"ftrapunw",    two(0xF07A, 0x0008),    two(0xF1FF, 0xFFFF),    "Ii^w"},
1156
1157 {"ftrapeql",    two(0xF07B, 0x0001),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1158 {"ftrapfl",     two(0xF07B, 0x0000),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1159 {"ftrapgel",    two(0xF07B, 0x0013),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1160 {"ftrapgll",    two(0xF07B, 0x0016),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1161 {"ftrapglel",   two(0xF07B, 0x0017),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1162 {"ftrapgtl",    two(0xF07B, 0x0012),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1163 {"ftraplel",    two(0xF07B, 0x0015),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1164 {"ftrapltl",    two(0xF07B, 0x0014),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1165 {"ftrapnel",    two(0xF07B, 0x000E),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1166 {"ftrapngel",   two(0xF07B, 0x001C),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1167 {"ftrapngll",   two(0xF07B, 0x0019),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1168 {"ftrapnglel",  two(0xF07B, 0x0018),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1169 {"ftrapngtl",   two(0xF07B, 0x001D),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1170 {"ftrapnlel",   two(0xF07B, 0x001A),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1171 {"ftrapnltl",   two(0xF07B, 0x001B),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1172 {"ftrapogel",   two(0xF07B, 0x0003),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1173 {"ftrapogll",   two(0xF07B, 0x0006),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1174 {"ftrapogtl",   two(0xF07B, 0x0002),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1175 {"ftrapolel",   two(0xF07B, 0x0005),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1176 {"ftrapoltl",   two(0xF07B, 0x0004),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1177 {"ftraporl",    two(0xF07B, 0x0007),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1178 {"ftrapseql",   two(0xF07B, 0x0011),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1179 {"ftrapsfl",    two(0xF07B, 0x0010),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1180 {"ftrapsnel",   two(0xF07B, 0x001E),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1181 {"ftrapstl",    two(0xF07B, 0x001F),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1182 {"ftraptl",     two(0xF07B, 0x000F),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1183 {"ftrapueql",   two(0xF07B, 0x0009),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1184 {"ftrapugel",   two(0xF07B, 0x000B),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1185 {"ftrapugtl",   two(0xF07B, 0x000A),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1186 {"ftrapulel",   two(0xF07B, 0x000D),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1187 {"ftrapultl",   two(0xF07B, 0x000C),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1188 {"ftrapunl",    two(0xF07B, 0x0008),    two(0xF1FF, 0xFFFF),    "Ii^l"},
1189
1190 {"ftstb",       two(0xF000, 0x583A),    two(0xF1C0, 0xFC7F),    "Ii;b"},
1191 {"ftstd",       two(0xF000, 0x543A),    two(0xF1C0, 0xFC7F),    "Ii;F"},
1192 {"ftstl",       two(0xF000, 0x403A),    two(0xF1C0, 0xFC7F),    "Ii;l"},
1193 {"ftstp",       two(0xF000, 0x4C3A),    two(0xF1C0, 0xFC7F),    "Ii;p"},
1194 {"ftsts",       two(0xF000, 0x443A),    two(0xF1C0, 0xFC7F),    "Ii;f"},
1195 {"ftstw",       two(0xF000, 0x503A),    two(0xF1C0, 0xFC7F),    "Ii;w"},
1196 {"ftstx",       two(0xF000, 0x003A),    two(0xF1C0, 0xE07F),    "IiF8"},
1197 {"ftstx",       two(0xF000, 0x483A),    two(0xF1C0, 0xFC7F),    "Ii;x"},
1198
1199 {"ftwotoxb",    two(0xF000, 0x5811),    two(0xF1C0, 0xFC7F),    "Ii;bF7"},
1200 {"ftwotoxd",    two(0xF000, 0x5411),    two(0xF1C0, 0xFC7F),    "Ii;FF7"},
1201 {"ftwotoxl",    two(0xF000, 0x4011),    two(0xF1C0, 0xFC7F),    "Ii;lF7"},
1202 {"ftwotoxp",    two(0xF000, 0x4C11),    two(0xF1C0, 0xFC7F),    "Ii;pF7"},
1203 {"ftwotoxs",    two(0xF000, 0x4411),    two(0xF1C0, 0xFC7F),    "Ii;fF7"},
1204 {"ftwotoxw",    two(0xF000, 0x5011),    two(0xF1C0, 0xFC7F),    "Ii;wF7"},
1205 {"ftwotoxx",    two(0xF000, 0x0011),    two(0xF1C0, 0xE07F),    "IiF8F7"},
1206 {"ftwotoxx",    two(0xF000, 0x4811),    two(0xF1C0, 0xFC7F),    "Ii;xF7"},
1207 {"ftwotoxx",    two(0xF000, 0x0011),    two(0xF1C0, 0xE07F),    "IiFt"},
1208
1209 /* Alternate mnemonics for SUN */
1210
1211 {"jbsr",        one(0060400),           one(0177400),           "Bg"},
1212 {"jbsr",        one(0047200),           one(0177700),           "!s"},
1213 {"jra",         one(0060000),           one(0177400),           "Bg"},
1214 {"jra",         one(0047300),           one(0177700),           "!s"},
1215   
1216 {"jhi",         one(0061000),           one(0177400),           "Bg"},
1217 {"jls",         one(0061400),           one(0177400),           "Bg"},
1218 {"jcc",         one(0062000),           one(0177400),           "Bg"},
1219 {"jcs",         one(0062400),           one(0177400),           "Bg"},
1220 {"jne",         one(0063000),           one(0177400),           "Bg"},
1221 {"jeq",         one(0063400),           one(0177400),           "Bg"},
1222 {"jvc",         one(0064000),           one(0177400),           "Bg"},
1223 {"jvs",         one(0064400),           one(0177400),           "Bg"},
1224 {"jpl",         one(0065000),           one(0177400),           "Bg"},
1225 {"jmi",         one(0065400),           one(0177400),           "Bg"},
1226 {"jge",         one(0066000),           one(0177400),           "Bg"},
1227 {"jlt",         one(0066400),           one(0177400),           "Bg"},
1228 {"jgt",         one(0067000),           one(0177400),           "Bg"},
1229 {"jle",         one(0067400),           one(0177400),           "Bg"},
1230
1231 {"movql",       one(0070000),           one(0170400),           "MsDd"},
1232 {"moveql",      one(0070000),           one(0170400),           "MsDd"},
1233 {"moval",       one(0020100),           one(0170700),           "*lAd"},
1234 {"movaw",       one(0030100),           one(0170700),           "*wAd"},
1235 {"movb",        one(0010000),           one(0170000),           ";b$d"},        /* mov */
1236 {"movl",        one(0020000),           one(0170000),           "*l$d"},
1237 {"movl",        one(0020100),           one(0170700),           "*lAd"},
1238 {"movl",        one(0047140),           one(0177770),           "AsUd"},        /* mov to USP */
1239 {"movl",        one(0047150),           one(0177770),           "UdAs"},        /* mov from USP */
1240 {"movl",        one(0070000),           one(0170400),           "MsDd"},        /* movq written as mov */
1241 {"movml",       one(0044300),           one(0177700),           "#w&s"},        /* movm reg to mem. */
1242 {"movml",       one(0044340),           one(0177770),           "#w-s"},        /* movm reg to autodecrement. */
1243 {"movml",       one(0046300),           one(0177700),           "!s#w"},        /* movm mem to reg. */
1244 {"movml",       one(0046330),           one(0177770),           "+s#w"},        /* movm autoinc to reg. */
1245 {"movmw",       one(0044200),           one(0177700),           "#w&s"},        /* movm reg to mem. */
1246 {"movmw",       one(0044240),           one(0177770),           "#w-s"},        /* movm reg to autodecrement. */
1247 {"movmw",       one(0046200),           one(0177700),           "!s#w"},        /* movm mem to reg. */
1248 {"movmw",       one(0046230),           one(0177770),           "+s#w"},        /* movm autoinc to reg. */
1249 {"movpl",       one(0000510),           one(0170770),           "dsDd"},        /* memory to register */
1250 {"movpl",       one(0000710),           one(0170770),           "Ddds"},        /* register to memory */
1251 {"movpw",       one(0000410),           one(0170770),           "dsDd"},        /* memory to register */
1252 {"movpw",       one(0000610),           one(0170770),           "Ddds"},        /* register to memory */
1253 {"movq",        one(0070000),           one(0170400),           "MsDd"},
1254 {"movw",        one(0030000),           one(0170000),           "*w$d"},
1255 {"movw",        one(0030100),           one(0170700),           "*wAd"},        /* mova,        written as mov */
1256 {"movw",        one(0040300),           one(0177700),           "Ss$s"},        /* Move from sr */
1257 {"movw",        one(0041300),           one(0177700),           "Cs$s"},        /* Move from ccr */
1258 {"movw",        one(0042300),           one(0177700),           ";wCd"},        /* mov to ccr */
1259 {"movw",        one(0043300),           one(0177700),           ";wSd"},        /* mov to sr */
1260 /* movc not done*/
1261
1262 {"movsb",       two(0007000, 0),        two(0177700, 07777),    "~sR1"},
1263 {"movsb",       two(0007000, 04000),    two(0177700, 07777),    "R1~s"},
1264 {"movsl",       two(0007200, 0),        two(0177700, 07777),    "~sR1"},
1265 {"movsl",       two(0007200, 04000),    two(0177700, 07777),    "R1~s"},
1266 {"movsw",       two(0007100, 0),        two(0177700, 07777),    "~sR1"},
1267 {"movsw",       two(0007100, 04000),    two(0177700, 07777),    "R1~s"},
1268 };
1269
1270 int numopcodes=sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);
1271
1272 struct m68k_opcode *endop = m68k_opcodes+sizeof(m68k_opcodes)/sizeof(m68k_opcodes[0]);;
This page took 0.107566 seconds and 4 git commands to generate.