Release 2.33.1
[external/binutils.git] / opcodes / iq2000-opc.c
1 /* DO NOT EDIT!  -*- buffer-read-only: t -*- vi:set ro:  */
2 /* Instruction opcode table for iq2000.
3
4 THIS FILE IS MACHINE GENERATED WITH CGEN.
5
6 Copyright (C) 1996-2019 Free Software Foundation, Inc.
7
8 This 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
37 static int asm_hash_insn_p        (const CGEN_INSN *);
38 static unsigned int asm_hash_insn (const char *);
39 static int dis_hash_insn_p        (const CGEN_INSN *);
40 static 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]
45 static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
46   0, 0, 0x0, { { 0 } }
47 };
48
49 static 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
53 static 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
57 static const CGEN_IFMT ifmt_addi2 ATTRIBUTE_UNUSED = {
58   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
59 };
60
61 static 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
65 static 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
69 static 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
73 static 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
77 static 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
81 static 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
85 static const CGEN_IFMT ifmt_slti2 ATTRIBUTE_UNUSED = {
86   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
87 };
88
89 static 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
93 static 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
97 static 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
101 static 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
105 static 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
109 static 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
113 static 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
117 static 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
121 static 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
125 static 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
129 static const CGEN_IFMT ifmt_syscall ATTRIBUTE_UNUSED = {
130   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } }
131 };
132
133 static 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
137 static const CGEN_IFMT ifmt_andoui2 ATTRIBUTE_UNUSED = {
138   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
139 };
140
141 static 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
145 static 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
149 static 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
153 static 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
157 static 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
161 static 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
165 static 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
169 static 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
173 static const CGEN_IFMT ifmt_j ATTRIBUTE_UNUSED = {
174   32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } }
175 };
176
177 static 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
181 static 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
185 static 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
189 static 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
193 static 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
197 static 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
201 static 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
205 static 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
209 static 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
213 static 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
217 static 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
221 static 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
234 static 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]
1900 static 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
1904 static 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
1908 static 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
1912 static 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
1916 static 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
1920 static 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
1924 static 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
1928 static 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
1932 static 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
1936 static 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
1940 static 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
1944 static 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
1948 static 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
1952 static 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
1956 static 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
1960 static 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
1964 static 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
1968 static 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
1972 static 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
1976 static 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
1980 static 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
1984 static 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
1988 static 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
1992 static 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
1996 static 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
2000 static 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
2004 static 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
2008 static 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
2012 static 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
2016 static 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
2020 static 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
2024 static 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
2028 static 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
2032 static 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
2036 static 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
2040 static 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
2044 static 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
2048 static 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
2052 static 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
2056 static 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
2060 static 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
2064 static 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
2068 static 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
2072 static 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
2076 static 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
2080 static 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
2084 static 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
2088 static 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
2092 static 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
2096 static 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
2100 static 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
2104 static 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
2108 static 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
2112 static 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
2116 static 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
2120 static 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
2124 static 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
2128 static 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
2132 static 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
2136 static 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
2140 static 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
2144 static 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
2148 static 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
2152 static 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
2156 static 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
2160 static 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
2164 static 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
2168 static 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
2172 static 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
2176 static 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
2180 static 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
2184 static 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
2188 static 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
2192 static 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
2196 static 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
2200 static 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
2204 static 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
2208 static 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
2212 static 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
2216 static 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
2220 static 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
2224 static 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
2228 static 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
2232 static 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
2236 static 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
2240 static 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
2244 static 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
2248 static 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
2252 static 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
2256 static 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
2260 static 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
2264 static 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
2268 static 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
2272 static 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
2287 static 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
2763 static 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
3347 static int
3348 asm_hash_insn_p (const CGEN_INSN *insn ATTRIBUTE_UNUSED)
3349 {
3350   return CGEN_ASM_HASH_P (insn);
3351 }
3352
3353 static int
3354 dis_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
3385 static unsigned int
3386 asm_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
3394 static unsigned int
3395 dis_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
3403 static void
3404 set_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
3412 void
3413 iq2000_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 }