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