2007-06-14 Paolo Bonzini <bonzini@gnu.org>
[binutils.git] / opcodes / iq2000-opc.c
blob6f2f257e13d30d525e768a36bbb00c0f9164acad
1 /* Instruction opcode table for iq2000.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright 1996-2005 Free Software Foundation, Inc.
7 This file is part of the GNU Binutils and/or GDB, the GNU debugger.
9 This program 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 2, or (at your option)
12 any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
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.
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"
33 /* The hash functions are recorded here to help keep assembler code out of
34 the disassembler and vice versa. */
36 static int asm_hash_insn_p (const CGEN_INSN *);
37 static unsigned int asm_hash_insn (const char *);
38 static int dis_hash_insn_p (const CGEN_INSN *);
39 static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
41 /* Instruction formats. */
43 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
44 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
45 #else
46 #define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f]
47 #endif
48 static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
49 0, 0, 0x0, { { 0 } }
52 static const CGEN_IFMT ifmt_add2 ATTRIBUTE_UNUSED = {
53 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
56 static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = {
57 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
60 static const CGEN_IFMT ifmt_addi2 ATTRIBUTE_UNUSED = {
61 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
64 static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = {
65 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
68 static const CGEN_IFMT ifmt_ram ATTRIBUTE_UNUSED = {
69 32, 32, 0xfc000020, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_5) }, { F (F_MASKL) }, { 0 } }
72 static const CGEN_IFMT ifmt_sll ATTRIBUTE_UNUSED = {
73 32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
76 static const CGEN_IFMT ifmt_sllv2 ATTRIBUTE_UNUSED = {
77 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
80 static const CGEN_IFMT ifmt_slmv2 ATTRIBUTE_UNUSED = {
81 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
84 static const CGEN_IFMT ifmt_slmv ATTRIBUTE_UNUSED = {
85 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
88 static const CGEN_IFMT ifmt_slti2 ATTRIBUTE_UNUSED = {
89 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
92 static const CGEN_IFMT ifmt_slti ATTRIBUTE_UNUSED = {
93 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
96 static const CGEN_IFMT ifmt_sra2 ATTRIBUTE_UNUSED = {
97 32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
100 static const CGEN_IFMT ifmt_bbi ATTRIBUTE_UNUSED = {
101 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
104 static const CGEN_IFMT ifmt_bbv ATTRIBUTE_UNUSED = {
105 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
108 static const CGEN_IFMT ifmt_bgez ATTRIBUTE_UNUSED = {
109 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
112 static const CGEN_IFMT ifmt_jalr ATTRIBUTE_UNUSED = {
113 32, 32, 0xfc1f07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
116 static const CGEN_IFMT ifmt_jr ATTRIBUTE_UNUSED = {
117 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
120 static const CGEN_IFMT ifmt_lb ATTRIBUTE_UNUSED = {
121 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
124 static const CGEN_IFMT ifmt_lui ATTRIBUTE_UNUSED = {
125 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
128 static const CGEN_IFMT ifmt_break ATTRIBUTE_UNUSED = {
129 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
132 static const CGEN_IFMT ifmt_syscall ATTRIBUTE_UNUSED = {
133 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } }
136 static const CGEN_IFMT ifmt_andoui ATTRIBUTE_UNUSED = {
137 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
140 static const CGEN_IFMT ifmt_andoui2 ATTRIBUTE_UNUSED = {
141 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
144 static const CGEN_IFMT ifmt_mrgb ATTRIBUTE_UNUSED = {
145 32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
148 static const CGEN_IFMT ifmt_mrgb2 ATTRIBUTE_UNUSED = {
149 32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
152 static const CGEN_IFMT ifmt_bc0f ATTRIBUTE_UNUSED = {
153 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
156 static const CGEN_IFMT ifmt_cfc0 ATTRIBUTE_UNUSED = {
157 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10_11) }, { 0 } }
160 static const CGEN_IFMT ifmt_chkhdr ATTRIBUTE_UNUSED = {
161 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
164 static const CGEN_IFMT ifmt_lulck ATTRIBUTE_UNUSED = {
165 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
168 static const CGEN_IFMT ifmt_pkrlr1 ATTRIBUTE_UNUSED = {
169 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_COUNT) }, { F (F_INDEX) }, { 0 } }
172 static const CGEN_IFMT ifmt_rfe ATTRIBUTE_UNUSED = {
173 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_25) }, { F (F_24_19) }, { F (F_FUNC) }, { 0 } }
176 static const CGEN_IFMT ifmt_j ATTRIBUTE_UNUSED = {
177 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } }
180 static const CGEN_IFMT ifmt_mrgbq10 ATTRIBUTE_UNUSED = {
181 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
184 static const CGEN_IFMT ifmt_mrgbq102 ATTRIBUTE_UNUSED = {
185 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
188 static const CGEN_IFMT ifmt_jq10 ATTRIBUTE_UNUSED = {
189 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
192 static const CGEN_IFMT ifmt_jalq10 ATTRIBUTE_UNUSED = {
193 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
196 static const CGEN_IFMT ifmt_avail ATTRIBUTE_UNUSED = {
197 32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
200 static const CGEN_IFMT ifmt_rbi ATTRIBUTE_UNUSED = {
201 32, 32, 0xfc000700, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
204 static const CGEN_IFMT ifmt_cam36 ATTRIBUTE_UNUSED = {
205 32, 32, 0xffe007c0, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
208 static const CGEN_IFMT ifmt_cm32and ATTRIBUTE_UNUSED = {
209 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
212 static const CGEN_IFMT ifmt_cm32rd ATTRIBUTE_UNUSED = {
213 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
216 static const CGEN_IFMT ifmt_cm128ria3 ATTRIBUTE_UNUSED = {
217 32, 32, 0xfc0007fc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
220 static const CGEN_IFMT ifmt_cm128ria4 ATTRIBUTE_UNUSED = {
221 32, 32, 0xfc0007f8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
224 static const CGEN_IFMT ifmt_ctc ATTRIBUTE_UNUSED = {
225 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
228 #undef F
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))
243 /* The instruction table. */
245 static const CGEN_OPCODE iq2000_cgen_insn_opcode_table[MAX_INSNS] =
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 */
253 { 0, 0, 0, 0 },
254 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
255 & ifmt_add2, { 0x20 }
257 /* add $rd,$rs,$rt */
259 { 0, 0, 0, 0 },
260 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
261 & ifmt_add, { 0x20 }
263 /* addi ${rt-rs},$lo16 */
265 { 0, 0, 0, 0 },
266 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
267 & ifmt_addi2, { 0x20000000 }
269 /* addi $rt,$rs,$lo16 */
271 { 0, 0, 0, 0 },
272 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
273 & ifmt_addi, { 0x20000000 }
275 /* addiu ${rt-rs},$lo16 */
277 { 0, 0, 0, 0 },
278 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
279 & ifmt_addi2, { 0x24000000 }
281 /* addiu $rt,$rs,$lo16 */
283 { 0, 0, 0, 0 },
284 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
285 & ifmt_addi, { 0x24000000 }
287 /* addu ${rd-rs},$rt */
289 { 0, 0, 0, 0 },
290 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
291 & ifmt_add2, { 0x21 }
293 /* addu $rd,$rs,$rt */
295 { 0, 0, 0, 0 },
296 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
297 & ifmt_add, { 0x21 }
299 /* ado16 ${rd-rs},$rt */
301 { 0, 0, 0, 0 },
302 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
303 & ifmt_add2, { 0x29 }
305 /* ado16 $rd,$rs,$rt */
307 { 0, 0, 0, 0 },
308 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
309 & ifmt_add, { 0x29 }
311 /* and ${rd-rs},$rt */
313 { 0, 0, 0, 0 },
314 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
315 & ifmt_add2, { 0x24 }
317 /* and $rd,$rs,$rt */
319 { 0, 0, 0, 0 },
320 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
321 & ifmt_add, { 0x24 }
323 /* andi ${rt-rs},$lo16 */
325 { 0, 0, 0, 0 },
326 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
327 & ifmt_addi2, { 0x30000000 }
329 /* andi $rt,$rs,$lo16 */
331 { 0, 0, 0, 0 },
332 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
333 & ifmt_addi, { 0x30000000 }
335 /* andoi ${rt-rs},$lo16 */
337 { 0, 0, 0, 0 },
338 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
339 & ifmt_addi2, { 0xb0000000 }
341 /* andoi $rt,$rs,$lo16 */
343 { 0, 0, 0, 0 },
344 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
345 & ifmt_addi, { 0xb0000000 }
347 /* nor ${rd-rs},$rt */
349 { 0, 0, 0, 0 },
350 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
351 & ifmt_add2, { 0x27 }
353 /* nor $rd,$rs,$rt */
355 { 0, 0, 0, 0 },
356 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
357 & ifmt_add, { 0x27 }
359 /* or ${rd-rs},$rt */
361 { 0, 0, 0, 0 },
362 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
363 & ifmt_add2, { 0x25 }
365 /* or $rd,$rs,$rt */
367 { 0, 0, 0, 0 },
368 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
369 & ifmt_add, { 0x25 }
371 /* ori ${rt-rs},$lo16 */
373 { 0, 0, 0, 0 },
374 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
375 & ifmt_addi2, { 0x34000000 }
377 /* ori $rt,$rs,$lo16 */
379 { 0, 0, 0, 0 },
380 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
381 & ifmt_addi, { 0x34000000 }
383 /* ram $rd,$rt,$shamt,$maskl,$maskr */
385 { 0, 0, 0, 0 },
386 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), ',', OP (MASKL), ',', OP (MASKR), 0 } },
387 & ifmt_ram, { 0x9c000000 }
389 /* sll $rd,$rt,$shamt */
391 { 0, 0, 0, 0 },
392 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
393 & ifmt_sll, { 0x0 }
395 /* sllv ${rd-rt},$rs */
397 { 0, 0, 0, 0 },
398 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
399 & ifmt_sllv2, { 0x4 }
401 /* sllv $rd,$rt,$rs */
403 { 0, 0, 0, 0 },
404 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
405 & ifmt_add, { 0x4 }
407 /* slmv ${rd-rt},$rs,$shamt */
409 { 0, 0, 0, 0 },
410 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
411 & ifmt_slmv2, { 0x1 }
413 /* slmv $rd,$rt,$rs,$shamt */
415 { 0, 0, 0, 0 },
416 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
417 & ifmt_slmv, { 0x1 }
419 /* slt ${rd-rs},$rt */
421 { 0, 0, 0, 0 },
422 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
423 & ifmt_add2, { 0x2a }
425 /* slt $rd,$rs,$rt */
427 { 0, 0, 0, 0 },
428 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
429 & ifmt_add, { 0x2a }
431 /* slti ${rt-rs},$imm */
433 { 0, 0, 0, 0 },
434 { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
435 & ifmt_slti2, { 0x28000000 }
437 /* slti $rt,$rs,$imm */
439 { 0, 0, 0, 0 },
440 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
441 & ifmt_slti, { 0x28000000 }
443 /* sltiu ${rt-rs},$imm */
445 { 0, 0, 0, 0 },
446 { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
447 & ifmt_slti2, { 0x2c000000 }
449 /* sltiu $rt,$rs,$imm */
451 { 0, 0, 0, 0 },
452 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
453 & ifmt_slti, { 0x2c000000 }
455 /* sltu ${rd-rs},$rt */
457 { 0, 0, 0, 0 },
458 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
459 & ifmt_add2, { 0x2b }
461 /* sltu $rd,$rs,$rt */
463 { 0, 0, 0, 0 },
464 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
465 & ifmt_add, { 0x2b }
467 /* sra ${rd-rt},$shamt */
469 { 0, 0, 0, 0 },
470 { { MNEM, ' ', OP (RD_RT), ',', OP (SHAMT), 0 } },
471 & ifmt_sra2, { 0x3 }
473 /* sra $rd,$rt,$shamt */
475 { 0, 0, 0, 0 },
476 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
477 & ifmt_sll, { 0x3 }
479 /* srav ${rd-rt},$rs */
481 { 0, 0, 0, 0 },
482 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
483 & ifmt_sllv2, { 0x7 }
485 /* srav $rd,$rt,$rs */
487 { 0, 0, 0, 0 },
488 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
489 & ifmt_add, { 0x7 }
491 /* srl $rd,$rt,$shamt */
493 { 0, 0, 0, 0 },
494 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
495 & ifmt_sll, { 0x2 }
497 /* srlv ${rd-rt},$rs */
499 { 0, 0, 0, 0 },
500 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
501 & ifmt_sllv2, { 0x6 }
503 /* srlv $rd,$rt,$rs */
505 { 0, 0, 0, 0 },
506 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
507 & ifmt_add, { 0x6 }
509 /* srmv ${rd-rt},$rs,$shamt */
511 { 0, 0, 0, 0 },
512 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
513 & ifmt_slmv2, { 0x5 }
515 /* srmv $rd,$rt,$rs,$shamt */
517 { 0, 0, 0, 0 },
518 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
519 & ifmt_slmv, { 0x5 }
521 /* sub ${rd-rs},$rt */
523 { 0, 0, 0, 0 },
524 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
525 & ifmt_add2, { 0x22 }
527 /* sub $rd,$rs,$rt */
529 { 0, 0, 0, 0 },
530 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
531 & ifmt_add, { 0x22 }
533 /* subu ${rd-rs},$rt */
535 { 0, 0, 0, 0 },
536 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
537 & ifmt_add2, { 0x23 }
539 /* subu $rd,$rs,$rt */
541 { 0, 0, 0, 0 },
542 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
543 & ifmt_add, { 0x23 }
545 /* xor ${rd-rs},$rt */
547 { 0, 0, 0, 0 },
548 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
549 & ifmt_add2, { 0x26 }
551 /* xor $rd,$rs,$rt */
553 { 0, 0, 0, 0 },
554 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
555 & ifmt_add, { 0x26 }
557 /* xori ${rt-rs},$lo16 */
559 { 0, 0, 0, 0 },
560 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
561 & ifmt_addi2, { 0x38000000 }
563 /* xori $rt,$rs,$lo16 */
565 { 0, 0, 0, 0 },
566 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
567 & ifmt_addi, { 0x38000000 }
569 /* bbi $rs($bitnum),$offset */
571 { 0, 0, 0, 0 },
572 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
573 & ifmt_bbi, { 0x70000000 }
575 /* bbin $rs($bitnum),$offset */
577 { 0, 0, 0, 0 },
578 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
579 & ifmt_bbi, { 0x78000000 }
581 /* bbv $rs,$rt,$offset */
583 { 0, 0, 0, 0 },
584 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
585 & ifmt_bbv, { 0x74000000 }
587 /* bbvn $rs,$rt,$offset */
589 { 0, 0, 0, 0 },
590 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
591 & ifmt_bbv, { 0x7c000000 }
593 /* beq $rs,$rt,$offset */
595 { 0, 0, 0, 0 },
596 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
597 & ifmt_bbv, { 0x10000000 }
599 /* beql $rs,$rt,$offset */
601 { 0, 0, 0, 0 },
602 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
603 & ifmt_bbv, { 0x50000000 }
605 /* bgez $rs,$offset */
607 { 0, 0, 0, 0 },
608 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
609 & ifmt_bgez, { 0x4010000 }
611 /* bgezal $rs,$offset */
613 { 0, 0, 0, 0 },
614 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
615 & ifmt_bgez, { 0x4110000 }
617 /* bgezall $rs,$offset */
619 { 0, 0, 0, 0 },
620 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
621 & ifmt_bgez, { 0x4130000 }
623 /* bgezl $rs,$offset */
625 { 0, 0, 0, 0 },
626 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
627 & ifmt_bgez, { 0x4030000 }
629 /* bltz $rs,$offset */
631 { 0, 0, 0, 0 },
632 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
633 & ifmt_bgez, { 0x4000000 }
635 /* bltzl $rs,$offset */
637 { 0, 0, 0, 0 },
638 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
639 & ifmt_bgez, { 0x4020000 }
641 /* bltzal $rs,$offset */
643 { 0, 0, 0, 0 },
644 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
645 & ifmt_bgez, { 0x4100000 }
647 /* bltzall $rs,$offset */
649 { 0, 0, 0, 0 },
650 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
651 & ifmt_bgez, { 0x4120000 }
653 /* bmb0 $rs,$rt,$offset */
655 { 0, 0, 0, 0 },
656 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
657 & ifmt_bbv, { 0x60000000 }
659 /* bmb1 $rs,$rt,$offset */
661 { 0, 0, 0, 0 },
662 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
663 & ifmt_bbv, { 0x64000000 }
665 /* bmb2 $rs,$rt,$offset */
667 { 0, 0, 0, 0 },
668 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
669 & ifmt_bbv, { 0x68000000 }
671 /* bmb3 $rs,$rt,$offset */
673 { 0, 0, 0, 0 },
674 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
675 & ifmt_bbv, { 0x6c000000 }
677 /* bne $rs,$rt,$offset */
679 { 0, 0, 0, 0 },
680 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
681 & ifmt_bbv, { 0x14000000 }
683 /* bnel $rs,$rt,$offset */
685 { 0, 0, 0, 0 },
686 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
687 & ifmt_bbv, { 0x54000000 }
689 /* jalr $rd,$rs */
691 { 0, 0, 0, 0 },
692 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
693 & ifmt_jalr, { 0x9 }
695 /* jr $rs */
697 { 0, 0, 0, 0 },
698 { { MNEM, ' ', OP (RS), 0 } },
699 & ifmt_jr, { 0x8 }
701 /* lb $rt,$lo16($base) */
703 { 0, 0, 0, 0 },
704 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
705 & ifmt_lb, { 0x80000000 }
707 /* lbu $rt,$lo16($base) */
709 { 0, 0, 0, 0 },
710 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
711 & ifmt_lb, { 0x90000000 }
713 /* lh $rt,$lo16($base) */
715 { 0, 0, 0, 0 },
716 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
717 & ifmt_lb, { 0x84000000 }
719 /* lhu $rt,$lo16($base) */
721 { 0, 0, 0, 0 },
722 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
723 & ifmt_lb, { 0x94000000 }
725 /* lui $rt,$hi16 */
727 { 0, 0, 0, 0 },
728 { { MNEM, ' ', OP (RT), ',', OP (HI16), 0 } },
729 & ifmt_lui, { 0x3c000000 }
731 /* lw $rt,$lo16($base) */
733 { 0, 0, 0, 0 },
734 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
735 & ifmt_lb, { 0x8c000000 }
737 /* sb $rt,$lo16($base) */
739 { 0, 0, 0, 0 },
740 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
741 & ifmt_lb, { 0xa0000000 }
743 /* sh $rt,$lo16($base) */
745 { 0, 0, 0, 0 },
746 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
747 & ifmt_lb, { 0xa4000000 }
749 /* sw $rt,$lo16($base) */
751 { 0, 0, 0, 0 },
752 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
753 & ifmt_lb, { 0xac000000 }
755 /* break */
757 { 0, 0, 0, 0 },
758 { { MNEM, 0 } },
759 & ifmt_break, { 0xd }
761 /* syscall */
763 { 0, 0, 0, 0 },
764 { { MNEM, 0 } },
765 & ifmt_syscall, { 0xc }
767 /* andoui $rt,$rs,$hi16 */
769 { 0, 0, 0, 0 },
770 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
771 & ifmt_andoui, { 0xfc000000 }
773 /* andoui ${rt-rs},$hi16 */
775 { 0, 0, 0, 0 },
776 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
777 & ifmt_andoui2, { 0xfc000000 }
779 /* orui ${rt-rs},$hi16 */
781 { 0, 0, 0, 0 },
782 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
783 & ifmt_andoui2, { 0xbc000000 }
785 /* orui $rt,$rs,$hi16 */
787 { 0, 0, 0, 0 },
788 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
789 & ifmt_andoui, { 0xbc000000 }
791 /* bgtz $rs,$offset */
793 { 0, 0, 0, 0 },
794 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
795 & ifmt_bgez, { 0x1c000000 }
797 /* bgtzl $rs,$offset */
799 { 0, 0, 0, 0 },
800 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
801 & ifmt_bgez, { 0x5c000000 }
803 /* blez $rs,$offset */
805 { 0, 0, 0, 0 },
806 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
807 & ifmt_bgez, { 0x18000000 }
809 /* blezl $rs,$offset */
811 { 0, 0, 0, 0 },
812 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
813 & ifmt_bgez, { 0x58000000 }
815 /* mrgb $rd,$rs,$rt,$mask */
817 { 0, 0, 0, 0 },
818 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASK), 0 } },
819 & ifmt_mrgb, { 0x2d }
821 /* mrgb ${rd-rs},$rt,$mask */
823 { 0, 0, 0, 0 },
824 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASK), 0 } },
825 & ifmt_mrgb2, { 0x2d }
827 /* bctxt $rs,$offset */
829 { 0, 0, 0, 0 },
830 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
831 & ifmt_bgez, { 0x4060000 }
833 /* bc0f $offset */
835 { 0, 0, 0, 0 },
836 { { MNEM, ' ', OP (OFFSET), 0 } },
837 & ifmt_bc0f, { 0x41000000 }
839 /* bc0fl $offset */
841 { 0, 0, 0, 0 },
842 { { MNEM, ' ', OP (OFFSET), 0 } },
843 & ifmt_bc0f, { 0x41020000 }
845 /* bc3f $offset */
847 { 0, 0, 0, 0 },
848 { { MNEM, ' ', OP (OFFSET), 0 } },
849 & ifmt_bc0f, { 0x4d000000 }
851 /* bc3fl $offset */
853 { 0, 0, 0, 0 },
854 { { MNEM, ' ', OP (OFFSET), 0 } },
855 & ifmt_bc0f, { 0x4d020000 }
857 /* bc0t $offset */
859 { 0, 0, 0, 0 },
860 { { MNEM, ' ', OP (OFFSET), 0 } },
861 & ifmt_bc0f, { 0x41010000 }
863 /* bc0tl $offset */
865 { 0, 0, 0, 0 },
866 { { MNEM, ' ', OP (OFFSET), 0 } },
867 & ifmt_bc0f, { 0x41030000 }
869 /* bc3t $offset */
871 { 0, 0, 0, 0 },
872 { { MNEM, ' ', OP (OFFSET), 0 } },
873 & ifmt_bc0f, { 0x4d010000 }
875 /* bc3tl $offset */
877 { 0, 0, 0, 0 },
878 { { MNEM, ' ', OP (OFFSET), 0 } },
879 & ifmt_bc0f, { 0x4d030000 }
881 /* cfc0 $rt,$rd */
883 { 0, 0, 0, 0 },
884 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
885 & ifmt_cfc0, { 0x40400000 }
887 /* cfc1 $rt,$rd */
889 { 0, 0, 0, 0 },
890 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
891 & ifmt_cfc0, { 0x44400000 }
893 /* cfc2 $rt,$rd */
895 { 0, 0, 0, 0 },
896 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
897 & ifmt_cfc0, { 0x48400000 }
899 /* cfc3 $rt,$rd */
901 { 0, 0, 0, 0 },
902 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
903 & ifmt_cfc0, { 0x4c400000 }
905 /* chkhdr $rd,$rt */
907 { 0, 0, 0, 0 },
908 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
909 & ifmt_chkhdr, { 0x4d200000 }
911 /* ctc0 $rt,$rd */
913 { 0, 0, 0, 0 },
914 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
915 & ifmt_cfc0, { 0x40c00000 }
917 /* ctc1 $rt,$rd */
919 { 0, 0, 0, 0 },
920 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
921 & ifmt_cfc0, { 0x44c00000 }
923 /* ctc2 $rt,$rd */
925 { 0, 0, 0, 0 },
926 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
927 & ifmt_cfc0, { 0x48c00000 }
929 /* ctc3 $rt,$rd */
931 { 0, 0, 0, 0 },
932 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
933 & ifmt_cfc0, { 0x4cc00000 }
935 /* jcr $rs */
937 { 0, 0, 0, 0 },
938 { { MNEM, ' ', OP (RS), 0 } },
939 & ifmt_jr, { 0xa }
941 /* luc32 $rt,$rd */
943 { 0, 0, 0, 0 },
944 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
945 & ifmt_chkhdr, { 0x48200003 }
947 /* luc32l $rt,$rd */
949 { 0, 0, 0, 0 },
950 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
951 & ifmt_chkhdr, { 0x48200007 }
953 /* luc64 $rt,$rd */
955 { 0, 0, 0, 0 },
956 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
957 & ifmt_chkhdr, { 0x4820000b }
959 /* luc64l $rt,$rd */
961 { 0, 0, 0, 0 },
962 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
963 & ifmt_chkhdr, { 0x4820000f }
965 /* luk $rt,$rd */
967 { 0, 0, 0, 0 },
968 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
969 & ifmt_chkhdr, { 0x48200008 }
971 /* lulck $rt */
973 { 0, 0, 0, 0 },
974 { { MNEM, ' ', OP (RT), 0 } },
975 & ifmt_lulck, { 0x48200004 }
977 /* lum32 $rt,$rd */
979 { 0, 0, 0, 0 },
980 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
981 & ifmt_chkhdr, { 0x48200002 }
983 /* lum32l $rt,$rd */
985 { 0, 0, 0, 0 },
986 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
987 & ifmt_chkhdr, { 0x48200006 }
989 /* lum64 $rt,$rd */
991 { 0, 0, 0, 0 },
992 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
993 & ifmt_chkhdr, { 0x4820000a }
995 /* lum64l $rt,$rd */
997 { 0, 0, 0, 0 },
998 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
999 & ifmt_chkhdr, { 0x4820000e }
1001 /* lur $rt,$rd */
1003 { 0, 0, 0, 0 },
1004 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1005 & ifmt_chkhdr, { 0x48200001 }
1007 /* lurl $rt,$rd */
1009 { 0, 0, 0, 0 },
1010 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1011 & ifmt_chkhdr, { 0x48200005 }
1013 /* luulck $rt */
1015 { 0, 0, 0, 0 },
1016 { { MNEM, ' ', OP (RT), 0 } },
1017 & ifmt_lulck, { 0x48200000 }
1019 /* mfc0 $rt,$rd */
1021 { 0, 0, 0, 0 },
1022 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1023 & ifmt_cfc0, { 0x40000000 }
1025 /* mfc1 $rt,$rd */
1027 { 0, 0, 0, 0 },
1028 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1029 & ifmt_cfc0, { 0x44000000 }
1031 /* mfc2 $rt,$rd */
1033 { 0, 0, 0, 0 },
1034 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1035 & ifmt_cfc0, { 0x48000000 }
1037 /* mfc3 $rt,$rd */
1039 { 0, 0, 0, 0 },
1040 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1041 & ifmt_cfc0, { 0x4c000000 }
1043 /* mtc0 $rt,$rd */
1045 { 0, 0, 0, 0 },
1046 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1047 & ifmt_cfc0, { 0x40800000 }
1049 /* mtc1 $rt,$rd */
1051 { 0, 0, 0, 0 },
1052 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1053 & ifmt_cfc0, { 0x44800000 }
1055 /* mtc2 $rt,$rd */
1057 { 0, 0, 0, 0 },
1058 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1059 & ifmt_cfc0, { 0x48800000 }
1061 /* mtc3 $rt,$rd */
1063 { 0, 0, 0, 0 },
1064 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1065 & ifmt_cfc0, { 0x4c800000 }
1067 /* pkrl $rd,$rt */
1069 { 0, 0, 0, 0 },
1070 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1071 & ifmt_chkhdr, { 0x4c200007 }
1073 /* pkrlr1 $rt,$_index,$count */
1075 { 0, 0, 0, 0 },
1076 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1077 & ifmt_pkrlr1, { 0x4fa00000 }
1079 /* pkrlr30 $rt,$_index,$count */
1081 { 0, 0, 0, 0 },
1082 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1083 & ifmt_pkrlr1, { 0x4fe00000 }
1085 /* rb $rd,$rt */
1087 { 0, 0, 0, 0 },
1088 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1089 & ifmt_chkhdr, { 0x4c200004 }
1091 /* rbr1 $rt,$_index,$count */
1093 { 0, 0, 0, 0 },
1094 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1095 & ifmt_pkrlr1, { 0x4f000000 }
1097 /* rbr30 $rt,$_index,$count */
1099 { 0, 0, 0, 0 },
1100 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1101 & ifmt_pkrlr1, { 0x4f400000 }
1103 /* rfe */
1105 { 0, 0, 0, 0 },
1106 { { MNEM, 0 } },
1107 & ifmt_rfe, { 0x42000010 }
1109 /* rx $rd,$rt */
1111 { 0, 0, 0, 0 },
1112 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1113 & ifmt_chkhdr, { 0x4c200006 }
1115 /* rxr1 $rt,$_index,$count */
1117 { 0, 0, 0, 0 },
1118 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1119 & ifmt_pkrlr1, { 0x4f800000 }
1121 /* rxr30 $rt,$_index,$count */
1123 { 0, 0, 0, 0 },
1124 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1125 & ifmt_pkrlr1, { 0x4fc00000 }
1127 /* sleep */
1129 { 0, 0, 0, 0 },
1130 { { MNEM, 0 } },
1131 & ifmt_syscall, { 0xe }
1133 /* srrd $rt */
1135 { 0, 0, 0, 0 },
1136 { { MNEM, ' ', OP (RT), 0 } },
1137 & ifmt_lulck, { 0x48200010 }
1139 /* srrdl $rt */
1141 { 0, 0, 0, 0 },
1142 { { MNEM, ' ', OP (RT), 0 } },
1143 & ifmt_lulck, { 0x48200014 }
1145 /* srulck $rt */
1147 { 0, 0, 0, 0 },
1148 { { MNEM, ' ', OP (RT), 0 } },
1149 & ifmt_lulck, { 0x48200016 }
1151 /* srwr $rt,$rd */
1153 { 0, 0, 0, 0 },
1154 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1155 & ifmt_chkhdr, { 0x48200011 }
1157 /* srwru $rt,$rd */
1159 { 0, 0, 0, 0 },
1160 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1161 & ifmt_chkhdr, { 0x48200015 }
1163 /* trapqfl */
1165 { 0, 0, 0, 0 },
1166 { { MNEM, 0 } },
1167 & ifmt_break, { 0x4c200008 }
1169 /* trapqne */
1171 { 0, 0, 0, 0 },
1172 { { MNEM, 0 } },
1173 & ifmt_break, { 0x4c200009 }
1175 /* traprel $rt */
1177 { 0, 0, 0, 0 },
1178 { { MNEM, ' ', OP (RT), 0 } },
1179 & ifmt_lulck, { 0x4c20000a }
1181 /* wb $rd,$rt */
1183 { 0, 0, 0, 0 },
1184 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1185 & ifmt_chkhdr, { 0x4c200000 }
1187 /* wbu $rd,$rt */
1189 { 0, 0, 0, 0 },
1190 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1191 & ifmt_chkhdr, { 0x4c200001 }
1193 /* wbr1 $rt,$_index,$count */
1195 { 0, 0, 0, 0 },
1196 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1197 & ifmt_pkrlr1, { 0x4e000000 }
1199 /* wbr1u $rt,$_index,$count */
1201 { 0, 0, 0, 0 },
1202 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1203 & ifmt_pkrlr1, { 0x4e200000 }
1205 /* wbr30 $rt,$_index,$count */
1207 { 0, 0, 0, 0 },
1208 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1209 & ifmt_pkrlr1, { 0x4e400000 }
1211 /* wbr30u $rt,$_index,$count */
1213 { 0, 0, 0, 0 },
1214 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1215 & ifmt_pkrlr1, { 0x4e600000 }
1217 /* wx $rd,$rt */
1219 { 0, 0, 0, 0 },
1220 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1221 & ifmt_chkhdr, { 0x4c200002 }
1223 /* wxu $rd,$rt */
1225 { 0, 0, 0, 0 },
1226 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1227 & ifmt_chkhdr, { 0x4c200003 }
1229 /* wxr1 $rt,$_index,$count */
1231 { 0, 0, 0, 0 },
1232 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1233 & ifmt_pkrlr1, { 0x4e800000 }
1235 /* wxr1u $rt,$_index,$count */
1237 { 0, 0, 0, 0 },
1238 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1239 & ifmt_pkrlr1, { 0x4ea00000 }
1241 /* wxr30 $rt,$_index,$count */
1243 { 0, 0, 0, 0 },
1244 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1245 & ifmt_pkrlr1, { 0x4ec00000 }
1247 /* wxr30u $rt,$_index,$count */
1249 { 0, 0, 0, 0 },
1250 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1251 & ifmt_pkrlr1, { 0x4ee00000 }
1253 /* ldw $rt,$lo16($base) */
1255 { 0, 0, 0, 0 },
1256 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1257 & ifmt_lb, { 0xc0000000 }
1259 /* sdw $rt,$lo16($base) */
1261 { 0, 0, 0, 0 },
1262 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1263 & ifmt_lb, { 0xe0000000 }
1265 /* j $jmptarg */
1267 { 0, 0, 0, 0 },
1268 { { MNEM, ' ', OP (JMPTARG), 0 } },
1269 & ifmt_j, { 0x8000000 }
1271 /* jal $jmptarg */
1273 { 0, 0, 0, 0 },
1274 { { MNEM, ' ', OP (JMPTARG), 0 } },
1275 & ifmt_j, { 0xc000000 }
1277 /* bmb $rs,$rt,$offset */
1279 { 0, 0, 0, 0 },
1280 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1281 & ifmt_bbv, { 0xb4000000 }
1283 /* andoui $rt,$rs,$hi16 */
1285 { 0, 0, 0, 0 },
1286 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1287 & ifmt_andoui, { 0xbc000000 }
1289 /* andoui ${rt-rs},$hi16 */
1291 { 0, 0, 0, 0 },
1292 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1293 & ifmt_andoui2, { 0xbc000000 }
1295 /* orui $rt,$rs,$hi16 */
1297 { 0, 0, 0, 0 },
1298 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1299 & ifmt_andoui, { 0x3c000000 }
1301 /* orui ${rt-rs},$hi16 */
1303 { 0, 0, 0, 0 },
1304 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1305 & ifmt_andoui2, { 0x3c000000 }
1307 /* mrgb $rd,$rs,$rt,$maskq10 */
1309 { 0, 0, 0, 0 },
1310 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1311 & ifmt_mrgbq10, { 0x2d }
1313 /* mrgb ${rd-rs},$rt,$maskq10 */
1315 { 0, 0, 0, 0 },
1316 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1317 & ifmt_mrgbq102, { 0x2d }
1319 /* j $jmptarg */
1321 { 0, 0, 0, 0 },
1322 { { MNEM, ' ', OP (JMPTARG), 0 } },
1323 & ifmt_jq10, { 0x8000000 }
1325 /* jal $rt,$jmptarg */
1327 { 0, 0, 0, 0 },
1328 { { MNEM, ' ', OP (RT), ',', OP (JMPTARG), 0 } },
1329 & ifmt_jalq10, { 0xc000000 }
1331 /* jal $jmptarg */
1333 { 0, 0, 0, 0 },
1334 { { MNEM, ' ', OP (JMPTARG), 0 } },
1335 & ifmt_jq10, { 0xc1f0000 }
1337 /* bbil $rs($bitnum),$offset */
1339 { 0, 0, 0, 0 },
1340 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1341 & ifmt_bbi, { 0xf0000000 }
1343 /* bbinl $rs($bitnum),$offset */
1345 { 0, 0, 0, 0 },
1346 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1347 & ifmt_bbi, { 0xf8000000 }
1349 /* bbvl $rs,$rt,$offset */
1351 { 0, 0, 0, 0 },
1352 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1353 & ifmt_bbv, { 0xf4000000 }
1355 /* bbvnl $rs,$rt,$offset */
1357 { 0, 0, 0, 0 },
1358 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1359 & ifmt_bbv, { 0xfc000000 }
1361 /* bgtzal $rs,$offset */
1363 { 0, 0, 0, 0 },
1364 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1365 & ifmt_bgez, { 0x4150000 }
1367 /* bgtzall $rs,$offset */
1369 { 0, 0, 0, 0 },
1370 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1371 & ifmt_bgez, { 0x4170000 }
1373 /* blezal $rs,$offset */
1375 { 0, 0, 0, 0 },
1376 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1377 & ifmt_bgez, { 0x4140000 }
1379 /* blezall $rs,$offset */
1381 { 0, 0, 0, 0 },
1382 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1383 & ifmt_bgez, { 0x4160000 }
1385 /* bgtz $rs,$offset */
1387 { 0, 0, 0, 0 },
1388 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1389 & ifmt_bgez, { 0x4050000 }
1391 /* bgtzl $rs,$offset */
1393 { 0, 0, 0, 0 },
1394 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1395 & ifmt_bgez, { 0x4070000 }
1397 /* blez $rs,$offset */
1399 { 0, 0, 0, 0 },
1400 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1401 & ifmt_bgez, { 0x4040000 }
1403 /* blezl $rs,$offset */
1405 { 0, 0, 0, 0 },
1406 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1407 & ifmt_bgez, { 0x4060000 }
1409 /* bmb $rs,$rt,$offset */
1411 { 0, 0, 0, 0 },
1412 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1413 & ifmt_bbv, { 0x18000000 }
1415 /* bmbl $rs,$rt,$offset */
1417 { 0, 0, 0, 0 },
1418 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1419 & ifmt_bbv, { 0x58000000 }
1421 /* bri $rs,$offset */
1423 { 0, 0, 0, 0 },
1424 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1425 & ifmt_bgez, { 0x4080000 }
1427 /* brv $rs,$offset */
1429 { 0, 0, 0, 0 },
1430 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1431 & ifmt_bgez, { 0x4090000 }
1433 /* bctx $rs,$offset */
1435 { 0, 0, 0, 0 },
1436 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1437 & ifmt_bgez, { 0x40c0000 }
1439 /* yield */
1441 { 0, 0, 0, 0 },
1442 { { MNEM, 0 } },
1443 & ifmt_break, { 0xe }
1445 /* crc32 $rd,$rs,$rt */
1447 { 0, 0, 0, 0 },
1448 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1449 & ifmt_add, { 0x4c000014 }
1451 /* crc32b $rd,$rs,$rt */
1453 { 0, 0, 0, 0 },
1454 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1455 & ifmt_add, { 0x4c000015 }
1457 /* cnt1s $rd,$rs */
1459 { 0, 0, 0, 0 },
1460 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1461 & ifmt_add, { 0x2e }
1463 /* avail $rd */
1465 { 0, 0, 0, 0 },
1466 { { MNEM, ' ', OP (RD), 0 } },
1467 & ifmt_avail, { 0x4c000024 }
1469 /* free $rd,$rs */
1471 { 0, 0, 0, 0 },
1472 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1473 & ifmt_jalr, { 0x4c000025 }
1475 /* tstod $rd,$rs */
1477 { 0, 0, 0, 0 },
1478 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1479 & ifmt_jalr, { 0x4c000027 }
1481 /* cmphdr $rd */
1483 { 0, 0, 0, 0 },
1484 { { MNEM, ' ', OP (RD), 0 } },
1485 & ifmt_avail, { 0x4c00002c }
1487 /* mcid $rd,$rt */
1489 { 0, 0, 0, 0 },
1490 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1491 & ifmt_chkhdr, { 0x4c000020 }
1493 /* dba $rd */
1495 { 0, 0, 0, 0 },
1496 { { MNEM, ' ', OP (RD), 0 } },
1497 & ifmt_avail, { 0x4c000022 }
1499 /* dbd $rd,$rs,$rt */
1501 { 0, 0, 0, 0 },
1502 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1503 & ifmt_add, { 0x4c000021 }
1505 /* dpwt $rd,$rs */
1507 { 0, 0, 0, 0 },
1508 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1509 & ifmt_jalr, { 0x4c000023 }
1511 /* chkhdr $rd,$rs */
1513 { 0, 0, 0, 0 },
1514 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1515 & ifmt_jalr, { 0x4c000026 }
1517 /* rba $rd,$rs,$rt */
1519 { 0, 0, 0, 0 },
1520 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1521 & ifmt_add, { 0x4c000008 }
1523 /* rbal $rd,$rs,$rt */
1525 { 0, 0, 0, 0 },
1526 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1527 & ifmt_add, { 0x4c000009 }
1529 /* rbar $rd,$rs,$rt */
1531 { 0, 0, 0, 0 },
1532 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1533 & ifmt_add, { 0x4c00000a }
1535 /* wba $rd,$rs,$rt */
1537 { 0, 0, 0, 0 },
1538 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1539 & ifmt_add, { 0x4c000010 }
1541 /* wbau $rd,$rs,$rt */
1543 { 0, 0, 0, 0 },
1544 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1545 & ifmt_add, { 0x4c000011 }
1547 /* wbac $rd,$rs,$rt */
1549 { 0, 0, 0, 0 },
1550 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1551 & ifmt_add, { 0x4c000012 }
1553 /* rbi $rd,$rs,$rt,$bytecount */
1555 { 0, 0, 0, 0 },
1556 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1557 & ifmt_rbi, { 0x4c000200 }
1559 /* rbil $rd,$rs,$rt,$bytecount */
1561 { 0, 0, 0, 0 },
1562 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1563 & ifmt_rbi, { 0x4c000300 }
1565 /* rbir $rd,$rs,$rt,$bytecount */
1567 { 0, 0, 0, 0 },
1568 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1569 & ifmt_rbi, { 0x4c000100 }
1571 /* wbi $rd,$rs,$rt,$bytecount */
1573 { 0, 0, 0, 0 },
1574 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1575 & ifmt_rbi, { 0x4c000600 }
1577 /* wbic $rd,$rs,$rt,$bytecount */
1579 { 0, 0, 0, 0 },
1580 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1581 & ifmt_rbi, { 0x4c000500 }
1583 /* wbiu $rd,$rs,$rt,$bytecount */
1585 { 0, 0, 0, 0 },
1586 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1587 & ifmt_rbi, { 0x4c000700 }
1589 /* pkrli $rd,$rs,$rt,$bytecount */
1591 { 0, 0, 0, 0 },
1592 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1593 & ifmt_rbi, { 0x48000000 }
1595 /* pkrlih $rd,$rs,$rt,$bytecount */
1597 { 0, 0, 0, 0 },
1598 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1599 & ifmt_rbi, { 0x48000200 }
1601 /* pkrliu $rd,$rs,$rt,$bytecount */
1603 { 0, 0, 0, 0 },
1604 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1605 & ifmt_rbi, { 0x48000100 }
1607 /* pkrlic $rd,$rs,$rt,$bytecount */
1609 { 0, 0, 0, 0 },
1610 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1611 & ifmt_rbi, { 0x48000300 }
1613 /* pkrla $rd,$rs,$rt */
1615 { 0, 0, 0, 0 },
1616 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1617 & ifmt_add, { 0x4c000028 }
1619 /* pkrlau $rd,$rs,$rt */
1621 { 0, 0, 0, 0 },
1622 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1623 & ifmt_add, { 0x4c000029 }
1625 /* pkrlah $rd,$rs,$rt */
1627 { 0, 0, 0, 0 },
1628 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1629 & ifmt_add, { 0x4c00002a }
1631 /* pkrlac $rd,$rs,$rt */
1633 { 0, 0, 0, 0 },
1634 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1635 & ifmt_add, { 0x4c00002b }
1637 /* lock $rd,$rt */
1639 { 0, 0, 0, 0 },
1640 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1641 & ifmt_chkhdr, { 0x4c000001 }
1643 /* unlk $rd,$rt */
1645 { 0, 0, 0, 0 },
1646 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1647 & ifmt_chkhdr, { 0x4c000003 }
1649 /* swrd $rd,$rt */
1651 { 0, 0, 0, 0 },
1652 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1653 & ifmt_chkhdr, { 0x4c000004 }
1655 /* swrdl $rd,$rt */
1657 { 0, 0, 0, 0 },
1658 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1659 & ifmt_chkhdr, { 0x4c000005 }
1661 /* swwr $rd,$rs,$rt */
1663 { 0, 0, 0, 0 },
1664 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1665 & ifmt_add, { 0x4c000006 }
1667 /* swwru $rd,$rs,$rt */
1669 { 0, 0, 0, 0 },
1670 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1671 & ifmt_add, { 0x4c000007 }
1673 /* dwrd $rd,$rt */
1675 { 0, 0, 0, 0 },
1676 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1677 & ifmt_chkhdr, { 0x4c00000c }
1679 /* dwrdl $rd,$rt */
1681 { 0, 0, 0, 0 },
1682 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1683 & ifmt_chkhdr, { 0x4c00000d }
1685 /* cam36 $rd,$rt,${cam-z},${cam-y} */
1687 { 0, 0, 0, 0 },
1688 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), ',', OP (CAM_Y), 0 } },
1689 & ifmt_cam36, { 0x4c000400 }
1691 /* cam72 $rd,$rt,${cam-y},${cam-z} */
1693 { 0, 0, 0, 0 },
1694 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1695 & ifmt_cam36, { 0x4c000440 }
1697 /* cam144 $rd,$rt,${cam-y},${cam-z} */
1699 { 0, 0, 0, 0 },
1700 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1701 & ifmt_cam36, { 0x4c000480 }
1703 /* cam288 $rd,$rt,${cam-y},${cam-z} */
1705 { 0, 0, 0, 0 },
1706 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1707 & ifmt_cam36, { 0x4c0004c0 }
1709 /* cm32and $rd,$rs,$rt */
1711 { 0, 0, 0, 0 },
1712 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1713 & ifmt_cm32and, { 0x4c0000ab }
1715 /* cm32andn $rd,$rs,$rt */
1717 { 0, 0, 0, 0 },
1718 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1719 & ifmt_cm32and, { 0x4c0000a3 }
1721 /* cm32or $rd,$rs,$rt */
1723 { 0, 0, 0, 0 },
1724 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1725 & ifmt_cm32and, { 0x4c0000aa }
1727 /* cm32ra $rd,$rs,$rt */
1729 { 0, 0, 0, 0 },
1730 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1731 & ifmt_add, { 0x4c0000b0 }
1733 /* cm32rd $rd,$rt */
1735 { 0, 0, 0, 0 },
1736 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1737 & ifmt_cm32rd, { 0x4c0000a1 }
1739 /* cm32ri $rd,$rt */
1741 { 0, 0, 0, 0 },
1742 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1743 & ifmt_cm32rd, { 0x4c0000a4 }
1745 /* cm32rs $rd,$rs,$rt */
1747 { 0, 0, 0, 0 },
1748 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1749 & ifmt_add, { 0x4c0000a0 }
1751 /* cm32sa $rd,$rs,$rt */
1753 { 0, 0, 0, 0 },
1754 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1755 & ifmt_cm32and, { 0x4c0000b8 }
1757 /* cm32sd $rd,$rt */
1759 { 0, 0, 0, 0 },
1760 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1761 & ifmt_cm32rd, { 0x4c0000a9 }
1763 /* cm32si $rd,$rt */
1765 { 0, 0, 0, 0 },
1766 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1767 & ifmt_cm32rd, { 0x4c0000ac }
1769 /* cm32ss $rd,$rs,$rt */
1771 { 0, 0, 0, 0 },
1772 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1773 & ifmt_cm32and, { 0x4c0000a8 }
1775 /* cm32xor $rd,$rs,$rt */
1777 { 0, 0, 0, 0 },
1778 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1779 & ifmt_cm32and, { 0x4c0000a2 }
1781 /* cm64clr $rd,$rt */
1783 { 0, 0, 0, 0 },
1784 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1785 & ifmt_cm32rd, { 0x4c000085 }
1787 /* cm64ra $rd,$rs,$rt */
1789 { 0, 0, 0, 0 },
1790 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1791 & ifmt_cm32and, { 0x4c000090 }
1793 /* cm64rd $rd,$rt */
1795 { 0, 0, 0, 0 },
1796 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1797 & ifmt_cm32rd, { 0x4c000081 }
1799 /* cm64ri $rd,$rt */
1801 { 0, 0, 0, 0 },
1802 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1803 & ifmt_cm32rd, { 0x4c000084 }
1805 /* cm64ria2 $rd,$rs,$rt */
1807 { 0, 0, 0, 0 },
1808 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1809 & ifmt_cm32and, { 0x4c000094 }
1811 /* cm64rs $rd,$rs,$rt */
1813 { 0, 0, 0, 0 },
1814 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1815 & ifmt_cm32and, { 0x4c000080 }
1817 /* cm64sa $rd,$rs,$rt */
1819 { 0, 0, 0, 0 },
1820 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1821 & ifmt_cm32and, { 0x4c000098 }
1823 /* cm64sd $rd,$rt */
1825 { 0, 0, 0, 0 },
1826 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1827 & ifmt_cm32rd, { 0x4c000089 }
1829 /* cm64si $rd,$rt */
1831 { 0, 0, 0, 0 },
1832 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1833 & ifmt_cm32rd, { 0x4c00008c }
1835 /* cm64sia2 $rd,$rs,$rt */
1837 { 0, 0, 0, 0 },
1838 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1839 & ifmt_cm32and, { 0x4c00009c }
1841 /* cm64ss $rd,$rs,$rt */
1843 { 0, 0, 0, 0 },
1844 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1845 & ifmt_cm32and, { 0x4c000088 }
1847 /* cm128ria2 $rd,$rs,$rt */
1849 { 0, 0, 0, 0 },
1850 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1851 & ifmt_cm32and, { 0x4c000095 }
1853 /* cm128ria3 $rd,$rs,$rt,${cm-3z} */
1855 { 0, 0, 0, 0 },
1856 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1857 & ifmt_cm128ria3, { 0x4c000090 }
1859 /* cm128ria4 $rd,$rs,$rt,${cm-4z} */
1861 { 0, 0, 0, 0 },
1862 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1863 & ifmt_cm128ria4, { 0x4c0000b0 }
1865 /* cm128sia2 $rd,$rs,$rt */
1867 { 0, 0, 0, 0 },
1868 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1869 & ifmt_cm32and, { 0x4c00009d }
1871 /* cm128sia3 $rd,$rs,$rt,${cm-3z} */
1873 { 0, 0, 0, 0 },
1874 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1875 & ifmt_cm128ria3, { 0x4c000098 }
1877 /* cm128sia4 $rd,$rs,$rt,${cm-4z} */
1879 { 0, 0, 0, 0 },
1880 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1881 & ifmt_cm128ria4, { 0x4c0000b8 }
1883 /* cm128vsa $rd,$rs,$rt */
1885 { 0, 0, 0, 0 },
1886 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1887 & ifmt_cm32and, { 0x4c0000a6 }
1889 /* cfc $rd,$rt */
1891 { 0, 0, 0, 0 },
1892 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1893 & ifmt_chkhdr, { 0x4c000000 }
1895 /* ctc $rs,$rt */
1897 { 0, 0, 0, 0 },
1898 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
1899 & ifmt_ctc, { 0x4c000002 }
1903 #undef A
1904 #undef OPERAND
1905 #undef MNEM
1906 #undef OP
1908 /* Formats for ALIAS macro-insns. */
1910 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
1911 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
1912 #else
1913 #define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f]
1914 #endif
1915 static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = {
1916 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1919 static const CGEN_IFMT ifmt_li ATTRIBUTE_UNUSED = {
1920 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1923 static const CGEN_IFMT ifmt_move ATTRIBUTE_UNUSED = {
1924 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1927 static const CGEN_IFMT ifmt_lb_base_0 ATTRIBUTE_UNUSED = {
1928 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1931 static const CGEN_IFMT ifmt_lbu_base_0 ATTRIBUTE_UNUSED = {
1932 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1935 static const CGEN_IFMT ifmt_lh_base_0 ATTRIBUTE_UNUSED = {
1936 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1939 static const CGEN_IFMT ifmt_lw_base_0 ATTRIBUTE_UNUSED = {
1940 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1943 static const CGEN_IFMT ifmt_m_add ATTRIBUTE_UNUSED = {
1944 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1947 static const CGEN_IFMT ifmt_m_addu ATTRIBUTE_UNUSED = {
1948 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1951 static const CGEN_IFMT ifmt_m_and ATTRIBUTE_UNUSED = {
1952 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1955 static const CGEN_IFMT ifmt_m_j ATTRIBUTE_UNUSED = {
1956 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1959 static const CGEN_IFMT ifmt_m_or ATTRIBUTE_UNUSED = {
1960 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1963 static const CGEN_IFMT ifmt_m_sll ATTRIBUTE_UNUSED = {
1964 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1967 static const CGEN_IFMT ifmt_m_slt ATTRIBUTE_UNUSED = {
1968 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1971 static const CGEN_IFMT ifmt_m_sltu ATTRIBUTE_UNUSED = {
1972 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1975 static const CGEN_IFMT ifmt_m_sra ATTRIBUTE_UNUSED = {
1976 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1979 static const CGEN_IFMT ifmt_m_srl ATTRIBUTE_UNUSED = {
1980 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1983 static const CGEN_IFMT ifmt_not ATTRIBUTE_UNUSED = {
1984 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1987 static const CGEN_IFMT ifmt_subi ATTRIBUTE_UNUSED = {
1988 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1991 static const CGEN_IFMT ifmt_m_sub ATTRIBUTE_UNUSED = {
1992 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1995 static const CGEN_IFMT ifmt_m_subu ATTRIBUTE_UNUSED = {
1996 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1999 static const CGEN_IFMT ifmt_sb_base_0 ATTRIBUTE_UNUSED = {
2000 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2003 static const CGEN_IFMT ifmt_sh_base_0 ATTRIBUTE_UNUSED = {
2004 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2007 static const CGEN_IFMT ifmt_sw_base_0 ATTRIBUTE_UNUSED = {
2008 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2011 static const CGEN_IFMT ifmt_m_xor ATTRIBUTE_UNUSED = {
2012 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2015 static const CGEN_IFMT ifmt_ldw_base_0 ATTRIBUTE_UNUSED = {
2016 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2019 static const CGEN_IFMT ifmt_sdw_base_0 ATTRIBUTE_UNUSED = {
2020 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2023 static const CGEN_IFMT ifmt_m_avail ATTRIBUTE_UNUSED = {
2024 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2027 static const CGEN_IFMT ifmt_m_cam36 ATTRIBUTE_UNUSED = {
2028 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
2031 static const CGEN_IFMT ifmt_m_cam72 ATTRIBUTE_UNUSED = {
2032 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
2035 static const CGEN_IFMT ifmt_m_cam144 ATTRIBUTE_UNUSED = {
2036 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
2039 static const CGEN_IFMT ifmt_m_cam288 ATTRIBUTE_UNUSED = {
2040 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
2043 static const CGEN_IFMT ifmt_m_cm32read ATTRIBUTE_UNUSED = {
2044 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2047 static const CGEN_IFMT ifmt_m_cm64read ATTRIBUTE_UNUSED = {
2048 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2051 static const CGEN_IFMT ifmt_m_cm32mlog ATTRIBUTE_UNUSED = {
2052 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2055 static const CGEN_IFMT ifmt_m_cm32and ATTRIBUTE_UNUSED = {
2056 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2059 static const CGEN_IFMT ifmt_m_cm32andn ATTRIBUTE_UNUSED = {
2060 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2063 static const CGEN_IFMT ifmt_m_cm32or ATTRIBUTE_UNUSED = {
2064 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2067 static const CGEN_IFMT ifmt_m_cm32ra ATTRIBUTE_UNUSED = {
2068 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2071 static const CGEN_IFMT ifmt_m_cm32rd ATTRIBUTE_UNUSED = {
2072 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2075 static const CGEN_IFMT ifmt_m_cm32ri ATTRIBUTE_UNUSED = {
2076 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2079 static const CGEN_IFMT ifmt_m_cm32rs ATTRIBUTE_UNUSED = {
2080 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2083 static const CGEN_IFMT ifmt_m_cm32sa ATTRIBUTE_UNUSED = {
2084 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2087 static const CGEN_IFMT ifmt_m_cm32sd ATTRIBUTE_UNUSED = {
2088 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2091 static const CGEN_IFMT ifmt_m_cm32si ATTRIBUTE_UNUSED = {
2092 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2095 static const CGEN_IFMT ifmt_m_cm32ss ATTRIBUTE_UNUSED = {
2096 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2099 static const CGEN_IFMT ifmt_m_cm32xor ATTRIBUTE_UNUSED = {
2100 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2103 static const CGEN_IFMT ifmt_m_cm64clr ATTRIBUTE_UNUSED = {
2104 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2107 static const CGEN_IFMT ifmt_m_cm64ra ATTRIBUTE_UNUSED = {
2108 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2111 static const CGEN_IFMT ifmt_m_cm64rd ATTRIBUTE_UNUSED = {
2112 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2115 static const CGEN_IFMT ifmt_m_cm64ri ATTRIBUTE_UNUSED = {
2116 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2119 static const CGEN_IFMT ifmt_m_cm64ria2 ATTRIBUTE_UNUSED = {
2120 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2123 static const CGEN_IFMT ifmt_m_cm64rs ATTRIBUTE_UNUSED = {
2124 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2127 static const CGEN_IFMT ifmt_m_cm64sa ATTRIBUTE_UNUSED = {
2128 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2131 static const CGEN_IFMT ifmt_m_cm64sd ATTRIBUTE_UNUSED = {
2132 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2135 static const CGEN_IFMT ifmt_m_cm64si ATTRIBUTE_UNUSED = {
2136 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2139 static const CGEN_IFMT ifmt_m_cm64sia2 ATTRIBUTE_UNUSED = {
2140 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2143 static const CGEN_IFMT ifmt_m_cm64ss ATTRIBUTE_UNUSED = {
2144 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2147 static const CGEN_IFMT ifmt_m_cm128ria2 ATTRIBUTE_UNUSED = {
2148 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2151 static const CGEN_IFMT ifmt_m_cm128ria3 ATTRIBUTE_UNUSED = {
2152 32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
2155 static const CGEN_IFMT ifmt_m_cm128ria4 ATTRIBUTE_UNUSED = {
2156 32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
2159 static const CGEN_IFMT ifmt_m_cm128sia2 ATTRIBUTE_UNUSED = {
2160 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2163 static const CGEN_IFMT ifmt_m_cm128sia3 ATTRIBUTE_UNUSED = {
2164 32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
2167 static const CGEN_IFMT ifmt_m_cm128sia4 ATTRIBUTE_UNUSED = {
2168 32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
2171 static const CGEN_IFMT ifmt_m_cmphdr ATTRIBUTE_UNUSED = {
2172 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2175 static const CGEN_IFMT ifmt_m_dbd ATTRIBUTE_UNUSED = {
2176 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2179 static const CGEN_IFMT ifmt_m2_dbd ATTRIBUTE_UNUSED = {
2180 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2183 static const CGEN_IFMT ifmt_m_dpwt ATTRIBUTE_UNUSED = {
2184 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2187 static const CGEN_IFMT ifmt_m_free ATTRIBUTE_UNUSED = {
2188 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2191 static const CGEN_IFMT ifmt_m_lock ATTRIBUTE_UNUSED = {
2192 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2195 static const CGEN_IFMT ifmt_m_pkrla ATTRIBUTE_UNUSED = {
2196 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2199 static const CGEN_IFMT ifmt_m_pkrlac ATTRIBUTE_UNUSED = {
2200 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2203 static const CGEN_IFMT ifmt_m_pkrlah ATTRIBUTE_UNUSED = {
2204 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2207 static const CGEN_IFMT ifmt_m_pkrlau ATTRIBUTE_UNUSED = {
2208 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2211 static const CGEN_IFMT ifmt_m_pkrli ATTRIBUTE_UNUSED = {
2212 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2215 static const CGEN_IFMT ifmt_m_pkrlic ATTRIBUTE_UNUSED = {
2216 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2219 static const CGEN_IFMT ifmt_m_pkrlih ATTRIBUTE_UNUSED = {
2220 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2223 static const CGEN_IFMT ifmt_m_pkrliu ATTRIBUTE_UNUSED = {
2224 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2227 static const CGEN_IFMT ifmt_m_rba ATTRIBUTE_UNUSED = {
2228 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2231 static const CGEN_IFMT ifmt_m_rbal ATTRIBUTE_UNUSED = {
2232 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2235 static const CGEN_IFMT ifmt_m_rbar ATTRIBUTE_UNUSED = {
2236 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2239 static const CGEN_IFMT ifmt_m_rbi ATTRIBUTE_UNUSED = {
2240 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2243 static const CGEN_IFMT ifmt_m_rbil ATTRIBUTE_UNUSED = {
2244 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2247 static const CGEN_IFMT ifmt_m_rbir ATTRIBUTE_UNUSED = {
2248 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2251 static const CGEN_IFMT ifmt_m_swwr ATTRIBUTE_UNUSED = {
2252 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2255 static const CGEN_IFMT ifmt_m_swwru ATTRIBUTE_UNUSED = {
2256 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2259 static const CGEN_IFMT ifmt_m_tstod ATTRIBUTE_UNUSED = {
2260 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2263 static const CGEN_IFMT ifmt_m_unlk ATTRIBUTE_UNUSED = {
2264 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2267 static const CGEN_IFMT ifmt_m_wba ATTRIBUTE_UNUSED = {
2268 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2271 static const CGEN_IFMT ifmt_m_wbac ATTRIBUTE_UNUSED = {
2272 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2275 static const CGEN_IFMT ifmt_m_wbau ATTRIBUTE_UNUSED = {
2276 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2279 static const CGEN_IFMT ifmt_m_wbi ATTRIBUTE_UNUSED = {
2280 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2283 static const CGEN_IFMT ifmt_m_wbic ATTRIBUTE_UNUSED = {
2284 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2287 static const CGEN_IFMT ifmt_m_wbiu ATTRIBUTE_UNUSED = {
2288 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2291 #undef F
2293 /* Each non-simple macro entry points to an array of expansion possibilities. */
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))
2308 /* The macro instruction table. */
2310 static const CGEN_IBASE iq2000_cgen_macro_insn_table[] =
2312 /* nop */
2314 -1, "nop", "nop", 32,
2315 { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2317 /* li $rs,$imm */
2319 -1, "li", "li", 32,
2320 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2322 /* move $rd,$rt */
2324 -1, "move", "move", 32,
2325 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2327 /* lb $rt,$lo16 */
2329 -1, "lb-base-0", "lb", 32,
2330 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2332 /* lbu $rt,$lo16 */
2334 -1, "lbu-base-0", "lbu", 32,
2335 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2337 /* lh $rt,$lo16 */
2339 -1, "lh-base-0", "lh", 32,
2340 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2342 /* lw $rt,$lo16 */
2344 -1, "lw-base-0", "lw", 32,
2345 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2347 /* add $rt,$rs,$lo16 */
2349 -1, "m-add", "add", 32,
2350 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2352 /* addu $rt,$rs,$lo16 */
2354 -1, "m-addu", "addu", 32,
2355 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2357 /* and $rt,$rs,$lo16 */
2359 -1, "m-and", "and", 32,
2360 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2362 /* j $rs */
2364 -1, "m-j", "j", 32,
2365 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2367 /* or $rt,$rs,$lo16 */
2369 -1, "m-or", "or", 32,
2370 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2372 /* sll $rd,$rt,$rs */
2374 -1, "m-sll", "sll", 32,
2375 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2377 /* slt $rt,$rs,$imm */
2379 -1, "m-slt", "slt", 32,
2380 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2382 /* sltu $rt,$rs,$imm */
2384 -1, "m-sltu", "sltu", 32,
2385 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2387 /* sra $rd,$rt,$rs */
2389 -1, "m-sra", "sra", 32,
2390 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2392 /* srl $rd,$rt,$rs */
2394 -1, "m-srl", "srl", 32,
2395 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2397 /* not $rd,$rt */
2399 -1, "not", "not", 32,
2400 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2402 /* subi $rt,$rs,$mlo16 */
2404 -1, "subi", "subi", 32,
2405 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2407 /* sub $rt,$rs,$mlo16 */
2409 -1, "m-sub", "sub", 32,
2410 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2412 /* subu $rt,$rs,$mlo16 */
2414 -1, "m-subu", "subu", 32,
2415 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2417 /* sb $rt,$lo16 */
2419 -1, "sb-base-0", "sb", 32,
2420 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2422 /* sh $rt,$lo16 */
2424 -1, "sh-base-0", "sh", 32,
2425 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2427 /* sw $rt,$lo16 */
2429 -1, "sw-base-0", "sw", 32,
2430 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2432 /* xor $rt,$rs,$lo16 */
2434 -1, "m-xor", "xor", 32,
2435 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2437 /* ldw $rt,$lo16 */
2439 -1, "ldw-base-0", "ldw", 32,
2440 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
2442 /* sdw $rt,$lo16 */
2444 -1, "sdw-base-0", "sdw", 32,
2445 { 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
2447 /* avail */
2449 -1, "m-avail", "avail", 32,
2450 { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2452 /* cam36 $rd,$rt,${cam-z} */
2454 -1, "m-cam36", "cam36", 32,
2455 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2457 /* cam72 $rd,$rt,${cam-z} */
2459 -1, "m-cam72", "cam72", 32,
2460 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2462 /* cam144 $rd,$rt,${cam-z} */
2464 -1, "m-cam144", "cam144", 32,
2465 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2467 /* cam288 $rd,$rt,${cam-z} */
2469 -1, "m-cam288", "cam288", 32,
2470 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2472 /* cm32read $rd,$rt */
2474 -1, "m-cm32read", "cm32read", 32,
2475 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2477 /* cm64read $rd,$rt */
2479 -1, "m-cm64read", "cm64read", 32,
2480 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2482 /* cm32mlog $rs,$rt */
2484 -1, "m-cm32mlog", "cm32mlog", 32,
2485 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2487 /* cm32and $rs,$rt */
2489 -1, "m-cm32and", "cm32and", 32,
2490 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2492 /* cm32andn $rs,$rt */
2494 -1, "m-cm32andn", "cm32andn", 32,
2495 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2497 /* cm32or $rs,$rt */
2499 -1, "m-cm32or", "cm32or", 32,
2500 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2502 /* cm32ra $rs,$rt */
2504 -1, "m-cm32ra", "cm32ra", 32,
2505 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2507 /* cm32rd $rt */
2509 -1, "m-cm32rd", "cm32rd", 32,
2510 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2512 /* cm32ri $rt */
2514 -1, "m-cm32ri", "cm32ri", 32,
2515 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2517 /* cm32rs $rs,$rt */
2519 -1, "m-cm32rs", "cm32rs", 32,
2520 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2522 /* cm32sa $rs,$rt */
2524 -1, "m-cm32sa", "cm32sa", 32,
2525 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2527 /* cm32sd $rt */
2529 -1, "m-cm32sd", "cm32sd", 32,
2530 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2532 /* cm32si $rt */
2534 -1, "m-cm32si", "cm32si", 32,
2535 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2537 /* cm32ss $rs,$rt */
2539 -1, "m-cm32ss", "cm32ss", 32,
2540 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2542 /* cm32xor $rs,$rt */
2544 -1, "m-cm32xor", "cm32xor", 32,
2545 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2547 /* cm64clr $rt */
2549 -1, "m-cm64clr", "cm64clr", 32,
2550 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2552 /* cm64ra $rs,$rt */
2554 -1, "m-cm64ra", "cm64ra", 32,
2555 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2557 /* cm64rd $rt */
2559 -1, "m-cm64rd", "cm64rd", 32,
2560 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2562 /* cm64ri $rt */
2564 -1, "m-cm64ri", "cm64ri", 32,
2565 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2567 /* cm64ria2 $rs,$rt */
2569 -1, "m-cm64ria2", "cm64ria2", 32,
2570 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2572 /* cm64rs $rs,$rt */
2574 -1, "m-cm64rs", "cm64rs", 32,
2575 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2577 /* cm64sa $rs,$rt */
2579 -1, "m-cm64sa", "cm64sa", 32,
2580 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2582 /* cm64sd $rt */
2584 -1, "m-cm64sd", "cm64sd", 32,
2585 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2587 /* cm64si $rt */
2589 -1, "m-cm64si", "cm64si", 32,
2590 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2592 /* cm64sia2 $rs,$rt */
2594 -1, "m-cm64sia2", "cm64sia2", 32,
2595 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2597 /* cm64ss $rs,$rt */
2599 -1, "m-cm64ss", "cm64ss", 32,
2600 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2602 /* cm128ria2 $rs,$rt */
2604 -1, "m-cm128ria2", "cm128ria2", 32,
2605 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2607 /* cm128ria3 $rs,$rt,${cm-3z} */
2609 -1, "m-cm128ria3", "cm128ria3", 32,
2610 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2612 /* cm128ria4 $rs,$rt,${cm-4z} */
2614 -1, "m-cm128ria4", "cm128ria4", 32,
2615 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2617 /* cm128sia2 $rs,$rt */
2619 -1, "m-cm128sia2", "cm128sia2", 32,
2620 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2622 /* cm128sia3 $rs,$rt,${cm-3z} */
2624 -1, "m-cm128sia3", "cm128sia3", 32,
2625 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2627 /* cm128sia4 $rs,$rt,${cm-4z} */
2629 -1, "m-cm128sia4", "cm128sia4", 32,
2630 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2632 /* cmphdr */
2634 -1, "m-cmphdr", "cmphdr", 32,
2635 { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2637 /* dbd $rd,$rt */
2639 -1, "m-dbd", "dbd", 32,
2640 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2642 /* dbd $rt */
2644 -1, "m2-dbd", "dbd", 32,
2645 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2647 /* dpwt $rs */
2649 -1, "m-dpwt", "dpwt", 32,
2650 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2652 /* free $rs */
2654 -1, "m-free", "free", 32,
2655 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2657 /* lock $rt */
2659 -1, "m-lock", "lock", 32,
2660 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2662 /* pkrla $rs,$rt */
2664 -1, "m-pkrla", "pkrla", 32,
2665 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2667 /* pkrlac $rs,$rt */
2669 -1, "m-pkrlac", "pkrlac", 32,
2670 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2672 /* pkrlah $rs,$rt */
2674 -1, "m-pkrlah", "pkrlah", 32,
2675 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2677 /* pkrlau $rs,$rt */
2679 -1, "m-pkrlau", "pkrlau", 32,
2680 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2682 /* pkrli $rs,$rt,$bytecount */
2684 -1, "m-pkrli", "pkrli", 32,
2685 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2687 /* pkrlic $rs,$rt,$bytecount */
2689 -1, "m-pkrlic", "pkrlic", 32,
2690 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2692 /* pkrlih $rs,$rt,$bytecount */
2694 -1, "m-pkrlih", "pkrlih", 32,
2695 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2697 /* pkrliu $rs,$rt,$bytecount */
2699 -1, "m-pkrliu", "pkrliu", 32,
2700 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2702 /* rba $rs,$rt */
2704 -1, "m-rba", "rba", 32,
2705 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2707 /* rbal $rs,$rt */
2709 -1, "m-rbal", "rbal", 32,
2710 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2712 /* rbar $rs,$rt */
2714 -1, "m-rbar", "rbar", 32,
2715 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2717 /* rbi $rs,$rt,$bytecount */
2719 -1, "m-rbi", "rbi", 32,
2720 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2722 /* rbil $rs,$rt,$bytecount */
2724 -1, "m-rbil", "rbil", 32,
2725 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2727 /* rbir $rs,$rt,$bytecount */
2729 -1, "m-rbir", "rbir", 32,
2730 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2732 /* swwr $rs,$rt */
2734 -1, "m-swwr", "swwr", 32,
2735 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2737 /* swwru $rs,$rt */
2739 -1, "m-swwru", "swwru", 32,
2740 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2742 /* tstod $rs */
2744 -1, "m-tstod", "tstod", 32,
2745 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2747 /* unlk $rt */
2749 -1, "m-unlk", "unlk", 32,
2750 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2752 /* wba $rs,$rt */
2754 -1, "m-wba", "wba", 32,
2755 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2757 /* wbac $rs,$rt */
2759 -1, "m-wbac", "wbac", 32,
2760 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2762 /* wbau $rs,$rt */
2764 -1, "m-wbau", "wbau", 32,
2765 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2767 /* wbi $rs,$rt,$bytecount */
2769 -1, "m-wbi", "wbi", 32,
2770 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2772 /* wbic $rs,$rt,$bytecount */
2774 -1, "m-wbic", "wbic", 32,
2775 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2777 /* wbiu $rs,$rt,$bytecount */
2779 -1, "m-wbiu", "wbiu", 32,
2780 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2784 /* The macro instruction opcode table. */
2786 static const CGEN_OPCODE iq2000_cgen_macro_insn_opcode_table[] =
2788 /* nop */
2790 { 0, 0, 0, 0 },
2791 { { MNEM, 0 } },
2792 & ifmt_nop, { 0x0 }
2794 /* li $rs,$imm */
2796 { 0, 0, 0, 0 },
2797 { { MNEM, ' ', OP (RS), ',', OP (IMM), 0 } },
2798 & ifmt_li, { 0x34000000 }
2800 /* move $rd,$rt */
2802 { 0, 0, 0, 0 },
2803 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2804 & ifmt_move, { 0x25 }
2806 /* lb $rt,$lo16 */
2808 { 0, 0, 0, 0 },
2809 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2810 & ifmt_lb_base_0, { 0x80000000 }
2812 /* lbu $rt,$lo16 */
2814 { 0, 0, 0, 0 },
2815 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2816 & ifmt_lbu_base_0, { 0x90000000 }
2818 /* lh $rt,$lo16 */
2820 { 0, 0, 0, 0 },
2821 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2822 & ifmt_lh_base_0, { 0x84000000 }
2824 /* lw $rt,$lo16 */
2826 { 0, 0, 0, 0 },
2827 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2828 & ifmt_lw_base_0, { 0x8c000000 }
2830 /* add $rt,$rs,$lo16 */
2832 { 0, 0, 0, 0 },
2833 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2834 & ifmt_m_add, { 0x20000000 }
2836 /* addu $rt,$rs,$lo16 */
2838 { 0, 0, 0, 0 },
2839 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2840 & ifmt_m_addu, { 0x24000000 }
2842 /* and $rt,$rs,$lo16 */
2844 { 0, 0, 0, 0 },
2845 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2846 & ifmt_m_and, { 0x30000000 }
2848 /* j $rs */
2850 { 0, 0, 0, 0 },
2851 { { MNEM, ' ', OP (RS), 0 } },
2852 & ifmt_m_j, { 0x8 }
2854 /* or $rt,$rs,$lo16 */
2856 { 0, 0, 0, 0 },
2857 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2858 & ifmt_m_or, { 0x34000000 }
2860 /* sll $rd,$rt,$rs */
2862 { 0, 0, 0, 0 },
2863 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2864 & ifmt_m_sll, { 0x4 }
2866 /* slt $rt,$rs,$imm */
2868 { 0, 0, 0, 0 },
2869 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2870 & ifmt_m_slt, { 0x28000000 }
2872 /* sltu $rt,$rs,$imm */
2874 { 0, 0, 0, 0 },
2875 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2876 & ifmt_m_sltu, { 0x2c000000 }
2878 /* sra $rd,$rt,$rs */
2880 { 0, 0, 0, 0 },
2881 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2882 & ifmt_m_sra, { 0x7 }
2884 /* srl $rd,$rt,$rs */
2886 { 0, 0, 0, 0 },
2887 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2888 & ifmt_m_srl, { 0x6 }
2890 /* not $rd,$rt */
2892 { 0, 0, 0, 0 },
2893 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2894 & ifmt_not, { 0x27 }
2896 /* subi $rt,$rs,$mlo16 */
2898 { 0, 0, 0, 0 },
2899 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2900 & ifmt_subi, { 0x24000000 }
2902 /* sub $rt,$rs,$mlo16 */
2904 { 0, 0, 0, 0 },
2905 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2906 & ifmt_m_sub, { 0x24000000 }
2908 /* subu $rt,$rs,$mlo16 */
2910 { 0, 0, 0, 0 },
2911 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2912 & ifmt_m_subu, { 0x24000000 }
2914 /* sb $rt,$lo16 */
2916 { 0, 0, 0, 0 },
2917 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2918 & ifmt_sb_base_0, { 0xa0000000 }
2920 /* sh $rt,$lo16 */
2922 { 0, 0, 0, 0 },
2923 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2924 & ifmt_sh_base_0, { 0xa4000000 }
2926 /* sw $rt,$lo16 */
2928 { 0, 0, 0, 0 },
2929 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2930 & ifmt_sw_base_0, { 0xac000000 }
2932 /* xor $rt,$rs,$lo16 */
2934 { 0, 0, 0, 0 },
2935 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2936 & ifmt_m_xor, { 0x38000000 }
2938 /* ldw $rt,$lo16 */
2940 { 0, 0, 0, 0 },
2941 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2942 & ifmt_ldw_base_0, { 0xc0000000 }
2944 /* sdw $rt,$lo16 */
2946 { 0, 0, 0, 0 },
2947 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2948 & ifmt_sdw_base_0, { 0xe0000000 }
2950 /* avail */
2952 { 0, 0, 0, 0 },
2953 { { MNEM, 0 } },
2954 & ifmt_m_avail, { 0x4c000024 }
2956 /* cam36 $rd,$rt,${cam-z} */
2958 { 0, 0, 0, 0 },
2959 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2960 & ifmt_m_cam36, { 0x4c000400 }
2962 /* cam72 $rd,$rt,${cam-z} */
2964 { 0, 0, 0, 0 },
2965 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2966 & ifmt_m_cam72, { 0x4c000440 }
2968 /* cam144 $rd,$rt,${cam-z} */
2970 { 0, 0, 0, 0 },
2971 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2972 & ifmt_m_cam144, { 0x4c000480 }
2974 /* cam288 $rd,$rt,${cam-z} */
2976 { 0, 0, 0, 0 },
2977 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2978 & ifmt_m_cam288, { 0x4c0004c0 }
2980 /* cm32read $rd,$rt */
2982 { 0, 0, 0, 0 },
2983 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2984 & ifmt_m_cm32read, { 0x4c0000b0 }
2986 /* cm64read $rd,$rt */
2988 { 0, 0, 0, 0 },
2989 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2990 & ifmt_m_cm64read, { 0x4c000090 }
2992 /* cm32mlog $rs,$rt */
2994 { 0, 0, 0, 0 },
2995 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2996 & ifmt_m_cm32mlog, { 0x4c0000aa }
2998 /* cm32and $rs,$rt */
3000 { 0, 0, 0, 0 },
3001 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3002 & ifmt_m_cm32and, { 0x4c0000ab }
3004 /* cm32andn $rs,$rt */
3006 { 0, 0, 0, 0 },
3007 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3008 & ifmt_m_cm32andn, { 0x4c0000a3 }
3010 /* cm32or $rs,$rt */
3012 { 0, 0, 0, 0 },
3013 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3014 & ifmt_m_cm32or, { 0x4c0000aa }
3016 /* cm32ra $rs,$rt */
3018 { 0, 0, 0, 0 },
3019 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3020 & ifmt_m_cm32ra, { 0x4c0000b0 }
3022 /* cm32rd $rt */
3024 { 0, 0, 0, 0 },
3025 { { MNEM, ' ', OP (RT), 0 } },
3026 & ifmt_m_cm32rd, { 0x4c0000a1 }
3028 /* cm32ri $rt */
3030 { 0, 0, 0, 0 },
3031 { { MNEM, ' ', OP (RT), 0 } },
3032 & ifmt_m_cm32ri, { 0x4c0000a4 }
3034 /* cm32rs $rs,$rt */
3036 { 0, 0, 0, 0 },
3037 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3038 & ifmt_m_cm32rs, { 0x4c0000a0 }
3040 /* cm32sa $rs,$rt */
3042 { 0, 0, 0, 0 },
3043 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3044 & ifmt_m_cm32sa, { 0x4c0000b8 }
3046 /* cm32sd $rt */
3048 { 0, 0, 0, 0 },
3049 { { MNEM, ' ', OP (RT), 0 } },
3050 & ifmt_m_cm32sd, { 0x4c0000a9 }
3052 /* cm32si $rt */
3054 { 0, 0, 0, 0 },
3055 { { MNEM, ' ', OP (RT), 0 } },
3056 & ifmt_m_cm32si, { 0x4c0000ac }
3058 /* cm32ss $rs,$rt */
3060 { 0, 0, 0, 0 },
3061 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3062 & ifmt_m_cm32ss, { 0x4c0000a8 }
3064 /* cm32xor $rs,$rt */
3066 { 0, 0, 0, 0 },
3067 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3068 & ifmt_m_cm32xor, { 0x4c0000a2 }
3070 /* cm64clr $rt */
3072 { 0, 0, 0, 0 },
3073 { { MNEM, ' ', OP (RT), 0 } },
3074 & ifmt_m_cm64clr, { 0x4c000085 }
3076 /* cm64ra $rs,$rt */
3078 { 0, 0, 0, 0 },
3079 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3080 & ifmt_m_cm64ra, { 0x4c000090 }
3082 /* cm64rd $rt */
3084 { 0, 0, 0, 0 },
3085 { { MNEM, ' ', OP (RT), 0 } },
3086 & ifmt_m_cm64rd, { 0x4c000081 }
3088 /* cm64ri $rt */
3090 { 0, 0, 0, 0 },
3091 { { MNEM, ' ', OP (RT), 0 } },
3092 & ifmt_m_cm64ri, { 0x4c000084 }
3094 /* cm64ria2 $rs,$rt */
3096 { 0, 0, 0, 0 },
3097 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3098 & ifmt_m_cm64ria2, { 0x4c000094 }
3100 /* cm64rs $rs,$rt */
3102 { 0, 0, 0, 0 },
3103 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3104 & ifmt_m_cm64rs, { 0x4c000080 }
3106 /* cm64sa $rs,$rt */
3108 { 0, 0, 0, 0 },
3109 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3110 & ifmt_m_cm64sa, { 0x4c000098 }
3112 /* cm64sd $rt */
3114 { 0, 0, 0, 0 },
3115 { { MNEM, ' ', OP (RT), 0 } },
3116 & ifmt_m_cm64sd, { 0x4c000089 }
3118 /* cm64si $rt */
3120 { 0, 0, 0, 0 },
3121 { { MNEM, ' ', OP (RT), 0 } },
3122 & ifmt_m_cm64si, { 0x4c00008c }
3124 /* cm64sia2 $rs,$rt */
3126 { 0, 0, 0, 0 },
3127 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3128 & ifmt_m_cm64sia2, { 0x4c00009c }
3130 /* cm64ss $rs,$rt */
3132 { 0, 0, 0, 0 },
3133 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3134 & ifmt_m_cm64ss, { 0x4c000088 }
3136 /* cm128ria2 $rs,$rt */
3138 { 0, 0, 0, 0 },
3139 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3140 & ifmt_m_cm128ria2, { 0x4c000095 }
3142 /* cm128ria3 $rs,$rt,${cm-3z} */
3144 { 0, 0, 0, 0 },
3145 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3146 & ifmt_m_cm128ria3, { 0x4c000090 }
3148 /* cm128ria4 $rs,$rt,${cm-4z} */
3150 { 0, 0, 0, 0 },
3151 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3152 & ifmt_m_cm128ria4, { 0x4c0000b0 }
3154 /* cm128sia2 $rs,$rt */
3156 { 0, 0, 0, 0 },
3157 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3158 & ifmt_m_cm128sia2, { 0x4c00009d }
3160 /* cm128sia3 $rs,$rt,${cm-3z} */
3162 { 0, 0, 0, 0 },
3163 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3164 & ifmt_m_cm128sia3, { 0x4c000098 }
3166 /* cm128sia4 $rs,$rt,${cm-4z} */
3168 { 0, 0, 0, 0 },
3169 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3170 & ifmt_m_cm128sia4, { 0x4c0000b8 }
3172 /* cmphdr */
3174 { 0, 0, 0, 0 },
3175 { { MNEM, 0 } },
3176 & ifmt_m_cmphdr, { 0x4c00002c }
3178 /* dbd $rd,$rt */
3180 { 0, 0, 0, 0 },
3181 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
3182 & ifmt_m_dbd, { 0x4c000021 }
3184 /* dbd $rt */
3186 { 0, 0, 0, 0 },
3187 { { MNEM, ' ', OP (RT), 0 } },
3188 & ifmt_m2_dbd, { 0x4c000021 }
3190 /* dpwt $rs */
3192 { 0, 0, 0, 0 },
3193 { { MNEM, ' ', OP (RS), 0 } },
3194 & ifmt_m_dpwt, { 0x4c000023 }
3196 /* free $rs */
3198 { 0, 0, 0, 0 },
3199 { { MNEM, ' ', OP (RS), 0 } },
3200 & ifmt_m_free, { 0x4c000025 }
3202 /* lock $rt */
3204 { 0, 0, 0, 0 },
3205 { { MNEM, ' ', OP (RT), 0 } },
3206 & ifmt_m_lock, { 0x4c000001 }
3208 /* pkrla $rs,$rt */
3210 { 0, 0, 0, 0 },
3211 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3212 & ifmt_m_pkrla, { 0x4c000028 }
3214 /* pkrlac $rs,$rt */
3216 { 0, 0, 0, 0 },
3217 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3218 & ifmt_m_pkrlac, { 0x4c00002b }
3220 /* pkrlah $rs,$rt */
3222 { 0, 0, 0, 0 },
3223 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3224 & ifmt_m_pkrlah, { 0x4c00002a }
3226 /* pkrlau $rs,$rt */
3228 { 0, 0, 0, 0 },
3229 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3230 & ifmt_m_pkrlau, { 0x4c000029 }
3232 /* pkrli $rs,$rt,$bytecount */
3234 { 0, 0, 0, 0 },
3235 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3236 & ifmt_m_pkrli, { 0x48000000 }
3238 /* pkrlic $rs,$rt,$bytecount */
3240 { 0, 0, 0, 0 },
3241 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3242 & ifmt_m_pkrlic, { 0x48000300 }
3244 /* pkrlih $rs,$rt,$bytecount */
3246 { 0, 0, 0, 0 },
3247 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3248 & ifmt_m_pkrlih, { 0x48000200 }
3250 /* pkrliu $rs,$rt,$bytecount */
3252 { 0, 0, 0, 0 },
3253 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3254 & ifmt_m_pkrliu, { 0x48000100 }
3256 /* rba $rs,$rt */
3258 { 0, 0, 0, 0 },
3259 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3260 & ifmt_m_rba, { 0x4c000008 }
3262 /* rbal $rs,$rt */
3264 { 0, 0, 0, 0 },
3265 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3266 & ifmt_m_rbal, { 0x4c000009 }
3268 /* rbar $rs,$rt */
3270 { 0, 0, 0, 0 },
3271 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3272 & ifmt_m_rbar, { 0x4c00000a }
3274 /* rbi $rs,$rt,$bytecount */
3276 { 0, 0, 0, 0 },
3277 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3278 & ifmt_m_rbi, { 0x4c000200 }
3280 /* rbil $rs,$rt,$bytecount */
3282 { 0, 0, 0, 0 },
3283 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3284 & ifmt_m_rbil, { 0x4c000300 }
3286 /* rbir $rs,$rt,$bytecount */
3288 { 0, 0, 0, 0 },
3289 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3290 & ifmt_m_rbir, { 0x4c000100 }
3292 /* swwr $rs,$rt */
3294 { 0, 0, 0, 0 },
3295 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3296 & ifmt_m_swwr, { 0x4c000006 }
3298 /* swwru $rs,$rt */
3300 { 0, 0, 0, 0 },
3301 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3302 & ifmt_m_swwru, { 0x4c000007 }
3304 /* tstod $rs */
3306 { 0, 0, 0, 0 },
3307 { { MNEM, ' ', OP (RS), 0 } },
3308 & ifmt_m_tstod, { 0x4c000027 }
3310 /* unlk $rt */
3312 { 0, 0, 0, 0 },
3313 { { MNEM, ' ', OP (RT), 0 } },
3314 & ifmt_m_unlk, { 0x4c000003 }
3316 /* wba $rs,$rt */
3318 { 0, 0, 0, 0 },
3319 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3320 & ifmt_m_wba, { 0x4c000010 }
3322 /* wbac $rs,$rt */
3324 { 0, 0, 0, 0 },
3325 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3326 & ifmt_m_wbac, { 0x4c000012 }
3328 /* wbau $rs,$rt */
3330 { 0, 0, 0, 0 },
3331 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3332 & ifmt_m_wbau, { 0x4c000011 }
3334 /* wbi $rs,$rt,$bytecount */
3336 { 0, 0, 0, 0 },
3337 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3338 & ifmt_m_wbi, { 0x4c000600 }
3340 /* wbic $rs,$rt,$bytecount */
3342 { 0, 0, 0, 0 },
3343 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3344 & ifmt_m_wbic, { 0x4c000500 }
3346 /* wbiu $rs,$rt,$bytecount */
3348 { 0, 0, 0, 0 },
3349 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3350 & ifmt_m_wbiu, { 0x4c000700 }
3354 #undef A
3355 #undef OPERAND
3356 #undef MNEM
3357 #undef OP
3359 #ifndef CGEN_ASM_HASH_P
3360 #define CGEN_ASM_HASH_P(insn) 1
3361 #endif
3363 #ifndef CGEN_DIS_HASH_P
3364 #define CGEN_DIS_HASH_P(insn) 1
3365 #endif
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. */
3370 static int
3371 asm_hash_insn_p (insn)
3372 const CGEN_INSN *insn ATTRIBUTE_UNUSED;
3374 return CGEN_ASM_HASH_P (insn);
3377 static int
3378 dis_hash_insn_p (insn)
3379 const CGEN_INSN *insn;
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);
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
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. */
3402 #ifndef CGEN_DIS_HASH
3403 #define CGEN_DIS_HASH_SIZE 256
3404 #define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
3405 #endif
3407 /* The result is the hash value of the insn.
3408 Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */
3410 static unsigned int
3411 asm_hash_insn (mnem)
3412 const char * mnem;
3414 return CGEN_ASM_HASH (mnem);
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. */
3420 static unsigned int
3421 dis_hash_insn (buf, value)
3422 const char * buf ATTRIBUTE_UNUSED;
3423 CGEN_INSN_INT value ATTRIBUTE_UNUSED;
3425 return CGEN_DIS_HASH (buf, value);
3428 /* Set the recorded length of the insn in the CGEN_FIELDS struct. */
3430 static void
3431 set_fields_bitsize (CGEN_FIELDS *fields, int size)
3433 CGEN_FIELDS_BITSIZE (fields) = size;
3436 /* Function to call before using the operand instance table.
3437 This plugs the opcode entries and macro instructions into the cpu table. */
3439 void
3440 iq2000_cgen_init_opcode_table (CGEN_CPU_DESC cd)
3442 int i;
3443 int num_macros = (sizeof (iq2000_cgen_macro_insn_table) /
3444 sizeof (iq2000_cgen_macro_insn_table[0]));
3445 const CGEN_IBASE *ib = & iq2000_cgen_macro_insn_table[0];
3446 const CGEN_OPCODE *oc = & iq2000_cgen_macro_insn_opcode_table[0];
3447 CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
3449 memset (insns, 0, num_macros * sizeof (CGEN_INSN));
3450 for (i = 0; i < num_macros; ++i)
3452 insns[i].base = &ib[i];
3453 insns[i].opcode = &oc[i];
3454 iq2000_cgen_build_insn_regex (& insns[i]);
3456 cd->macro_insn_table.init_entries = insns;
3457 cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
3458 cd->macro_insn_table.num_init_entries = num_macros;
3460 oc = & iq2000_cgen_insn_opcode_table[0];
3461 insns = (CGEN_INSN *) cd->insn_table.init_entries;
3462 for (i = 0; i < MAX_INSNS; ++i)
3464 insns[i].opcode = &oc[i];
3465 iq2000_cgen_build_insn_regex (& insns[i]);
3468 cd->sizeof_fields = sizeof (CGEN_FIELDS);
3469 cd->set_fields_bitsize = set_fields_bitsize;
3471 cd->asm_hash_p = asm_hash_insn_p;
3472 cd->asm_hash = asm_hash_insn;
3473 cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
3475 cd->dis_hash_p = dis_hash_insn_p;
3476 cd->dis_hash = dis_hash_insn;
3477 cd->dis_hash_size = CGEN_DIS_HASH_SIZE;