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