Fix libctf ChangeLog date in most recent entry.
[binutils-gdb.git] / opcodes / iq2000-opc.c
blob594a4754f791c716f0efe9b409fb3d87e0850184
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-2020 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)
13 any later version.
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.
26 #include "sysdep.h"
27 #include "ansidecl.h"
28 #include "bfd.h"
29 #include "symcat.h"
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 = {
46 0, 0, 0x0, { { 0 } }
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 } }
225 #undef F
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 */
242 { 0, 0, 0, 0 },
243 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
244 & ifmt_add2, { 0x20 }
246 /* add $rd,$rs,$rt */
248 { 0, 0, 0, 0 },
249 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
250 & ifmt_add, { 0x20 }
252 /* addi ${rt-rs},$lo16 */
254 { 0, 0, 0, 0 },
255 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
256 & ifmt_addi2, { 0x20000000 }
258 /* addi $rt,$rs,$lo16 */
260 { 0, 0, 0, 0 },
261 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
262 & ifmt_addi, { 0x20000000 }
264 /* addiu ${rt-rs},$lo16 */
266 { 0, 0, 0, 0 },
267 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
268 & ifmt_addi2, { 0x24000000 }
270 /* addiu $rt,$rs,$lo16 */
272 { 0, 0, 0, 0 },
273 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
274 & ifmt_addi, { 0x24000000 }
276 /* addu ${rd-rs},$rt */
278 { 0, 0, 0, 0 },
279 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
280 & ifmt_add2, { 0x21 }
282 /* addu $rd,$rs,$rt */
284 { 0, 0, 0, 0 },
285 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
286 & ifmt_add, { 0x21 }
288 /* ado16 ${rd-rs},$rt */
290 { 0, 0, 0, 0 },
291 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
292 & ifmt_add2, { 0x29 }
294 /* ado16 $rd,$rs,$rt */
296 { 0, 0, 0, 0 },
297 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
298 & ifmt_add, { 0x29 }
300 /* and ${rd-rs},$rt */
302 { 0, 0, 0, 0 },
303 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
304 & ifmt_add2, { 0x24 }
306 /* and $rd,$rs,$rt */
308 { 0, 0, 0, 0 },
309 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
310 & ifmt_add, { 0x24 }
312 /* andi ${rt-rs},$lo16 */
314 { 0, 0, 0, 0 },
315 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
316 & ifmt_addi2, { 0x30000000 }
318 /* andi $rt,$rs,$lo16 */
320 { 0, 0, 0, 0 },
321 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
322 & ifmt_addi, { 0x30000000 }
324 /* andoi ${rt-rs},$lo16 */
326 { 0, 0, 0, 0 },
327 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
328 & ifmt_addi2, { 0xb0000000 }
330 /* andoi $rt,$rs,$lo16 */
332 { 0, 0, 0, 0 },
333 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
334 & ifmt_addi, { 0xb0000000 }
336 /* nor ${rd-rs},$rt */
338 { 0, 0, 0, 0 },
339 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
340 & ifmt_add2, { 0x27 }
342 /* nor $rd,$rs,$rt */
344 { 0, 0, 0, 0 },
345 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
346 & ifmt_add, { 0x27 }
348 /* or ${rd-rs},$rt */
350 { 0, 0, 0, 0 },
351 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
352 & ifmt_add2, { 0x25 }
354 /* or $rd,$rs,$rt */
356 { 0, 0, 0, 0 },
357 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
358 & ifmt_add, { 0x25 }
360 /* ori ${rt-rs},$lo16 */
362 { 0, 0, 0, 0 },
363 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
364 & ifmt_addi2, { 0x34000000 }
366 /* ori $rt,$rs,$lo16 */
368 { 0, 0, 0, 0 },
369 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
370 & ifmt_addi, { 0x34000000 }
372 /* ram $rd,$rt,$shamt,$maskl,$maskr */
374 { 0, 0, 0, 0 },
375 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), ',', OP (MASKL), ',', OP (MASKR), 0 } },
376 & ifmt_ram, { 0x9c000000 }
378 /* sll $rd,$rt,$shamt */
380 { 0, 0, 0, 0 },
381 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
382 & ifmt_sll, { 0x0 }
384 /* sllv ${rd-rt},$rs */
386 { 0, 0, 0, 0 },
387 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
388 & ifmt_sllv2, { 0x4 }
390 /* sllv $rd,$rt,$rs */
392 { 0, 0, 0, 0 },
393 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
394 & ifmt_add, { 0x4 }
396 /* slmv ${rd-rt},$rs,$shamt */
398 { 0, 0, 0, 0 },
399 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
400 & ifmt_slmv2, { 0x1 }
402 /* slmv $rd,$rt,$rs,$shamt */
404 { 0, 0, 0, 0 },
405 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
406 & ifmt_slmv, { 0x1 }
408 /* slt ${rd-rs},$rt */
410 { 0, 0, 0, 0 },
411 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
412 & ifmt_add2, { 0x2a }
414 /* slt $rd,$rs,$rt */
416 { 0, 0, 0, 0 },
417 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
418 & ifmt_add, { 0x2a }
420 /* slti ${rt-rs},$imm */
422 { 0, 0, 0, 0 },
423 { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
424 & ifmt_slti2, { 0x28000000 }
426 /* slti $rt,$rs,$imm */
428 { 0, 0, 0, 0 },
429 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
430 & ifmt_slti, { 0x28000000 }
432 /* sltiu ${rt-rs},$imm */
434 { 0, 0, 0, 0 },
435 { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
436 & ifmt_slti2, { 0x2c000000 }
438 /* sltiu $rt,$rs,$imm */
440 { 0, 0, 0, 0 },
441 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
442 & ifmt_slti, { 0x2c000000 }
444 /* sltu ${rd-rs},$rt */
446 { 0, 0, 0, 0 },
447 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
448 & ifmt_add2, { 0x2b }
450 /* sltu $rd,$rs,$rt */
452 { 0, 0, 0, 0 },
453 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
454 & ifmt_add, { 0x2b }
456 /* sra ${rd-rt},$shamt */
458 { 0, 0, 0, 0 },
459 { { MNEM, ' ', OP (RD_RT), ',', OP (SHAMT), 0 } },
460 & ifmt_sra2, { 0x3 }
462 /* sra $rd,$rt,$shamt */
464 { 0, 0, 0, 0 },
465 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
466 & ifmt_sll, { 0x3 }
468 /* srav ${rd-rt},$rs */
470 { 0, 0, 0, 0 },
471 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
472 & ifmt_sllv2, { 0x7 }
474 /* srav $rd,$rt,$rs */
476 { 0, 0, 0, 0 },
477 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
478 & ifmt_add, { 0x7 }
480 /* srl $rd,$rt,$shamt */
482 { 0, 0, 0, 0 },
483 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
484 & ifmt_sll, { 0x2 }
486 /* srlv ${rd-rt},$rs */
488 { 0, 0, 0, 0 },
489 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
490 & ifmt_sllv2, { 0x6 }
492 /* srlv $rd,$rt,$rs */
494 { 0, 0, 0, 0 },
495 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
496 & ifmt_add, { 0x6 }
498 /* srmv ${rd-rt},$rs,$shamt */
500 { 0, 0, 0, 0 },
501 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
502 & ifmt_slmv2, { 0x5 }
504 /* srmv $rd,$rt,$rs,$shamt */
506 { 0, 0, 0, 0 },
507 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
508 & ifmt_slmv, { 0x5 }
510 /* sub ${rd-rs},$rt */
512 { 0, 0, 0, 0 },
513 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
514 & ifmt_add2, { 0x22 }
516 /* sub $rd,$rs,$rt */
518 { 0, 0, 0, 0 },
519 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
520 & ifmt_add, { 0x22 }
522 /* subu ${rd-rs},$rt */
524 { 0, 0, 0, 0 },
525 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
526 & ifmt_add2, { 0x23 }
528 /* subu $rd,$rs,$rt */
530 { 0, 0, 0, 0 },
531 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
532 & ifmt_add, { 0x23 }
534 /* xor ${rd-rs},$rt */
536 { 0, 0, 0, 0 },
537 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
538 & ifmt_add2, { 0x26 }
540 /* xor $rd,$rs,$rt */
542 { 0, 0, 0, 0 },
543 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
544 & ifmt_add, { 0x26 }
546 /* xori ${rt-rs},$lo16 */
548 { 0, 0, 0, 0 },
549 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
550 & ifmt_addi2, { 0x38000000 }
552 /* xori $rt,$rs,$lo16 */
554 { 0, 0, 0, 0 },
555 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
556 & ifmt_addi, { 0x38000000 }
558 /* bbi $rs($bitnum),$offset */
560 { 0, 0, 0, 0 },
561 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
562 & ifmt_bbi, { 0x70000000 }
564 /* bbin $rs($bitnum),$offset */
566 { 0, 0, 0, 0 },
567 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
568 & ifmt_bbi, { 0x78000000 }
570 /* bbv $rs,$rt,$offset */
572 { 0, 0, 0, 0 },
573 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
574 & ifmt_bbv, { 0x74000000 }
576 /* bbvn $rs,$rt,$offset */
578 { 0, 0, 0, 0 },
579 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
580 & ifmt_bbv, { 0x7c000000 }
582 /* beq $rs,$rt,$offset */
584 { 0, 0, 0, 0 },
585 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
586 & ifmt_bbv, { 0x10000000 }
588 /* beql $rs,$rt,$offset */
590 { 0, 0, 0, 0 },
591 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
592 & ifmt_bbv, { 0x50000000 }
594 /* bgez $rs,$offset */
596 { 0, 0, 0, 0 },
597 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
598 & ifmt_bgez, { 0x4010000 }
600 /* bgezal $rs,$offset */
602 { 0, 0, 0, 0 },
603 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
604 & ifmt_bgez, { 0x4110000 }
606 /* bgezall $rs,$offset */
608 { 0, 0, 0, 0 },
609 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
610 & ifmt_bgez, { 0x4130000 }
612 /* bgezl $rs,$offset */
614 { 0, 0, 0, 0 },
615 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
616 & ifmt_bgez, { 0x4030000 }
618 /* bltz $rs,$offset */
620 { 0, 0, 0, 0 },
621 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
622 & ifmt_bgez, { 0x4000000 }
624 /* bltzl $rs,$offset */
626 { 0, 0, 0, 0 },
627 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
628 & ifmt_bgez, { 0x4020000 }
630 /* bltzal $rs,$offset */
632 { 0, 0, 0, 0 },
633 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
634 & ifmt_bgez, { 0x4100000 }
636 /* bltzall $rs,$offset */
638 { 0, 0, 0, 0 },
639 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
640 & ifmt_bgez, { 0x4120000 }
642 /* bmb0 $rs,$rt,$offset */
644 { 0, 0, 0, 0 },
645 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
646 & ifmt_bbv, { 0x60000000 }
648 /* bmb1 $rs,$rt,$offset */
650 { 0, 0, 0, 0 },
651 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
652 & ifmt_bbv, { 0x64000000 }
654 /* bmb2 $rs,$rt,$offset */
656 { 0, 0, 0, 0 },
657 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
658 & ifmt_bbv, { 0x68000000 }
660 /* bmb3 $rs,$rt,$offset */
662 { 0, 0, 0, 0 },
663 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
664 & ifmt_bbv, { 0x6c000000 }
666 /* bne $rs,$rt,$offset */
668 { 0, 0, 0, 0 },
669 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
670 & ifmt_bbv, { 0x14000000 }
672 /* bnel $rs,$rt,$offset */
674 { 0, 0, 0, 0 },
675 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
676 & ifmt_bbv, { 0x54000000 }
678 /* jalr $rd,$rs */
680 { 0, 0, 0, 0 },
681 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
682 & ifmt_jalr, { 0x9 }
684 /* jr $rs */
686 { 0, 0, 0, 0 },
687 { { MNEM, ' ', OP (RS), 0 } },
688 & ifmt_jr, { 0x8 }
690 /* lb $rt,$lo16($base) */
692 { 0, 0, 0, 0 },
693 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
694 & ifmt_lb, { 0x80000000 }
696 /* lbu $rt,$lo16($base) */
698 { 0, 0, 0, 0 },
699 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
700 & ifmt_lb, { 0x90000000 }
702 /* lh $rt,$lo16($base) */
704 { 0, 0, 0, 0 },
705 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
706 & ifmt_lb, { 0x84000000 }
708 /* lhu $rt,$lo16($base) */
710 { 0, 0, 0, 0 },
711 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
712 & ifmt_lb, { 0x94000000 }
714 /* lui $rt,$hi16 */
716 { 0, 0, 0, 0 },
717 { { MNEM, ' ', OP (RT), ',', OP (HI16), 0 } },
718 & ifmt_lui, { 0x3c000000 }
720 /* lw $rt,$lo16($base) */
722 { 0, 0, 0, 0 },
723 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
724 & ifmt_lb, { 0x8c000000 }
726 /* sb $rt,$lo16($base) */
728 { 0, 0, 0, 0 },
729 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
730 & ifmt_lb, { 0xa0000000 }
732 /* sh $rt,$lo16($base) */
734 { 0, 0, 0, 0 },
735 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
736 & ifmt_lb, { 0xa4000000 }
738 /* sw $rt,$lo16($base) */
740 { 0, 0, 0, 0 },
741 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
742 & ifmt_lb, { 0xac000000 }
744 /* break */
746 { 0, 0, 0, 0 },
747 { { MNEM, 0 } },
748 & ifmt_break, { 0xd }
750 /* syscall */
752 { 0, 0, 0, 0 },
753 { { MNEM, 0 } },
754 & ifmt_syscall, { 0xc }
756 /* andoui $rt,$rs,$hi16 */
758 { 0, 0, 0, 0 },
759 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
760 & ifmt_andoui, { 0xfc000000 }
762 /* andoui ${rt-rs},$hi16 */
764 { 0, 0, 0, 0 },
765 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
766 & ifmt_andoui2, { 0xfc000000 }
768 /* orui ${rt-rs},$hi16 */
770 { 0, 0, 0, 0 },
771 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
772 & ifmt_andoui2, { 0xbc000000 }
774 /* orui $rt,$rs,$hi16 */
776 { 0, 0, 0, 0 },
777 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
778 & ifmt_andoui, { 0xbc000000 }
780 /* bgtz $rs,$offset */
782 { 0, 0, 0, 0 },
783 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
784 & ifmt_bgez, { 0x1c000000 }
786 /* bgtzl $rs,$offset */
788 { 0, 0, 0, 0 },
789 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
790 & ifmt_bgez, { 0x5c000000 }
792 /* blez $rs,$offset */
794 { 0, 0, 0, 0 },
795 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
796 & ifmt_bgez, { 0x18000000 }
798 /* blezl $rs,$offset */
800 { 0, 0, 0, 0 },
801 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
802 & ifmt_bgez, { 0x58000000 }
804 /* mrgb $rd,$rs,$rt,$mask */
806 { 0, 0, 0, 0 },
807 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASK), 0 } },
808 & ifmt_mrgb, { 0x2d }
810 /* mrgb ${rd-rs},$rt,$mask */
812 { 0, 0, 0, 0 },
813 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASK), 0 } },
814 & ifmt_mrgb2, { 0x2d }
816 /* bctxt $rs,$offset */
818 { 0, 0, 0, 0 },
819 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
820 & ifmt_bgez, { 0x4060000 }
822 /* bc0f $offset */
824 { 0, 0, 0, 0 },
825 { { MNEM, ' ', OP (OFFSET), 0 } },
826 & ifmt_bc0f, { 0x41000000 }
828 /* bc0fl $offset */
830 { 0, 0, 0, 0 },
831 { { MNEM, ' ', OP (OFFSET), 0 } },
832 & ifmt_bc0f, { 0x41020000 }
834 /* bc3f $offset */
836 { 0, 0, 0, 0 },
837 { { MNEM, ' ', OP (OFFSET), 0 } },
838 & ifmt_bc0f, { 0x4d000000 }
840 /* bc3fl $offset */
842 { 0, 0, 0, 0 },
843 { { MNEM, ' ', OP (OFFSET), 0 } },
844 & ifmt_bc0f, { 0x4d020000 }
846 /* bc0t $offset */
848 { 0, 0, 0, 0 },
849 { { MNEM, ' ', OP (OFFSET), 0 } },
850 & ifmt_bc0f, { 0x41010000 }
852 /* bc0tl $offset */
854 { 0, 0, 0, 0 },
855 { { MNEM, ' ', OP (OFFSET), 0 } },
856 & ifmt_bc0f, { 0x41030000 }
858 /* bc3t $offset */
860 { 0, 0, 0, 0 },
861 { { MNEM, ' ', OP (OFFSET), 0 } },
862 & ifmt_bc0f, { 0x4d010000 }
864 /* bc3tl $offset */
866 { 0, 0, 0, 0 },
867 { { MNEM, ' ', OP (OFFSET), 0 } },
868 & ifmt_bc0f, { 0x4d030000 }
870 /* cfc0 $rt,$rd */
872 { 0, 0, 0, 0 },
873 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
874 & ifmt_cfc0, { 0x40400000 }
876 /* cfc1 $rt,$rd */
878 { 0, 0, 0, 0 },
879 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
880 & ifmt_cfc0, { 0x44400000 }
882 /* cfc2 $rt,$rd */
884 { 0, 0, 0, 0 },
885 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
886 & ifmt_cfc0, { 0x48400000 }
888 /* cfc3 $rt,$rd */
890 { 0, 0, 0, 0 },
891 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
892 & ifmt_cfc0, { 0x4c400000 }
894 /* chkhdr $rd,$rt */
896 { 0, 0, 0, 0 },
897 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
898 & ifmt_chkhdr, { 0x4d200000 }
900 /* ctc0 $rt,$rd */
902 { 0, 0, 0, 0 },
903 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
904 & ifmt_cfc0, { 0x40c00000 }
906 /* ctc1 $rt,$rd */
908 { 0, 0, 0, 0 },
909 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
910 & ifmt_cfc0, { 0x44c00000 }
912 /* ctc2 $rt,$rd */
914 { 0, 0, 0, 0 },
915 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
916 & ifmt_cfc0, { 0x48c00000 }
918 /* ctc3 $rt,$rd */
920 { 0, 0, 0, 0 },
921 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
922 & ifmt_cfc0, { 0x4cc00000 }
924 /* jcr $rs */
926 { 0, 0, 0, 0 },
927 { { MNEM, ' ', OP (RS), 0 } },
928 & ifmt_jr, { 0xa }
930 /* luc32 $rt,$rd */
932 { 0, 0, 0, 0 },
933 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
934 & ifmt_chkhdr, { 0x48200003 }
936 /* luc32l $rt,$rd */
938 { 0, 0, 0, 0 },
939 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
940 & ifmt_chkhdr, { 0x48200007 }
942 /* luc64 $rt,$rd */
944 { 0, 0, 0, 0 },
945 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
946 & ifmt_chkhdr, { 0x4820000b }
948 /* luc64l $rt,$rd */
950 { 0, 0, 0, 0 },
951 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
952 & ifmt_chkhdr, { 0x4820000f }
954 /* luk $rt,$rd */
956 { 0, 0, 0, 0 },
957 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
958 & ifmt_chkhdr, { 0x48200008 }
960 /* lulck $rt */
962 { 0, 0, 0, 0 },
963 { { MNEM, ' ', OP (RT), 0 } },
964 & ifmt_lulck, { 0x48200004 }
966 /* lum32 $rt,$rd */
968 { 0, 0, 0, 0 },
969 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
970 & ifmt_chkhdr, { 0x48200002 }
972 /* lum32l $rt,$rd */
974 { 0, 0, 0, 0 },
975 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
976 & ifmt_chkhdr, { 0x48200006 }
978 /* lum64 $rt,$rd */
980 { 0, 0, 0, 0 },
981 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
982 & ifmt_chkhdr, { 0x4820000a }
984 /* lum64l $rt,$rd */
986 { 0, 0, 0, 0 },
987 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
988 & ifmt_chkhdr, { 0x4820000e }
990 /* lur $rt,$rd */
992 { 0, 0, 0, 0 },
993 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
994 & ifmt_chkhdr, { 0x48200001 }
996 /* lurl $rt,$rd */
998 { 0, 0, 0, 0 },
999 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1000 & ifmt_chkhdr, { 0x48200005 }
1002 /* luulck $rt */
1004 { 0, 0, 0, 0 },
1005 { { MNEM, ' ', OP (RT), 0 } },
1006 & ifmt_lulck, { 0x48200000 }
1008 /* mfc0 $rt,$rd */
1010 { 0, 0, 0, 0 },
1011 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1012 & ifmt_cfc0, { 0x40000000 }
1014 /* mfc1 $rt,$rd */
1016 { 0, 0, 0, 0 },
1017 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1018 & ifmt_cfc0, { 0x44000000 }
1020 /* mfc2 $rt,$rd */
1022 { 0, 0, 0, 0 },
1023 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1024 & ifmt_cfc0, { 0x48000000 }
1026 /* mfc3 $rt,$rd */
1028 { 0, 0, 0, 0 },
1029 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1030 & ifmt_cfc0, { 0x4c000000 }
1032 /* mtc0 $rt,$rd */
1034 { 0, 0, 0, 0 },
1035 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1036 & ifmt_cfc0, { 0x40800000 }
1038 /* mtc1 $rt,$rd */
1040 { 0, 0, 0, 0 },
1041 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1042 & ifmt_cfc0, { 0x44800000 }
1044 /* mtc2 $rt,$rd */
1046 { 0, 0, 0, 0 },
1047 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1048 & ifmt_cfc0, { 0x48800000 }
1050 /* mtc3 $rt,$rd */
1052 { 0, 0, 0, 0 },
1053 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1054 & ifmt_cfc0, { 0x4c800000 }
1056 /* pkrl $rd,$rt */
1058 { 0, 0, 0, 0 },
1059 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1060 & ifmt_chkhdr, { 0x4c200007 }
1062 /* pkrlr1 $rt,$_index,$count */
1064 { 0, 0, 0, 0 },
1065 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1066 & ifmt_pkrlr1, { 0x4fa00000 }
1068 /* pkrlr30 $rt,$_index,$count */
1070 { 0, 0, 0, 0 },
1071 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1072 & ifmt_pkrlr1, { 0x4fe00000 }
1074 /* rb $rd,$rt */
1076 { 0, 0, 0, 0 },
1077 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1078 & ifmt_chkhdr, { 0x4c200004 }
1080 /* rbr1 $rt,$_index,$count */
1082 { 0, 0, 0, 0 },
1083 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1084 & ifmt_pkrlr1, { 0x4f000000 }
1086 /* rbr30 $rt,$_index,$count */
1088 { 0, 0, 0, 0 },
1089 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1090 & ifmt_pkrlr1, { 0x4f400000 }
1092 /* rfe */
1094 { 0, 0, 0, 0 },
1095 { { MNEM, 0 } },
1096 & ifmt_rfe, { 0x42000010 }
1098 /* rx $rd,$rt */
1100 { 0, 0, 0, 0 },
1101 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1102 & ifmt_chkhdr, { 0x4c200006 }
1104 /* rxr1 $rt,$_index,$count */
1106 { 0, 0, 0, 0 },
1107 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1108 & ifmt_pkrlr1, { 0x4f800000 }
1110 /* rxr30 $rt,$_index,$count */
1112 { 0, 0, 0, 0 },
1113 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1114 & ifmt_pkrlr1, { 0x4fc00000 }
1116 /* sleep */
1118 { 0, 0, 0, 0 },
1119 { { MNEM, 0 } },
1120 & ifmt_syscall, { 0xe }
1122 /* srrd $rt */
1124 { 0, 0, 0, 0 },
1125 { { MNEM, ' ', OP (RT), 0 } },
1126 & ifmt_lulck, { 0x48200010 }
1128 /* srrdl $rt */
1130 { 0, 0, 0, 0 },
1131 { { MNEM, ' ', OP (RT), 0 } },
1132 & ifmt_lulck, { 0x48200014 }
1134 /* srulck $rt */
1136 { 0, 0, 0, 0 },
1137 { { MNEM, ' ', OP (RT), 0 } },
1138 & ifmt_lulck, { 0x48200016 }
1140 /* srwr $rt,$rd */
1142 { 0, 0, 0, 0 },
1143 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1144 & ifmt_chkhdr, { 0x48200011 }
1146 /* srwru $rt,$rd */
1148 { 0, 0, 0, 0 },
1149 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1150 & ifmt_chkhdr, { 0x48200015 }
1152 /* trapqfl */
1154 { 0, 0, 0, 0 },
1155 { { MNEM, 0 } },
1156 & ifmt_break, { 0x4c200008 }
1158 /* trapqne */
1160 { 0, 0, 0, 0 },
1161 { { MNEM, 0 } },
1162 & ifmt_break, { 0x4c200009 }
1164 /* traprel $rt */
1166 { 0, 0, 0, 0 },
1167 { { MNEM, ' ', OP (RT), 0 } },
1168 & ifmt_lulck, { 0x4c20000a }
1170 /* wb $rd,$rt */
1172 { 0, 0, 0, 0 },
1173 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1174 & ifmt_chkhdr, { 0x4c200000 }
1176 /* wbu $rd,$rt */
1178 { 0, 0, 0, 0 },
1179 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1180 & ifmt_chkhdr, { 0x4c200001 }
1182 /* wbr1 $rt,$_index,$count */
1184 { 0, 0, 0, 0 },
1185 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1186 & ifmt_pkrlr1, { 0x4e000000 }
1188 /* wbr1u $rt,$_index,$count */
1190 { 0, 0, 0, 0 },
1191 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1192 & ifmt_pkrlr1, { 0x4e200000 }
1194 /* wbr30 $rt,$_index,$count */
1196 { 0, 0, 0, 0 },
1197 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1198 & ifmt_pkrlr1, { 0x4e400000 }
1200 /* wbr30u $rt,$_index,$count */
1202 { 0, 0, 0, 0 },
1203 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1204 & ifmt_pkrlr1, { 0x4e600000 }
1206 /* wx $rd,$rt */
1208 { 0, 0, 0, 0 },
1209 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1210 & ifmt_chkhdr, { 0x4c200002 }
1212 /* wxu $rd,$rt */
1214 { 0, 0, 0, 0 },
1215 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1216 & ifmt_chkhdr, { 0x4c200003 }
1218 /* wxr1 $rt,$_index,$count */
1220 { 0, 0, 0, 0 },
1221 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1222 & ifmt_pkrlr1, { 0x4e800000 }
1224 /* wxr1u $rt,$_index,$count */
1226 { 0, 0, 0, 0 },
1227 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1228 & ifmt_pkrlr1, { 0x4ea00000 }
1230 /* wxr30 $rt,$_index,$count */
1232 { 0, 0, 0, 0 },
1233 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1234 & ifmt_pkrlr1, { 0x4ec00000 }
1236 /* wxr30u $rt,$_index,$count */
1238 { 0, 0, 0, 0 },
1239 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
1240 & ifmt_pkrlr1, { 0x4ee00000 }
1242 /* ldw $rt,$lo16($base) */
1244 { 0, 0, 0, 0 },
1245 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1246 & ifmt_lb, { 0xc0000000 }
1248 /* sdw $rt,$lo16($base) */
1250 { 0, 0, 0, 0 },
1251 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1252 & ifmt_lb, { 0xe0000000 }
1254 /* j $jmptarg */
1256 { 0, 0, 0, 0 },
1257 { { MNEM, ' ', OP (JMPTARG), 0 } },
1258 & ifmt_j, { 0x8000000 }
1260 /* jal $jmptarg */
1262 { 0, 0, 0, 0 },
1263 { { MNEM, ' ', OP (JMPTARG), 0 } },
1264 & ifmt_j, { 0xc000000 }
1266 /* bmb $rs,$rt,$offset */
1268 { 0, 0, 0, 0 },
1269 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1270 & ifmt_bbv, { 0xb4000000 }
1272 /* andoui $rt,$rs,$hi16 */
1274 { 0, 0, 0, 0 },
1275 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1276 & ifmt_andoui, { 0xbc000000 }
1278 /* andoui ${rt-rs},$hi16 */
1280 { 0, 0, 0, 0 },
1281 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1282 & ifmt_andoui2, { 0xbc000000 }
1284 /* orui $rt,$rs,$hi16 */
1286 { 0, 0, 0, 0 },
1287 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1288 & ifmt_andoui, { 0x3c000000 }
1290 /* orui ${rt-rs},$hi16 */
1292 { 0, 0, 0, 0 },
1293 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1294 & ifmt_andoui2, { 0x3c000000 }
1296 /* mrgb $rd,$rs,$rt,$maskq10 */
1298 { 0, 0, 0, 0 },
1299 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1300 & ifmt_mrgbq10, { 0x2d }
1302 /* mrgb ${rd-rs},$rt,$maskq10 */
1304 { 0, 0, 0, 0 },
1305 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1306 & ifmt_mrgbq102, { 0x2d }
1308 /* j $jmptarg */
1310 { 0, 0, 0, 0 },
1311 { { MNEM, ' ', OP (JMPTARG), 0 } },
1312 & ifmt_jq10, { 0x8000000 }
1314 /* jal $rt,$jmptarg */
1316 { 0, 0, 0, 0 },
1317 { { MNEM, ' ', OP (RT), ',', OP (JMPTARG), 0 } },
1318 & ifmt_jalq10, { 0xc000000 }
1320 /* jal $jmptarg */
1322 { 0, 0, 0, 0 },
1323 { { MNEM, ' ', OP (JMPTARG), 0 } },
1324 & ifmt_jq10, { 0xc1f0000 }
1326 /* bbil $rs($bitnum),$offset */
1328 { 0, 0, 0, 0 },
1329 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1330 & ifmt_bbi, { 0xf0000000 }
1332 /* bbinl $rs($bitnum),$offset */
1334 { 0, 0, 0, 0 },
1335 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1336 & ifmt_bbi, { 0xf8000000 }
1338 /* bbvl $rs,$rt,$offset */
1340 { 0, 0, 0, 0 },
1341 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1342 & ifmt_bbv, { 0xf4000000 }
1344 /* bbvnl $rs,$rt,$offset */
1346 { 0, 0, 0, 0 },
1347 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1348 & ifmt_bbv, { 0xfc000000 }
1350 /* bgtzal $rs,$offset */
1352 { 0, 0, 0, 0 },
1353 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1354 & ifmt_bgez, { 0x4150000 }
1356 /* bgtzall $rs,$offset */
1358 { 0, 0, 0, 0 },
1359 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1360 & ifmt_bgez, { 0x4170000 }
1362 /* blezal $rs,$offset */
1364 { 0, 0, 0, 0 },
1365 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1366 & ifmt_bgez, { 0x4140000 }
1368 /* blezall $rs,$offset */
1370 { 0, 0, 0, 0 },
1371 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1372 & ifmt_bgez, { 0x4160000 }
1374 /* bgtz $rs,$offset */
1376 { 0, 0, 0, 0 },
1377 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1378 & ifmt_bgez, { 0x4050000 }
1380 /* bgtzl $rs,$offset */
1382 { 0, 0, 0, 0 },
1383 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1384 & ifmt_bgez, { 0x4070000 }
1386 /* blez $rs,$offset */
1388 { 0, 0, 0, 0 },
1389 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1390 & ifmt_bgez, { 0x4040000 }
1392 /* blezl $rs,$offset */
1394 { 0, 0, 0, 0 },
1395 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1396 & ifmt_bgez, { 0x4060000 }
1398 /* bmb $rs,$rt,$offset */
1400 { 0, 0, 0, 0 },
1401 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1402 & ifmt_bbv, { 0x18000000 }
1404 /* bmbl $rs,$rt,$offset */
1406 { 0, 0, 0, 0 },
1407 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1408 & ifmt_bbv, { 0x58000000 }
1410 /* bri $rs,$offset */
1412 { 0, 0, 0, 0 },
1413 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1414 & ifmt_bgez, { 0x4080000 }
1416 /* brv $rs,$offset */
1418 { 0, 0, 0, 0 },
1419 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1420 & ifmt_bgez, { 0x4090000 }
1422 /* bctx $rs,$offset */
1424 { 0, 0, 0, 0 },
1425 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1426 & ifmt_bgez, { 0x40c0000 }
1428 /* yield */
1430 { 0, 0, 0, 0 },
1431 { { MNEM, 0 } },
1432 & ifmt_break, { 0xe }
1434 /* crc32 $rd,$rs,$rt */
1436 { 0, 0, 0, 0 },
1437 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1438 & ifmt_add, { 0x4c000014 }
1440 /* crc32b $rd,$rs,$rt */
1442 { 0, 0, 0, 0 },
1443 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1444 & ifmt_add, { 0x4c000015 }
1446 /* cnt1s $rd,$rs */
1448 { 0, 0, 0, 0 },
1449 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1450 & ifmt_add, { 0x2e }
1452 /* avail $rd */
1454 { 0, 0, 0, 0 },
1455 { { MNEM, ' ', OP (RD), 0 } },
1456 & ifmt_avail, { 0x4c000024 }
1458 /* free $rd,$rs */
1460 { 0, 0, 0, 0 },
1461 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1462 & ifmt_jalr, { 0x4c000025 }
1464 /* tstod $rd,$rs */
1466 { 0, 0, 0, 0 },
1467 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1468 & ifmt_jalr, { 0x4c000027 }
1470 /* cmphdr $rd */
1472 { 0, 0, 0, 0 },
1473 { { MNEM, ' ', OP (RD), 0 } },
1474 & ifmt_avail, { 0x4c00002c }
1476 /* mcid $rd,$rt */
1478 { 0, 0, 0, 0 },
1479 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1480 & ifmt_chkhdr, { 0x4c000020 }
1482 /* dba $rd */
1484 { 0, 0, 0, 0 },
1485 { { MNEM, ' ', OP (RD), 0 } },
1486 & ifmt_avail, { 0x4c000022 }
1488 /* dbd $rd,$rs,$rt */
1490 { 0, 0, 0, 0 },
1491 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1492 & ifmt_add, { 0x4c000021 }
1494 /* dpwt $rd,$rs */
1496 { 0, 0, 0, 0 },
1497 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1498 & ifmt_jalr, { 0x4c000023 }
1500 /* chkhdr $rd,$rs */
1502 { 0, 0, 0, 0 },
1503 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1504 & ifmt_jalr, { 0x4c000026 }
1506 /* rba $rd,$rs,$rt */
1508 { 0, 0, 0, 0 },
1509 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1510 & ifmt_add, { 0x4c000008 }
1512 /* rbal $rd,$rs,$rt */
1514 { 0, 0, 0, 0 },
1515 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1516 & ifmt_add, { 0x4c000009 }
1518 /* rbar $rd,$rs,$rt */
1520 { 0, 0, 0, 0 },
1521 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1522 & ifmt_add, { 0x4c00000a }
1524 /* wba $rd,$rs,$rt */
1526 { 0, 0, 0, 0 },
1527 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1528 & ifmt_add, { 0x4c000010 }
1530 /* wbau $rd,$rs,$rt */
1532 { 0, 0, 0, 0 },
1533 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1534 & ifmt_add, { 0x4c000011 }
1536 /* wbac $rd,$rs,$rt */
1538 { 0, 0, 0, 0 },
1539 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1540 & ifmt_add, { 0x4c000012 }
1542 /* rbi $rd,$rs,$rt,$bytecount */
1544 { 0, 0, 0, 0 },
1545 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1546 & ifmt_rbi, { 0x4c000200 }
1548 /* rbil $rd,$rs,$rt,$bytecount */
1550 { 0, 0, 0, 0 },
1551 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1552 & ifmt_rbi, { 0x4c000300 }
1554 /* rbir $rd,$rs,$rt,$bytecount */
1556 { 0, 0, 0, 0 },
1557 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1558 & ifmt_rbi, { 0x4c000100 }
1560 /* wbi $rd,$rs,$rt,$bytecount */
1562 { 0, 0, 0, 0 },
1563 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1564 & ifmt_rbi, { 0x4c000600 }
1566 /* wbic $rd,$rs,$rt,$bytecount */
1568 { 0, 0, 0, 0 },
1569 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1570 & ifmt_rbi, { 0x4c000500 }
1572 /* wbiu $rd,$rs,$rt,$bytecount */
1574 { 0, 0, 0, 0 },
1575 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1576 & ifmt_rbi, { 0x4c000700 }
1578 /* pkrli $rd,$rs,$rt,$bytecount */
1580 { 0, 0, 0, 0 },
1581 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1582 & ifmt_rbi, { 0x48000000 }
1584 /* pkrlih $rd,$rs,$rt,$bytecount */
1586 { 0, 0, 0, 0 },
1587 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1588 & ifmt_rbi, { 0x48000200 }
1590 /* pkrliu $rd,$rs,$rt,$bytecount */
1592 { 0, 0, 0, 0 },
1593 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1594 & ifmt_rbi, { 0x48000100 }
1596 /* pkrlic $rd,$rs,$rt,$bytecount */
1598 { 0, 0, 0, 0 },
1599 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1600 & ifmt_rbi, { 0x48000300 }
1602 /* pkrla $rd,$rs,$rt */
1604 { 0, 0, 0, 0 },
1605 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1606 & ifmt_add, { 0x4c000028 }
1608 /* pkrlau $rd,$rs,$rt */
1610 { 0, 0, 0, 0 },
1611 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1612 & ifmt_add, { 0x4c000029 }
1614 /* pkrlah $rd,$rs,$rt */
1616 { 0, 0, 0, 0 },
1617 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1618 & ifmt_add, { 0x4c00002a }
1620 /* pkrlac $rd,$rs,$rt */
1622 { 0, 0, 0, 0 },
1623 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1624 & ifmt_add, { 0x4c00002b }
1626 /* lock $rd,$rt */
1628 { 0, 0, 0, 0 },
1629 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1630 & ifmt_chkhdr, { 0x4c000001 }
1632 /* unlk $rd,$rt */
1634 { 0, 0, 0, 0 },
1635 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1636 & ifmt_chkhdr, { 0x4c000003 }
1638 /* swrd $rd,$rt */
1640 { 0, 0, 0, 0 },
1641 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1642 & ifmt_chkhdr, { 0x4c000004 }
1644 /* swrdl $rd,$rt */
1646 { 0, 0, 0, 0 },
1647 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1648 & ifmt_chkhdr, { 0x4c000005 }
1650 /* swwr $rd,$rs,$rt */
1652 { 0, 0, 0, 0 },
1653 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1654 & ifmt_add, { 0x4c000006 }
1656 /* swwru $rd,$rs,$rt */
1658 { 0, 0, 0, 0 },
1659 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1660 & ifmt_add, { 0x4c000007 }
1662 /* dwrd $rd,$rt */
1664 { 0, 0, 0, 0 },
1665 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1666 & ifmt_chkhdr, { 0x4c00000c }
1668 /* dwrdl $rd,$rt */
1670 { 0, 0, 0, 0 },
1671 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1672 & ifmt_chkhdr, { 0x4c00000d }
1674 /* cam36 $rd,$rt,${cam-z},${cam-y} */
1676 { 0, 0, 0, 0 },
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} */
1682 { 0, 0, 0, 0 },
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} */
1688 { 0, 0, 0, 0 },
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} */
1694 { 0, 0, 0, 0 },
1695 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1696 & ifmt_cam36, { 0x4c0004c0 }
1698 /* cm32and $rd,$rs,$rt */
1700 { 0, 0, 0, 0 },
1701 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1702 & ifmt_cm32and, { 0x4c0000ab }
1704 /* cm32andn $rd,$rs,$rt */
1706 { 0, 0, 0, 0 },
1707 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1708 & ifmt_cm32and, { 0x4c0000a3 }
1710 /* cm32or $rd,$rs,$rt */
1712 { 0, 0, 0, 0 },
1713 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1714 & ifmt_cm32and, { 0x4c0000aa }
1716 /* cm32ra $rd,$rs,$rt */
1718 { 0, 0, 0, 0 },
1719 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1720 & ifmt_add, { 0x4c0000b0 }
1722 /* cm32rd $rd,$rt */
1724 { 0, 0, 0, 0 },
1725 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1726 & ifmt_cm32rd, { 0x4c0000a1 }
1728 /* cm32ri $rd,$rt */
1730 { 0, 0, 0, 0 },
1731 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1732 & ifmt_cm32rd, { 0x4c0000a4 }
1734 /* cm32rs $rd,$rs,$rt */
1736 { 0, 0, 0, 0 },
1737 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1738 & ifmt_add, { 0x4c0000a0 }
1740 /* cm32sa $rd,$rs,$rt */
1742 { 0, 0, 0, 0 },
1743 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1744 & ifmt_cm32and, { 0x4c0000b8 }
1746 /* cm32sd $rd,$rt */
1748 { 0, 0, 0, 0 },
1749 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1750 & ifmt_cm32rd, { 0x4c0000a9 }
1752 /* cm32si $rd,$rt */
1754 { 0, 0, 0, 0 },
1755 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1756 & ifmt_cm32rd, { 0x4c0000ac }
1758 /* cm32ss $rd,$rs,$rt */
1760 { 0, 0, 0, 0 },
1761 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1762 & ifmt_cm32and, { 0x4c0000a8 }
1764 /* cm32xor $rd,$rs,$rt */
1766 { 0, 0, 0, 0 },
1767 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1768 & ifmt_cm32and, { 0x4c0000a2 }
1770 /* cm64clr $rd,$rt */
1772 { 0, 0, 0, 0 },
1773 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1774 & ifmt_cm32rd, { 0x4c000085 }
1776 /* cm64ra $rd,$rs,$rt */
1778 { 0, 0, 0, 0 },
1779 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1780 & ifmt_cm32and, { 0x4c000090 }
1782 /* cm64rd $rd,$rt */
1784 { 0, 0, 0, 0 },
1785 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1786 & ifmt_cm32rd, { 0x4c000081 }
1788 /* cm64ri $rd,$rt */
1790 { 0, 0, 0, 0 },
1791 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1792 & ifmt_cm32rd, { 0x4c000084 }
1794 /* cm64ria2 $rd,$rs,$rt */
1796 { 0, 0, 0, 0 },
1797 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1798 & ifmt_cm32and, { 0x4c000094 }
1800 /* cm64rs $rd,$rs,$rt */
1802 { 0, 0, 0, 0 },
1803 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1804 & ifmt_cm32and, { 0x4c000080 }
1806 /* cm64sa $rd,$rs,$rt */
1808 { 0, 0, 0, 0 },
1809 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1810 & ifmt_cm32and, { 0x4c000098 }
1812 /* cm64sd $rd,$rt */
1814 { 0, 0, 0, 0 },
1815 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1816 & ifmt_cm32rd, { 0x4c000089 }
1818 /* cm64si $rd,$rt */
1820 { 0, 0, 0, 0 },
1821 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1822 & ifmt_cm32rd, { 0x4c00008c }
1824 /* cm64sia2 $rd,$rs,$rt */
1826 { 0, 0, 0, 0 },
1827 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1828 & ifmt_cm32and, { 0x4c00009c }
1830 /* cm64ss $rd,$rs,$rt */
1832 { 0, 0, 0, 0 },
1833 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1834 & ifmt_cm32and, { 0x4c000088 }
1836 /* cm128ria2 $rd,$rs,$rt */
1838 { 0, 0, 0, 0 },
1839 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1840 & ifmt_cm32and, { 0x4c000095 }
1842 /* cm128ria3 $rd,$rs,$rt,${cm-3z} */
1844 { 0, 0, 0, 0 },
1845 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1846 & ifmt_cm128ria3, { 0x4c000090 }
1848 /* cm128ria4 $rd,$rs,$rt,${cm-4z} */
1850 { 0, 0, 0, 0 },
1851 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1852 & ifmt_cm128ria4, { 0x4c0000b0 }
1854 /* cm128sia2 $rd,$rs,$rt */
1856 { 0, 0, 0, 0 },
1857 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1858 & ifmt_cm32and, { 0x4c00009d }
1860 /* cm128sia3 $rd,$rs,$rt,${cm-3z} */
1862 { 0, 0, 0, 0 },
1863 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1864 & ifmt_cm128ria3, { 0x4c000098 }
1866 /* cm128sia4 $rd,$rs,$rt,${cm-4z} */
1868 { 0, 0, 0, 0 },
1869 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1870 & ifmt_cm128ria4, { 0x4c0000b8 }
1872 /* cm128vsa $rd,$rs,$rt */
1874 { 0, 0, 0, 0 },
1875 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1876 & ifmt_cm32and, { 0x4c0000a6 }
1878 /* cfc $rd,$rt */
1880 { 0, 0, 0, 0 },
1881 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1882 & ifmt_chkhdr, { 0x4c000000 }
1884 /* ctc $rs,$rt */
1886 { 0, 0, 0, 0 },
1887 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
1888 & ifmt_ctc, { 0x4c000002 }
1892 #undef A
1893 #undef OPERAND
1894 #undef MNEM
1895 #undef OP
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 } }
2276 #undef F
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[] =
2289 /* nop */
2291 -1, "nop", "nop", 32,
2292 { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2294 /* li $rs,$imm */
2296 -1, "li", "li", 32,
2297 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2299 /* move $rd,$rt */
2301 -1, "move", "move", 32,
2302 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2304 /* lb $rt,$lo16 */
2306 -1, "lb-base-0", "lb", 32,
2307 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2309 /* lbu $rt,$lo16 */
2311 -1, "lbu-base-0", "lbu", 32,
2312 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2314 /* lh $rt,$lo16 */
2316 -1, "lh-base-0", "lh", 32,
2317 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2319 /* lw $rt,$lo16 */
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 } } } }
2339 /* j $rs */
2341 -1, "m-j", "j", 32,
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 } } } }
2374 /* not $rd,$rt */
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 } } } }
2394 /* sb $rt,$lo16 */
2396 -1, "sb-base-0", "sb", 32,
2397 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2399 /* sh $rt,$lo16 */
2401 -1, "sh-base-0", "sh", 32,
2402 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
2404 /* sw $rt,$lo16 */
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 } } } }
2414 /* ldw $rt,$lo16 */
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 } } } }
2419 /* sdw $rt,$lo16 */
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 } } } }
2424 /* avail */
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 } } } }
2484 /* cm32rd $rt */
2486 -1, "m-cm32rd", "cm32rd", 32,
2487 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2489 /* cm32ri $rt */
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 } } } }
2504 /* cm32sd $rt */
2506 -1, "m-cm32sd", "cm32sd", 32,
2507 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2509 /* cm32si $rt */
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 } } } }
2524 /* cm64clr $rt */
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 } } } }
2534 /* cm64rd $rt */
2536 -1, "m-cm64rd", "cm64rd", 32,
2537 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2539 /* cm64ri $rt */
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 } } } }
2559 /* cm64sd $rt */
2561 -1, "m-cm64sd", "cm64sd", 32,
2562 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2564 /* cm64si $rt */
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 } } } }
2609 /* cmphdr */
2611 -1, "m-cmphdr", "cmphdr", 32,
2612 { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2614 /* dbd $rd,$rt */
2616 -1, "m-dbd", "dbd", 32,
2617 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2619 /* dbd $rt */
2621 -1, "m2-dbd", "dbd", 32,
2622 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2624 /* dpwt $rs */
2626 -1, "m-dpwt", "dpwt", 32,
2627 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2629 /* free $rs */
2631 -1, "m-free", "free", 32,
2632 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2634 /* lock $rt */
2636 -1, "m-lock", "lock", 32,
2637 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2639 /* pkrla $rs,$rt */
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 } } } }
2679 /* rba $rs,$rt */
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 } } } }
2684 /* rbal $rs,$rt */
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 } } } }
2689 /* rbar $rs,$rt */
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 } } } }
2709 /* swwr $rs,$rt */
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 } } } }
2714 /* swwru $rs,$rt */
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 } } } }
2719 /* tstod $rs */
2721 -1, "m-tstod", "tstod", 32,
2722 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2724 /* unlk $rt */
2726 -1, "m-unlk", "unlk", 32,
2727 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
2729 /* wba $rs,$rt */
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 } } } }
2734 /* wbac $rs,$rt */
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 } } } }
2739 /* wbau $rs,$rt */
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[] =
2765 /* nop */
2767 { 0, 0, 0, 0 },
2768 { { MNEM, 0 } },
2769 & ifmt_nop, { 0x0 }
2771 /* li $rs,$imm */
2773 { 0, 0, 0, 0 },
2774 { { MNEM, ' ', OP (RS), ',', OP (IMM), 0 } },
2775 & ifmt_li, { 0x34000000 }
2777 /* move $rd,$rt */
2779 { 0, 0, 0, 0 },
2780 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2781 & ifmt_move, { 0x25 }
2783 /* lb $rt,$lo16 */
2785 { 0, 0, 0, 0 },
2786 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2787 & ifmt_lb_base_0, { 0x80000000 }
2789 /* lbu $rt,$lo16 */
2791 { 0, 0, 0, 0 },
2792 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2793 & ifmt_lbu_base_0, { 0x90000000 }
2795 /* lh $rt,$lo16 */
2797 { 0, 0, 0, 0 },
2798 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2799 & ifmt_lh_base_0, { 0x84000000 }
2801 /* lw $rt,$lo16 */
2803 { 0, 0, 0, 0 },
2804 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2805 & ifmt_lw_base_0, { 0x8c000000 }
2807 /* add $rt,$rs,$lo16 */
2809 { 0, 0, 0, 0 },
2810 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2811 & ifmt_m_add, { 0x20000000 }
2813 /* addu $rt,$rs,$lo16 */
2815 { 0, 0, 0, 0 },
2816 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2817 & ifmt_m_addu, { 0x24000000 }
2819 /* and $rt,$rs,$lo16 */
2821 { 0, 0, 0, 0 },
2822 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2823 & ifmt_m_and, { 0x30000000 }
2825 /* j $rs */
2827 { 0, 0, 0, 0 },
2828 { { MNEM, ' ', OP (RS), 0 } },
2829 & ifmt_m_j, { 0x8 }
2831 /* or $rt,$rs,$lo16 */
2833 { 0, 0, 0, 0 },
2834 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2835 & ifmt_m_or, { 0x34000000 }
2837 /* sll $rd,$rt,$rs */
2839 { 0, 0, 0, 0 },
2840 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2841 & ifmt_m_sll, { 0x4 }
2843 /* slt $rt,$rs,$imm */
2845 { 0, 0, 0, 0 },
2846 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2847 & ifmt_m_slt, { 0x28000000 }
2849 /* sltu $rt,$rs,$imm */
2851 { 0, 0, 0, 0 },
2852 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2853 & ifmt_m_sltu, { 0x2c000000 }
2855 /* sra $rd,$rt,$rs */
2857 { 0, 0, 0, 0 },
2858 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2859 & ifmt_m_sra, { 0x7 }
2861 /* srl $rd,$rt,$rs */
2863 { 0, 0, 0, 0 },
2864 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2865 & ifmt_m_srl, { 0x6 }
2867 /* not $rd,$rt */
2869 { 0, 0, 0, 0 },
2870 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2871 & ifmt_not, { 0x27 }
2873 /* subi $rt,$rs,$mlo16 */
2875 { 0, 0, 0, 0 },
2876 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2877 & ifmt_subi, { 0x24000000 }
2879 /* sub $rt,$rs,$mlo16 */
2881 { 0, 0, 0, 0 },
2882 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2883 & ifmt_m_sub, { 0x24000000 }
2885 /* subu $rt,$rs,$mlo16 */
2887 { 0, 0, 0, 0 },
2888 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2889 & ifmt_m_subu, { 0x24000000 }
2891 /* sb $rt,$lo16 */
2893 { 0, 0, 0, 0 },
2894 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2895 & ifmt_sb_base_0, { 0xa0000000 }
2897 /* sh $rt,$lo16 */
2899 { 0, 0, 0, 0 },
2900 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2901 & ifmt_sh_base_0, { 0xa4000000 }
2903 /* sw $rt,$lo16 */
2905 { 0, 0, 0, 0 },
2906 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2907 & ifmt_sw_base_0, { 0xac000000 }
2909 /* xor $rt,$rs,$lo16 */
2911 { 0, 0, 0, 0 },
2912 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2913 & ifmt_m_xor, { 0x38000000 }
2915 /* ldw $rt,$lo16 */
2917 { 0, 0, 0, 0 },
2918 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2919 & ifmt_ldw_base_0, { 0xc0000000 }
2921 /* sdw $rt,$lo16 */
2923 { 0, 0, 0, 0 },
2924 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2925 & ifmt_sdw_base_0, { 0xe0000000 }
2927 /* avail */
2929 { 0, 0, 0, 0 },
2930 { { MNEM, 0 } },
2931 & ifmt_m_avail, { 0x4c000024 }
2933 /* cam36 $rd,$rt,${cam-z} */
2935 { 0, 0, 0, 0 },
2936 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2937 & ifmt_m_cam36, { 0x4c000400 }
2939 /* cam72 $rd,$rt,${cam-z} */
2941 { 0, 0, 0, 0 },
2942 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2943 & ifmt_m_cam72, { 0x4c000440 }
2945 /* cam144 $rd,$rt,${cam-z} */
2947 { 0, 0, 0, 0 },
2948 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2949 & ifmt_m_cam144, { 0x4c000480 }
2951 /* cam288 $rd,$rt,${cam-z} */
2953 { 0, 0, 0, 0 },
2954 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2955 & ifmt_m_cam288, { 0x4c0004c0 }
2957 /* cm32read $rd,$rt */
2959 { 0, 0, 0, 0 },
2960 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2961 & ifmt_m_cm32read, { 0x4c0000b0 }
2963 /* cm64read $rd,$rt */
2965 { 0, 0, 0, 0 },
2966 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2967 & ifmt_m_cm64read, { 0x4c000090 }
2969 /* cm32mlog $rs,$rt */
2971 { 0, 0, 0, 0 },
2972 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2973 & ifmt_m_cm32mlog, { 0x4c0000aa }
2975 /* cm32and $rs,$rt */
2977 { 0, 0, 0, 0 },
2978 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2979 & ifmt_m_cm32and, { 0x4c0000ab }
2981 /* cm32andn $rs,$rt */
2983 { 0, 0, 0, 0 },
2984 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2985 & ifmt_m_cm32andn, { 0x4c0000a3 }
2987 /* cm32or $rs,$rt */
2989 { 0, 0, 0, 0 },
2990 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2991 & ifmt_m_cm32or, { 0x4c0000aa }
2993 /* cm32ra $rs,$rt */
2995 { 0, 0, 0, 0 },
2996 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2997 & ifmt_m_cm32ra, { 0x4c0000b0 }
2999 /* cm32rd $rt */
3001 { 0, 0, 0, 0 },
3002 { { MNEM, ' ', OP (RT), 0 } },
3003 & ifmt_m_cm32rd, { 0x4c0000a1 }
3005 /* cm32ri $rt */
3007 { 0, 0, 0, 0 },
3008 { { MNEM, ' ', OP (RT), 0 } },
3009 & ifmt_m_cm32ri, { 0x4c0000a4 }
3011 /* cm32rs $rs,$rt */
3013 { 0, 0, 0, 0 },
3014 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3015 & ifmt_m_cm32rs, { 0x4c0000a0 }
3017 /* cm32sa $rs,$rt */
3019 { 0, 0, 0, 0 },
3020 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3021 & ifmt_m_cm32sa, { 0x4c0000b8 }
3023 /* cm32sd $rt */
3025 { 0, 0, 0, 0 },
3026 { { MNEM, ' ', OP (RT), 0 } },
3027 & ifmt_m_cm32sd, { 0x4c0000a9 }
3029 /* cm32si $rt */
3031 { 0, 0, 0, 0 },
3032 { { MNEM, ' ', OP (RT), 0 } },
3033 & ifmt_m_cm32si, { 0x4c0000ac }
3035 /* cm32ss $rs,$rt */
3037 { 0, 0, 0, 0 },
3038 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3039 & ifmt_m_cm32ss, { 0x4c0000a8 }
3041 /* cm32xor $rs,$rt */
3043 { 0, 0, 0, 0 },
3044 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3045 & ifmt_m_cm32xor, { 0x4c0000a2 }
3047 /* cm64clr $rt */
3049 { 0, 0, 0, 0 },
3050 { { MNEM, ' ', OP (RT), 0 } },
3051 & ifmt_m_cm64clr, { 0x4c000085 }
3053 /* cm64ra $rs,$rt */
3055 { 0, 0, 0, 0 },
3056 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3057 & ifmt_m_cm64ra, { 0x4c000090 }
3059 /* cm64rd $rt */
3061 { 0, 0, 0, 0 },
3062 { { MNEM, ' ', OP (RT), 0 } },
3063 & ifmt_m_cm64rd, { 0x4c000081 }
3065 /* cm64ri $rt */
3067 { 0, 0, 0, 0 },
3068 { { MNEM, ' ', OP (RT), 0 } },
3069 & ifmt_m_cm64ri, { 0x4c000084 }
3071 /* cm64ria2 $rs,$rt */
3073 { 0, 0, 0, 0 },
3074 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3075 & ifmt_m_cm64ria2, { 0x4c000094 }
3077 /* cm64rs $rs,$rt */
3079 { 0, 0, 0, 0 },
3080 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3081 & ifmt_m_cm64rs, { 0x4c000080 }
3083 /* cm64sa $rs,$rt */
3085 { 0, 0, 0, 0 },
3086 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3087 & ifmt_m_cm64sa, { 0x4c000098 }
3089 /* cm64sd $rt */
3091 { 0, 0, 0, 0 },
3092 { { MNEM, ' ', OP (RT), 0 } },
3093 & ifmt_m_cm64sd, { 0x4c000089 }
3095 /* cm64si $rt */
3097 { 0, 0, 0, 0 },
3098 { { MNEM, ' ', OP (RT), 0 } },
3099 & ifmt_m_cm64si, { 0x4c00008c }
3101 /* cm64sia2 $rs,$rt */
3103 { 0, 0, 0, 0 },
3104 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3105 & ifmt_m_cm64sia2, { 0x4c00009c }
3107 /* cm64ss $rs,$rt */
3109 { 0, 0, 0, 0 },
3110 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3111 & ifmt_m_cm64ss, { 0x4c000088 }
3113 /* cm128ria2 $rs,$rt */
3115 { 0, 0, 0, 0 },
3116 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3117 & ifmt_m_cm128ria2, { 0x4c000095 }
3119 /* cm128ria3 $rs,$rt,${cm-3z} */
3121 { 0, 0, 0, 0 },
3122 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3123 & ifmt_m_cm128ria3, { 0x4c000090 }
3125 /* cm128ria4 $rs,$rt,${cm-4z} */
3127 { 0, 0, 0, 0 },
3128 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3129 & ifmt_m_cm128ria4, { 0x4c0000b0 }
3131 /* cm128sia2 $rs,$rt */
3133 { 0, 0, 0, 0 },
3134 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3135 & ifmt_m_cm128sia2, { 0x4c00009d }
3137 /* cm128sia3 $rs,$rt,${cm-3z} */
3139 { 0, 0, 0, 0 },
3140 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3141 & ifmt_m_cm128sia3, { 0x4c000098 }
3143 /* cm128sia4 $rs,$rt,${cm-4z} */
3145 { 0, 0, 0, 0 },
3146 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3147 & ifmt_m_cm128sia4, { 0x4c0000b8 }
3149 /* cmphdr */
3151 { 0, 0, 0, 0 },
3152 { { MNEM, 0 } },
3153 & ifmt_m_cmphdr, { 0x4c00002c }
3155 /* dbd $rd,$rt */
3157 { 0, 0, 0, 0 },
3158 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
3159 & ifmt_m_dbd, { 0x4c000021 }
3161 /* dbd $rt */
3163 { 0, 0, 0, 0 },
3164 { { MNEM, ' ', OP (RT), 0 } },
3165 & ifmt_m2_dbd, { 0x4c000021 }
3167 /* dpwt $rs */
3169 { 0, 0, 0, 0 },
3170 { { MNEM, ' ', OP (RS), 0 } },
3171 & ifmt_m_dpwt, { 0x4c000023 }
3173 /* free $rs */
3175 { 0, 0, 0, 0 },
3176 { { MNEM, ' ', OP (RS), 0 } },
3177 & ifmt_m_free, { 0x4c000025 }
3179 /* lock $rt */
3181 { 0, 0, 0, 0 },
3182 { { MNEM, ' ', OP (RT), 0 } },
3183 & ifmt_m_lock, { 0x4c000001 }
3185 /* pkrla $rs,$rt */
3187 { 0, 0, 0, 0 },
3188 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3189 & ifmt_m_pkrla, { 0x4c000028 }
3191 /* pkrlac $rs,$rt */
3193 { 0, 0, 0, 0 },
3194 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3195 & ifmt_m_pkrlac, { 0x4c00002b }
3197 /* pkrlah $rs,$rt */
3199 { 0, 0, 0, 0 },
3200 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3201 & ifmt_m_pkrlah, { 0x4c00002a }
3203 /* pkrlau $rs,$rt */
3205 { 0, 0, 0, 0 },
3206 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3207 & ifmt_m_pkrlau, { 0x4c000029 }
3209 /* pkrli $rs,$rt,$bytecount */
3211 { 0, 0, 0, 0 },
3212 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3213 & ifmt_m_pkrli, { 0x48000000 }
3215 /* pkrlic $rs,$rt,$bytecount */
3217 { 0, 0, 0, 0 },
3218 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3219 & ifmt_m_pkrlic, { 0x48000300 }
3221 /* pkrlih $rs,$rt,$bytecount */
3223 { 0, 0, 0, 0 },
3224 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3225 & ifmt_m_pkrlih, { 0x48000200 }
3227 /* pkrliu $rs,$rt,$bytecount */
3229 { 0, 0, 0, 0 },
3230 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3231 & ifmt_m_pkrliu, { 0x48000100 }
3233 /* rba $rs,$rt */
3235 { 0, 0, 0, 0 },
3236 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3237 & ifmt_m_rba, { 0x4c000008 }
3239 /* rbal $rs,$rt */
3241 { 0, 0, 0, 0 },
3242 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3243 & ifmt_m_rbal, { 0x4c000009 }
3245 /* rbar $rs,$rt */
3247 { 0, 0, 0, 0 },
3248 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3249 & ifmt_m_rbar, { 0x4c00000a }
3251 /* rbi $rs,$rt,$bytecount */
3253 { 0, 0, 0, 0 },
3254 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3255 & ifmt_m_rbi, { 0x4c000200 }
3257 /* rbil $rs,$rt,$bytecount */
3259 { 0, 0, 0, 0 },
3260 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3261 & ifmt_m_rbil, { 0x4c000300 }
3263 /* rbir $rs,$rt,$bytecount */
3265 { 0, 0, 0, 0 },
3266 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3267 & ifmt_m_rbir, { 0x4c000100 }
3269 /* swwr $rs,$rt */
3271 { 0, 0, 0, 0 },
3272 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3273 & ifmt_m_swwr, { 0x4c000006 }
3275 /* swwru $rs,$rt */
3277 { 0, 0, 0, 0 },
3278 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3279 & ifmt_m_swwru, { 0x4c000007 }
3281 /* tstod $rs */
3283 { 0, 0, 0, 0 },
3284 { { MNEM, ' ', OP (RS), 0 } },
3285 & ifmt_m_tstod, { 0x4c000027 }
3287 /* unlk $rt */
3289 { 0, 0, 0, 0 },
3290 { { MNEM, ' ', OP (RT), 0 } },
3291 & ifmt_m_unlk, { 0x4c000003 }
3293 /* wba $rs,$rt */
3295 { 0, 0, 0, 0 },
3296 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3297 & ifmt_m_wba, { 0x4c000010 }
3299 /* wbac $rs,$rt */
3301 { 0, 0, 0, 0 },
3302 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3303 & ifmt_m_wbac, { 0x4c000012 }
3305 /* wbau $rs,$rt */
3307 { 0, 0, 0, 0 },
3308 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3309 & ifmt_m_wbau, { 0x4c000011 }
3311 /* wbi $rs,$rt,$bytecount */
3313 { 0, 0, 0, 0 },
3314 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3315 & ifmt_m_wbi, { 0x4c000600 }
3317 /* wbic $rs,$rt,$bytecount */
3319 { 0, 0, 0, 0 },
3320 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3321 & ifmt_m_wbic, { 0x4c000500 }
3323 /* wbiu $rs,$rt,$bytecount */
3325 { 0, 0, 0, 0 },
3326 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3327 & ifmt_m_wbiu, { 0x4c000700 }
3331 #undef A
3332 #undef OPERAND
3333 #undef MNEM
3334 #undef OP
3336 #ifndef CGEN_ASM_HASH_P
3337 #define CGEN_ASM_HASH_P(insn) 1
3338 #endif
3340 #ifndef CGEN_DIS_HASH_P
3341 #define CGEN_DIS_HASH_P(insn) 1
3342 #endif
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. */
3347 static int
3348 asm_hash_insn_p (const CGEN_INSN *insn ATTRIBUTE_UNUSED)
3350 return CGEN_ASM_HASH_P (insn);
3353 static int
3354 dis_hash_insn_p (const CGEN_INSN *insn)
3356 /* If building the hash table and the NO-DIS attribute is present,
3357 ignore. */
3358 if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
3359 return 0;
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)
3367 #else
3368 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
3369 #endif
3370 #endif
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))
3380 #endif
3382 /* The result is the hash value of the insn.
3383 Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */
3385 static unsigned int
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. */
3394 static unsigned int
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. */
3403 static void
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. */
3412 void
3413 iq2000_cgen_init_opcode_table (CGEN_CPU_DESC cd)
3415 int i;
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;