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