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