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