1/* Instruction opcode table for iq2000.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5Copyright 1996-2005 Free Software Foundation, Inc.
6
7This file is part of the GNU Binutils and/or GDB, the GNU debugger.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License along
20with this program; if not, write to the Free Software Foundation, Inc.,
2151 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
22
23*/
24
25#include "sysdep.h"
26#include "ansidecl.h"
27#include "bfd.h"
28#include "symcat.h"
29#include "iq2000-desc.h"
30#include "iq2000-opc.h"
31#include "libiberty.h"
32
33/* The hash functions are recorded here to help keep assembler code out of
34   the disassembler and vice versa.  */
35
36static int asm_hash_insn_p        (const CGEN_INSN *);
37static unsigned int asm_hash_insn (const char *);
38static int dis_hash_insn_p        (const CGEN_INSN *);
39static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
40
41/* Instruction formats.  */
42
43#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
44#define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
45#else
46#define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f]
47#endif
48static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
49  0, 0, 0x0, { { 0 } }
50};
51
52static const CGEN_IFMT ifmt_add2 ATTRIBUTE_UNUSED = {
53  32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
54};
55
56static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = {
57  32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
58};
59
60static const CGEN_IFMT ifmt_addi2 ATTRIBUTE_UNUSED = {
61  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
62};
63
64static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = {
65  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
66};
67
68static const CGEN_IFMT ifmt_ram ATTRIBUTE_UNUSED = {
69  32, 32, 0xfc000020, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_5) }, { F (F_MASKL) }, { 0 } }
70};
71
72static const CGEN_IFMT ifmt_sll ATTRIBUTE_UNUSED = {
73  32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
74};
75
76static const CGEN_IFMT ifmt_sllv2 ATTRIBUTE_UNUSED = {
77  32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
78};
79
80static const CGEN_IFMT ifmt_slmv2 ATTRIBUTE_UNUSED = {
81  32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
82};
83
84static const CGEN_IFMT ifmt_slmv ATTRIBUTE_UNUSED = {
85  32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
86};
87
88static const CGEN_IFMT ifmt_slti2 ATTRIBUTE_UNUSED = {
89  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
90};
91
92static const CGEN_IFMT ifmt_slti ATTRIBUTE_UNUSED = {
93  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
94};
95
96static const CGEN_IFMT ifmt_sra2 ATTRIBUTE_UNUSED = {
97  32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
98};
99
100static const CGEN_IFMT ifmt_bbi ATTRIBUTE_UNUSED = {
101  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
102};
103
104static const CGEN_IFMT ifmt_bbv ATTRIBUTE_UNUSED = {
105  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
106};
107
108static const CGEN_IFMT ifmt_bgez ATTRIBUTE_UNUSED = {
109  32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
110};
111
112static const CGEN_IFMT ifmt_jalr ATTRIBUTE_UNUSED = {
113  32, 32, 0xfc1f07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
114};
115
116static const CGEN_IFMT ifmt_jr ATTRIBUTE_UNUSED = {
117  32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
118};
119
120static const CGEN_IFMT ifmt_lb ATTRIBUTE_UNUSED = {
121  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
122};
123
124static const CGEN_IFMT ifmt_lui ATTRIBUTE_UNUSED = {
125  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
126};
127
128static const CGEN_IFMT ifmt_break ATTRIBUTE_UNUSED = {
129  32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
130};
131
132static const CGEN_IFMT ifmt_syscall ATTRIBUTE_UNUSED = {
133  32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } }
134};
135
136static const CGEN_IFMT ifmt_andoui ATTRIBUTE_UNUSED = {
137  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
138};
139
140static const CGEN_IFMT ifmt_andoui2 ATTRIBUTE_UNUSED = {
141  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
142};
143
144static const CGEN_IFMT ifmt_mrgb ATTRIBUTE_UNUSED = {
145  32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
146};
147
148static const CGEN_IFMT ifmt_mrgb2 ATTRIBUTE_UNUSED = {
149  32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
150};
151
152static const CGEN_IFMT ifmt_bc0f ATTRIBUTE_UNUSED = {
153  32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
154};
155
156static const CGEN_IFMT ifmt_cfc0 ATTRIBUTE_UNUSED = {
157  32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10_11) }, { 0 } }
158};
159
160static const CGEN_IFMT ifmt_chkhdr ATTRIBUTE_UNUSED = {
161  32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
162};
163
164static const CGEN_IFMT ifmt_lulck ATTRIBUTE_UNUSED = {
165  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
166};
167
168static const CGEN_IFMT ifmt_pkrlr1 ATTRIBUTE_UNUSED = {
169  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_COUNT) }, { F (F_INDEX) }, { 0 } }
170};
171
172static const CGEN_IFMT ifmt_rfe ATTRIBUTE_UNUSED = {
173  32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_25) }, { F (F_24_19) }, { F (F_FUNC) }, { 0 } }
174};
175
176static const CGEN_IFMT ifmt_j ATTRIBUTE_UNUSED = {
177  32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } }
178};
179
180static const CGEN_IFMT ifmt_mrgbq10 ATTRIBUTE_UNUSED = {
181  32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
182};
183
184static const CGEN_IFMT ifmt_mrgbq102 ATTRIBUTE_UNUSED = {
185  32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
186};
187
188static const CGEN_IFMT ifmt_jq10 ATTRIBUTE_UNUSED = {
189  32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
190};
191
192static const CGEN_IFMT ifmt_jalq10 ATTRIBUTE_UNUSED = {
193  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
194};
195
196static const CGEN_IFMT ifmt_avail ATTRIBUTE_UNUSED = {
197  32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
198};
199
200static const CGEN_IFMT ifmt_rbi ATTRIBUTE_UNUSED = {
201  32, 32, 0xfc000700, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
202};
203
204static const CGEN_IFMT ifmt_cam36 ATTRIBUTE_UNUSED = {
205  32, 32, 0xffe007c0, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
206};
207
208static const CGEN_IFMT ifmt_cm32and ATTRIBUTE_UNUSED = {
209  32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
210};
211
212static const CGEN_IFMT ifmt_cm32rd ATTRIBUTE_UNUSED = {
213  32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
214};
215
216static const CGEN_IFMT ifmt_cm128ria3 ATTRIBUTE_UNUSED = {
217  32, 32, 0xfc0007fc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
218};
219
220static const CGEN_IFMT ifmt_cm128ria4 ATTRIBUTE_UNUSED = {
221  32, 32, 0xfc0007f8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
222};
223
224static const CGEN_IFMT ifmt_ctc ATTRIBUTE_UNUSED = {
225  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
226};
227
228#undef F
229
230#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
231#define A(a) (1 << CGEN_INSN_##a)
232#else
233#define A(a) (1 << CGEN_INSN_/**/a)
234#endif
235#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
236#define OPERAND(op) IQ2000_OPERAND_##op
237#else
238#define OPERAND(op) IQ2000_OPERAND_/**/op
239#endif
240#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
241#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
242
243/* The instruction table.  */
244
245static const CGEN_OPCODE iq2000_cgen_insn_opcode_table[MAX_INSNS] =
246{
247  /* Special null first entry.
248     A `num' value of zero is thus invalid.
249     Also, the special `invalid' insn resides here.  */
250  { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
251/* add ${rd-rs},$rt */
252  {
253    { 0, 0, 0, 0 },
254    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
255    & ifmt_add2, { 0x20 }
256  },
257/* add $rd,$rs,$rt */
258  {
259    { 0, 0, 0, 0 },
260    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
261    & ifmt_add, { 0x20 }
262  },
263/* addi ${rt-rs},$lo16 */
264  {
265    { 0, 0, 0, 0 },
266    { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
267    & ifmt_addi2, { 0x20000000 }
268  },
269/* addi $rt,$rs,$lo16 */
270  {
271    { 0, 0, 0, 0 },
272    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
273    & ifmt_addi, { 0x20000000 }
274  },
275/* addiu ${rt-rs},$lo16 */
276  {
277    { 0, 0, 0, 0 },
278    { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
279    & ifmt_addi2, { 0x24000000 }
280  },
281/* addiu $rt,$rs,$lo16 */
282  {
283    { 0, 0, 0, 0 },
284    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
285    & ifmt_addi, { 0x24000000 }
286  },
287/* addu ${rd-rs},$rt */
288  {
289    { 0, 0, 0, 0 },
290    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
291    & ifmt_add2, { 0x21 }
292  },
293/* addu $rd,$rs,$rt */
294  {
295    { 0, 0, 0, 0 },
296    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
297    & ifmt_add, { 0x21 }
298  },
299/* ado16 ${rd-rs},$rt */
300  {
301    { 0, 0, 0, 0 },
302    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
303    & ifmt_add2, { 0x29 }
304  },
305/* ado16 $rd,$rs,$rt */
306  {
307    { 0, 0, 0, 0 },
308    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
309    & ifmt_add, { 0x29 }
310  },
311/* and ${rd-rs},$rt */
312  {
313    { 0, 0, 0, 0 },
314    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
315    & ifmt_add2, { 0x24 }
316  },
317/* and $rd,$rs,$rt */
318  {
319    { 0, 0, 0, 0 },
320    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
321    & ifmt_add, { 0x24 }
322  },
323/* andi ${rt-rs},$lo16 */
324  {
325    { 0, 0, 0, 0 },
326    { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
327    & ifmt_addi2, { 0x30000000 }
328  },
329/* andi $rt,$rs,$lo16 */
330  {
331    { 0, 0, 0, 0 },
332    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
333    & ifmt_addi, { 0x30000000 }
334  },
335/* andoi ${rt-rs},$lo16 */
336  {
337    { 0, 0, 0, 0 },
338    { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
339    & ifmt_addi2, { 0xb0000000 }
340  },
341/* andoi $rt,$rs,$lo16 */
342  {
343    { 0, 0, 0, 0 },
344    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
345    & ifmt_addi, { 0xb0000000 }
346  },
347/* nor ${rd-rs},$rt */
348  {
349    { 0, 0, 0, 0 },
350    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
351    & ifmt_add2, { 0x27 }
352  },
353/* nor $rd,$rs,$rt */
354  {
355    { 0, 0, 0, 0 },
356    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
357    & ifmt_add, { 0x27 }
358  },
359/* or ${rd-rs},$rt */
360  {
361    { 0, 0, 0, 0 },
362    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
363    & ifmt_add2, { 0x25 }
364  },
365/* or $rd,$rs,$rt */
366  {
367    { 0, 0, 0, 0 },
368    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
369    & ifmt_add, { 0x25 }
370  },
371/* ori ${rt-rs},$lo16 */
372  {
373    { 0, 0, 0, 0 },
374    { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
375    & ifmt_addi2, { 0x34000000 }
376  },
377/* ori $rt,$rs,$lo16 */
378  {
379    { 0, 0, 0, 0 },
380    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
381    & ifmt_addi, { 0x34000000 }
382  },
383/* ram $rd,$rt,$shamt,$maskl,$maskr */
384  {
385    { 0, 0, 0, 0 },
386    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), ',', OP (MASKL), ',', OP (MASKR), 0 } },
387    & ifmt_ram, { 0x9c000000 }
388  },
389/* sll $rd,$rt,$shamt */
390  {
391    { 0, 0, 0, 0 },
392    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
393    & ifmt_sll, { 0x0 }
394  },
395/* sllv ${rd-rt},$rs */
396  {
397    { 0, 0, 0, 0 },
398    { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
399    & ifmt_sllv2, { 0x4 }
400  },
401/* sllv $rd,$rt,$rs */
402  {
403    { 0, 0, 0, 0 },
404    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
405    & ifmt_add, { 0x4 }
406  },
407/* slmv ${rd-rt},$rs,$shamt */
408  {
409    { 0, 0, 0, 0 },
410    { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
411    & ifmt_slmv2, { 0x1 }
412  },
413/* slmv $rd,$rt,$rs,$shamt */
414  {
415    { 0, 0, 0, 0 },
416    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
417    & ifmt_slmv, { 0x1 }
418  },
419/* slt ${rd-rs},$rt */
420  {
421    { 0, 0, 0, 0 },
422    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
423    & ifmt_add2, { 0x2a }
424  },
425/* slt $rd,$rs,$rt */
426  {
427    { 0, 0, 0, 0 },
428    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
429    & ifmt_add, { 0x2a }
430  },
431/* slti ${rt-rs},$imm */
432  {
433    { 0, 0, 0, 0 },
434    { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
435    & ifmt_slti2, { 0x28000000 }
436  },
437/* slti $rt,$rs,$imm */
438  {
439    { 0, 0, 0, 0 },
440    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
441    & ifmt_slti, { 0x28000000 }
442  },
443/* sltiu ${rt-rs},$imm */
444  {
445    { 0, 0, 0, 0 },
446    { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
447    & ifmt_slti2, { 0x2c000000 }
448  },
449/* sltiu $rt,$rs,$imm */
450  {
451    { 0, 0, 0, 0 },
452    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
453    & ifmt_slti, { 0x2c000000 }
454  },
455/* sltu ${rd-rs},$rt */
456  {
457    { 0, 0, 0, 0 },
458    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
459    & ifmt_add2, { 0x2b }
460  },
461/* sltu $rd,$rs,$rt */
462  {
463    { 0, 0, 0, 0 },
464    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
465    & ifmt_add, { 0x2b }
466  },
467/* sra ${rd-rt},$shamt */
468  {
469    { 0, 0, 0, 0 },
470    { { MNEM, ' ', OP (RD_RT), ',', OP (SHAMT), 0 } },
471    & ifmt_sra2, { 0x3 }
472  },
473/* sra $rd,$rt,$shamt */
474  {
475    { 0, 0, 0, 0 },
476    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
477    & ifmt_sll, { 0x3 }
478  },
479/* srav ${rd-rt},$rs */
480  {
481    { 0, 0, 0, 0 },
482    { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
483    & ifmt_sllv2, { 0x7 }
484  },
485/* srav $rd,$rt,$rs */
486  {
487    { 0, 0, 0, 0 },
488    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
489    & ifmt_add, { 0x7 }
490  },
491/* srl $rd,$rt,$shamt */
492  {
493    { 0, 0, 0, 0 },
494    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
495    & ifmt_sll, { 0x2 }
496  },
497/* srlv ${rd-rt},$rs */
498  {
499    { 0, 0, 0, 0 },
500    { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
501    & ifmt_sllv2, { 0x6 }
502  },
503/* srlv $rd,$rt,$rs */
504  {
505    { 0, 0, 0, 0 },
506    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
507    & ifmt_add, { 0x6 }
508  },
509/* srmv ${rd-rt},$rs,$shamt */
510  {
511    { 0, 0, 0, 0 },
512    { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
513    & ifmt_slmv2, { 0x5 }
514  },
515/* srmv $rd,$rt,$rs,$shamt */
516  {
517    { 0, 0, 0, 0 },
518    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
519    & ifmt_slmv, { 0x5 }
520  },
521/* sub ${rd-rs},$rt */
522  {
523    { 0, 0, 0, 0 },
524    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
525    & ifmt_add2, { 0x22 }
526  },
527/* sub $rd,$rs,$rt */
528  {
529    { 0, 0, 0, 0 },
530    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
531    & ifmt_add, { 0x22 }
532  },
533/* subu ${rd-rs},$rt */
534  {
535    { 0, 0, 0, 0 },
536    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
537    & ifmt_add2, { 0x23 }
538  },
539/* subu $rd,$rs,$rt */
540  {
541    { 0, 0, 0, 0 },
542    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
543    & ifmt_add, { 0x23 }
544  },
545/* xor ${rd-rs},$rt */
546  {
547    { 0, 0, 0, 0 },
548    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
549    & ifmt_add2, { 0x26 }
550  },
551/* xor $rd,$rs,$rt */
552  {
553    { 0, 0, 0, 0 },
554    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
555    & ifmt_add, { 0x26 }
556  },
557/* xori ${rt-rs},$lo16 */
558  {
559    { 0, 0, 0, 0 },
560    { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
561    & ifmt_addi2, { 0x38000000 }
562  },
563/* xori $rt,$rs,$lo16 */
564  {
565    { 0, 0, 0, 0 },
566    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
567    & ifmt_addi, { 0x38000000 }
568  },
569/* bbi $rs($bitnum),$offset */
570  {
571    { 0, 0, 0, 0 },
572    { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
573    & ifmt_bbi, { 0x70000000 }
574  },
575/* bbin $rs($bitnum),$offset */
576  {
577    { 0, 0, 0, 0 },
578    { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
579    & ifmt_bbi, { 0x78000000 }
580  },
581/* bbv $rs,$rt,$offset */
582  {
583    { 0, 0, 0, 0 },
584    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
585    & ifmt_bbv, { 0x74000000 }
586  },
587/* bbvn $rs,$rt,$offset */
588  {
589    { 0, 0, 0, 0 },
590    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
591    & ifmt_bbv, { 0x7c000000 }
592  },
593/* beq $rs,$rt,$offset */
594  {
595    { 0, 0, 0, 0 },
596    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
597    & ifmt_bbv, { 0x10000000 }
598  },
599/* beql $rs,$rt,$offset */
600  {
601    { 0, 0, 0, 0 },
602    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
603    & ifmt_bbv, { 0x50000000 }
604  },
605/* bgez $rs,$offset */
606  {
607    { 0, 0, 0, 0 },
608    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
609    & ifmt_bgez, { 0x4010000 }
610  },
611/* bgezal $rs,$offset */
612  {
613    { 0, 0, 0, 0 },
614    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
615    & ifmt_bgez, { 0x4110000 }
616  },
617/* bgezall $rs,$offset */
618  {
619    { 0, 0, 0, 0 },
620    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
621    & ifmt_bgez, { 0x4130000 }
622  },
623/* bgezl $rs,$offset */
624  {
625    { 0, 0, 0, 0 },
626    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
627    & ifmt_bgez, { 0x4030000 }
628  },
629/* bltz $rs,$offset */
630  {
631    { 0, 0, 0, 0 },
632    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
633    & ifmt_bgez, { 0x4000000 }
634  },
635/* bltzl $rs,$offset */
636  {
637    { 0, 0, 0, 0 },
638    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
639    & ifmt_bgez, { 0x4020000 }
640  },
641/* bltzal $rs,$offset */
642  {
643    { 0, 0, 0, 0 },
644    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
645    & ifmt_bgez, { 0x4100000 }
646  },
647/* bltzall $rs,$offset */
648  {
649    { 0, 0, 0, 0 },
650    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
651    & ifmt_bgez, { 0x4120000 }
652  },
653/* bmb0 $rs,$rt,$offset */
654  {
655    { 0, 0, 0, 0 },
656    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
657    & ifmt_bbv, { 0x60000000 }
658  },
659/* bmb1 $rs,$rt,$offset */
660  {
661    { 0, 0, 0, 0 },
662    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
663    & ifmt_bbv, { 0x64000000 }
664  },
665/* bmb2 $rs,$rt,$offset */
666  {
667    { 0, 0, 0, 0 },
668    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
669    & ifmt_bbv, { 0x68000000 }
670  },
671/* bmb3 $rs,$rt,$offset */
672  {
673    { 0, 0, 0, 0 },
674    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
675    & ifmt_bbv, { 0x6c000000 }
676  },
677/* bne $rs,$rt,$offset */
678  {
679    { 0, 0, 0, 0 },
680    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
681    & ifmt_bbv, { 0x14000000 }
682  },
683/* bnel $rs,$rt,$offset */
684  {
685    { 0, 0, 0, 0 },
686    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
687    & ifmt_bbv, { 0x54000000 }
688  },
689/* jalr $rd,$rs */
690  {
691    { 0, 0, 0, 0 },
692    { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
693    & ifmt_jalr, { 0x9 }
694  },
695/* jr $rs */
696  {
697    { 0, 0, 0, 0 },
698    { { MNEM, ' ', OP (RS), 0 } },
699    & ifmt_jr, { 0x8 }
700  },
701/* lb $rt,$lo16($base) */
702  {
703    { 0, 0, 0, 0 },
704    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
705    & ifmt_lb, { 0x80000000 }
706  },
707/* lbu $rt,$lo16($base) */
708  {
709    { 0, 0, 0, 0 },
710    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
711    & ifmt_lb, { 0x90000000 }
712  },
713/* lh $rt,$lo16($base) */
714  {
715    { 0, 0, 0, 0 },
716    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
717    & ifmt_lb, { 0x84000000 }
718  },
719/* lhu $rt,$lo16($base) */
720  {
721    { 0, 0, 0, 0 },
722    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
723    & ifmt_lb, { 0x94000000 }
724  },
725/* lui $rt,$hi16 */
726  {
727    { 0, 0, 0, 0 },
728    { { MNEM, ' ', OP (RT), ',', OP (HI16), 0 } },
729    & ifmt_lui, { 0x3c000000 }
730  },
731/* lw $rt,$lo16($base) */
732  {
733    { 0, 0, 0, 0 },
734    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
735    & ifmt_lb, { 0x8c000000 }
736  },
737/* sb $rt,$lo16($base) */
738  {
739    { 0, 0, 0, 0 },
740    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
741    & ifmt_lb, { 0xa0000000 }
742  },
743/* sh $rt,$lo16($base) */
744  {
745    { 0, 0, 0, 0 },
746    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
747    & ifmt_lb, { 0xa4000000 }
748  },
749/* sw $rt,$lo16($base) */
750  {
751    { 0, 0, 0, 0 },
752    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
753    & ifmt_lb, { 0xac000000 }
754  },
755/* break */
756  {
757    { 0, 0, 0, 0 },
758    { { MNEM, 0 } },
759    & ifmt_break, { 0xd }
760  },
761/* syscall */
762  {
763    { 0, 0, 0, 0 },
764    { { MNEM, 0 } },
765    & ifmt_syscall, { 0xc }
766  },
767/* andoui $rt,$rs,$hi16 */
768  {
769    { 0, 0, 0, 0 },
770    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
771    & ifmt_andoui, { 0xfc000000 }
772  },
773/* andoui ${rt-rs},$hi16 */
774  {
775    { 0, 0, 0, 0 },
776    { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
777    & ifmt_andoui2, { 0xfc000000 }
778  },
779/* orui ${rt-rs},$hi16 */
780  {
781    { 0, 0, 0, 0 },
782    { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
783    & ifmt_andoui2, { 0xbc000000 }
784  },
785/* orui $rt,$rs,$hi16 */
786  {
787    { 0, 0, 0, 0 },
788    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
789    & ifmt_andoui, { 0xbc000000 }
790  },
791/* bgtz $rs,$offset */
792  {
793    { 0, 0, 0, 0 },
794    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
795    & ifmt_bgez, { 0x1c000000 }
796  },
797/* bgtzl $rs,$offset */
798  {
799    { 0, 0, 0, 0 },
800    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
801    & ifmt_bgez, { 0x5c000000 }
802  },
803/* blez $rs,$offset */
804  {
805    { 0, 0, 0, 0 },
806    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
807    & ifmt_bgez, { 0x18000000 }
808  },
809/* blezl $rs,$offset */
810  {
811    { 0, 0, 0, 0 },
812    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
813    & ifmt_bgez, { 0x58000000 }
814  },
815/* mrgb $rd,$rs,$rt,$mask */
816  {
817    { 0, 0, 0, 0 },
818    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASK), 0 } },
819    & ifmt_mrgb, { 0x2d }
820  },
821/* mrgb ${rd-rs},$rt,$mask */
822  {
823    { 0, 0, 0, 0 },
824    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASK), 0 } },
825    & ifmt_mrgb2, { 0x2d }
826  },
827/* bctxt $rs,$offset */
828  {
829    { 0, 0, 0, 0 },
830    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
831    & ifmt_bgez, { 0x4060000 }
832  },
833/* bc0f $offset */
834  {
835    { 0, 0, 0, 0 },
836    { { MNEM, ' ', OP (OFFSET), 0 } },
837    & ifmt_bc0f, { 0x41000000 }
838  },
839/* bc0fl $offset */
840  {
841    { 0, 0, 0, 0 },
842    { { MNEM, ' ', OP (OFFSET), 0 } },
843    & ifmt_bc0f, { 0x41020000 }
844  },
845/* bc3f $offset */
846  {
847    { 0, 0, 0, 0 },
848    { { MNEM, ' ', OP (OFFSET), 0 } },
849    & ifmt_bc0f, { 0x4d000000 }
850  },
851/* bc3fl $offset */
852  {
853    { 0, 0, 0, 0 },
854    { { MNEM, ' ', OP (OFFSET), 0 } },
855    & ifmt_bc0f, { 0x4d020000 }
856  },
857/* bc0t $offset */
858  {
859    { 0, 0, 0, 0 },
860    { { MNEM, ' ', OP (OFFSET), 0 } },
861    & ifmt_bc0f, { 0x41010000 }
862  },
863/* bc0tl $offset */
864  {
865    { 0, 0, 0, 0 },
866    { { MNEM, ' ', OP (OFFSET), 0 } },
867    & ifmt_bc0f, { 0x41030000 }
868  },
869/* bc3t $offset */
870  {
871    { 0, 0, 0, 0 },
872    { { MNEM, ' ', OP (OFFSET), 0 } },
873    & ifmt_bc0f, { 0x4d010000 }
874  },
875/* bc3tl $offset */
876  {
877    { 0, 0, 0, 0 },
878    { { MNEM, ' ', OP (OFFSET), 0 } },
879    & ifmt_bc0f, { 0x4d030000 }
880  },
881/* cfc0 $rt,$rd */
882  {
883    { 0, 0, 0, 0 },
884    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
885    & ifmt_cfc0, { 0x40400000 }
886  },
887/* cfc1 $rt,$rd */
888  {
889    { 0, 0, 0, 0 },
890    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
891    & ifmt_cfc0, { 0x44400000 }
892  },
893/* cfc2 $rt,$rd */
894  {
895    { 0, 0, 0, 0 },
896    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
897    & ifmt_cfc0, { 0x48400000 }
898  },
899/* cfc3 $rt,$rd */
900  {
901    { 0, 0, 0, 0 },
902    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
903    & ifmt_cfc0, { 0x4c400000 }
904  },
905/* chkhdr $rd,$rt */
906  {
907    { 0, 0, 0, 0 },
908    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
909    & ifmt_chkhdr, { 0x4d200000 }
910  },
911/* ctc0 $rt,$rd */
912  {
913    { 0, 0, 0, 0 },
914    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
915    & ifmt_cfc0, { 0x40c00000 }
916  },
917/* ctc1 $rt,$rd */
918  {
919    { 0, 0, 0, 0 },
920    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
921    & ifmt_cfc0, { 0x44c00000 }
922  },
923/* ctc2 $rt,$rd */
924  {
925    { 0, 0, 0, 0 },
926    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
927    & ifmt_cfc0, { 0x48c00000 }
928  },
929/* ctc3 $rt,$rd */
930  {
931    { 0, 0, 0, 0 },
932    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
933    & ifmt_cfc0, { 0x4cc00000 }
934  },
935/* jcr $rs */
936  {
937    { 0, 0, 0, 0 },
938    { { MNEM, ' ', OP (RS), 0 } },
939    & ifmt_jr, { 0xa }
940  },
941/* luc32 $rt,$rd */
942  {
943    { 0, 0, 0, 0 },
944    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
945    & ifmt_chkhdr, { 0x48200003 }
946  },
947/* luc32l $rt,$rd */
948  {
949    { 0, 0, 0, 0 },
950    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
951    & ifmt_chkhdr, { 0x48200007 }
952  },
953/* luc64 $rt,$rd */
954  {
955    { 0, 0, 0, 0 },
956    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
957    & ifmt_chkhdr, { 0x4820000b }
958  },
959/* luc64l $rt,$rd */
960  {
961    { 0, 0, 0, 0 },
962    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
963    & ifmt_chkhdr, { 0x4820000f }
964  },
965/* luk $rt,$rd */
966  {
967    { 0, 0, 0, 0 },
968    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
969    & ifmt_chkhdr, { 0x48200008 }
970  },
971/* lulck $rt */
972  {
973    { 0, 0, 0, 0 },
974    { { MNEM, ' ', OP (RT), 0 } },
975    & ifmt_lulck, { 0x48200004 }
976  },
977/* lum32 $rt,$rd */
978  {
979    { 0, 0, 0, 0 },
980    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
981    & ifmt_chkhdr, { 0x48200002 }
982  },
983/* lum32l $rt,$rd */
984  {
985    { 0, 0, 0, 0 },
986    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
987    & ifmt_chkhdr, { 0x48200006 }
988  },
989/* lum64 $rt,$rd */
990  {
991    { 0, 0, 0, 0 },
992    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
993    & ifmt_chkhdr, { 0x4820000a }
994  },
995/* lum64l $rt,$rd */
996  {
997    { 0, 0, 0, 0 },
998    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
999    & ifmt_chkhdr, { 0x4820000e }
1000  },
1001/* lur $rt,$rd */
1002  {
1003    { 0, 0, 0, 0 },
1004    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1005    & ifmt_chkhdr, { 0x48200001 }
1006  },
1007/* lurl $rt,$rd */
1008  {
1009    { 0, 0, 0, 0 },
1010    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1011    & ifmt_chkhdr, { 0x48200005 }
1012  },
1013/* luulck $rt */
1014  {
1015    { 0, 0, 0, 0 },
1016    { { MNEM, ' ', OP (RT), 0 } },
1017    & ifmt_lulck, { 0x48200000 }
1018  },
1019/* mfc0 $rt,$rd */
1020  {
1021    { 0, 0, 0, 0 },
1022    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1023    & ifmt_cfc0, { 0x40000000 }
1024  },
1025/* mfc1 $rt,$rd */
1026  {
1027    { 0, 0, 0, 0 },
1028    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1029    & ifmt_cfc0, { 0x44000000 }
1030  },
1031/* mfc2 $rt,$rd */
1032  {
1033    { 0, 0, 0, 0 },
1034    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1035    & ifmt_cfc0, { 0x48000000 }
1036  },
1037/* mfc3 $rt,$rd */
1038  {
1039    { 0, 0, 0, 0 },
1040    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1041    & ifmt_cfc0, { 0x4c000000 }
1042  },
1043/* mtc0 $rt,$rd */
1044  {
1045    { 0, 0, 0, 0 },
1046    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1047    & ifmt_cfc0, { 0x40800000 }
1048  },
1049/* mtc1 $rt,$rd */
1050  {
1051    { 0, 0, 0, 0 },
1052    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1053    & ifmt_cfc0, { 0x44800000 }
1054  },
1055/* mtc2 $rt,$rd */
1056  {
1057    { 0, 0, 0, 0 },
1058    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1059    & ifmt_cfc0, { 0x48800000 }
1060  },
1061/* mtc3 $rt,$rd */
1062  {
1063    { 0, 0, 0, 0 },
1064    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1065    & ifmt_cfc0, { 0x4c800000 }
1066  },
1067/* pkrl $rd,$rt */
1068  {
1069    { 0, 0, 0, 0 },
1070    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1071    & ifmt_chkhdr, { 0x4c200007 }
1072  },
1073/* pkrlr1 $rt,$_index,$count */
1074  {
1075    { 0, 0, 0, 0 },
1076    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1077    & ifmt_pkrlr1, { 0x4fa00000 }
1078  },
1079/* pkrlr30 $rt,$_index,$count */
1080  {
1081    { 0, 0, 0, 0 },
1082    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1083    & ifmt_pkrlr1, { 0x4fe00000 }
1084  },
1085/* rb $rd,$rt */
1086  {
1087    { 0, 0, 0, 0 },
1088    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1089    & ifmt_chkhdr, { 0x4c200004 }
1090  },
1091/* rbr1 $rt,$_index,$count */
1092  {
1093    { 0, 0, 0, 0 },
1094    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1095    & ifmt_pkrlr1, { 0x4f000000 }
1096  },
1097/* rbr30 $rt,$_index,$count */
1098  {
1099    { 0, 0, 0, 0 },
1100    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1101    & ifmt_pkrlr1, { 0x4f400000 }
1102  },
1103/* rfe */
1104  {
1105    { 0, 0, 0, 0 },
1106    { { MNEM, 0 } },
1107    & ifmt_rfe, { 0x42000010 }
1108  },
1109/* rx $rd,$rt */
1110  {
1111    { 0, 0, 0, 0 },
1112    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1113    & ifmt_chkhdr, { 0x4c200006 }
1114  },
1115/* rxr1 $rt,$_index,$count */
1116  {
1117    { 0, 0, 0, 0 },
1118    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1119    & ifmt_pkrlr1, { 0x4f800000 }
1120  },
1121/* rxr30 $rt,$_index,$count */
1122  {
1123    { 0, 0, 0, 0 },
1124    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1125    & ifmt_pkrlr1, { 0x4fc00000 }
1126  },
1127/* sleep */
1128  {
1129    { 0, 0, 0, 0 },
1130    { { MNEM, 0 } },
1131    & ifmt_syscall, { 0xe }
1132  },
1133/* srrd $rt */
1134  {
1135    { 0, 0, 0, 0 },
1136    { { MNEM, ' ', OP (RT), 0 } },
1137    & ifmt_lulck, { 0x48200010 }
1138  },
1139/* srrdl $rt */
1140  {
1141    { 0, 0, 0, 0 },
1142    { { MNEM, ' ', OP (RT), 0 } },
1143    & ifmt_lulck, { 0x48200014 }
1144  },
1145/* srulck $rt */
1146  {
1147    { 0, 0, 0, 0 },
1148    { { MNEM, ' ', OP (RT), 0 } },
1149    & ifmt_lulck, { 0x48200016 }
1150  },
1151/* srwr $rt,$rd */
1152  {
1153    { 0, 0, 0, 0 },
1154    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1155    & ifmt_chkhdr, { 0x48200011 }
1156  },
1157/* srwru $rt,$rd */
1158  {
1159    { 0, 0, 0, 0 },
1160    { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1161    & ifmt_chkhdr, { 0x48200015 }
1162  },
1163/* trapqfl */
1164  {
1165    { 0, 0, 0, 0 },
1166    { { MNEM, 0 } },
1167    & ifmt_break, { 0x4c200008 }
1168  },
1169/* trapqne */
1170  {
1171    { 0, 0, 0, 0 },
1172    { { MNEM, 0 } },
1173    & ifmt_break, { 0x4c200009 }
1174  },
1175/* traprel $rt */
1176  {
1177    { 0, 0, 0, 0 },
1178    { { MNEM, ' ', OP (RT), 0 } },
1179    & ifmt_lulck, { 0x4c20000a }
1180  },
1181/* wb $rd,$rt */
1182  {
1183    { 0, 0, 0, 0 },
1184    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1185    & ifmt_chkhdr, { 0x4c200000 }
1186  },
1187/* wbu $rd,$rt */
1188  {
1189    { 0, 0, 0, 0 },
1190    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1191    & ifmt_chkhdr, { 0x4c200001 }
1192  },
1193/* wbr1 $rt,$_index,$count */
1194  {
1195    { 0, 0, 0, 0 },
1196    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1197    & ifmt_pkrlr1, { 0x4e000000 }
1198  },
1199/* wbr1u $rt,$_index,$count */
1200  {
1201    { 0, 0, 0, 0 },
1202    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1203    & ifmt_pkrlr1, { 0x4e200000 }
1204  },
1205/* wbr30 $rt,$_index,$count */
1206  {
1207    { 0, 0, 0, 0 },
1208    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1209    & ifmt_pkrlr1, { 0x4e400000 }
1210  },
1211/* wbr30u $rt,$_index,$count */
1212  {
1213    { 0, 0, 0, 0 },
1214    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1215    & ifmt_pkrlr1, { 0x4e600000 }
1216  },
1217/* wx $rd,$rt */
1218  {
1219    { 0, 0, 0, 0 },
1220    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1221    & ifmt_chkhdr, { 0x4c200002 }
1222  },
1223/* wxu $rd,$rt */
1224  {
1225    { 0, 0, 0, 0 },
1226    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1227    & ifmt_chkhdr, { 0x4c200003 }
1228  },
1229/* wxr1 $rt,$_index,$count */
1230  {
1231    { 0, 0, 0, 0 },
1232    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1233    & ifmt_pkrlr1, { 0x4e800000 }
1234  },
1235/* wxr1u $rt,$_index,$count */
1236  {
1237    { 0, 0, 0, 0 },
1238    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1239    & ifmt_pkrlr1, { 0x4ea00000 }
1240  },
1241/* wxr30 $rt,$_index,$count */
1242  {
1243    { 0, 0, 0, 0 },
1244    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1245    & ifmt_pkrlr1, { 0x4ec00000 }
1246  },
1247/* wxr30u $rt,$_index,$count */
1248  {
1249    { 0, 0, 0, 0 },
1250    { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1251    & ifmt_pkrlr1, { 0x4ee00000 }
1252  },
1253/* ldw $rt,$lo16($base) */
1254  {
1255    { 0, 0, 0, 0 },
1256    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1257    & ifmt_lb, { 0xc0000000 }
1258  },
1259/* sdw $rt,$lo16($base) */
1260  {
1261    { 0, 0, 0, 0 },
1262    { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1263    & ifmt_lb, { 0xe0000000 }
1264  },
1265/* j $jmptarg */
1266  {
1267    { 0, 0, 0, 0 },
1268    { { MNEM, ' ', OP (JMPTARG), 0 } },
1269    & ifmt_j, { 0x8000000 }
1270  },
1271/* jal $jmptarg */
1272  {
1273    { 0, 0, 0, 0 },
1274    { { MNEM, ' ', OP (JMPTARG), 0 } },
1275    & ifmt_j, { 0xc000000 }
1276  },
1277/* bmb $rs,$rt,$offset */
1278  {
1279    { 0, 0, 0, 0 },
1280    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1281    & ifmt_bbv, { 0xb4000000 }
1282  },
1283/* andoui $rt,$rs,$hi16 */
1284  {
1285    { 0, 0, 0, 0 },
1286    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1287    & ifmt_andoui, { 0xbc000000 }
1288  },
1289/* andoui ${rt-rs},$hi16 */
1290  {
1291    { 0, 0, 0, 0 },
1292    { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1293    & ifmt_andoui2, { 0xbc000000 }
1294  },
1295/* orui $rt,$rs,$hi16 */
1296  {
1297    { 0, 0, 0, 0 },
1298    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1299    & ifmt_andoui, { 0x3c000000 }
1300  },
1301/* orui ${rt-rs},$hi16 */
1302  {
1303    { 0, 0, 0, 0 },
1304    { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1305    & ifmt_andoui2, { 0x3c000000 }
1306  },
1307/* mrgb $rd,$rs,$rt,$maskq10 */
1308  {
1309    { 0, 0, 0, 0 },
1310    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1311    & ifmt_mrgbq10, { 0x2d }
1312  },
1313/* mrgb ${rd-rs},$rt,$maskq10 */
1314  {
1315    { 0, 0, 0, 0 },
1316    { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1317    & ifmt_mrgbq102, { 0x2d }
1318  },
1319/* j $jmptarg */
1320  {
1321    { 0, 0, 0, 0 },
1322    { { MNEM, ' ', OP (JMPTARG), 0 } },
1323    & ifmt_jq10, { 0x8000000 }
1324  },
1325/* jal $rt,$jmptarg */
1326  {
1327    { 0, 0, 0, 0 },
1328    { { MNEM, ' ', OP (RT), ',', OP (JMPTARG), 0 } },
1329    & ifmt_jalq10, { 0xc000000 }
1330  },
1331/* jal $jmptarg */
1332  {
1333    { 0, 0, 0, 0 },
1334    { { MNEM, ' ', OP (JMPTARG), 0 } },
1335    & ifmt_jq10, { 0xc1f0000 }
1336  },
1337/* bbil $rs($bitnum),$offset */
1338  {
1339    { 0, 0, 0, 0 },
1340    { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1341    & ifmt_bbi, { 0xf0000000 }
1342  },
1343/* bbinl $rs($bitnum),$offset */
1344  {
1345    { 0, 0, 0, 0 },
1346    { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1347    & ifmt_bbi, { 0xf8000000 }
1348  },
1349/* bbvl $rs,$rt,$offset */
1350  {
1351    { 0, 0, 0, 0 },
1352    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1353    & ifmt_bbv, { 0xf4000000 }
1354  },
1355/* bbvnl $rs,$rt,$offset */
1356  {
1357    { 0, 0, 0, 0 },
1358    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1359    & ifmt_bbv, { 0xfc000000 }
1360  },
1361/* bgtzal $rs,$offset */
1362  {
1363    { 0, 0, 0, 0 },
1364    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1365    & ifmt_bgez, { 0x4150000 }
1366  },
1367/* bgtzall $rs,$offset */
1368  {
1369    { 0, 0, 0, 0 },
1370    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1371    & ifmt_bgez, { 0x4170000 }
1372  },
1373/* blezal $rs,$offset */
1374  {
1375    { 0, 0, 0, 0 },
1376    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1377    & ifmt_bgez, { 0x4140000 }
1378  },
1379/* blezall $rs,$offset */
1380  {
1381    { 0, 0, 0, 0 },
1382    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1383    & ifmt_bgez, { 0x4160000 }
1384  },
1385/* bgtz $rs,$offset */
1386  {
1387    { 0, 0, 0, 0 },
1388    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1389    & ifmt_bgez, { 0x4050000 }
1390  },
1391/* bgtzl $rs,$offset */
1392  {
1393    { 0, 0, 0, 0 },
1394    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1395    & ifmt_bgez, { 0x4070000 }
1396  },
1397/* blez $rs,$offset */
1398  {
1399    { 0, 0, 0, 0 },
1400    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1401    & ifmt_bgez, { 0x4040000 }
1402  },
1403/* blezl $rs,$offset */
1404  {
1405    { 0, 0, 0, 0 },
1406    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1407    & ifmt_bgez, { 0x4060000 }
1408  },
1409/* bmb $rs,$rt,$offset */
1410  {
1411    { 0, 0, 0, 0 },
1412    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1413    & ifmt_bbv, { 0x18000000 }
1414  },
1415/* bmbl $rs,$rt,$offset */
1416  {
1417    { 0, 0, 0, 0 },
1418    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1419    & ifmt_bbv, { 0x58000000 }
1420  },
1421/* bri $rs,$offset */
1422  {
1423    { 0, 0, 0, 0 },
1424    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1425    & ifmt_bgez, { 0x4080000 }
1426  },
1427/* brv $rs,$offset */
1428  {
1429    { 0, 0, 0, 0 },
1430    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1431    & ifmt_bgez, { 0x4090000 }
1432  },
1433/* bctx $rs,$offset */
1434  {
1435    { 0, 0, 0, 0 },
1436    { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1437    & ifmt_bgez, { 0x40c0000 }
1438  },
1439/* yield */
1440  {
1441    { 0, 0, 0, 0 },
1442    { { MNEM, 0 } },
1443    & ifmt_break, { 0xe }
1444  },
1445/* crc32 $rd,$rs,$rt */
1446  {
1447    { 0, 0, 0, 0 },
1448    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1449    & ifmt_add, { 0x4c000014 }
1450  },
1451/* crc32b $rd,$rs,$rt */
1452  {
1453    { 0, 0, 0, 0 },
1454    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1455    & ifmt_add, { 0x4c000015 }
1456  },
1457/* cnt1s $rd,$rs */
1458  {
1459    { 0, 0, 0, 0 },
1460    { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1461    & ifmt_add, { 0x2e }
1462  },
1463/* avail $rd */
1464  {
1465    { 0, 0, 0, 0 },
1466    { { MNEM, ' ', OP (RD), 0 } },
1467    & ifmt_avail, { 0x4c000024 }
1468  },
1469/* free $rd,$rs */
1470  {
1471    { 0, 0, 0, 0 },
1472    { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1473    & ifmt_jalr, { 0x4c000025 }
1474  },
1475/* tstod $rd,$rs */
1476  {
1477    { 0, 0, 0, 0 },
1478    { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1479    & ifmt_jalr, { 0x4c000027 }
1480  },
1481/* cmphdr $rd */
1482  {
1483    { 0, 0, 0, 0 },
1484    { { MNEM, ' ', OP (RD), 0 } },
1485    & ifmt_avail, { 0x4c00002c }
1486  },
1487/* mcid $rd,$rt */
1488  {
1489    { 0, 0, 0, 0 },
1490    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1491    & ifmt_chkhdr, { 0x4c000020 }
1492  },
1493/* dba $rd */
1494  {
1495    { 0, 0, 0, 0 },
1496    { { MNEM, ' ', OP (RD), 0 } },
1497    & ifmt_avail, { 0x4c000022 }
1498  },
1499/* dbd $rd,$rs,$rt */
1500  {
1501    { 0, 0, 0, 0 },
1502    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1503    & ifmt_add, { 0x4c000021 }
1504  },
1505/* dpwt $rd,$rs */
1506  {
1507    { 0, 0, 0, 0 },
1508    { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1509    & ifmt_jalr, { 0x4c000023 }
1510  },
1511/* chkhdr $rd,$rs */
1512  {
1513    { 0, 0, 0, 0 },
1514    { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1515    & ifmt_jalr, { 0x4c000026 }
1516  },
1517/* rba $rd,$rs,$rt */
1518  {
1519    { 0, 0, 0, 0 },
1520    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1521    & ifmt_add, { 0x4c000008 }
1522  },
1523/* rbal $rd,$rs,$rt */
1524  {
1525    { 0, 0, 0, 0 },
1526    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1527    & ifmt_add, { 0x4c000009 }
1528  },
1529/* rbar $rd,$rs,$rt */
1530  {
1531    { 0, 0, 0, 0 },
1532    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1533    & ifmt_add, { 0x4c00000a }
1534  },
1535/* wba $rd,$rs,$rt */
1536  {
1537    { 0, 0, 0, 0 },
1538    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1539    & ifmt_add, { 0x4c000010 }
1540  },
1541/* wbau $rd,$rs,$rt */
1542  {
1543    { 0, 0, 0, 0 },
1544    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1545    & ifmt_add, { 0x4c000011 }
1546  },
1547/* wbac $rd,$rs,$rt */
1548  {
1549    { 0, 0, 0, 0 },
1550    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1551    & ifmt_add, { 0x4c000012 }
1552  },
1553/* rbi $rd,$rs,$rt,$bytecount */
1554  {
1555    { 0, 0, 0, 0 },
1556    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1557    & ifmt_rbi, { 0x4c000200 }
1558  },
1559/* rbil $rd,$rs,$rt,$bytecount */
1560  {
1561    { 0, 0, 0, 0 },
1562    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1563    & ifmt_rbi, { 0x4c000300 }
1564  },
1565/* rbir $rd,$rs,$rt,$bytecount */
1566  {
1567    { 0, 0, 0, 0 },
1568    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1569    & ifmt_rbi, { 0x4c000100 }
1570  },
1571/* wbi $rd,$rs,$rt,$bytecount */
1572  {
1573    { 0, 0, 0, 0 },
1574    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1575    & ifmt_rbi, { 0x4c000600 }
1576  },
1577/* wbic $rd,$rs,$rt,$bytecount */
1578  {
1579    { 0, 0, 0, 0 },
1580    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1581    & ifmt_rbi, { 0x4c000500 }
1582  },
1583/* wbiu $rd,$rs,$rt,$bytecount */
1584  {
1585    { 0, 0, 0, 0 },
1586    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1587    & ifmt_rbi, { 0x4c000700 }
1588  },
1589/* pkrli $rd,$rs,$rt,$bytecount */
1590  {
1591    { 0, 0, 0, 0 },
1592    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1593    & ifmt_rbi, { 0x48000000 }
1594  },
1595/* pkrlih $rd,$rs,$rt,$bytecount */
1596  {
1597    { 0, 0, 0, 0 },
1598    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1599    & ifmt_rbi, { 0x48000200 }
1600  },
1601/* pkrliu $rd,$rs,$rt,$bytecount */
1602  {
1603    { 0, 0, 0, 0 },
1604    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1605    & ifmt_rbi, { 0x48000100 }
1606  },
1607/* pkrlic $rd,$rs,$rt,$bytecount */
1608  {
1609    { 0, 0, 0, 0 },
1610    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1611    & ifmt_rbi, { 0x48000300 }
1612  },
1613/* pkrla $rd,$rs,$rt */
1614  {
1615    { 0, 0, 0, 0 },
1616    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1617    & ifmt_add, { 0x4c000028 }
1618  },
1619/* pkrlau $rd,$rs,$rt */
1620  {
1621    { 0, 0, 0, 0 },
1622    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1623    & ifmt_add, { 0x4c000029 }
1624  },
1625/* pkrlah $rd,$rs,$rt */
1626  {
1627    { 0, 0, 0, 0 },
1628    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1629    & ifmt_add, { 0x4c00002a }
1630  },
1631/* pkrlac $rd,$rs,$rt */
1632  {
1633    { 0, 0, 0, 0 },
1634    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1635    & ifmt_add, { 0x4c00002b }
1636  },
1637/* lock $rd,$rt */
1638  {
1639    { 0, 0, 0, 0 },
1640    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1641    & ifmt_chkhdr, { 0x4c000001 }
1642  },
1643/* unlk $rd,$rt */
1644  {
1645    { 0, 0, 0, 0 },
1646    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1647    & ifmt_chkhdr, { 0x4c000003 }
1648  },
1649/* swrd $rd,$rt */
1650  {
1651    { 0, 0, 0, 0 },
1652    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1653    & ifmt_chkhdr, { 0x4c000004 }
1654  },
1655/* swrdl $rd,$rt */
1656  {
1657    { 0, 0, 0, 0 },
1658    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1659    & ifmt_chkhdr, { 0x4c000005 }
1660  },
1661/* swwr $rd,$rs,$rt */
1662  {
1663    { 0, 0, 0, 0 },
1664    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1665    & ifmt_add, { 0x4c000006 }
1666  },
1667/* swwru $rd,$rs,$rt */
1668  {
1669    { 0, 0, 0, 0 },
1670    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1671    & ifmt_add, { 0x4c000007 }
1672  },
1673/* dwrd $rd,$rt */
1674  {
1675    { 0, 0, 0, 0 },
1676    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1677    & ifmt_chkhdr, { 0x4c00000c }
1678  },
1679/* dwrdl $rd,$rt */
1680  {
1681    { 0, 0, 0, 0 },
1682    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1683    & ifmt_chkhdr, { 0x4c00000d }
1684  },
1685/* cam36 $rd,$rt,${cam-z},${cam-y} */
1686  {
1687    { 0, 0, 0, 0 },
1688    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), ',', OP (CAM_Y), 0 } },
1689    & ifmt_cam36, { 0x4c000400 }
1690  },
1691/* cam72 $rd,$rt,${cam-y},${cam-z} */
1692  {
1693    { 0, 0, 0, 0 },
1694    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1695    & ifmt_cam36, { 0x4c000440 }
1696  },
1697/* cam144 $rd,$rt,${cam-y},${cam-z} */
1698  {
1699    { 0, 0, 0, 0 },
1700    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1701    & ifmt_cam36, { 0x4c000480 }
1702  },
1703/* cam288 $rd,$rt,${cam-y},${cam-z} */
1704  {
1705    { 0, 0, 0, 0 },
1706    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1707    & ifmt_cam36, { 0x4c0004c0 }
1708  },
1709/* cm32and $rd,$rs,$rt */
1710  {
1711    { 0, 0, 0, 0 },
1712    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1713    & ifmt_cm32and, { 0x4c0000ab }
1714  },
1715/* cm32andn $rd,$rs,$rt */
1716  {
1717    { 0, 0, 0, 0 },
1718    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1719    & ifmt_cm32and, { 0x4c0000a3 }
1720  },
1721/* cm32or $rd,$rs,$rt */
1722  {
1723    { 0, 0, 0, 0 },
1724    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1725    & ifmt_cm32and, { 0x4c0000aa }
1726  },
1727/* cm32ra $rd,$rs,$rt */
1728  {
1729    { 0, 0, 0, 0 },
1730    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1731    & ifmt_add, { 0x4c0000b0 }
1732  },
1733/* cm32rd $rd,$rt */
1734  {
1735    { 0, 0, 0, 0 },
1736    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1737    & ifmt_cm32rd, { 0x4c0000a1 }
1738  },
1739/* cm32ri $rd,$rt */
1740  {
1741    { 0, 0, 0, 0 },
1742    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1743    & ifmt_cm32rd, { 0x4c0000a4 }
1744  },
1745/* cm32rs $rd,$rs,$rt */
1746  {
1747    { 0, 0, 0, 0 },
1748    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1749    & ifmt_add, { 0x4c0000a0 }
1750  },
1751/* cm32sa $rd,$rs,$rt */
1752  {
1753    { 0, 0, 0, 0 },
1754    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1755    & ifmt_cm32and, { 0x4c0000b8 }
1756  },
1757/* cm32sd $rd,$rt */
1758  {
1759    { 0, 0, 0, 0 },
1760    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1761    & ifmt_cm32rd, { 0x4c0000a9 }
1762  },
1763/* cm32si $rd,$rt */
1764  {
1765    { 0, 0, 0, 0 },
1766    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1767    & ifmt_cm32rd, { 0x4c0000ac }
1768  },
1769/* cm32ss $rd,$rs,$rt */
1770  {
1771    { 0, 0, 0, 0 },
1772    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1773    & ifmt_cm32and, { 0x4c0000a8 }
1774  },
1775/* cm32xor $rd,$rs,$rt */
1776  {
1777    { 0, 0, 0, 0 },
1778    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1779    & ifmt_cm32and, { 0x4c0000a2 }
1780  },
1781/* cm64clr $rd,$rt */
1782  {
1783    { 0, 0, 0, 0 },
1784    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1785    & ifmt_cm32rd, { 0x4c000085 }
1786  },
1787/* cm64ra $rd,$rs,$rt */
1788  {
1789    { 0, 0, 0, 0 },
1790    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1791    & ifmt_cm32and, { 0x4c000090 }
1792  },
1793/* cm64rd $rd,$rt */
1794  {
1795    { 0, 0, 0, 0 },
1796    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1797    & ifmt_cm32rd, { 0x4c000081 }
1798  },
1799/* cm64ri $rd,$rt */
1800  {
1801    { 0, 0, 0, 0 },
1802    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1803    & ifmt_cm32rd, { 0x4c000084 }
1804  },
1805/* cm64ria2 $rd,$rs,$rt */
1806  {
1807    { 0, 0, 0, 0 },
1808    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1809    & ifmt_cm32and, { 0x4c000094 }
1810  },
1811/* cm64rs $rd,$rs,$rt */
1812  {
1813    { 0, 0, 0, 0 },
1814    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1815    & ifmt_cm32and, { 0x4c000080 }
1816  },
1817/* cm64sa $rd,$rs,$rt */
1818  {
1819    { 0, 0, 0, 0 },
1820    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1821    & ifmt_cm32and, { 0x4c000098 }
1822  },
1823/* cm64sd $rd,$rt */
1824  {
1825    { 0, 0, 0, 0 },
1826    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1827    & ifmt_cm32rd, { 0x4c000089 }
1828  },
1829/* cm64si $rd,$rt */
1830  {
1831    { 0, 0, 0, 0 },
1832    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1833    & ifmt_cm32rd, { 0x4c00008c }
1834  },
1835/* cm64sia2 $rd,$rs,$rt */
1836  {
1837    { 0, 0, 0, 0 },
1838    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1839    & ifmt_cm32and, { 0x4c00009c }
1840  },
1841/* cm64ss $rd,$rs,$rt */
1842  {
1843    { 0, 0, 0, 0 },
1844    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1845    & ifmt_cm32and, { 0x4c000088 }
1846  },
1847/* cm128ria2 $rd,$rs,$rt */
1848  {
1849    { 0, 0, 0, 0 },
1850    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1851    & ifmt_cm32and, { 0x4c000095 }
1852  },
1853/* cm128ria3 $rd,$rs,$rt,${cm-3z} */
1854  {
1855    { 0, 0, 0, 0 },
1856    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1857    & ifmt_cm128ria3, { 0x4c000090 }
1858  },
1859/* cm128ria4 $rd,$rs,$rt,${cm-4z} */
1860  {
1861    { 0, 0, 0, 0 },
1862    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1863    & ifmt_cm128ria4, { 0x4c0000b0 }
1864  },
1865/* cm128sia2 $rd,$rs,$rt */
1866  {
1867    { 0, 0, 0, 0 },
1868    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1869    & ifmt_cm32and, { 0x4c00009d }
1870  },
1871/* cm128sia3 $rd,$rs,$rt,${cm-3z} */
1872  {
1873    { 0, 0, 0, 0 },
1874    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1875    & ifmt_cm128ria3, { 0x4c000098 }
1876  },
1877/* cm128sia4 $rd,$rs,$rt,${cm-4z} */
1878  {
1879    { 0, 0, 0, 0 },
1880    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1881    & ifmt_cm128ria4, { 0x4c0000b8 }
1882  },
1883/* cm128vsa $rd,$rs,$rt */
1884  {
1885    { 0, 0, 0, 0 },
1886    { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1887    & ifmt_cm32and, { 0x4c0000a6 }
1888  },
1889/* cfc $rd,$rt */
1890  {
1891    { 0, 0, 0, 0 },
1892    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1893    & ifmt_chkhdr, { 0x4c000000 }
1894  },
1895/* ctc $rs,$rt */
1896  {
1897    { 0, 0, 0, 0 },
1898    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
1899    & ifmt_ctc, { 0x4c000002 }
1900  },
1901};
1902
1903#undef A
1904#undef OPERAND
1905#undef MNEM
1906#undef OP
1907
1908/* Formats for ALIAS macro-insns.  */
1909
1910#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
1911#define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
1912#else
1913#define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f]
1914#endif
1915static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = {
1916  32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1917};
1918
1919static const CGEN_IFMT ifmt_li ATTRIBUTE_UNUSED = {
1920  32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1921};
1922
1923static const CGEN_IFMT ifmt_move ATTRIBUTE_UNUSED = {
1924  32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1925};
1926
1927static const CGEN_IFMT ifmt_lb_base_0 ATTRIBUTE_UNUSED = {
1928  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1929};
1930
1931static const CGEN_IFMT ifmt_lbu_base_0 ATTRIBUTE_UNUSED = {
1932  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1933};
1934
1935static const CGEN_IFMT ifmt_lh_base_0 ATTRIBUTE_UNUSED = {
1936  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1937};
1938
1939static const CGEN_IFMT ifmt_lw_base_0 ATTRIBUTE_UNUSED = {
1940  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1941};
1942
1943static const CGEN_IFMT ifmt_m_add ATTRIBUTE_UNUSED = {
1944  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1945};
1946
1947static const CGEN_IFMT ifmt_m_addu ATTRIBUTE_UNUSED = {
1948  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1949};
1950
1951static const CGEN_IFMT ifmt_m_and ATTRIBUTE_UNUSED = {
1952  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1953};
1954
1955static const CGEN_IFMT ifmt_m_j ATTRIBUTE_UNUSED = {
1956  32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1957};
1958
1959static const CGEN_IFMT ifmt_m_or ATTRIBUTE_UNUSED = {
1960  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1961};
1962
1963static const CGEN_IFMT ifmt_m_sll ATTRIBUTE_UNUSED = {
1964  32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1965};
1966
1967static const CGEN_IFMT ifmt_m_slt ATTRIBUTE_UNUSED = {
1968  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1969};
1970
1971static const CGEN_IFMT ifmt_m_sltu ATTRIBUTE_UNUSED = {
1972  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1973};
1974
1975static const CGEN_IFMT ifmt_m_sra ATTRIBUTE_UNUSED = {
1976  32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1977};
1978
1979static const CGEN_IFMT ifmt_m_srl ATTRIBUTE_UNUSED = {
1980  32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1981};
1982
1983static const CGEN_IFMT ifmt_not ATTRIBUTE_UNUSED = {
1984  32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1985};
1986
1987static const CGEN_IFMT ifmt_subi ATTRIBUTE_UNUSED = {
1988  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1989};
1990
1991static const CGEN_IFMT ifmt_m_sub ATTRIBUTE_UNUSED = {
1992  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1993};
1994
1995static const CGEN_IFMT ifmt_m_subu ATTRIBUTE_UNUSED = {
1996  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1997};
1998
1999static const CGEN_IFMT ifmt_sb_base_0 ATTRIBUTE_UNUSED = {
2000  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2001};
2002
2003static const CGEN_IFMT ifmt_sh_base_0 ATTRIBUTE_UNUSED = {
2004  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2005};
2006
2007static const CGEN_IFMT ifmt_sw_base_0 ATTRIBUTE_UNUSED = {
2008  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2009};
2010
2011static const CGEN_IFMT ifmt_m_xor ATTRIBUTE_UNUSED = {
2012  32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2013};
2014
2015static const CGEN_IFMT ifmt_ldw_base_0 ATTRIBUTE_UNUSED = {
2016  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2017};
2018
2019static const CGEN_IFMT ifmt_sdw_base_0 ATTRIBUTE_UNUSED = {
2020  32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2021};
2022
2023static const CGEN_IFMT ifmt_m_avail ATTRIBUTE_UNUSED = {
2024  32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2025};
2026
2027static const CGEN_IFMT ifmt_m_cam36 ATTRIBUTE_UNUSED = {
2028  32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
2029};
2030
2031static const CGEN_IFMT ifmt_m_cam72 ATTRIBUTE_UNUSED = {
2032  32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
2033};
2034
2035static const CGEN_IFMT ifmt_m_cam144 ATTRIBUTE_UNUSED = {
2036  32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
2037};
2038
2039static const CGEN_IFMT ifmt_m_cam288 ATTRIBUTE_UNUSED = {
2040  32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
2041};
2042
2043static const CGEN_IFMT ifmt_m_cm32read ATTRIBUTE_UNUSED = {
2044  32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2045};
2046
2047static const CGEN_IFMT ifmt_m_cm64read ATTRIBUTE_UNUSED = {
2048  32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2049};
2050
2051static const CGEN_IFMT ifmt_m_cm32mlog ATTRIBUTE_UNUSED = {
2052  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2053};
2054
2055static const CGEN_IFMT ifmt_m_cm32and ATTRIBUTE_UNUSED = {
2056  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2057};
2058
2059static const CGEN_IFMT ifmt_m_cm32andn ATTRIBUTE_UNUSED = {
2060  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2061};
2062
2063static const CGEN_IFMT ifmt_m_cm32or ATTRIBUTE_UNUSED = {
2064  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2065};
2066
2067static const CGEN_IFMT ifmt_m_cm32ra ATTRIBUTE_UNUSED = {
2068  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2069};
2070
2071static const CGEN_IFMT ifmt_m_cm32rd ATTRIBUTE_UNUSED = {
2072  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2073};
2074
2075static const CGEN_IFMT ifmt_m_cm32ri ATTRIBUTE_UNUSED = {
2076  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2077};
2078
2079static const CGEN_IFMT ifmt_m_cm32rs ATTRIBUTE_UNUSED = {
2080  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2081};
2082
2083static const CGEN_IFMT ifmt_m_cm32sa ATTRIBUTE_UNUSED = {
2084  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2085};
2086
2087static const CGEN_IFMT ifmt_m_cm32sd ATTRIBUTE_UNUSED = {
2088  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2089};
2090
2091static const CGEN_IFMT ifmt_m_cm32si ATTRIBUTE_UNUSED = {
2092  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2093};
2094
2095static const CGEN_IFMT ifmt_m_cm32ss ATTRIBUTE_UNUSED = {
2096  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2097};
2098
2099static const CGEN_IFMT ifmt_m_cm32xor ATTRIBUTE_UNUSED = {
2100  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2101};
2102
2103static const CGEN_IFMT ifmt_m_cm64clr ATTRIBUTE_UNUSED = {
2104  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2105};
2106
2107static const CGEN_IFMT ifmt_m_cm64ra ATTRIBUTE_UNUSED = {
2108  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2109};
2110
2111static const CGEN_IFMT ifmt_m_cm64rd ATTRIBUTE_UNUSED = {
2112  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2113};
2114
2115static const CGEN_IFMT ifmt_m_cm64ri ATTRIBUTE_UNUSED = {
2116  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2117};
2118
2119static const CGEN_IFMT ifmt_m_cm64ria2 ATTRIBUTE_UNUSED = {
2120  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2121};
2122
2123static const CGEN_IFMT ifmt_m_cm64rs ATTRIBUTE_UNUSED = {
2124  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2125};
2126
2127static const CGEN_IFMT ifmt_m_cm64sa ATTRIBUTE_UNUSED = {
2128  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2129};
2130
2131static const CGEN_IFMT ifmt_m_cm64sd ATTRIBUTE_UNUSED = {
2132  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2133};
2134
2135static const CGEN_IFMT ifmt_m_cm64si ATTRIBUTE_UNUSED = {
2136  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2137};
2138
2139static const CGEN_IFMT ifmt_m_cm64sia2 ATTRIBUTE_UNUSED = {
2140  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2141};
2142
2143static const CGEN_IFMT ifmt_m_cm64ss ATTRIBUTE_UNUSED = {
2144  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2145};
2146
2147static const CGEN_IFMT ifmt_m_cm128ria2 ATTRIBUTE_UNUSED = {
2148  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2149};
2150
2151static const CGEN_IFMT ifmt_m_cm128ria3 ATTRIBUTE_UNUSED = {
2152  32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
2153};
2154
2155static const CGEN_IFMT ifmt_m_cm128ria4 ATTRIBUTE_UNUSED = {
2156  32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
2157};
2158
2159static const CGEN_IFMT ifmt_m_cm128sia2 ATTRIBUTE_UNUSED = {
2160  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2161};
2162
2163static const CGEN_IFMT ifmt_m_cm128sia3 ATTRIBUTE_UNUSED = {
2164  32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
2165};
2166
2167static const CGEN_IFMT ifmt_m_cm128sia4 ATTRIBUTE_UNUSED = {
2168  32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
2169};
2170
2171static const CGEN_IFMT ifmt_m_cmphdr ATTRIBUTE_UNUSED = {
2172  32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2173};
2174
2175static const CGEN_IFMT ifmt_m_dbd ATTRIBUTE_UNUSED = {
2176  32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2177};
2178
2179static const CGEN_IFMT ifmt_m2_dbd ATTRIBUTE_UNUSED = {
2180  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2181};
2182
2183static const CGEN_IFMT ifmt_m_dpwt ATTRIBUTE_UNUSED = {
2184  32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2185};
2186
2187static const CGEN_IFMT ifmt_m_free ATTRIBUTE_UNUSED = {
2188  32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2189};
2190
2191static const CGEN_IFMT ifmt_m_lock ATTRIBUTE_UNUSED = {
2192  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2193};
2194
2195static const CGEN_IFMT ifmt_m_pkrla ATTRIBUTE_UNUSED = {
2196  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2197};
2198
2199static const CGEN_IFMT ifmt_m_pkrlac ATTRIBUTE_UNUSED = {
2200  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2201};
2202
2203static const CGEN_IFMT ifmt_m_pkrlah ATTRIBUTE_UNUSED = {
2204  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2205};
2206
2207static const CGEN_IFMT ifmt_m_pkrlau ATTRIBUTE_UNUSED = {
2208  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2209};
2210
2211static const CGEN_IFMT ifmt_m_pkrli ATTRIBUTE_UNUSED = {
2212  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2213};
2214
2215static const CGEN_IFMT ifmt_m_pkrlic ATTRIBUTE_UNUSED = {
2216  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2217};
2218
2219static const CGEN_IFMT ifmt_m_pkrlih ATTRIBUTE_UNUSED = {
2220  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2221};
2222
2223static const CGEN_IFMT ifmt_m_pkrliu ATTRIBUTE_UNUSED = {
2224  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2225};
2226
2227static const CGEN_IFMT ifmt_m_rba ATTRIBUTE_UNUSED = {
2228  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2229};
2230
2231static const CGEN_IFMT ifmt_m_rbal ATTRIBUTE_UNUSED = {
2232  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2233};
2234
2235static const CGEN_IFMT ifmt_m_rbar ATTRIBUTE_UNUSED = {
2236  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2237};
2238
2239static const CGEN_IFMT ifmt_m_rbi ATTRIBUTE_UNUSED = {
2240  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2241};
2242
2243static const CGEN_IFMT ifmt_m_rbil ATTRIBUTE_UNUSED = {
2244  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2245};
2246
2247static const CGEN_IFMT ifmt_m_rbir ATTRIBUTE_UNUSED = {
2248  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2249};
2250
2251static const CGEN_IFMT ifmt_m_swwr ATTRIBUTE_UNUSED = {
2252  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2253};
2254
2255static const CGEN_IFMT ifmt_m_swwru ATTRIBUTE_UNUSED = {
2256  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2257};
2258
2259static const CGEN_IFMT ifmt_m_tstod ATTRIBUTE_UNUSED = {
2260  32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2261};
2262
2263static const CGEN_IFMT ifmt_m_unlk ATTRIBUTE_UNUSED = {
2264  32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2265};
2266
2267static const CGEN_IFMT ifmt_m_wba ATTRIBUTE_UNUSED = {
2268  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2269};
2270
2271static const CGEN_IFMT ifmt_m_wbac ATTRIBUTE_UNUSED = {
2272  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2273};
2274
2275static const CGEN_IFMT ifmt_m_wbau ATTRIBUTE_UNUSED = {
2276  32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2277};
2278
2279static const CGEN_IFMT ifmt_m_wbi ATTRIBUTE_UNUSED = {
2280  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2281};
2282
2283static const CGEN_IFMT ifmt_m_wbic ATTRIBUTE_UNUSED = {
2284  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2285};
2286
2287static const CGEN_IFMT ifmt_m_wbiu ATTRIBUTE_UNUSED = {
2288  32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2289};
2290
2291#undef F
2292
2293/* Each non-simple macro entry points to an array of expansion possibilities.  */
2294
2295#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2296#define A(a) (1 << CGEN_INSN_##a)
2297#else
2298#define A(a) (1 << CGEN_INSN_/**/a)
2299#endif
2300#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2301#define OPERAND(op) IQ2000_OPERAND_##op
2302#else
2303#define OPERAND(op) IQ2000_OPERAND_/**/op
2304#endif
2305#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
2306#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
2307
2308/* The macro instruction table.  */
2309
2310static const CGEN_IBASE iq2000_cgen_macro_insn_table[] =
2311{
2312/* nop */
2313  {
2314    -1, "nop", "nop", 32,
2315    { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2316  },
2317/* li $rs,$imm */
2318  {
2319    -1, "li", "li", 32,
2320    { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2321  },
2322/* move $rd,$rt */
2323  {
2324    -1, "move", "move", 32,
2325    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2326  },
2327/* lb $rt,$lo16 */
2328  {
2329    -1, "lb-base-0", "lb", 32,
2330    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2331  },
2332/* lbu $rt,$lo16 */
2333  {
2334    -1, "lbu-base-0", "lbu", 32,
2335    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2336  },
2337/* lh $rt,$lo16 */
2338  {
2339    -1, "lh-base-0", "lh", 32,
2340    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2341  },
2342/* lw $rt,$lo16 */
2343  {
2344    -1, "lw-base-0", "lw", 32,
2345    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2346  },
2347/* add $rt,$rs,$lo16 */
2348  {
2349    -1, "m-add", "add", 32,
2350    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2351  },
2352/* addu $rt,$rs,$lo16 */
2353  {
2354    -1, "m-addu", "addu", 32,
2355    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2356  },
2357/* and $rt,$rs,$lo16 */
2358  {
2359    -1, "m-and", "and", 32,
2360    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2361  },
2362/* j $rs */
2363  {
2364    -1, "m-j", "j", 32,
2365    { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2366  },
2367/* or $rt,$rs,$lo16 */
2368  {
2369    -1, "m-or", "or", 32,
2370    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2371  },
2372/* sll $rd,$rt,$rs */
2373  {
2374    -1, "m-sll", "sll", 32,
2375    { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2376  },
2377/* slt $rt,$rs,$imm */
2378  {
2379    -1, "m-slt", "slt", 32,
2380    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2381  },
2382/* sltu $rt,$rs,$imm */
2383  {
2384    -1, "m-sltu", "sltu", 32,
2385    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2386  },
2387/* sra $rd,$rt,$rs */
2388  {
2389    -1, "m-sra", "sra", 32,
2390    { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2391  },
2392/* srl $rd,$rt,$rs */
2393  {
2394    -1, "m-srl", "srl", 32,
2395    { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2396  },
2397/* not $rd,$rt */
2398  {
2399    -1, "not", "not", 32,
2400    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2401  },
2402/* subi $rt,$rs,$mlo16 */
2403  {
2404    -1, "subi", "subi", 32,
2405    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2406  },
2407/* sub $rt,$rs,$mlo16 */
2408  {
2409    -1, "m-sub", "sub", 32,
2410    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2411  },
2412/* subu $rt,$rs,$mlo16 */
2413  {
2414    -1, "m-subu", "subu", 32,
2415    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2416  },
2417/* sb $rt,$lo16 */
2418  {
2419    -1, "sb-base-0", "sb", 32,
2420    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2421  },
2422/* sh $rt,$lo16 */
2423  {
2424    -1, "sh-base-0", "sh", 32,
2425    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2426  },
2427/* sw $rt,$lo16 */
2428  {
2429    -1, "sw-base-0", "sw", 32,
2430    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2431  },
2432/* xor $rt,$rs,$lo16 */
2433  {
2434    -1, "m-xor", "xor", 32,
2435    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2436  },
2437/* ldw $rt,$lo16 */
2438  {
2439    -1, "ldw-base-0", "ldw", 32,
2440    { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
2441  },
2442/* sdw $rt,$lo16 */
2443  {
2444    -1, "sdw-base-0", "sdw", 32,
2445    { 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
2446  },
2447/* avail */
2448  {
2449    -1, "m-avail", "avail", 32,
2450    { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2451  },
2452/* cam36 $rd,$rt,${cam-z} */
2453  {
2454    -1, "m-cam36", "cam36", 32,
2455    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2456  },
2457/* cam72 $rd,$rt,${cam-z} */
2458  {
2459    -1, "m-cam72", "cam72", 32,
2460    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2461  },
2462/* cam144 $rd,$rt,${cam-z} */
2463  {
2464    -1, "m-cam144", "cam144", 32,
2465    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2466  },
2467/* cam288 $rd,$rt,${cam-z} */
2468  {
2469    -1, "m-cam288", "cam288", 32,
2470    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2471  },
2472/* cm32read $rd,$rt */
2473  {
2474    -1, "m-cm32read", "cm32read", 32,
2475    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2476  },
2477/* cm64read $rd,$rt */
2478  {
2479    -1, "m-cm64read", "cm64read", 32,
2480    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2481  },
2482/* cm32mlog $rs,$rt */
2483  {
2484    -1, "m-cm32mlog", "cm32mlog", 32,
2485    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2486  },
2487/* cm32and $rs,$rt */
2488  {
2489    -1, "m-cm32and", "cm32and", 32,
2490    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2491  },
2492/* cm32andn $rs,$rt */
2493  {
2494    -1, "m-cm32andn", "cm32andn", 32,
2495    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2496  },
2497/* cm32or $rs,$rt */
2498  {
2499    -1, "m-cm32or", "cm32or", 32,
2500    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2501  },
2502/* cm32ra $rs,$rt */
2503  {
2504    -1, "m-cm32ra", "cm32ra", 32,
2505    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2506  },
2507/* cm32rd $rt */
2508  {
2509    -1, "m-cm32rd", "cm32rd", 32,
2510    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2511  },
2512/* cm32ri $rt */
2513  {
2514    -1, "m-cm32ri", "cm32ri", 32,
2515    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2516  },
2517/* cm32rs $rs,$rt */
2518  {
2519    -1, "m-cm32rs", "cm32rs", 32,
2520    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2521  },
2522/* cm32sa $rs,$rt */
2523  {
2524    -1, "m-cm32sa", "cm32sa", 32,
2525    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2526  },
2527/* cm32sd $rt */
2528  {
2529    -1, "m-cm32sd", "cm32sd", 32,
2530    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2531  },
2532/* cm32si $rt */
2533  {
2534    -1, "m-cm32si", "cm32si", 32,
2535    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2536  },
2537/* cm32ss $rs,$rt */
2538  {
2539    -1, "m-cm32ss", "cm32ss", 32,
2540    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2541  },
2542/* cm32xor $rs,$rt */
2543  {
2544    -1, "m-cm32xor", "cm32xor", 32,
2545    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2546  },
2547/* cm64clr $rt */
2548  {
2549    -1, "m-cm64clr", "cm64clr", 32,
2550    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2551  },
2552/* cm64ra $rs,$rt */
2553  {
2554    -1, "m-cm64ra", "cm64ra", 32,
2555    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2556  },
2557/* cm64rd $rt */
2558  {
2559    -1, "m-cm64rd", "cm64rd", 32,
2560    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2561  },
2562/* cm64ri $rt */
2563  {
2564    -1, "m-cm64ri", "cm64ri", 32,
2565    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2566  },
2567/* cm64ria2 $rs,$rt */
2568  {
2569    -1, "m-cm64ria2", "cm64ria2", 32,
2570    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2571  },
2572/* cm64rs $rs,$rt */
2573  {
2574    -1, "m-cm64rs", "cm64rs", 32,
2575    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2576  },
2577/* cm64sa $rs,$rt */
2578  {
2579    -1, "m-cm64sa", "cm64sa", 32,
2580    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2581  },
2582/* cm64sd $rt */
2583  {
2584    -1, "m-cm64sd", "cm64sd", 32,
2585    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2586  },
2587/* cm64si $rt */
2588  {
2589    -1, "m-cm64si", "cm64si", 32,
2590    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2591  },
2592/* cm64sia2 $rs,$rt */
2593  {
2594    -1, "m-cm64sia2", "cm64sia2", 32,
2595    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2596  },
2597/* cm64ss $rs,$rt */
2598  {
2599    -1, "m-cm64ss", "cm64ss", 32,
2600    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2601  },
2602/* cm128ria2 $rs,$rt */
2603  {
2604    -1, "m-cm128ria2", "cm128ria2", 32,
2605    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2606  },
2607/* cm128ria3 $rs,$rt,${cm-3z} */
2608  {
2609    -1, "m-cm128ria3", "cm128ria3", 32,
2610    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2611  },
2612/* cm128ria4 $rs,$rt,${cm-4z} */
2613  {
2614    -1, "m-cm128ria4", "cm128ria4", 32,
2615    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2616  },
2617/* cm128sia2 $rs,$rt */
2618  {
2619    -1, "m-cm128sia2", "cm128sia2", 32,
2620    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2621  },
2622/* cm128sia3 $rs,$rt,${cm-3z} */
2623  {
2624    -1, "m-cm128sia3", "cm128sia3", 32,
2625    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2626  },
2627/* cm128sia4 $rs,$rt,${cm-4z} */
2628  {
2629    -1, "m-cm128sia4", "cm128sia4", 32,
2630    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2631  },
2632/* cmphdr */
2633  {
2634    -1, "m-cmphdr", "cmphdr", 32,
2635    { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2636  },
2637/* dbd $rd,$rt */
2638  {
2639    -1, "m-dbd", "dbd", 32,
2640    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2641  },
2642/* dbd $rt */
2643  {
2644    -1, "m2-dbd", "dbd", 32,
2645    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2646  },
2647/* dpwt $rs */
2648  {
2649    -1, "m-dpwt", "dpwt", 32,
2650    { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2651  },
2652/* free $rs */
2653  {
2654    -1, "m-free", "free", 32,
2655    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2656  },
2657/* lock $rt */
2658  {
2659    -1, "m-lock", "lock", 32,
2660    { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2661  },
2662/* pkrla $rs,$rt */
2663  {
2664    -1, "m-pkrla", "pkrla", 32,
2665    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2666  },
2667/* pkrlac $rs,$rt */
2668  {
2669    -1, "m-pkrlac", "pkrlac", 32,
2670    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2671  },
2672/* pkrlah $rs,$rt */
2673  {
2674    -1, "m-pkrlah", "pkrlah", 32,
2675    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2676  },
2677/* pkrlau $rs,$rt */
2678  {
2679    -1, "m-pkrlau", "pkrlau", 32,
2680    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2681  },
2682/* pkrli $rs,$rt,$bytecount */
2683  {
2684    -1, "m-pkrli", "pkrli", 32,
2685    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2686  },
2687/* pkrlic $rs,$rt,$bytecount */
2688  {
2689    -1, "m-pkrlic", "pkrlic", 32,
2690    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2691  },
2692/* pkrlih $rs,$rt,$bytecount */
2693  {
2694    -1, "m-pkrlih", "pkrlih", 32,
2695    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2696  },
2697/* pkrliu $rs,$rt,$bytecount */
2698  {
2699    -1, "m-pkrliu", "pkrliu", 32,
2700    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2701  },
2702/* rba $rs,$rt */
2703  {
2704    -1, "m-rba", "rba", 32,
2705    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2706  },
2707/* rbal $rs,$rt */
2708  {
2709    -1, "m-rbal", "rbal", 32,
2710    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2711  },
2712/* rbar $rs,$rt */
2713  {
2714    -1, "m-rbar", "rbar", 32,
2715    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2716  },
2717/* rbi $rs,$rt,$bytecount */
2718  {
2719    -1, "m-rbi", "rbi", 32,
2720    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2721  },
2722/* rbil $rs,$rt,$bytecount */
2723  {
2724    -1, "m-rbil", "rbil", 32,
2725    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2726  },
2727/* rbir $rs,$rt,$bytecount */
2728  {
2729    -1, "m-rbir", "rbir", 32,
2730    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2731  },
2732/* swwr $rs,$rt */
2733  {
2734    -1, "m-swwr", "swwr", 32,
2735    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2736  },
2737/* swwru $rs,$rt */
2738  {
2739    -1, "m-swwru", "swwru", 32,
2740    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2741  },
2742/* tstod $rs */
2743  {
2744    -1, "m-tstod", "tstod", 32,
2745    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2746  },
2747/* unlk $rt */
2748  {
2749    -1, "m-unlk", "unlk", 32,
2750    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2751  },
2752/* wba $rs,$rt */
2753  {
2754    -1, "m-wba", "wba", 32,
2755    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2756  },
2757/* wbac $rs,$rt */
2758  {
2759    -1, "m-wbac", "wbac", 32,
2760    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2761  },
2762/* wbau $rs,$rt */
2763  {
2764    -1, "m-wbau", "wbau", 32,
2765    { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2766  },
2767/* wbi $rs,$rt,$bytecount */
2768  {
2769    -1, "m-wbi", "wbi", 32,
2770    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2771  },
2772/* wbic $rs,$rt,$bytecount */
2773  {
2774    -1, "m-wbic", "wbic", 32,
2775    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2776  },
2777/* wbiu $rs,$rt,$bytecount */
2778  {
2779    -1, "m-wbiu", "wbiu", 32,
2780    { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2781  },
2782};
2783
2784/* The macro instruction opcode table.  */
2785
2786static const CGEN_OPCODE iq2000_cgen_macro_insn_opcode_table[] =
2787{
2788/* nop */
2789  {
2790    { 0, 0, 0, 0 },
2791    { { MNEM, 0 } },
2792    & ifmt_nop, { 0x0 }
2793  },
2794/* li $rs,$imm */
2795  {
2796    { 0, 0, 0, 0 },
2797    { { MNEM, ' ', OP (RS), ',', OP (IMM), 0 } },
2798    & ifmt_li, { 0x34000000 }
2799  },
2800/* move $rd,$rt */
2801  {
2802    { 0, 0, 0, 0 },
2803    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2804    & ifmt_move, { 0x25 }
2805  },
2806/* lb $rt,$lo16 */
2807  {
2808    { 0, 0, 0, 0 },
2809    { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2810    & ifmt_lb_base_0, { 0x80000000 }
2811  },
2812/* lbu $rt,$lo16 */
2813  {
2814    { 0, 0, 0, 0 },
2815    { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2816    & ifmt_lbu_base_0, { 0x90000000 }
2817  },
2818/* lh $rt,$lo16 */
2819  {
2820    { 0, 0, 0, 0 },
2821    { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2822    & ifmt_lh_base_0, { 0x84000000 }
2823  },
2824/* lw $rt,$lo16 */
2825  {
2826    { 0, 0, 0, 0 },
2827    { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2828    & ifmt_lw_base_0, { 0x8c000000 }
2829  },
2830/* add $rt,$rs,$lo16 */
2831  {
2832    { 0, 0, 0, 0 },
2833    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2834    & ifmt_m_add, { 0x20000000 }
2835  },
2836/* addu $rt,$rs,$lo16 */
2837  {
2838    { 0, 0, 0, 0 },
2839    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2840    & ifmt_m_addu, { 0x24000000 }
2841  },
2842/* and $rt,$rs,$lo16 */
2843  {
2844    { 0, 0, 0, 0 },
2845    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2846    & ifmt_m_and, { 0x30000000 }
2847  },
2848/* j $rs */
2849  {
2850    { 0, 0, 0, 0 },
2851    { { MNEM, ' ', OP (RS), 0 } },
2852    & ifmt_m_j, { 0x8 }
2853  },
2854/* or $rt,$rs,$lo16 */
2855  {
2856    { 0, 0, 0, 0 },
2857    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2858    & ifmt_m_or, { 0x34000000 }
2859  },
2860/* sll $rd,$rt,$rs */
2861  {
2862    { 0, 0, 0, 0 },
2863    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2864    & ifmt_m_sll, { 0x4 }
2865  },
2866/* slt $rt,$rs,$imm */
2867  {
2868    { 0, 0, 0, 0 },
2869    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2870    & ifmt_m_slt, { 0x28000000 }
2871  },
2872/* sltu $rt,$rs,$imm */
2873  {
2874    { 0, 0, 0, 0 },
2875    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2876    & ifmt_m_sltu, { 0x2c000000 }
2877  },
2878/* sra $rd,$rt,$rs */
2879  {
2880    { 0, 0, 0, 0 },
2881    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2882    & ifmt_m_sra, { 0x7 }
2883  },
2884/* srl $rd,$rt,$rs */
2885  {
2886    { 0, 0, 0, 0 },
2887    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2888    & ifmt_m_srl, { 0x6 }
2889  },
2890/* not $rd,$rt */
2891  {
2892    { 0, 0, 0, 0 },
2893    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2894    & ifmt_not, { 0x27 }
2895  },
2896/* subi $rt,$rs,$mlo16 */
2897  {
2898    { 0, 0, 0, 0 },
2899    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2900    & ifmt_subi, { 0x24000000 }
2901  },
2902/* sub $rt,$rs,$mlo16 */
2903  {
2904    { 0, 0, 0, 0 },
2905    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2906    & ifmt_m_sub, { 0x24000000 }
2907  },
2908/* subu $rt,$rs,$mlo16 */
2909  {
2910    { 0, 0, 0, 0 },
2911    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2912    & ifmt_m_subu, { 0x24000000 }
2913  },
2914/* sb $rt,$lo16 */
2915  {
2916    { 0, 0, 0, 0 },
2917    { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2918    & ifmt_sb_base_0, { 0xa0000000 }
2919  },
2920/* sh $rt,$lo16 */
2921  {
2922    { 0, 0, 0, 0 },
2923    { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2924    & ifmt_sh_base_0, { 0xa4000000 }
2925  },
2926/* sw $rt,$lo16 */
2927  {
2928    { 0, 0, 0, 0 },
2929    { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2930    & ifmt_sw_base_0, { 0xac000000 }
2931  },
2932/* xor $rt,$rs,$lo16 */
2933  {
2934    { 0, 0, 0, 0 },
2935    { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2936    & ifmt_m_xor, { 0x38000000 }
2937  },
2938/* ldw $rt,$lo16 */
2939  {
2940    { 0, 0, 0, 0 },
2941    { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2942    & ifmt_ldw_base_0, { 0xc0000000 }
2943  },
2944/* sdw $rt,$lo16 */
2945  {
2946    { 0, 0, 0, 0 },
2947    { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2948    & ifmt_sdw_base_0, { 0xe0000000 }
2949  },
2950/* avail */
2951  {
2952    { 0, 0, 0, 0 },
2953    { { MNEM, 0 } },
2954    & ifmt_m_avail, { 0x4c000024 }
2955  },
2956/* cam36 $rd,$rt,${cam-z} */
2957  {
2958    { 0, 0, 0, 0 },
2959    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2960    & ifmt_m_cam36, { 0x4c000400 }
2961  },
2962/* cam72 $rd,$rt,${cam-z} */
2963  {
2964    { 0, 0, 0, 0 },
2965    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2966    & ifmt_m_cam72, { 0x4c000440 }
2967  },
2968/* cam144 $rd,$rt,${cam-z} */
2969  {
2970    { 0, 0, 0, 0 },
2971    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2972    & ifmt_m_cam144, { 0x4c000480 }
2973  },
2974/* cam288 $rd,$rt,${cam-z} */
2975  {
2976    { 0, 0, 0, 0 },
2977    { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2978    & ifmt_m_cam288, { 0x4c0004c0 }
2979  },
2980/* cm32read $rd,$rt */
2981  {
2982    { 0, 0, 0, 0 },
2983    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2984    & ifmt_m_cm32read, { 0x4c0000b0 }
2985  },
2986/* cm64read $rd,$rt */
2987  {
2988    { 0, 0, 0, 0 },
2989    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2990    & ifmt_m_cm64read, { 0x4c000090 }
2991  },
2992/* cm32mlog $rs,$rt */
2993  {
2994    { 0, 0, 0, 0 },
2995    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2996    & ifmt_m_cm32mlog, { 0x4c0000aa }
2997  },
2998/* cm32and $rs,$rt */
2999  {
3000    { 0, 0, 0, 0 },
3001    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3002    & ifmt_m_cm32and, { 0x4c0000ab }
3003  },
3004/* cm32andn $rs,$rt */
3005  {
3006    { 0, 0, 0, 0 },
3007    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3008    & ifmt_m_cm32andn, { 0x4c0000a3 }
3009  },
3010/* cm32or $rs,$rt */
3011  {
3012    { 0, 0, 0, 0 },
3013    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3014    & ifmt_m_cm32or, { 0x4c0000aa }
3015  },
3016/* cm32ra $rs,$rt */
3017  {
3018    { 0, 0, 0, 0 },
3019    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3020    & ifmt_m_cm32ra, { 0x4c0000b0 }
3021  },
3022/* cm32rd $rt */
3023  {
3024    { 0, 0, 0, 0 },
3025    { { MNEM, ' ', OP (RT), 0 } },
3026    & ifmt_m_cm32rd, { 0x4c0000a1 }
3027  },
3028/* cm32ri $rt */
3029  {
3030    { 0, 0, 0, 0 },
3031    { { MNEM, ' ', OP (RT), 0 } },
3032    & ifmt_m_cm32ri, { 0x4c0000a4 }
3033  },
3034/* cm32rs $rs,$rt */
3035  {
3036    { 0, 0, 0, 0 },
3037    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3038    & ifmt_m_cm32rs, { 0x4c0000a0 }
3039  },
3040/* cm32sa $rs,$rt */
3041  {
3042    { 0, 0, 0, 0 },
3043    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3044    & ifmt_m_cm32sa, { 0x4c0000b8 }
3045  },
3046/* cm32sd $rt */
3047  {
3048    { 0, 0, 0, 0 },
3049    { { MNEM, ' ', OP (RT), 0 } },
3050    & ifmt_m_cm32sd, { 0x4c0000a9 }
3051  },
3052/* cm32si $rt */
3053  {
3054    { 0, 0, 0, 0 },
3055    { { MNEM, ' ', OP (RT), 0 } },
3056    & ifmt_m_cm32si, { 0x4c0000ac }
3057  },
3058/* cm32ss $rs,$rt */
3059  {
3060    { 0, 0, 0, 0 },
3061    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3062    & ifmt_m_cm32ss, { 0x4c0000a8 }
3063  },
3064/* cm32xor $rs,$rt */
3065  {
3066    { 0, 0, 0, 0 },
3067    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3068    & ifmt_m_cm32xor, { 0x4c0000a2 }
3069  },
3070/* cm64clr $rt */
3071  {
3072    { 0, 0, 0, 0 },
3073    { { MNEM, ' ', OP (RT), 0 } },
3074    & ifmt_m_cm64clr, { 0x4c000085 }
3075  },
3076/* cm64ra $rs,$rt */
3077  {
3078    { 0, 0, 0, 0 },
3079    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3080    & ifmt_m_cm64ra, { 0x4c000090 }
3081  },
3082/* cm64rd $rt */
3083  {
3084    { 0, 0, 0, 0 },
3085    { { MNEM, ' ', OP (RT), 0 } },
3086    & ifmt_m_cm64rd, { 0x4c000081 }
3087  },
3088/* cm64ri $rt */
3089  {
3090    { 0, 0, 0, 0 },
3091    { { MNEM, ' ', OP (RT), 0 } },
3092    & ifmt_m_cm64ri, { 0x4c000084 }
3093  },
3094/* cm64ria2 $rs,$rt */
3095  {
3096    { 0, 0, 0, 0 },
3097    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3098    & ifmt_m_cm64ria2, { 0x4c000094 }
3099  },
3100/* cm64rs $rs,$rt */
3101  {
3102    { 0, 0, 0, 0 },
3103    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3104    & ifmt_m_cm64rs, { 0x4c000080 }
3105  },
3106/* cm64sa $rs,$rt */
3107  {
3108    { 0, 0, 0, 0 },
3109    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3110    & ifmt_m_cm64sa, { 0x4c000098 }
3111  },
3112/* cm64sd $rt */
3113  {
3114    { 0, 0, 0, 0 },
3115    { { MNEM, ' ', OP (RT), 0 } },
3116    & ifmt_m_cm64sd, { 0x4c000089 }
3117  },
3118/* cm64si $rt */
3119  {
3120    { 0, 0, 0, 0 },
3121    { { MNEM, ' ', OP (RT), 0 } },
3122    & ifmt_m_cm64si, { 0x4c00008c }
3123  },
3124/* cm64sia2 $rs,$rt */
3125  {
3126    { 0, 0, 0, 0 },
3127    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3128    & ifmt_m_cm64sia2, { 0x4c00009c }
3129  },
3130/* cm64ss $rs,$rt */
3131  {
3132    { 0, 0, 0, 0 },
3133    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3134    & ifmt_m_cm64ss, { 0x4c000088 }
3135  },
3136/* cm128ria2 $rs,$rt */
3137  {
3138    { 0, 0, 0, 0 },
3139    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3140    & ifmt_m_cm128ria2, { 0x4c000095 }
3141  },
3142/* cm128ria3 $rs,$rt,${cm-3z} */
3143  {
3144    { 0, 0, 0, 0 },
3145    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3146    & ifmt_m_cm128ria3, { 0x4c000090 }
3147  },
3148/* cm128ria4 $rs,$rt,${cm-4z} */
3149  {
3150    { 0, 0, 0, 0 },
3151    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3152    & ifmt_m_cm128ria4, { 0x4c0000b0 }
3153  },
3154/* cm128sia2 $rs,$rt */
3155  {
3156    { 0, 0, 0, 0 },
3157    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3158    & ifmt_m_cm128sia2, { 0x4c00009d }
3159  },
3160/* cm128sia3 $rs,$rt,${cm-3z} */
3161  {
3162    { 0, 0, 0, 0 },
3163    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3164    & ifmt_m_cm128sia3, { 0x4c000098 }
3165  },
3166/* cm128sia4 $rs,$rt,${cm-4z} */
3167  {
3168    { 0, 0, 0, 0 },
3169    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3170    & ifmt_m_cm128sia4, { 0x4c0000b8 }
3171  },
3172/* cmphdr */
3173  {
3174    { 0, 0, 0, 0 },
3175    { { MNEM, 0 } },
3176    & ifmt_m_cmphdr, { 0x4c00002c }
3177  },
3178/* dbd $rd,$rt */
3179  {
3180    { 0, 0, 0, 0 },
3181    { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
3182    & ifmt_m_dbd, { 0x4c000021 }
3183  },
3184/* dbd $rt */
3185  {
3186    { 0, 0, 0, 0 },
3187    { { MNEM, ' ', OP (RT), 0 } },
3188    & ifmt_m2_dbd, { 0x4c000021 }
3189  },
3190/* dpwt $rs */
3191  {
3192    { 0, 0, 0, 0 },
3193    { { MNEM, ' ', OP (RS), 0 } },
3194    & ifmt_m_dpwt, { 0x4c000023 }
3195  },
3196/* free $rs */
3197  {
3198    { 0, 0, 0, 0 },
3199    { { MNEM, ' ', OP (RS), 0 } },
3200    & ifmt_m_free, { 0x4c000025 }
3201  },
3202/* lock $rt */
3203  {
3204    { 0, 0, 0, 0 },
3205    { { MNEM, ' ', OP (RT), 0 } },
3206    & ifmt_m_lock, { 0x4c000001 }
3207  },
3208/* pkrla $rs,$rt */
3209  {
3210    { 0, 0, 0, 0 },
3211    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3212    & ifmt_m_pkrla, { 0x4c000028 }
3213  },
3214/* pkrlac $rs,$rt */
3215  {
3216    { 0, 0, 0, 0 },
3217    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3218    & ifmt_m_pkrlac, { 0x4c00002b }
3219  },
3220/* pkrlah $rs,$rt */
3221  {
3222    { 0, 0, 0, 0 },
3223    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3224    & ifmt_m_pkrlah, { 0x4c00002a }
3225  },
3226/* pkrlau $rs,$rt */
3227  {
3228    { 0, 0, 0, 0 },
3229    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3230    & ifmt_m_pkrlau, { 0x4c000029 }
3231  },
3232/* pkrli $rs,$rt,$bytecount */
3233  {
3234    { 0, 0, 0, 0 },
3235    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3236    & ifmt_m_pkrli, { 0x48000000 }
3237  },
3238/* pkrlic $rs,$rt,$bytecount */
3239  {
3240    { 0, 0, 0, 0 },
3241    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3242    & ifmt_m_pkrlic, { 0x48000300 }
3243  },
3244/* pkrlih $rs,$rt,$bytecount */
3245  {
3246    { 0, 0, 0, 0 },
3247    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3248    & ifmt_m_pkrlih, { 0x48000200 }
3249  },
3250/* pkrliu $rs,$rt,$bytecount */
3251  {
3252    { 0, 0, 0, 0 },
3253    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3254    & ifmt_m_pkrliu, { 0x48000100 }
3255  },
3256/* rba $rs,$rt */
3257  {
3258    { 0, 0, 0, 0 },
3259    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3260    & ifmt_m_rba, { 0x4c000008 }
3261  },
3262/* rbal $rs,$rt */
3263  {
3264    { 0, 0, 0, 0 },
3265    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3266    & ifmt_m_rbal, { 0x4c000009 }
3267  },
3268/* rbar $rs,$rt */
3269  {
3270    { 0, 0, 0, 0 },
3271    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3272    & ifmt_m_rbar, { 0x4c00000a }
3273  },
3274/* rbi $rs,$rt,$bytecount */
3275  {
3276    { 0, 0, 0, 0 },
3277    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3278    & ifmt_m_rbi, { 0x4c000200 }
3279  },
3280/* rbil $rs,$rt,$bytecount */
3281  {
3282    { 0, 0, 0, 0 },
3283    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3284    & ifmt_m_rbil, { 0x4c000300 }
3285  },
3286/* rbir $rs,$rt,$bytecount */
3287  {
3288    { 0, 0, 0, 0 },
3289    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3290    & ifmt_m_rbir, { 0x4c000100 }
3291  },
3292/* swwr $rs,$rt */
3293  {
3294    { 0, 0, 0, 0 },
3295    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3296    & ifmt_m_swwr, { 0x4c000006 }
3297  },
3298/* swwru $rs,$rt */
3299  {
3300    { 0, 0, 0, 0 },
3301    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3302    & ifmt_m_swwru, { 0x4c000007 }
3303  },
3304/* tstod $rs */
3305  {
3306    { 0, 0, 0, 0 },
3307    { { MNEM, ' ', OP (RS), 0 } },
3308    & ifmt_m_tstod, { 0x4c000027 }
3309  },
3310/* unlk $rt */
3311  {
3312    { 0, 0, 0, 0 },
3313    { { MNEM, ' ', OP (RT), 0 } },
3314    & ifmt_m_unlk, { 0x4c000003 }
3315  },
3316/* wba $rs,$rt */
3317  {
3318    { 0, 0, 0, 0 },
3319    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3320    & ifmt_m_wba, { 0x4c000010 }
3321  },
3322/* wbac $rs,$rt */
3323  {
3324    { 0, 0, 0, 0 },
3325    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3326    & ifmt_m_wbac, { 0x4c000012 }
3327  },
3328/* wbau $rs,$rt */
3329  {
3330    { 0, 0, 0, 0 },
3331    { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3332    & ifmt_m_wbau, { 0x4c000011 }
3333  },
3334/* wbi $rs,$rt,$bytecount */
3335  {
3336    { 0, 0, 0, 0 },
3337    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3338    & ifmt_m_wbi, { 0x4c000600 }
3339  },
3340/* wbic $rs,$rt,$bytecount */
3341  {
3342    { 0, 0, 0, 0 },
3343    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3344    & ifmt_m_wbic, { 0x4c000500 }
3345  },
3346/* wbiu $rs,$rt,$bytecount */
3347  {
3348    { 0, 0, 0, 0 },
3349    { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3350    & ifmt_m_wbiu, { 0x4c000700 }
3351  },
3352};
3353
3354#undef A
3355#undef OPERAND
3356#undef MNEM
3357#undef OP
3358
3359#ifndef CGEN_ASM_HASH_P
3360#define CGEN_ASM_HASH_P(insn) 1
3361#endif
3362
3363#ifndef CGEN_DIS_HASH_P
3364#define CGEN_DIS_HASH_P(insn) 1
3365#endif
3366
3367/* Return non-zero if INSN is to be added to the hash table.
3368   Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file.  */
3369
3370static int
3371asm_hash_insn_p (insn)
3372     const CGEN_INSN *insn ATTRIBUTE_UNUSED;
3373{
3374  return CGEN_ASM_HASH_P (insn);
3375}
3376
3377static int
3378dis_hash_insn_p (insn)
3379     const CGEN_INSN *insn;
3380{
3381  /* If building the hash table and the NO-DIS attribute is present,
3382     ignore.  */
3383  if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
3384    return 0;
3385  return CGEN_DIS_HASH_P (insn);
3386}
3387
3388#ifndef CGEN_ASM_HASH
3389#define CGEN_ASM_HASH_SIZE 127
3390#ifdef CGEN_MNEMONIC_OPERANDS
3391#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
3392#else
3393#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
3394#endif
3395#endif
3396
3397/* It doesn't make much sense to provide a default here,
3398   but while this is under development we do.
3399   BUFFER is a pointer to the bytes of the insn, target order.
3400   VALUE is the first base_insn_bitsize bits as an int in host order.  */
3401
3402#ifndef CGEN_DIS_HASH
3403#define CGEN_DIS_HASH_SIZE 256
3404#define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
3405#endif
3406
3407/* The result is the hash value of the insn.
3408   Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file.  */
3409
3410static unsigned int
3411asm_hash_insn (mnem)
3412     const char * mnem;
3413{
3414  return CGEN_ASM_HASH (mnem);
3415}
3416
3417/* BUF is a pointer to the bytes of the insn, target order.
3418   VALUE is the first base_insn_bitsize bits as an int in host order.  */
3419
3420static unsigned int
3421dis_hash_insn (buf, value)
3422     const char * buf ATTRIBUTE_UNUSED;
3423     CGEN_INSN_INT value ATTRIBUTE_UNUSED;
3424{
3425  return CGEN_DIS_HASH (buf, value);
3426}
3427
3428/* Set the recorded length of the insn in the CGEN_FIELDS struct.  */
3429
3430static void
3431set_fields_bitsize (CGEN_FIELDS *fields, int size)
3432{
3433  CGEN_FIELDS_BITSIZE (fields) = size;
3434}
3435
3436/* Function to call before using the operand instance table.
3437   This plugs the opcode entries and macro instructions into the cpu table.  */
3438
3439void
3440iq2000_cgen_init_opcode_table (CGEN_CPU_DESC cd)
3441{
3442  int i;
3443  int num_macros = (sizeof (iq2000_cgen_macro_insn_table) /
3444		    sizeof (iq2000_cgen_macro_insn_table[0]));
3445  const CGEN_IBASE *ib = & iq2000_cgen_macro_insn_table[0];
3446  const CGEN_OPCODE *oc = & iq2000_cgen_macro_insn_opcode_table[0];
3447  CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
3448
3449  memset (insns, 0, num_macros * sizeof (CGEN_INSN));
3450  for (i = 0; i < num_macros; ++i)
3451    {
3452      insns[i].base = &ib[i];
3453      insns[i].opcode = &oc[i];
3454      iq2000_cgen_build_insn_regex (& insns[i]);
3455    }
3456  cd->macro_insn_table.init_entries = insns;
3457  cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
3458  cd->macro_insn_table.num_init_entries = num_macros;
3459
3460  oc = & iq2000_cgen_insn_opcode_table[0];
3461  insns = (CGEN_INSN *) cd->insn_table.init_entries;
3462  for (i = 0; i < MAX_INSNS; ++i)
3463    {
3464      insns[i].opcode = &oc[i];
3465      iq2000_cgen_build_insn_regex (& insns[i]);
3466    }
3467
3468  cd->sizeof_fields = sizeof (CGEN_FIELDS);
3469  cd->set_fields_bitsize = set_fields_bitsize;
3470
3471  cd->asm_hash_p = asm_hash_insn_p;
3472  cd->asm_hash = asm_hash_insn;
3473  cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
3474
3475  cd->dis_hash_p = dis_hash_insn_p;
3476  cd->dis_hash = dis_hash_insn;
3477  cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
3478}
3479