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