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