* cgen-asm.in: Update copyright year.
[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
05994f45 5Copyright 1996-2010 Free Software Foundation, Inc.
47b1a55a
SC
6
7This file is part of the GNU Binutils and/or GDB, the GNU debugger.
8
9b201bb5
NC
9 This file is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
12 any later version.
47b1a55a 13
9b201bb5
NC
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
47b1a55a 18
9b201bb5
NC
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
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,
a92e0d0a 2315 { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2316 },
2317/* li $rs,$imm */
2318 {
2319 -1, "li", "li", 32,
a92e0d0a 2320 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2321 },
2322/* move $rd,$rt */
2323 {
2324 -1, "move", "move", 32,
a92e0d0a 2325 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2326 },
2327/* lb $rt,$lo16 */
2328 {
2329 -1, "lb-base-0", "lb", 32,
a92e0d0a 2330 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2331 },
2332/* lbu $rt,$lo16 */
2333 {
2334 -1, "lbu-base-0", "lbu", 32,
a92e0d0a 2335 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2336 },
2337/* lh $rt,$lo16 */
2338 {
2339 -1, "lh-base-0", "lh", 32,
a92e0d0a 2340 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2341 },
2342/* lw $rt,$lo16 */
2343 {
2344 -1, "lw-base-0", "lw", 32,
a92e0d0a 2345 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2346 },
2347/* add $rt,$rs,$lo16 */
2348 {
2349 -1, "m-add", "add", 32,
a92e0d0a 2350 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2351 },
2352/* addu $rt,$rs,$lo16 */
2353 {
2354 -1, "m-addu", "addu", 32,
a92e0d0a 2355 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2356 },
2357/* and $rt,$rs,$lo16 */
2358 {
2359 -1, "m-and", "and", 32,
a92e0d0a 2360 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2361 },
2362/* j $rs */
2363 {
2364 -1, "m-j", "j", 32,
a92e0d0a 2365 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2366 },
2367/* or $rt,$rs,$lo16 */
2368 {
2369 -1, "m-or", "or", 32,
a92e0d0a 2370 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2371 },
2372/* sll $rd,$rt,$rs */
2373 {
2374 -1, "m-sll", "sll", 32,
a92e0d0a 2375 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2376 },
2377/* slt $rt,$rs,$imm */
2378 {
2379 -1, "m-slt", "slt", 32,
a92e0d0a 2380 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2381 },
2382/* sltu $rt,$rs,$imm */
2383 {
2384 -1, "m-sltu", "sltu", 32,
a92e0d0a 2385 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2386 },
2387/* sra $rd,$rt,$rs */
2388 {
2389 -1, "m-sra", "sra", 32,
a92e0d0a 2390 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2391 },
2392/* srl $rd,$rt,$rs */
2393 {
2394 -1, "m-srl", "srl", 32,
a92e0d0a 2395 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2396 },
2397/* not $rd,$rt */
2398 {
2399 -1, "not", "not", 32,
a92e0d0a 2400 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2401 },
2402/* subi $rt,$rs,$mlo16 */
2403 {
2404 -1, "subi", "subi", 32,
a92e0d0a 2405 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2406 },
2407/* sub $rt,$rs,$mlo16 */
2408 {
2409 -1, "m-sub", "sub", 32,
a92e0d0a 2410 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2411 },
2412/* subu $rt,$rs,$mlo16 */
2413 {
2414 -1, "m-subu", "subu", 32,
a92e0d0a 2415 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2416 },
2417/* sb $rt,$lo16 */
2418 {
2419 -1, "sb-base-0", "sb", 32,
a92e0d0a 2420 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2421 },
2422/* sh $rt,$lo16 */
2423 {
2424 -1, "sh-base-0", "sh", 32,
a92e0d0a 2425 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2426 },
2427/* sw $rt,$lo16 */
2428 {
2429 -1, "sw-base-0", "sw", 32,
a92e0d0a 2430 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2431 },
2432/* xor $rt,$rs,$lo16 */
2433 {
2434 -1, "m-xor", "xor", 32,
a92e0d0a 2435 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
47b1a55a
SC
2436 },
2437/* ldw $rt,$lo16 */
2438 {
2439 -1, "ldw-base-0", "ldw", 32,
a92e0d0a 2440 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
47b1a55a
SC
2441 },
2442/* sdw $rt,$lo16 */
2443 {
2444 -1, "sdw-base-0", "sdw", 32,
a92e0d0a 2445 { 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
47b1a55a
SC
2446 },
2447/* avail */
2448 {
2449 -1, "m-avail", "avail", 32,
a92e0d0a 2450 { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2451 },
2452/* cam36 $rd,$rt,${cam-z} */
2453 {
2454 -1, "m-cam36", "cam36", 32,
a92e0d0a 2455 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2456 },
2457/* cam72 $rd,$rt,${cam-z} */
2458 {
2459 -1, "m-cam72", "cam72", 32,
a92e0d0a 2460 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2461 },
2462/* cam144 $rd,$rt,${cam-z} */
2463 {
2464 -1, "m-cam144", "cam144", 32,
a92e0d0a 2465 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2466 },
2467/* cam288 $rd,$rt,${cam-z} */
2468 {
2469 -1, "m-cam288", "cam288", 32,
a92e0d0a 2470 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2471 },
2472/* cm32read $rd,$rt */
2473 {
2474 -1, "m-cm32read", "cm32read", 32,
a92e0d0a 2475 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2476 },
2477/* cm64read $rd,$rt */
2478 {
2479 -1, "m-cm64read", "cm64read", 32,
a92e0d0a 2480 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2481 },
2482/* cm32mlog $rs,$rt */
2483 {
2484 -1, "m-cm32mlog", "cm32mlog", 32,
a92e0d0a 2485 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2486 },
2487/* cm32and $rs,$rt */
2488 {
2489 -1, "m-cm32and", "cm32and", 32,
a92e0d0a 2490 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2491 },
2492/* cm32andn $rs,$rt */
2493 {
2494 -1, "m-cm32andn", "cm32andn", 32,
a92e0d0a 2495 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2496 },
2497/* cm32or $rs,$rt */
2498 {
2499 -1, "m-cm32or", "cm32or", 32,
a92e0d0a 2500 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2501 },
2502/* cm32ra $rs,$rt */
2503 {
2504 -1, "m-cm32ra", "cm32ra", 32,
a92e0d0a 2505 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2506 },
2507/* cm32rd $rt */
2508 {
2509 -1, "m-cm32rd", "cm32rd", 32,
a92e0d0a 2510 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2511 },
2512/* cm32ri $rt */
2513 {
2514 -1, "m-cm32ri", "cm32ri", 32,
a92e0d0a 2515 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2516 },
2517/* cm32rs $rs,$rt */
2518 {
2519 -1, "m-cm32rs", "cm32rs", 32,
a92e0d0a 2520 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2521 },
2522/* cm32sa $rs,$rt */
2523 {
2524 -1, "m-cm32sa", "cm32sa", 32,
a92e0d0a 2525 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2526 },
2527/* cm32sd $rt */
2528 {
2529 -1, "m-cm32sd", "cm32sd", 32,
a92e0d0a 2530 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2531 },
2532/* cm32si $rt */
2533 {
2534 -1, "m-cm32si", "cm32si", 32,
a92e0d0a 2535 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2536 },
2537/* cm32ss $rs,$rt */
2538 {
2539 -1, "m-cm32ss", "cm32ss", 32,
a92e0d0a 2540 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2541 },
2542/* cm32xor $rs,$rt */
2543 {
2544 -1, "m-cm32xor", "cm32xor", 32,
a92e0d0a 2545 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2546 },
2547/* cm64clr $rt */
2548 {
2549 -1, "m-cm64clr", "cm64clr", 32,
a92e0d0a 2550 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2551 },
2552/* cm64ra $rs,$rt */
2553 {
2554 -1, "m-cm64ra", "cm64ra", 32,
a92e0d0a 2555 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2556 },
2557/* cm64rd $rt */
2558 {
2559 -1, "m-cm64rd", "cm64rd", 32,
a92e0d0a 2560 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2561 },
2562/* cm64ri $rt */
2563 {
2564 -1, "m-cm64ri", "cm64ri", 32,
a92e0d0a 2565 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2566 },
2567/* cm64ria2 $rs,$rt */
2568 {
2569 -1, "m-cm64ria2", "cm64ria2", 32,
a92e0d0a 2570 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2571 },
2572/* cm64rs $rs,$rt */
2573 {
2574 -1, "m-cm64rs", "cm64rs", 32,
a92e0d0a 2575 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2576 },
2577/* cm64sa $rs,$rt */
2578 {
2579 -1, "m-cm64sa", "cm64sa", 32,
a92e0d0a 2580 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2581 },
2582/* cm64sd $rt */
2583 {
2584 -1, "m-cm64sd", "cm64sd", 32,
a92e0d0a 2585 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2586 },
2587/* cm64si $rt */
2588 {
2589 -1, "m-cm64si", "cm64si", 32,
a92e0d0a 2590 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2591 },
2592/* cm64sia2 $rs,$rt */
2593 {
2594 -1, "m-cm64sia2", "cm64sia2", 32,
a92e0d0a 2595 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2596 },
2597/* cm64ss $rs,$rt */
2598 {
2599 -1, "m-cm64ss", "cm64ss", 32,
a92e0d0a 2600 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2601 },
2602/* cm128ria2 $rs,$rt */
2603 {
2604 -1, "m-cm128ria2", "cm128ria2", 32,
a92e0d0a 2605 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2606 },
2607/* cm128ria3 $rs,$rt,${cm-3z} */
2608 {
2609 -1, "m-cm128ria3", "cm128ria3", 32,
a92e0d0a 2610 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2611 },
2612/* cm128ria4 $rs,$rt,${cm-4z} */
2613 {
2614 -1, "m-cm128ria4", "cm128ria4", 32,
a92e0d0a 2615 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2616 },
2617/* cm128sia2 $rs,$rt */
2618 {
2619 -1, "m-cm128sia2", "cm128sia2", 32,
a92e0d0a 2620 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2621 },
2622/* cm128sia3 $rs,$rt,${cm-3z} */
2623 {
2624 -1, "m-cm128sia3", "cm128sia3", 32,
a92e0d0a 2625 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2626 },
2627/* cm128sia4 $rs,$rt,${cm-4z} */
2628 {
2629 -1, "m-cm128sia4", "cm128sia4", 32,
a92e0d0a 2630 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2631 },
2632/* cmphdr */
2633 {
2634 -1, "m-cmphdr", "cmphdr", 32,
a92e0d0a 2635 { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2636 },
2637/* dbd $rd,$rt */
2638 {
2639 -1, "m-dbd", "dbd", 32,
a92e0d0a 2640 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2641 },
2642/* dbd $rt */
2643 {
2644 -1, "m2-dbd", "dbd", 32,
a92e0d0a 2645 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2646 },
2647/* dpwt $rs */
2648 {
2649 -1, "m-dpwt", "dpwt", 32,
a92e0d0a 2650 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2651 },
2652/* free $rs */
2653 {
2654 -1, "m-free", "free", 32,
a92e0d0a 2655 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2656 },
2657/* lock $rt */
2658 {
2659 -1, "m-lock", "lock", 32,
a92e0d0a 2660 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2661 },
2662/* pkrla $rs,$rt */
2663 {
2664 -1, "m-pkrla", "pkrla", 32,
a92e0d0a 2665 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2666 },
2667/* pkrlac $rs,$rt */
2668 {
2669 -1, "m-pkrlac", "pkrlac", 32,
a92e0d0a 2670 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2671 },
2672/* pkrlah $rs,$rt */
2673 {
2674 -1, "m-pkrlah", "pkrlah", 32,
a92e0d0a 2675 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2676 },
2677/* pkrlau $rs,$rt */
2678 {
2679 -1, "m-pkrlau", "pkrlau", 32,
a92e0d0a 2680 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2681 },
2682/* pkrli $rs,$rt,$bytecount */
2683 {
2684 -1, "m-pkrli", "pkrli", 32,
a92e0d0a 2685 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2686 },
2687/* pkrlic $rs,$rt,$bytecount */
2688 {
2689 -1, "m-pkrlic", "pkrlic", 32,
a92e0d0a 2690 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2691 },
2692/* pkrlih $rs,$rt,$bytecount */
2693 {
2694 -1, "m-pkrlih", "pkrlih", 32,
a92e0d0a 2695 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2696 },
2697/* pkrliu $rs,$rt,$bytecount */
2698 {
2699 -1, "m-pkrliu", "pkrliu", 32,
a92e0d0a 2700 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2701 },
2702/* rba $rs,$rt */
2703 {
2704 -1, "m-rba", "rba", 32,
a92e0d0a 2705 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2706 },
2707/* rbal $rs,$rt */
2708 {
2709 -1, "m-rbal", "rbal", 32,
a92e0d0a 2710 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2711 },
2712/* rbar $rs,$rt */
2713 {
2714 -1, "m-rbar", "rbar", 32,
a92e0d0a 2715 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2716 },
2717/* rbi $rs,$rt,$bytecount */
2718 {
2719 -1, "m-rbi", "rbi", 32,
a92e0d0a 2720 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2721 },
2722/* rbil $rs,$rt,$bytecount */
2723 {
2724 -1, "m-rbil", "rbil", 32,
a92e0d0a 2725 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2726 },
2727/* rbir $rs,$rt,$bytecount */
2728 {
2729 -1, "m-rbir", "rbir", 32,
a92e0d0a 2730 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2731 },
2732/* swwr $rs,$rt */
2733 {
2734 -1, "m-swwr", "swwr", 32,
a92e0d0a 2735 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2736 },
2737/* swwru $rs,$rt */
2738 {
2739 -1, "m-swwru", "swwru", 32,
a92e0d0a 2740 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2741 },
2742/* tstod $rs */
2743 {
2744 -1, "m-tstod", "tstod", 32,
a92e0d0a 2745 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2746 },
2747/* unlk $rt */
2748 {
2749 -1, "m-unlk", "unlk", 32,
a92e0d0a 2750 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2751 },
2752/* wba $rs,$rt */
2753 {
2754 -1, "m-wba", "wba", 32,
a92e0d0a 2755 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2756 },
2757/* wbac $rs,$rt */
2758 {
2759 -1, "m-wbac", "wbac", 32,
a92e0d0a 2760 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2761 },
2762/* wbau $rs,$rt */
2763 {
2764 -1, "m-wbau", "wbau", 32,
a92e0d0a 2765 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2766 },
2767/* wbi $rs,$rt,$bytecount */
2768 {
2769 -1, "m-wbi", "wbi", 32,
a92e0d0a 2770 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2771 },
2772/* wbic $rs,$rt,$bytecount */
2773 {
2774 -1, "m-wbic", "wbic", 32,
a92e0d0a 2775 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
2776 },
2777/* wbiu $rs,$rt,$bytecount */
2778 {
2779 -1, "m-wbiu", "wbiu", 32,
a92e0d0a 2780 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
47b1a55a
SC
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
137f2437
NC
3449 /* This test has been added to avoid a warning generated
3450 if memset is called with a third argument of value zero. */
3451 if (num_macros >= 1)
3452 memset (insns, 0, num_macros * sizeof (CGEN_INSN));
47b1a55a
SC
3453 for (i = 0; i < num_macros; ++i)
3454 {
3455 insns[i].base = &ib[i];
3456 insns[i].opcode = &oc[i];
3457 iq2000_cgen_build_insn_regex (& insns[i]);
3458 }
3459 cd->macro_insn_table.init_entries = insns;
3460 cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
3461 cd->macro_insn_table.num_init_entries = num_macros;
3462
3463 oc = & iq2000_cgen_insn_opcode_table[0];
3464 insns = (CGEN_INSN *) cd->insn_table.init_entries;
3465 for (i = 0; i < MAX_INSNS; ++i)
3466 {
3467 insns[i].opcode = &oc[i];
3468 iq2000_cgen_build_insn_regex (& insns[i]);
3469 }
3470
3471 cd->sizeof_fields = sizeof (CGEN_FIELDS);
3472 cd->set_fields_bitsize = set_fields_bitsize;
3473
3474 cd->asm_hash_p = asm_hash_insn_p;
3475 cd->asm_hash = asm_hash_insn;
3476 cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
3477
3478 cd->dis_hash_p = dis_hash_insn_p;
3479 cd->dis_hash = dis_hash_insn;
3480 cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
3481}
This page took 0.578046 seconds and 4 git commands to generate.