1 /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */
2 /* Instruction opcode table for iq2000.
4 THIS FILE IS MACHINE GENERATED WITH CGEN.
6 Copyright (C) 1996-2017 Free Software Foundation, Inc.
8 This file is part of the GNU Binutils and/or GDB, the GNU debugger.
10 This file is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3, or (at your option)
15 It is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
18 License for more details.
20 You should have received a copy of the GNU General Public License along
21 with this program; if not, write to the Free Software Foundation, Inc.,
22 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
30 #include "iq2000-desc.h"
31 #include "iq2000-opc.h"
32 #include "libiberty.h"
34 /* The hash functions are recorded here to help keep assembler code out of
35 the disassembler and vice versa. */
37 static int asm_hash_insn_p (const CGEN_INSN *);
38 static unsigned int asm_hash_insn (const char *);
39 static int dis_hash_insn_p (const CGEN_INSN *);
40 static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
42 /* Instruction formats. */
44 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
45 static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
49 static const CGEN_IFMT ifmt_add2 ATTRIBUTE_UNUSED = {
50 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
53 static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = {
54 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
57 static const CGEN_IFMT ifmt_addi2 ATTRIBUTE_UNUSED = {
58 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
61 static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = {
62 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
65 static const CGEN_IFMT ifmt_ram ATTRIBUTE_UNUSED = {
66 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 } }
69 static const CGEN_IFMT ifmt_sll ATTRIBUTE_UNUSED = {
70 32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
73 static const CGEN_IFMT ifmt_sllv2 ATTRIBUTE_UNUSED = {
74 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
77 static const CGEN_IFMT ifmt_slmv2 ATTRIBUTE_UNUSED = {
78 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
81 static const CGEN_IFMT ifmt_slmv ATTRIBUTE_UNUSED = {
82 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
85 static const CGEN_IFMT ifmt_slti2 ATTRIBUTE_UNUSED = {
86 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
89 static const CGEN_IFMT ifmt_slti ATTRIBUTE_UNUSED = {
90 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
93 static const CGEN_IFMT ifmt_sra2 ATTRIBUTE_UNUSED = {
94 32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
97 static const CGEN_IFMT ifmt_bbi ATTRIBUTE_UNUSED = {
98 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
101 static const CGEN_IFMT ifmt_bbv ATTRIBUTE_UNUSED = {
102 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
105 static const CGEN_IFMT ifmt_bgez ATTRIBUTE_UNUSED = {
106 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
109 static const CGEN_IFMT ifmt_jalr ATTRIBUTE_UNUSED = {
110 32, 32, 0xfc1f07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
113 static const CGEN_IFMT ifmt_jr ATTRIBUTE_UNUSED = {
114 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
117 static const CGEN_IFMT ifmt_lb ATTRIBUTE_UNUSED = {
118 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
121 static const CGEN_IFMT ifmt_lui ATTRIBUTE_UNUSED = {
122 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
125 static const CGEN_IFMT ifmt_break ATTRIBUTE_UNUSED = {
126 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
129 static const CGEN_IFMT ifmt_syscall ATTRIBUTE_UNUSED = {
130 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } }
133 static const CGEN_IFMT ifmt_andoui ATTRIBUTE_UNUSED = {
134 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
137 static const CGEN_IFMT ifmt_andoui2 ATTRIBUTE_UNUSED = {
138 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
141 static const CGEN_IFMT ifmt_mrgb ATTRIBUTE_UNUSED = {
142 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 } }
145 static const CGEN_IFMT ifmt_mrgb2 ATTRIBUTE_UNUSED = {
146 32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
149 static const CGEN_IFMT ifmt_bc0f ATTRIBUTE_UNUSED = {
150 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
153 static const CGEN_IFMT ifmt_cfc0 ATTRIBUTE_UNUSED = {
154 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10_11) }, { 0 } }
157 static const CGEN_IFMT ifmt_chkhdr ATTRIBUTE_UNUSED = {
158 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
161 static const CGEN_IFMT ifmt_lulck ATTRIBUTE_UNUSED = {
162 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
165 static const CGEN_IFMT ifmt_pkrlr1 ATTRIBUTE_UNUSED = {
166 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_COUNT) }, { F (F_INDEX) }, { 0 } }
169 static const CGEN_IFMT ifmt_rfe ATTRIBUTE_UNUSED = {
170 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_25) }, { F (F_24_19) }, { F (F_FUNC) }, { 0 } }
173 static const CGEN_IFMT ifmt_j ATTRIBUTE_UNUSED = {
174 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } }
177 static const CGEN_IFMT ifmt_mrgbq10 ATTRIBUTE_UNUSED = {
178 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
181 static const CGEN_IFMT ifmt_mrgbq102 ATTRIBUTE_UNUSED = {
182 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
185 static const CGEN_IFMT ifmt_jq10 ATTRIBUTE_UNUSED = {
186 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
189 static const CGEN_IFMT ifmt_jalq10 ATTRIBUTE_UNUSED = {
190 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
193 static const CGEN_IFMT ifmt_avail ATTRIBUTE_UNUSED = {
194 32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
197 static const CGEN_IFMT ifmt_rbi ATTRIBUTE_UNUSED = {
198 32, 32, 0xfc000700, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
201 static const CGEN_IFMT ifmt_cam36 ATTRIBUTE_UNUSED = {
202 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 } }
205 static const CGEN_IFMT ifmt_cm32and ATTRIBUTE_UNUSED = {
206 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 } }
209 static const CGEN_IFMT ifmt_cm32rd ATTRIBUTE_UNUSED = {
210 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 } }
213 static const CGEN_IFMT ifmt_cm128ria3 ATTRIBUTE_UNUSED = {
214 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 } }
217 static const CGEN_IFMT ifmt_cm128ria4 ATTRIBUTE_UNUSED = {
218 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 } }
221 static const CGEN_IFMT ifmt_ctc ATTRIBUTE_UNUSED = {
222 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
227 #define A(a) (1 << CGEN_INSN_##a)
228 #define OPERAND(op) IQ2000_OPERAND_##op
229 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
230 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
232 /* The instruction table. */
234 static const CGEN_OPCODE iq2000_cgen_insn_opcode_table[MAX_INSNS] =
236 /* Special null first entry.
237 A `num' value of zero is thus invalid.
238 Also, the special `invalid' insn resides here. */
239 { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
240 /* add ${rd-rs},$rt */
243 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
244 & ifmt_add2, { 0x20 }
246 /* add $rd,$rs,$rt */
249 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
252 /* addi ${rt-rs},$lo16 */
255 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
256 & ifmt_addi2, { 0x20000000 }
258 /* addi $rt,$rs,$lo16 */
261 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
262 & ifmt_addi, { 0x20000000 }
264 /* addiu ${rt-rs},$lo16 */
267 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
268 & ifmt_addi2, { 0x24000000 }
270 /* addiu $rt,$rs,$lo16 */
273 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
274 & ifmt_addi, { 0x24000000 }
276 /* addu ${rd-rs},$rt */
279 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
280 & ifmt_add2, { 0x21 }
282 /* addu $rd,$rs,$rt */
285 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
288 /* ado16 ${rd-rs},$rt */
291 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
292 & ifmt_add2, { 0x29 }
294 /* ado16 $rd,$rs,$rt */
297 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
300 /* and ${rd-rs},$rt */
303 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
304 & ifmt_add2, { 0x24 }
306 /* and $rd,$rs,$rt */
309 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
312 /* andi ${rt-rs},$lo16 */
315 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
316 & ifmt_addi2, { 0x30000000 }
318 /* andi $rt,$rs,$lo16 */
321 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
322 & ifmt_addi, { 0x30000000 }
324 /* andoi ${rt-rs},$lo16 */
327 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
328 & ifmt_addi2, { 0xb0000000 }
330 /* andoi $rt,$rs,$lo16 */
333 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
334 & ifmt_addi, { 0xb0000000 }
336 /* nor ${rd-rs},$rt */
339 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
340 & ifmt_add2, { 0x27 }
342 /* nor $rd,$rs,$rt */
345 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
348 /* or ${rd-rs},$rt */
351 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
352 & ifmt_add2, { 0x25 }
357 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
360 /* ori ${rt-rs},$lo16 */
363 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
364 & ifmt_addi2, { 0x34000000 }
366 /* ori $rt,$rs,$lo16 */
369 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
370 & ifmt_addi, { 0x34000000 }
372 /* ram $rd,$rt,$shamt,$maskl,$maskr */
375 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), ',', OP (MASKL), ',', OP (MASKR), 0 } },
376 & ifmt_ram, { 0x9c000000 }
378 /* sll $rd,$rt,$shamt */
381 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
384 /* sllv ${rd-rt},$rs */
387 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
388 & ifmt_sllv2, { 0x4 }
390 /* sllv $rd,$rt,$rs */
393 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
396 /* slmv ${rd-rt},$rs,$shamt */
399 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
400 & ifmt_slmv2, { 0x1 }
402 /* slmv $rd,$rt,$rs,$shamt */
405 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
408 /* slt ${rd-rs},$rt */
411 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
412 & ifmt_add2, { 0x2a }
414 /* slt $rd,$rs,$rt */
417 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
420 /* slti ${rt-rs},$imm */
423 { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
424 & ifmt_slti2, { 0x28000000 }
426 /* slti $rt,$rs,$imm */
429 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
430 & ifmt_slti, { 0x28000000 }
432 /* sltiu ${rt-rs},$imm */
435 { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
436 & ifmt_slti2, { 0x2c000000 }
438 /* sltiu $rt,$rs,$imm */
441 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
442 & ifmt_slti, { 0x2c000000 }
444 /* sltu ${rd-rs},$rt */
447 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
448 & ifmt_add2, { 0x2b }
450 /* sltu $rd,$rs,$rt */
453 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
456 /* sra ${rd-rt},$shamt */
459 { { MNEM, ' ', OP (RD_RT), ',', OP (SHAMT), 0 } },
462 /* sra $rd,$rt,$shamt */
465 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
468 /* srav ${rd-rt},$rs */
471 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
472 & ifmt_sllv2, { 0x7 }
474 /* srav $rd,$rt,$rs */
477 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
480 /* srl $rd,$rt,$shamt */
483 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
486 /* srlv ${rd-rt},$rs */
489 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
490 & ifmt_sllv2, { 0x6 }
492 /* srlv $rd,$rt,$rs */
495 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
498 /* srmv ${rd-rt},$rs,$shamt */
501 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
502 & ifmt_slmv2, { 0x5 }
504 /* srmv $rd,$rt,$rs,$shamt */
507 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
510 /* sub ${rd-rs},$rt */
513 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
514 & ifmt_add2, { 0x22 }
516 /* sub $rd,$rs,$rt */
519 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
522 /* subu ${rd-rs},$rt */
525 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
526 & ifmt_add2, { 0x23 }
528 /* subu $rd,$rs,$rt */
531 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
534 /* xor ${rd-rs},$rt */
537 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
538 & ifmt_add2, { 0x26 }
540 /* xor $rd,$rs,$rt */
543 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
546 /* xori ${rt-rs},$lo16 */
549 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
550 & ifmt_addi2, { 0x38000000 }
552 /* xori $rt,$rs,$lo16 */
555 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
556 & ifmt_addi, { 0x38000000 }
558 /* bbi $rs($bitnum),$offset */
561 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
562 & ifmt_bbi, { 0x70000000 }
564 /* bbin $rs($bitnum),$offset */
567 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
568 & ifmt_bbi, { 0x78000000 }
570 /* bbv $rs,$rt,$offset */
573 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
574 & ifmt_bbv, { 0x74000000 }
576 /* bbvn $rs,$rt,$offset */
579 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
580 & ifmt_bbv, { 0x7c000000 }
582 /* beq $rs,$rt,$offset */
585 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
586 & ifmt_bbv, { 0x10000000 }
588 /* beql $rs,$rt,$offset */
591 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
592 & ifmt_bbv, { 0x50000000 }
594 /* bgez $rs,$offset */
597 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
598 & ifmt_bgez, { 0x4010000 }
600 /* bgezal $rs,$offset */
603 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
604 & ifmt_bgez, { 0x4110000 }
606 /* bgezall $rs,$offset */
609 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
610 & ifmt_bgez, { 0x4130000 }
612 /* bgezl $rs,$offset */
615 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
616 & ifmt_bgez, { 0x4030000 }
618 /* bltz $rs,$offset */
621 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
622 & ifmt_bgez, { 0x4000000 }
624 /* bltzl $rs,$offset */
627 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
628 & ifmt_bgez, { 0x4020000 }
630 /* bltzal $rs,$offset */
633 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
634 & ifmt_bgez, { 0x4100000 }
636 /* bltzall $rs,$offset */
639 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
640 & ifmt_bgez, { 0x4120000 }
642 /* bmb0 $rs,$rt,$offset */
645 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
646 & ifmt_bbv, { 0x60000000 }
648 /* bmb1 $rs,$rt,$offset */
651 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
652 & ifmt_bbv, { 0x64000000 }
654 /* bmb2 $rs,$rt,$offset */
657 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
658 & ifmt_bbv, { 0x68000000 }
660 /* bmb3 $rs,$rt,$offset */
663 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
664 & ifmt_bbv, { 0x6c000000 }
666 /* bne $rs,$rt,$offset */
669 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
670 & ifmt_bbv, { 0x14000000 }
672 /* bnel $rs,$rt,$offset */
675 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
676 & ifmt_bbv, { 0x54000000 }
681 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
687 { { MNEM, ' ', OP (RS), 0 } },
690 /* lb $rt,$lo16($base) */
693 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
694 & ifmt_lb, { 0x80000000 }
696 /* lbu $rt,$lo16($base) */
699 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
700 & ifmt_lb, { 0x90000000 }
702 /* lh $rt,$lo16($base) */
705 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
706 & ifmt_lb, { 0x84000000 }
708 /* lhu $rt,$lo16($base) */
711 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
712 & ifmt_lb, { 0x94000000 }
717 { { MNEM, ' ', OP (RT), ',', OP (HI16), 0 } },
718 & ifmt_lui, { 0x3c000000 }
720 /* lw $rt,$lo16($base) */
723 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
724 & ifmt_lb, { 0x8c000000 }
726 /* sb $rt,$lo16($base) */
729 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
730 & ifmt_lb, { 0xa0000000 }
732 /* sh $rt,$lo16($base) */
735 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
736 & ifmt_lb, { 0xa4000000 }
738 /* sw $rt,$lo16($base) */
741 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
742 & ifmt_lb, { 0xac000000 }
748 & ifmt_break, { 0xd }
754 & ifmt_syscall, { 0xc }
756 /* andoui $rt,$rs,$hi16 */
759 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
760 & ifmt_andoui, { 0xfc000000 }
762 /* andoui ${rt-rs},$hi16 */
765 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
766 & ifmt_andoui2, { 0xfc000000 }
768 /* orui ${rt-rs},$hi16 */
771 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
772 & ifmt_andoui2, { 0xbc000000 }
774 /* orui $rt,$rs,$hi16 */
777 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
778 & ifmt_andoui, { 0xbc000000 }
780 /* bgtz $rs,$offset */
783 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
784 & ifmt_bgez, { 0x1c000000 }
786 /* bgtzl $rs,$offset */
789 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
790 & ifmt_bgez, { 0x5c000000 }
792 /* blez $rs,$offset */
795 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
796 & ifmt_bgez, { 0x18000000 }
798 /* blezl $rs,$offset */
801 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
802 & ifmt_bgez, { 0x58000000 }
804 /* mrgb $rd,$rs,$rt,$mask */
807 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASK), 0 } },
808 & ifmt_mrgb, { 0x2d }
810 /* mrgb ${rd-rs},$rt,$mask */
813 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASK), 0 } },
814 & ifmt_mrgb2, { 0x2d }
816 /* bctxt $rs,$offset */
819 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
820 & ifmt_bgez, { 0x4060000 }
825 { { MNEM, ' ', OP (OFFSET), 0 } },
826 & ifmt_bc0f, { 0x41000000 }
831 { { MNEM, ' ', OP (OFFSET), 0 } },
832 & ifmt_bc0f, { 0x41020000 }
837 { { MNEM, ' ', OP (OFFSET), 0 } },
838 & ifmt_bc0f, { 0x4d000000 }
843 { { MNEM, ' ', OP (OFFSET), 0 } },
844 & ifmt_bc0f, { 0x4d020000 }
849 { { MNEM, ' ', OP (OFFSET), 0 } },
850 & ifmt_bc0f, { 0x41010000 }
855 { { MNEM, ' ', OP (OFFSET), 0 } },
856 & ifmt_bc0f, { 0x41030000 }
861 { { MNEM, ' ', OP (OFFSET), 0 } },
862 & ifmt_bc0f, { 0x4d010000 }
867 { { MNEM, ' ', OP (OFFSET), 0 } },
868 & ifmt_bc0f, { 0x4d030000 }
873 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
874 & ifmt_cfc0, { 0x40400000 }
879 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
880 & ifmt_cfc0, { 0x44400000 }
885 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
886 & ifmt_cfc0, { 0x48400000 }
891 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
892 & ifmt_cfc0, { 0x4c400000 }
897 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
898 & ifmt_chkhdr, { 0x4d200000 }
903 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
904 & ifmt_cfc0, { 0x40c00000 }
909 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
910 & ifmt_cfc0, { 0x44c00000 }
915 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
916 & ifmt_cfc0, { 0x48c00000 }
921 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
922 & ifmt_cfc0, { 0x4cc00000 }
927 { { MNEM, ' ', OP (RS), 0 } },
933 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
934 & ifmt_chkhdr, { 0x48200003 }
939 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
940 & ifmt_chkhdr, { 0x48200007 }
945 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
946 & ifmt_chkhdr, { 0x4820000b }
951 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
952 & ifmt_chkhdr, { 0x4820000f }
957 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
958 & ifmt_chkhdr, { 0x48200008 }
963 { { MNEM, ' ', OP (RT), 0 } },
964 & ifmt_lulck, { 0x48200004 }
969 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
970 & ifmt_chkhdr, { 0x48200002 }
975 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
976 & ifmt_chkhdr, { 0x48200006 }
981 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
982 & ifmt_chkhdr, { 0x4820000a }
987 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
988 & ifmt_chkhdr, { 0x4820000e }
993 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
994 & ifmt_chkhdr, { 0x48200001 }
999 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1000 & ifmt_chkhdr, { 0x48200005 }
1005 { { MNEM, ' ', OP (RT), 0 } },
1006 & ifmt_lulck, { 0x48200000 }
1011 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1012 & ifmt_cfc0, { 0x40000000 }
1017 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1018 & ifmt_cfc0, { 0x44000000 }
1023 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1024 & ifmt_cfc0, { 0x48000000 }
1029 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1030 & ifmt_cfc0, { 0x4c000000 }
1035 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1036 & ifmt_cfc0, { 0x40800000 }
1041 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1042 & ifmt_cfc0, { 0x44800000 }
1047 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1048 & ifmt_cfc0, { 0x48800000 }
1053 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1054 & ifmt_cfc0, { 0x4c800000 }
1059 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1060 & ifmt_chkhdr, { 0x4c200007 }
1062 /* pkrlr1 $rt,$_index,$count */
1065 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1066 & ifmt_pkrlr1, { 0x4fa00000 }
1068 /* pkrlr30 $rt,$_index,$count */
1071 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1072 & ifmt_pkrlr1, { 0x4fe00000 }
1077 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1078 & ifmt_chkhdr, { 0x4c200004 }
1080 /* rbr1 $rt,$_index,$count */
1083 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1084 & ifmt_pkrlr1, { 0x4f000000 }
1086 /* rbr30 $rt,$_index,$count */
1089 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1090 & ifmt_pkrlr1, { 0x4f400000 }
1096 & ifmt_rfe, { 0x42000010 }
1101 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1102 & ifmt_chkhdr, { 0x4c200006 }
1104 /* rxr1 $rt,$_index,$count */
1107 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1108 & ifmt_pkrlr1, { 0x4f800000 }
1110 /* rxr30 $rt,$_index,$count */
1113 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1114 & ifmt_pkrlr1, { 0x4fc00000 }
1120 & ifmt_syscall, { 0xe }
1125 { { MNEM, ' ', OP (RT), 0 } },
1126 & ifmt_lulck, { 0x48200010 }
1131 { { MNEM, ' ', OP (RT), 0 } },
1132 & ifmt_lulck, { 0x48200014 }
1137 { { MNEM, ' ', OP (RT), 0 } },
1138 & ifmt_lulck, { 0x48200016 }
1143 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1144 & ifmt_chkhdr, { 0x48200011 }
1149 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1150 & ifmt_chkhdr, { 0x48200015 }
1156 & ifmt_break, { 0x4c200008 }
1162 & ifmt_break, { 0x4c200009 }
1167 { { MNEM, ' ', OP (RT), 0 } },
1168 & ifmt_lulck, { 0x4c20000a }
1173 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1174 & ifmt_chkhdr, { 0x4c200000 }
1179 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1180 & ifmt_chkhdr, { 0x4c200001 }
1182 /* wbr1 $rt,$_index,$count */
1185 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1186 & ifmt_pkrlr1, { 0x4e000000 }
1188 /* wbr1u $rt,$_index,$count */
1191 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1192 & ifmt_pkrlr1, { 0x4e200000 }
1194 /* wbr30 $rt,$_index,$count */
1197 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1198 & ifmt_pkrlr1, { 0x4e400000 }
1200 /* wbr30u $rt,$_index,$count */
1203 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1204 & ifmt_pkrlr1, { 0x4e600000 }
1209 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1210 & ifmt_chkhdr, { 0x4c200002 }
1215 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1216 & ifmt_chkhdr, { 0x4c200003 }
1218 /* wxr1 $rt,$_index,$count */
1221 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1222 & ifmt_pkrlr1, { 0x4e800000 }
1224 /* wxr1u $rt,$_index,$count */
1227 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1228 & ifmt_pkrlr1, { 0x4ea00000 }
1230 /* wxr30 $rt,$_index,$count */
1233 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1234 & ifmt_pkrlr1, { 0x4ec00000 }
1236 /* wxr30u $rt,$_index,$count */
1239 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1240 & ifmt_pkrlr1, { 0x4ee00000 }
1242 /* ldw $rt,$lo16($base) */
1245 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1246 & ifmt_lb, { 0xc0000000 }
1248 /* sdw $rt,$lo16($base) */
1251 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1252 & ifmt_lb, { 0xe0000000 }
1257 { { MNEM, ' ', OP (JMPTARG), 0 } },
1258 & ifmt_j, { 0x8000000 }
1263 { { MNEM, ' ', OP (JMPTARG), 0 } },
1264 & ifmt_j, { 0xc000000 }
1266 /* bmb $rs,$rt,$offset */
1269 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1270 & ifmt_bbv, { 0xb4000000 }
1272 /* andoui $rt,$rs,$hi16 */
1275 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1276 & ifmt_andoui, { 0xbc000000 }
1278 /* andoui ${rt-rs},$hi16 */
1281 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1282 & ifmt_andoui2, { 0xbc000000 }
1284 /* orui $rt,$rs,$hi16 */
1287 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1288 & ifmt_andoui, { 0x3c000000 }
1290 /* orui ${rt-rs},$hi16 */
1293 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1294 & ifmt_andoui2, { 0x3c000000 }
1296 /* mrgb $rd,$rs,$rt,$maskq10 */
1299 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1300 & ifmt_mrgbq10, { 0x2d }
1302 /* mrgb ${rd-rs},$rt,$maskq10 */
1305 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1306 & ifmt_mrgbq102, { 0x2d }
1311 { { MNEM, ' ', OP (JMPTARG), 0 } },
1312 & ifmt_jq10, { 0x8000000 }
1314 /* jal $rt,$jmptarg */
1317 { { MNEM, ' ', OP (RT), ',', OP (JMPTARG), 0 } },
1318 & ifmt_jalq10, { 0xc000000 }
1323 { { MNEM, ' ', OP (JMPTARG), 0 } },
1324 & ifmt_jq10, { 0xc1f0000 }
1326 /* bbil $rs($bitnum),$offset */
1329 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1330 & ifmt_bbi, { 0xf0000000 }
1332 /* bbinl $rs($bitnum),$offset */
1335 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1336 & ifmt_bbi, { 0xf8000000 }
1338 /* bbvl $rs,$rt,$offset */
1341 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1342 & ifmt_bbv, { 0xf4000000 }
1344 /* bbvnl $rs,$rt,$offset */
1347 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1348 & ifmt_bbv, { 0xfc000000 }
1350 /* bgtzal $rs,$offset */
1353 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1354 & ifmt_bgez, { 0x4150000 }
1356 /* bgtzall $rs,$offset */
1359 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1360 & ifmt_bgez, { 0x4170000 }
1362 /* blezal $rs,$offset */
1365 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1366 & ifmt_bgez, { 0x4140000 }
1368 /* blezall $rs,$offset */
1371 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1372 & ifmt_bgez, { 0x4160000 }
1374 /* bgtz $rs,$offset */
1377 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1378 & ifmt_bgez, { 0x4050000 }
1380 /* bgtzl $rs,$offset */
1383 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1384 & ifmt_bgez, { 0x4070000 }
1386 /* blez $rs,$offset */
1389 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1390 & ifmt_bgez, { 0x4040000 }
1392 /* blezl $rs,$offset */
1395 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1396 & ifmt_bgez, { 0x4060000 }
1398 /* bmb $rs,$rt,$offset */
1401 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1402 & ifmt_bbv, { 0x18000000 }
1404 /* bmbl $rs,$rt,$offset */
1407 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1408 & ifmt_bbv, { 0x58000000 }
1410 /* bri $rs,$offset */
1413 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1414 & ifmt_bgez, { 0x4080000 }
1416 /* brv $rs,$offset */
1419 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1420 & ifmt_bgez, { 0x4090000 }
1422 /* bctx $rs,$offset */
1425 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1426 & ifmt_bgez, { 0x40c0000 }
1432 & ifmt_break, { 0xe }
1434 /* crc32 $rd,$rs,$rt */
1437 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1438 & ifmt_add, { 0x4c000014 }
1440 /* crc32b $rd,$rs,$rt */
1443 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1444 & ifmt_add, { 0x4c000015 }
1449 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1450 & ifmt_add, { 0x2e }
1455 { { MNEM, ' ', OP (RD), 0 } },
1456 & ifmt_avail, { 0x4c000024 }
1461 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1462 & ifmt_jalr, { 0x4c000025 }
1467 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1468 & ifmt_jalr, { 0x4c000027 }
1473 { { MNEM, ' ', OP (RD), 0 } },
1474 & ifmt_avail, { 0x4c00002c }
1479 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1480 & ifmt_chkhdr, { 0x4c000020 }
1485 { { MNEM, ' ', OP (RD), 0 } },
1486 & ifmt_avail, { 0x4c000022 }
1488 /* dbd $rd,$rs,$rt */
1491 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1492 & ifmt_add, { 0x4c000021 }
1497 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1498 & ifmt_jalr, { 0x4c000023 }
1500 /* chkhdr $rd,$rs */
1503 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1504 & ifmt_jalr, { 0x4c000026 }
1506 /* rba $rd,$rs,$rt */
1509 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1510 & ifmt_add, { 0x4c000008 }
1512 /* rbal $rd,$rs,$rt */
1515 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1516 & ifmt_add, { 0x4c000009 }
1518 /* rbar $rd,$rs,$rt */
1521 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1522 & ifmt_add, { 0x4c00000a }
1524 /* wba $rd,$rs,$rt */
1527 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1528 & ifmt_add, { 0x4c000010 }
1530 /* wbau $rd,$rs,$rt */
1533 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1534 & ifmt_add, { 0x4c000011 }
1536 /* wbac $rd,$rs,$rt */
1539 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1540 & ifmt_add, { 0x4c000012 }
1542 /* rbi $rd,$rs,$rt,$bytecount */
1545 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1546 & ifmt_rbi, { 0x4c000200 }
1548 /* rbil $rd,$rs,$rt,$bytecount */
1551 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1552 & ifmt_rbi, { 0x4c000300 }
1554 /* rbir $rd,$rs,$rt,$bytecount */
1557 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1558 & ifmt_rbi, { 0x4c000100 }
1560 /* wbi $rd,$rs,$rt,$bytecount */
1563 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1564 & ifmt_rbi, { 0x4c000600 }
1566 /* wbic $rd,$rs,$rt,$bytecount */
1569 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1570 & ifmt_rbi, { 0x4c000500 }
1572 /* wbiu $rd,$rs,$rt,$bytecount */
1575 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1576 & ifmt_rbi, { 0x4c000700 }
1578 /* pkrli $rd,$rs,$rt,$bytecount */
1581 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1582 & ifmt_rbi, { 0x48000000 }
1584 /* pkrlih $rd,$rs,$rt,$bytecount */
1587 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1588 & ifmt_rbi, { 0x48000200 }
1590 /* pkrliu $rd,$rs,$rt,$bytecount */
1593 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1594 & ifmt_rbi, { 0x48000100 }
1596 /* pkrlic $rd,$rs,$rt,$bytecount */
1599 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1600 & ifmt_rbi, { 0x48000300 }
1602 /* pkrla $rd,$rs,$rt */
1605 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1606 & ifmt_add, { 0x4c000028 }
1608 /* pkrlau $rd,$rs,$rt */
1611 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1612 & ifmt_add, { 0x4c000029 }
1614 /* pkrlah $rd,$rs,$rt */
1617 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1618 & ifmt_add, { 0x4c00002a }
1620 /* pkrlac $rd,$rs,$rt */
1623 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1624 & ifmt_add, { 0x4c00002b }
1629 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1630 & ifmt_chkhdr, { 0x4c000001 }
1635 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1636 & ifmt_chkhdr, { 0x4c000003 }
1641 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1642 & ifmt_chkhdr, { 0x4c000004 }
1647 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1648 & ifmt_chkhdr, { 0x4c000005 }
1650 /* swwr $rd,$rs,$rt */
1653 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1654 & ifmt_add, { 0x4c000006 }
1656 /* swwru $rd,$rs,$rt */
1659 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1660 & ifmt_add, { 0x4c000007 }
1665 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1666 & ifmt_chkhdr, { 0x4c00000c }
1671 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1672 & ifmt_chkhdr, { 0x4c00000d }
1674 /* cam36 $rd,$rt,${cam-z},${cam-y} */
1677 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), ',', OP (CAM_Y), 0 } },
1678 & ifmt_cam36, { 0x4c000400 }
1680 /* cam72 $rd,$rt,${cam-y},${cam-z} */
1683 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1684 & ifmt_cam36, { 0x4c000440 }
1686 /* cam144 $rd,$rt,${cam-y},${cam-z} */
1689 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1690 & ifmt_cam36, { 0x4c000480 }
1692 /* cam288 $rd,$rt,${cam-y},${cam-z} */
1695 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1696 & ifmt_cam36, { 0x4c0004c0 }
1698 /* cm32and $rd,$rs,$rt */
1701 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1702 & ifmt_cm32and, { 0x4c0000ab }
1704 /* cm32andn $rd,$rs,$rt */
1707 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1708 & ifmt_cm32and, { 0x4c0000a3 }
1710 /* cm32or $rd,$rs,$rt */
1713 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1714 & ifmt_cm32and, { 0x4c0000aa }
1716 /* cm32ra $rd,$rs,$rt */
1719 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1720 & ifmt_add, { 0x4c0000b0 }
1722 /* cm32rd $rd,$rt */
1725 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1726 & ifmt_cm32rd, { 0x4c0000a1 }
1728 /* cm32ri $rd,$rt */
1731 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1732 & ifmt_cm32rd, { 0x4c0000a4 }
1734 /* cm32rs $rd,$rs,$rt */
1737 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1738 & ifmt_add, { 0x4c0000a0 }
1740 /* cm32sa $rd,$rs,$rt */
1743 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1744 & ifmt_cm32and, { 0x4c0000b8 }
1746 /* cm32sd $rd,$rt */
1749 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1750 & ifmt_cm32rd, { 0x4c0000a9 }
1752 /* cm32si $rd,$rt */
1755 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1756 & ifmt_cm32rd, { 0x4c0000ac }
1758 /* cm32ss $rd,$rs,$rt */
1761 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1762 & ifmt_cm32and, { 0x4c0000a8 }
1764 /* cm32xor $rd,$rs,$rt */
1767 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1768 & ifmt_cm32and, { 0x4c0000a2 }
1770 /* cm64clr $rd,$rt */
1773 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1774 & ifmt_cm32rd, { 0x4c000085 }
1776 /* cm64ra $rd,$rs,$rt */
1779 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1780 & ifmt_cm32and, { 0x4c000090 }
1782 /* cm64rd $rd,$rt */
1785 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1786 & ifmt_cm32rd, { 0x4c000081 }
1788 /* cm64ri $rd,$rt */
1791 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1792 & ifmt_cm32rd, { 0x4c000084 }
1794 /* cm64ria2 $rd,$rs,$rt */
1797 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1798 & ifmt_cm32and, { 0x4c000094 }
1800 /* cm64rs $rd,$rs,$rt */
1803 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1804 & ifmt_cm32and, { 0x4c000080 }
1806 /* cm64sa $rd,$rs,$rt */
1809 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1810 & ifmt_cm32and, { 0x4c000098 }
1812 /* cm64sd $rd,$rt */
1815 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1816 & ifmt_cm32rd, { 0x4c000089 }
1818 /* cm64si $rd,$rt */
1821 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1822 & ifmt_cm32rd, { 0x4c00008c }
1824 /* cm64sia2 $rd,$rs,$rt */
1827 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1828 & ifmt_cm32and, { 0x4c00009c }
1830 /* cm64ss $rd,$rs,$rt */
1833 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1834 & ifmt_cm32and, { 0x4c000088 }
1836 /* cm128ria2 $rd,$rs,$rt */
1839 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1840 & ifmt_cm32and, { 0x4c000095 }
1842 /* cm128ria3 $rd,$rs,$rt,${cm-3z} */
1845 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1846 & ifmt_cm128ria3, { 0x4c000090 }
1848 /* cm128ria4 $rd,$rs,$rt,${cm-4z} */
1851 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1852 & ifmt_cm128ria4, { 0x4c0000b0 }
1854 /* cm128sia2 $rd,$rs,$rt */
1857 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1858 & ifmt_cm32and, { 0x4c00009d }
1860 /* cm128sia3 $rd,$rs,$rt,${cm-3z} */
1863 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1864 & ifmt_cm128ria3, { 0x4c000098 }
1866 /* cm128sia4 $rd,$rs,$rt,${cm-4z} */
1869 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1870 & ifmt_cm128ria4, { 0x4c0000b8 }
1872 /* cm128vsa $rd,$rs,$rt */
1875 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1876 & ifmt_cm32and, { 0x4c0000a6 }
1881 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1882 & ifmt_chkhdr, { 0x4c000000 }
1887 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
1888 & ifmt_ctc, { 0x4c000002 }
1897 /* Formats for ALIAS macro-insns. */
1899 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
1900 static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = {
1901 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1904 static const CGEN_IFMT ifmt_li ATTRIBUTE_UNUSED = {
1905 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1908 static const CGEN_IFMT ifmt_move ATTRIBUTE_UNUSED = {
1909 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1912 static const CGEN_IFMT ifmt_lb_base_0 ATTRIBUTE_UNUSED = {
1913 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1916 static const CGEN_IFMT ifmt_lbu_base_0 ATTRIBUTE_UNUSED = {
1917 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1920 static const CGEN_IFMT ifmt_lh_base_0 ATTRIBUTE_UNUSED = {
1921 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1924 static const CGEN_IFMT ifmt_lw_base_0 ATTRIBUTE_UNUSED = {
1925 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1928 static const CGEN_IFMT ifmt_m_add ATTRIBUTE_UNUSED = {
1929 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1932 static const CGEN_IFMT ifmt_m_addu ATTRIBUTE_UNUSED = {
1933 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1936 static const CGEN_IFMT ifmt_m_and ATTRIBUTE_UNUSED = {
1937 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1940 static const CGEN_IFMT ifmt_m_j ATTRIBUTE_UNUSED = {
1941 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1944 static const CGEN_IFMT ifmt_m_or ATTRIBUTE_UNUSED = {
1945 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1948 static const CGEN_IFMT ifmt_m_sll ATTRIBUTE_UNUSED = {
1949 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1952 static const CGEN_IFMT ifmt_m_slt ATTRIBUTE_UNUSED = {
1953 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1956 static const CGEN_IFMT ifmt_m_sltu ATTRIBUTE_UNUSED = {
1957 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1960 static const CGEN_IFMT ifmt_m_sra ATTRIBUTE_UNUSED = {
1961 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1964 static const CGEN_IFMT ifmt_m_srl ATTRIBUTE_UNUSED = {
1965 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1968 static const CGEN_IFMT ifmt_not ATTRIBUTE_UNUSED = {
1969 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1972 static const CGEN_IFMT ifmt_subi ATTRIBUTE_UNUSED = {
1973 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1976 static const CGEN_IFMT ifmt_m_sub ATTRIBUTE_UNUSED = {
1977 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1980 static const CGEN_IFMT ifmt_m_subu ATTRIBUTE_UNUSED = {
1981 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1984 static const CGEN_IFMT ifmt_sb_base_0 ATTRIBUTE_UNUSED = {
1985 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1988 static const CGEN_IFMT ifmt_sh_base_0 ATTRIBUTE_UNUSED = {
1989 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1992 static const CGEN_IFMT ifmt_sw_base_0 ATTRIBUTE_UNUSED = {
1993 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1996 static const CGEN_IFMT ifmt_m_xor ATTRIBUTE_UNUSED = {
1997 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2000 static const CGEN_IFMT ifmt_ldw_base_0 ATTRIBUTE_UNUSED = {
2001 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2004 static const CGEN_IFMT ifmt_sdw_base_0 ATTRIBUTE_UNUSED = {
2005 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2008 static const CGEN_IFMT ifmt_m_avail ATTRIBUTE_UNUSED = {
2009 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2012 static const CGEN_IFMT ifmt_m_cam36 ATTRIBUTE_UNUSED = {
2013 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 } }
2016 static const CGEN_IFMT ifmt_m_cam72 ATTRIBUTE_UNUSED = {
2017 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 } }
2020 static const CGEN_IFMT ifmt_m_cam144 ATTRIBUTE_UNUSED = {
2021 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 } }
2024 static const CGEN_IFMT ifmt_m_cam288 ATTRIBUTE_UNUSED = {
2025 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 } }
2028 static const CGEN_IFMT ifmt_m_cm32read ATTRIBUTE_UNUSED = {
2029 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2032 static const CGEN_IFMT ifmt_m_cm64read ATTRIBUTE_UNUSED = {
2033 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 } }
2036 static const CGEN_IFMT ifmt_m_cm32mlog ATTRIBUTE_UNUSED = {
2037 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 } }
2040 static const CGEN_IFMT ifmt_m_cm32and ATTRIBUTE_UNUSED = {
2041 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 } }
2044 static const CGEN_IFMT ifmt_m_cm32andn ATTRIBUTE_UNUSED = {
2045 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 } }
2048 static const CGEN_IFMT ifmt_m_cm32or ATTRIBUTE_UNUSED = {
2049 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 } }
2052 static const CGEN_IFMT ifmt_m_cm32ra ATTRIBUTE_UNUSED = {
2053 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2056 static const CGEN_IFMT ifmt_m_cm32rd ATTRIBUTE_UNUSED = {
2057 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 } }
2060 static const CGEN_IFMT ifmt_m_cm32ri ATTRIBUTE_UNUSED = {
2061 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 } }
2064 static const CGEN_IFMT ifmt_m_cm32rs ATTRIBUTE_UNUSED = {
2065 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2068 static const CGEN_IFMT ifmt_m_cm32sa ATTRIBUTE_UNUSED = {
2069 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 } }
2072 static const CGEN_IFMT ifmt_m_cm32sd ATTRIBUTE_UNUSED = {
2073 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 } }
2076 static const CGEN_IFMT ifmt_m_cm32si ATTRIBUTE_UNUSED = {
2077 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 } }
2080 static const CGEN_IFMT ifmt_m_cm32ss ATTRIBUTE_UNUSED = {
2081 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 } }
2084 static const CGEN_IFMT ifmt_m_cm32xor ATTRIBUTE_UNUSED = {
2085 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 } }
2088 static const CGEN_IFMT ifmt_m_cm64clr ATTRIBUTE_UNUSED = {
2089 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 } }
2092 static const CGEN_IFMT ifmt_m_cm64ra ATTRIBUTE_UNUSED = {
2093 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 } }
2096 static const CGEN_IFMT ifmt_m_cm64rd ATTRIBUTE_UNUSED = {
2097 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 } }
2100 static const CGEN_IFMT ifmt_m_cm64ri ATTRIBUTE_UNUSED = {
2101 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 } }
2104 static const CGEN_IFMT ifmt_m_cm64ria2 ATTRIBUTE_UNUSED = {
2105 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 } }
2108 static const CGEN_IFMT ifmt_m_cm64rs ATTRIBUTE_UNUSED = {
2109 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 } }
2112 static const CGEN_IFMT ifmt_m_cm64sa ATTRIBUTE_UNUSED = {
2113 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 } }
2116 static const CGEN_IFMT ifmt_m_cm64sd ATTRIBUTE_UNUSED = {
2117 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 } }
2120 static const CGEN_IFMT ifmt_m_cm64si ATTRIBUTE_UNUSED = {
2121 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 } }
2124 static const CGEN_IFMT ifmt_m_cm64sia2 ATTRIBUTE_UNUSED = {
2125 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 } }
2128 static const CGEN_IFMT ifmt_m_cm64ss ATTRIBUTE_UNUSED = {
2129 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 } }
2132 static const CGEN_IFMT ifmt_m_cm128ria2 ATTRIBUTE_UNUSED = {
2133 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 } }
2136 static const CGEN_IFMT ifmt_m_cm128ria3 ATTRIBUTE_UNUSED = {
2137 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 } }
2140 static const CGEN_IFMT ifmt_m_cm128ria4 ATTRIBUTE_UNUSED = {
2141 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 } }
2144 static const CGEN_IFMT ifmt_m_cm128sia2 ATTRIBUTE_UNUSED = {
2145 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 } }
2148 static const CGEN_IFMT ifmt_m_cm128sia3 ATTRIBUTE_UNUSED = {
2149 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 } }
2152 static const CGEN_IFMT ifmt_m_cm128sia4 ATTRIBUTE_UNUSED = {
2153 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 } }
2156 static const CGEN_IFMT ifmt_m_cmphdr ATTRIBUTE_UNUSED = {
2157 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2160 static const CGEN_IFMT ifmt_m_dbd ATTRIBUTE_UNUSED = {
2161 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2164 static const CGEN_IFMT ifmt_m2_dbd ATTRIBUTE_UNUSED = {
2165 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2168 static const CGEN_IFMT ifmt_m_dpwt ATTRIBUTE_UNUSED = {
2169 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2172 static const CGEN_IFMT ifmt_m_free ATTRIBUTE_UNUSED = {
2173 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2176 static const CGEN_IFMT ifmt_m_lock ATTRIBUTE_UNUSED = {
2177 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2180 static const CGEN_IFMT ifmt_m_pkrla ATTRIBUTE_UNUSED = {
2181 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2184 static const CGEN_IFMT ifmt_m_pkrlac ATTRIBUTE_UNUSED = {
2185 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2188 static const CGEN_IFMT ifmt_m_pkrlah ATTRIBUTE_UNUSED = {
2189 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2192 static const CGEN_IFMT ifmt_m_pkrlau ATTRIBUTE_UNUSED = {
2193 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2196 static const CGEN_IFMT ifmt_m_pkrli ATTRIBUTE_UNUSED = {
2197 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2200 static const CGEN_IFMT ifmt_m_pkrlic ATTRIBUTE_UNUSED = {
2201 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2204 static const CGEN_IFMT ifmt_m_pkrlih ATTRIBUTE_UNUSED = {
2205 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2208 static const CGEN_IFMT ifmt_m_pkrliu ATTRIBUTE_UNUSED = {
2209 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2212 static const CGEN_IFMT ifmt_m_rba ATTRIBUTE_UNUSED = {
2213 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2216 static const CGEN_IFMT ifmt_m_rbal ATTRIBUTE_UNUSED = {
2217 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2220 static const CGEN_IFMT ifmt_m_rbar ATTRIBUTE_UNUSED = {
2221 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2224 static const CGEN_IFMT ifmt_m_rbi ATTRIBUTE_UNUSED = {
2225 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2228 static const CGEN_IFMT ifmt_m_rbil ATTRIBUTE_UNUSED = {
2229 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2232 static const CGEN_IFMT ifmt_m_rbir ATTRIBUTE_UNUSED = {
2233 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2236 static const CGEN_IFMT ifmt_m_swwr ATTRIBUTE_UNUSED = {
2237 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2240 static const CGEN_IFMT ifmt_m_swwru ATTRIBUTE_UNUSED = {
2241 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2244 static const CGEN_IFMT ifmt_m_tstod ATTRIBUTE_UNUSED = {
2245 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2248 static const CGEN_IFMT ifmt_m_unlk ATTRIBUTE_UNUSED = {
2249 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2252 static const CGEN_IFMT ifmt_m_wba ATTRIBUTE_UNUSED = {
2253 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2256 static const CGEN_IFMT ifmt_m_wbac ATTRIBUTE_UNUSED = {
2257 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2260 static const CGEN_IFMT ifmt_m_wbau ATTRIBUTE_UNUSED = {
2261 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2264 static const CGEN_IFMT ifmt_m_wbi ATTRIBUTE_UNUSED = {
2265 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2268 static const CGEN_IFMT ifmt_m_wbic ATTRIBUTE_UNUSED = {
2269 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2272 static const CGEN_IFMT ifmt_m_wbiu ATTRIBUTE_UNUSED = {
2273 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2278 /* Each non-simple macro entry points to an array of expansion possibilities. */
2280 #define A(a) (1 << CGEN_INSN_##a)
2281 #define OPERAND(op) IQ2000_OPERAND_##op
2282 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
2283 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
2285 /* The macro instruction table. */
2287 static const CGEN_IBASE iq2000_cgen_macro_insn_table[] =
2291 -1, "nop", "nop", 32,
2292 { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2297 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2301 -1, "move", "move", 32,
2302 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2306 -1, "lb-base-0", "lb", 32,
2307 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2311 -1, "lbu-base-0", "lbu", 32,
2312 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2316 -1, "lh-base-0", "lh", 32,
2317 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2321 -1, "lw-base-0", "lw", 32,
2322 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2324 /* add $rt,$rs,$lo16 */
2326 -1, "m-add", "add", 32,
2327 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2329 /* addu $rt,$rs,$lo16 */
2331 -1, "m-addu", "addu", 32,
2332 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2334 /* and $rt,$rs,$lo16 */
2336 -1, "m-and", "and", 32,
2337 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2342 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2344 /* or $rt,$rs,$lo16 */
2346 -1, "m-or", "or", 32,
2347 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2349 /* sll $rd,$rt,$rs */
2351 -1, "m-sll", "sll", 32,
2352 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2354 /* slt $rt,$rs,$imm */
2356 -1, "m-slt", "slt", 32,
2357 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2359 /* sltu $rt,$rs,$imm */
2361 -1, "m-sltu", "sltu", 32,
2362 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2364 /* sra $rd,$rt,$rs */
2366 -1, "m-sra", "sra", 32,
2367 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2369 /* srl $rd,$rt,$rs */
2371 -1, "m-srl", "srl", 32,
2372 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2376 -1, "not", "not", 32,
2377 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2379 /* subi $rt,$rs,$mlo16 */
2381 -1, "subi", "subi", 32,
2382 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2384 /* sub $rt,$rs,$mlo16 */
2386 -1, "m-sub", "sub", 32,
2387 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2389 /* subu $rt,$rs,$mlo16 */
2391 -1, "m-subu", "subu", 32,
2392 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2396 -1, "sb-base-0", "sb", 32,
2397 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2401 -1, "sh-base-0", "sh", 32,
2402 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2406 -1, "sw-base-0", "sw", 32,
2407 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2409 /* xor $rt,$rs,$lo16 */
2411 -1, "m-xor", "xor", 32,
2412 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2416 -1, "ldw-base-0", "ldw", 32,
2417 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
2421 -1, "sdw-base-0", "sdw", 32,
2422 { 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
2426 -1, "m-avail", "avail", 32,
2427 { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2429 /* cam36 $rd,$rt,${cam-z} */
2431 -1, "m-cam36", "cam36", 32,
2432 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2434 /* cam72 $rd,$rt,${cam-z} */
2436 -1, "m-cam72", "cam72", 32,
2437 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2439 /* cam144 $rd,$rt,${cam-z} */
2441 -1, "m-cam144", "cam144", 32,
2442 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2444 /* cam288 $rd,$rt,${cam-z} */
2446 -1, "m-cam288", "cam288", 32,
2447 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2449 /* cm32read $rd,$rt */
2451 -1, "m-cm32read", "cm32read", 32,
2452 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2454 /* cm64read $rd,$rt */
2456 -1, "m-cm64read", "cm64read", 32,
2457 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2459 /* cm32mlog $rs,$rt */
2461 -1, "m-cm32mlog", "cm32mlog", 32,
2462 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2464 /* cm32and $rs,$rt */
2466 -1, "m-cm32and", "cm32and", 32,
2467 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2469 /* cm32andn $rs,$rt */
2471 -1, "m-cm32andn", "cm32andn", 32,
2472 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2474 /* cm32or $rs,$rt */
2476 -1, "m-cm32or", "cm32or", 32,
2477 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2479 /* cm32ra $rs,$rt */
2481 -1, "m-cm32ra", "cm32ra", 32,
2482 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2486 -1, "m-cm32rd", "cm32rd", 32,
2487 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2491 -1, "m-cm32ri", "cm32ri", 32,
2492 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2494 /* cm32rs $rs,$rt */
2496 -1, "m-cm32rs", "cm32rs", 32,
2497 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2499 /* cm32sa $rs,$rt */
2501 -1, "m-cm32sa", "cm32sa", 32,
2502 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2506 -1, "m-cm32sd", "cm32sd", 32,
2507 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2511 -1, "m-cm32si", "cm32si", 32,
2512 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2514 /* cm32ss $rs,$rt */
2516 -1, "m-cm32ss", "cm32ss", 32,
2517 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2519 /* cm32xor $rs,$rt */
2521 -1, "m-cm32xor", "cm32xor", 32,
2522 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2526 -1, "m-cm64clr", "cm64clr", 32,
2527 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2529 /* cm64ra $rs,$rt */
2531 -1, "m-cm64ra", "cm64ra", 32,
2532 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2536 -1, "m-cm64rd", "cm64rd", 32,
2537 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2541 -1, "m-cm64ri", "cm64ri", 32,
2542 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2544 /* cm64ria2 $rs,$rt */
2546 -1, "m-cm64ria2", "cm64ria2", 32,
2547 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2549 /* cm64rs $rs,$rt */
2551 -1, "m-cm64rs", "cm64rs", 32,
2552 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2554 /* cm64sa $rs,$rt */
2556 -1, "m-cm64sa", "cm64sa", 32,
2557 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2561 -1, "m-cm64sd", "cm64sd", 32,
2562 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2566 -1, "m-cm64si", "cm64si", 32,
2567 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2569 /* cm64sia2 $rs,$rt */
2571 -1, "m-cm64sia2", "cm64sia2", 32,
2572 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2574 /* cm64ss $rs,$rt */
2576 -1, "m-cm64ss", "cm64ss", 32,
2577 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2579 /* cm128ria2 $rs,$rt */
2581 -1, "m-cm128ria2", "cm128ria2", 32,
2582 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2584 /* cm128ria3 $rs,$rt,${cm-3z} */
2586 -1, "m-cm128ria3", "cm128ria3", 32,
2587 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2589 /* cm128ria4 $rs,$rt,${cm-4z} */
2591 -1, "m-cm128ria4", "cm128ria4", 32,
2592 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2594 /* cm128sia2 $rs,$rt */
2596 -1, "m-cm128sia2", "cm128sia2", 32,
2597 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2599 /* cm128sia3 $rs,$rt,${cm-3z} */
2601 -1, "m-cm128sia3", "cm128sia3", 32,
2602 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2604 /* cm128sia4 $rs,$rt,${cm-4z} */
2606 -1, "m-cm128sia4", "cm128sia4", 32,
2607 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2611 -1, "m-cmphdr", "cmphdr", 32,
2612 { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2616 -1, "m-dbd", "dbd", 32,
2617 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2621 -1, "m2-dbd", "dbd", 32,
2622 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2626 -1, "m-dpwt", "dpwt", 32,
2627 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2631 -1, "m-free", "free", 32,
2632 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2636 -1, "m-lock", "lock", 32,
2637 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2641 -1, "m-pkrla", "pkrla", 32,
2642 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2644 /* pkrlac $rs,$rt */
2646 -1, "m-pkrlac", "pkrlac", 32,
2647 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2649 /* pkrlah $rs,$rt */
2651 -1, "m-pkrlah", "pkrlah", 32,
2652 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2654 /* pkrlau $rs,$rt */
2656 -1, "m-pkrlau", "pkrlau", 32,
2657 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2659 /* pkrli $rs,$rt,$bytecount */
2661 -1, "m-pkrli", "pkrli", 32,
2662 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2664 /* pkrlic $rs,$rt,$bytecount */
2666 -1, "m-pkrlic", "pkrlic", 32,
2667 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2669 /* pkrlih $rs,$rt,$bytecount */
2671 -1, "m-pkrlih", "pkrlih", 32,
2672 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2674 /* pkrliu $rs,$rt,$bytecount */
2676 -1, "m-pkrliu", "pkrliu", 32,
2677 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2681 -1, "m-rba", "rba", 32,
2682 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2686 -1, "m-rbal", "rbal", 32,
2687 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2691 -1, "m-rbar", "rbar", 32,
2692 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2694 /* rbi $rs,$rt,$bytecount */
2696 -1, "m-rbi", "rbi", 32,
2697 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2699 /* rbil $rs,$rt,$bytecount */
2701 -1, "m-rbil", "rbil", 32,
2702 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2704 /* rbir $rs,$rt,$bytecount */
2706 -1, "m-rbir", "rbir", 32,
2707 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2711 -1, "m-swwr", "swwr", 32,
2712 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2716 -1, "m-swwru", "swwru", 32,
2717 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2721 -1, "m-tstod", "tstod", 32,
2722 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2726 -1, "m-unlk", "unlk", 32,
2727 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2731 -1, "m-wba", "wba", 32,
2732 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2736 -1, "m-wbac", "wbac", 32,
2737 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2741 -1, "m-wbau", "wbau", 32,
2742 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2744 /* wbi $rs,$rt,$bytecount */
2746 -1, "m-wbi", "wbi", 32,
2747 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2749 /* wbic $rs,$rt,$bytecount */
2751 -1, "m-wbic", "wbic", 32,
2752 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2754 /* wbiu $rs,$rt,$bytecount */
2756 -1, "m-wbiu", "wbiu", 32,
2757 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2761 /* The macro instruction opcode table. */
2763 static const CGEN_OPCODE iq2000_cgen_macro_insn_opcode_table[] =
2774 { { MNEM, ' ', OP (RS), ',', OP (IMM), 0 } },
2775 & ifmt_li, { 0x34000000 }
2780 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2781 & ifmt_move, { 0x25 }
2786 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2787 & ifmt_lb_base_0, { 0x80000000 }
2792 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2793 & ifmt_lbu_base_0, { 0x90000000 }
2798 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2799 & ifmt_lh_base_0, { 0x84000000 }
2804 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2805 & ifmt_lw_base_0, { 0x8c000000 }
2807 /* add $rt,$rs,$lo16 */
2810 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2811 & ifmt_m_add, { 0x20000000 }
2813 /* addu $rt,$rs,$lo16 */
2816 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2817 & ifmt_m_addu, { 0x24000000 }
2819 /* and $rt,$rs,$lo16 */
2822 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2823 & ifmt_m_and, { 0x30000000 }
2828 { { MNEM, ' ', OP (RS), 0 } },
2831 /* or $rt,$rs,$lo16 */
2834 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2835 & ifmt_m_or, { 0x34000000 }
2837 /* sll $rd,$rt,$rs */
2840 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2841 & ifmt_m_sll, { 0x4 }
2843 /* slt $rt,$rs,$imm */
2846 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2847 & ifmt_m_slt, { 0x28000000 }
2849 /* sltu $rt,$rs,$imm */
2852 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2853 & ifmt_m_sltu, { 0x2c000000 }
2855 /* sra $rd,$rt,$rs */
2858 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2859 & ifmt_m_sra, { 0x7 }
2861 /* srl $rd,$rt,$rs */
2864 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2865 & ifmt_m_srl, { 0x6 }
2870 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2871 & ifmt_not, { 0x27 }
2873 /* subi $rt,$rs,$mlo16 */
2876 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2877 & ifmt_subi, { 0x24000000 }
2879 /* sub $rt,$rs,$mlo16 */
2882 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2883 & ifmt_m_sub, { 0x24000000 }
2885 /* subu $rt,$rs,$mlo16 */
2888 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2889 & ifmt_m_subu, { 0x24000000 }
2894 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2895 & ifmt_sb_base_0, { 0xa0000000 }
2900 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2901 & ifmt_sh_base_0, { 0xa4000000 }
2906 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2907 & ifmt_sw_base_0, { 0xac000000 }
2909 /* xor $rt,$rs,$lo16 */
2912 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2913 & ifmt_m_xor, { 0x38000000 }
2918 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2919 & ifmt_ldw_base_0, { 0xc0000000 }
2924 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2925 & ifmt_sdw_base_0, { 0xe0000000 }
2931 & ifmt_m_avail, { 0x4c000024 }
2933 /* cam36 $rd,$rt,${cam-z} */
2936 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2937 & ifmt_m_cam36, { 0x4c000400 }
2939 /* cam72 $rd,$rt,${cam-z} */
2942 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2943 & ifmt_m_cam72, { 0x4c000440 }
2945 /* cam144 $rd,$rt,${cam-z} */
2948 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2949 & ifmt_m_cam144, { 0x4c000480 }
2951 /* cam288 $rd,$rt,${cam-z} */
2954 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2955 & ifmt_m_cam288, { 0x4c0004c0 }
2957 /* cm32read $rd,$rt */
2960 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2961 & ifmt_m_cm32read, { 0x4c0000b0 }
2963 /* cm64read $rd,$rt */
2966 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2967 & ifmt_m_cm64read, { 0x4c000090 }
2969 /* cm32mlog $rs,$rt */
2972 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2973 & ifmt_m_cm32mlog, { 0x4c0000aa }
2975 /* cm32and $rs,$rt */
2978 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2979 & ifmt_m_cm32and, { 0x4c0000ab }
2981 /* cm32andn $rs,$rt */
2984 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2985 & ifmt_m_cm32andn, { 0x4c0000a3 }
2987 /* cm32or $rs,$rt */
2990 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2991 & ifmt_m_cm32or, { 0x4c0000aa }
2993 /* cm32ra $rs,$rt */
2996 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2997 & ifmt_m_cm32ra, { 0x4c0000b0 }
3002 { { MNEM, ' ', OP (RT), 0 } },
3003 & ifmt_m_cm32rd, { 0x4c0000a1 }
3008 { { MNEM, ' ', OP (RT), 0 } },
3009 & ifmt_m_cm32ri, { 0x4c0000a4 }
3011 /* cm32rs $rs,$rt */
3014 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3015 & ifmt_m_cm32rs, { 0x4c0000a0 }
3017 /* cm32sa $rs,$rt */
3020 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3021 & ifmt_m_cm32sa, { 0x4c0000b8 }
3026 { { MNEM, ' ', OP (RT), 0 } },
3027 & ifmt_m_cm32sd, { 0x4c0000a9 }
3032 { { MNEM, ' ', OP (RT), 0 } },
3033 & ifmt_m_cm32si, { 0x4c0000ac }
3035 /* cm32ss $rs,$rt */
3038 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3039 & ifmt_m_cm32ss, { 0x4c0000a8 }
3041 /* cm32xor $rs,$rt */
3044 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3045 & ifmt_m_cm32xor, { 0x4c0000a2 }
3050 { { MNEM, ' ', OP (RT), 0 } },
3051 & ifmt_m_cm64clr, { 0x4c000085 }
3053 /* cm64ra $rs,$rt */
3056 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3057 & ifmt_m_cm64ra, { 0x4c000090 }
3062 { { MNEM, ' ', OP (RT), 0 } },
3063 & ifmt_m_cm64rd, { 0x4c000081 }
3068 { { MNEM, ' ', OP (RT), 0 } },
3069 & ifmt_m_cm64ri, { 0x4c000084 }
3071 /* cm64ria2 $rs,$rt */
3074 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3075 & ifmt_m_cm64ria2, { 0x4c000094 }
3077 /* cm64rs $rs,$rt */
3080 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3081 & ifmt_m_cm64rs, { 0x4c000080 }
3083 /* cm64sa $rs,$rt */
3086 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3087 & ifmt_m_cm64sa, { 0x4c000098 }
3092 { { MNEM, ' ', OP (RT), 0 } },
3093 & ifmt_m_cm64sd, { 0x4c000089 }
3098 { { MNEM, ' ', OP (RT), 0 } },
3099 & ifmt_m_cm64si, { 0x4c00008c }
3101 /* cm64sia2 $rs,$rt */
3104 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3105 & ifmt_m_cm64sia2, { 0x4c00009c }
3107 /* cm64ss $rs,$rt */
3110 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3111 & ifmt_m_cm64ss, { 0x4c000088 }
3113 /* cm128ria2 $rs,$rt */
3116 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3117 & ifmt_m_cm128ria2, { 0x4c000095 }
3119 /* cm128ria3 $rs,$rt,${cm-3z} */
3122 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3123 & ifmt_m_cm128ria3, { 0x4c000090 }
3125 /* cm128ria4 $rs,$rt,${cm-4z} */
3128 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3129 & ifmt_m_cm128ria4, { 0x4c0000b0 }
3131 /* cm128sia2 $rs,$rt */
3134 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3135 & ifmt_m_cm128sia2, { 0x4c00009d }
3137 /* cm128sia3 $rs,$rt,${cm-3z} */
3140 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3141 & ifmt_m_cm128sia3, { 0x4c000098 }
3143 /* cm128sia4 $rs,$rt,${cm-4z} */
3146 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3147 & ifmt_m_cm128sia4, { 0x4c0000b8 }
3153 & ifmt_m_cmphdr, { 0x4c00002c }
3158 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
3159 & ifmt_m_dbd, { 0x4c000021 }
3164 { { MNEM, ' ', OP (RT), 0 } },
3165 & ifmt_m2_dbd, { 0x4c000021 }
3170 { { MNEM, ' ', OP (RS), 0 } },
3171 & ifmt_m_dpwt, { 0x4c000023 }
3176 { { MNEM, ' ', OP (RS), 0 } },
3177 & ifmt_m_free, { 0x4c000025 }
3182 { { MNEM, ' ', OP (RT), 0 } },
3183 & ifmt_m_lock, { 0x4c000001 }
3188 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3189 & ifmt_m_pkrla, { 0x4c000028 }
3191 /* pkrlac $rs,$rt */
3194 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3195 & ifmt_m_pkrlac, { 0x4c00002b }
3197 /* pkrlah $rs,$rt */
3200 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3201 & ifmt_m_pkrlah, { 0x4c00002a }
3203 /* pkrlau $rs,$rt */
3206 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3207 & ifmt_m_pkrlau, { 0x4c000029 }
3209 /* pkrli $rs,$rt,$bytecount */
3212 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3213 & ifmt_m_pkrli, { 0x48000000 }
3215 /* pkrlic $rs,$rt,$bytecount */
3218 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3219 & ifmt_m_pkrlic, { 0x48000300 }
3221 /* pkrlih $rs,$rt,$bytecount */
3224 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3225 & ifmt_m_pkrlih, { 0x48000200 }
3227 /* pkrliu $rs,$rt,$bytecount */
3230 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3231 & ifmt_m_pkrliu, { 0x48000100 }
3236 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3237 & ifmt_m_rba, { 0x4c000008 }
3242 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3243 & ifmt_m_rbal, { 0x4c000009 }
3248 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3249 & ifmt_m_rbar, { 0x4c00000a }
3251 /* rbi $rs,$rt,$bytecount */
3254 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3255 & ifmt_m_rbi, { 0x4c000200 }
3257 /* rbil $rs,$rt,$bytecount */
3260 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3261 & ifmt_m_rbil, { 0x4c000300 }
3263 /* rbir $rs,$rt,$bytecount */
3266 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3267 & ifmt_m_rbir, { 0x4c000100 }
3272 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3273 & ifmt_m_swwr, { 0x4c000006 }
3278 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3279 & ifmt_m_swwru, { 0x4c000007 }
3284 { { MNEM, ' ', OP (RS), 0 } },
3285 & ifmt_m_tstod, { 0x4c000027 }
3290 { { MNEM, ' ', OP (RT), 0 } },
3291 & ifmt_m_unlk, { 0x4c000003 }
3296 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3297 & ifmt_m_wba, { 0x4c000010 }
3302 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3303 & ifmt_m_wbac, { 0x4c000012 }
3308 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3309 & ifmt_m_wbau, { 0x4c000011 }
3311 /* wbi $rs,$rt,$bytecount */
3314 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3315 & ifmt_m_wbi, { 0x4c000600 }
3317 /* wbic $rs,$rt,$bytecount */
3320 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3321 & ifmt_m_wbic, { 0x4c000500 }
3323 /* wbiu $rs,$rt,$bytecount */
3326 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3327 & ifmt_m_wbiu, { 0x4c000700 }
3336 #ifndef CGEN_ASM_HASH_P
3337 #define CGEN_ASM_HASH_P(insn) 1
3340 #ifndef CGEN_DIS_HASH_P
3341 #define CGEN_DIS_HASH_P(insn) 1
3344 /* Return non-zero if INSN is to be added to the hash table.
3345 Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file. */
3348 asm_hash_insn_p (const CGEN_INSN *insn ATTRIBUTE_UNUSED)
3350 return CGEN_ASM_HASH_P (insn);
3354 dis_hash_insn_p (const CGEN_INSN *insn)
3356 /* If building the hash table and the NO-DIS attribute is present,
3358 if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
3360 return CGEN_DIS_HASH_P (insn);
3363 #ifndef CGEN_ASM_HASH
3364 #define CGEN_ASM_HASH_SIZE 127
3365 #ifdef CGEN_MNEMONIC_OPERANDS
3366 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
3368 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
3372 /* It doesn't make much sense to provide a default here,
3373 but while this is under development we do.
3374 BUFFER is a pointer to the bytes of the insn, target order.
3375 VALUE is the first base_insn_bitsize bits as an int in host order. */
3377 #ifndef CGEN_DIS_HASH
3378 #define CGEN_DIS_HASH_SIZE 256
3379 #define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
3382 /* The result is the hash value of the insn.
3383 Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */
3386 asm_hash_insn (const char *mnem)
3388 return CGEN_ASM_HASH (mnem);
3391 /* BUF is a pointer to the bytes of the insn, target order.
3392 VALUE is the first base_insn_bitsize bits as an int in host order. */
3395 dis_hash_insn (const char *buf ATTRIBUTE_UNUSED,
3396 CGEN_INSN_INT value ATTRIBUTE_UNUSED)
3398 return CGEN_DIS_HASH (buf, value);
3401 /* Set the recorded length of the insn in the CGEN_FIELDS struct. */
3404 set_fields_bitsize (CGEN_FIELDS *fields, int size)
3406 CGEN_FIELDS_BITSIZE (fields) = size;
3409 /* Function to call before using the operand instance table.
3410 This plugs the opcode entries and macro instructions into the cpu table. */
3413 iq2000_cgen_init_opcode_table (CGEN_CPU_DESC cd)
3416 int num_macros = (sizeof (iq2000_cgen_macro_insn_table) /
3417 sizeof (iq2000_cgen_macro_insn_table[0]));
3418 const CGEN_IBASE *ib = & iq2000_cgen_macro_insn_table[0];
3419 const CGEN_OPCODE *oc = & iq2000_cgen_macro_insn_opcode_table[0];
3420 CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
3422 /* This test has been added to avoid a warning generated
3423 if memset is called with a third argument of value zero. */
3424 if (num_macros >= 1)
3425 memset (insns, 0, num_macros * sizeof (CGEN_INSN));
3426 for (i = 0; i < num_macros; ++i)
3428 insns[i].base = &ib[i];
3429 insns[i].opcode = &oc[i];
3430 iq2000_cgen_build_insn_regex (& insns[i]);
3432 cd->macro_insn_table.init_entries = insns;
3433 cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
3434 cd->macro_insn_table.num_init_entries = num_macros;
3436 oc = & iq2000_cgen_insn_opcode_table[0];
3437 insns = (CGEN_INSN *) cd->insn_table.init_entries;
3438 for (i = 0; i < MAX_INSNS; ++i)
3440 insns[i].opcode = &oc[i];
3441 iq2000_cgen_build_insn_regex (& insns[i]);
3444 cd->sizeof_fields = sizeof (CGEN_FIELDS);
3445 cd->set_fields_bitsize = set_fields_bitsize;
3447 cd->asm_hash_p = asm_hash_insn_p;
3448 cd->asm_hash = asm_hash_insn;
3449 cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
3451 cd->dis_hash_p = dis_hash_insn_p;
3452 cd->dis_hash = dis_hash_insn;
3453 cd->dis_hash_size = CGEN_DIS_HASH_SIZE;